Our company has developed a web-based solution for process control , mainly for building automation and water/sewage automation.
Our solution consists of a web interface (asp) which connects to a number of processes (VB6 ActiveX exe Controls) for image processing and for reading/writing data via OPC.
These processes also include timers (for time program, i.e. setting values on/off/start/stop via OPC, and other scheduled tasks), alarm scan program and logger to database
The (1-16) ActiveX exe’s being used for OPC communication are almost exact copies of each other, actually compiled with slightly different names. The split is done this way to take advantage of multi-core process technology because VB6 does not support multithreading , at least not in an “easy” way. We will be rewriting the application, within the next couple of years or so, using new tools and technology)
We have now integrated EasyOPC (5.02) in the VB6 OPC clients, and been using this software for a while in different web servers. The interface is easy and simple, and it initializes quickly, but we have had some problems on some of the biggest servers, both with timers hanging, we suspect because of no response from OPC servers (Should this be possible? Because all read is from cache, and all write operations are asynchronous, from client side). There has also been a number of EasyOPC crashes.
This biggest server is currently using 15 ActiveX Processes, each with client connections to 1 or 2 OPC servers, each OPC Client holds between 1000-30000 OPC items.
Total number of OPC items connected is about 70000.
Communication to 6 OPC systems in total. 1 OPC server is installed locally (60000 items), and the other 5 remote on 5 different communication servers (communication via Matrikon Tunneller. Update rate (set from our client) is currently about 5 seconds for 5000 items, 10 seconds for 10000 items, 20 seconds for 10000 items and 30 seconds for 45000 items.
Current Global parameters (Default parameters and System parameters are set to factory defaults) : We unchecked “Abandon interval”, increased “Topic request queue size” and “Link callback queue size” to 200000 after problems getting values for all items (OPC Quality stayed bad). Especially those with lowest update rate, then 60 sec, now changed to 30 sec. “Topic response queue size” was increased from 2000 to 50000 after crash.
We would greatly appreciate some help to “tune in” the settings to improve performance of the OPC client, or any good advice regarding implementation. In the next months number of systems integrated will grow rapidly, and in a year or so, many of our customers servers will handle beteen 100000 – 200000 OPC items. So it is very important for us to find a stable solution for OPC communication.
Attached : 2 error messages from event log and current Global parameters (Default and System are set to "factory defaults"), + implementation sample from our VB6 source. Itemchanged event to update internal array, the array holds data being read from user interface and other controls. (InvokeWriteItemValue is used for writing data)