02-07-2007 08:19 AM
02-08-2007 05:42 PM - edited 02-08-2007 05:42 PM
Message Edited by JLS on 02-08-2007 05:43 PM
02-09-2007 09:23 AM
Wow, those are some really great suggestions. I am extensively utilizing the DSC features such as alarming, datalogging, export traces, trending, etc., so I have to use a method that supports this.
I tried method 2, but I had a problem; i was unable to see all of my FieldPoint 1601 (Ethernet) communication blocks. Only 2 out of the 3 show up when I select Network Items in the Network-Published Source drop-down box when binding a shared variable (in the shared variable properties from project explorer).
One of the reasons I have done things the way I have is that I have a set of 80 PID loops: The process variable input and control variable output are configurable from the front panel, i.e. you can select which analog input serves as the process variable and which valve, heater, etc. serves as the control output. This makes the application very customizable for the operator, and the configuration of these parameters are saved in a ".ini" file so that the loop configurations are saved and restored when closing and re-opening the program.
Method 3 is a possibility, but would require some significant programming changes, and isn't really desired, as the definitions in the .ini files would not have understandable settings, i.e. a PID control variable would be pointed directly to FieldPoint rack x, module y and channel z instead of a control variable pointing to "Reactor Flow Control Valve 10" or something.
The only easy way I found to read and write to tags dynamically (i.e not the same tag every time) is to save the save and restore the tag information in the .ini file as a tag data type and poke this directly into the datasocket read and write VIs.
Let me know if you have any other recommendations or if you want to see the vi. I'll try to post it later.
Thanks again,
Michael
02-09-2007 11:41 AM
02-12-2007 09:45 PM
Method 2 sounds like a promising endeavour. It is curious that you do not see all three of your FP targets when you attempt to directly bind shared variables. Can you see all three in Measurement and Automation Explorer (MAX)?
Do you have any other targets configured in your project? Are you able to see these when you expand the Network-Published Source drop-down box?
02-16-2007 08:07 AM
It turns out that one of the three FieldPoint communication modules was an older revision firmware than the other two; after updating the firmware, I was able to browse all three communication modules in the "Network Items" source with no problem when trying to bind variables directly to the FieldPoint points.
So I deleted the OPC server and rebound all of my variables directly to the FieldPoint I/O. Upon running the project, I think performance is a little better, but still an order of magnitide slower than an acceptable level. The frame that handles the datasocket reads and writes takes anywhere from 0.1 to 4.0 seconds to complete, although the delay is random: it might work great for a couple of seconds, executing 5 or 6 times really fast, and then delay 4 seconds for the next couple of times.
I'm just not sure what to do. I do have a service ticket open for the problem.
I am going to try to rethink how I can change the way that I utilize the datasocket reads and writes, somehow consolidating them into fewer separate read and write requests, and perhaps combining them into one or two operations.
Any suggestions would be appreciated!
Michael