800xa OPC string communication
For communication between our 800xa DCS controllers and MES system we also communicate strings. We notice that communication of strings is much slower than the simple datatypes. Strings have their own subscription rate in 800xa which is normally set at a subscription rate of about 10 seconds or slower. Why is the default value so slow and what will happen if we set it to 500ms (e.g.)? After all strings are nothing more than a series of bytes.
Answers
Passing strings, especially long ones is not good practise, unless its a specifically a serial port of course.
this has been the standard from a long time back, when control systems were a lot slower and strings would slow down comms and processing time.
it is better to have a set of strings in your MES, and rather pass one integer value from control system to MES and let your MES change the text based on the value.
this has been the standard from a long time back, when control systems were a lot slower and strings would slow down comms and processing time.
it is better to have a set of strings in your MES, and rather pass one integer value from control system to MES and let your MES change the text based on the value.
Do NOT set it to 500ms.
You'll probably manage to subscribe a few static strings at 500mS without too much trouble, but if you start subscribing lots of variable strings, then you'll probably begin to see an effect on the CPU load at some point.
The real problem is that String Handling in the AC800M controller is horribly inefficient. ANY and ALL processing that involves manipulating strings should be avoided if at all possible. Use constants whenever possible. If a string is static and does not change during run time, then perform any processing ONCE during warm start or the start_ block of control modules.
Use "Property Translation" aspects to convert an integer code in the AC800M controller into a Text String in the 800xA Aspect System. This avoids any need for string handling in the OPC server. And integers can subscribe quite happily at 500ms intervals.
If you really do need to subscribe strings from the AC800M controller, then you will need to change the OPC Subscription rate in the AC800M OPC Server configuration. All OPC Clients need to be disconnected when you do this. Alternatively, you can directly edit the OPC Server configuration text file and then restart the OPC Server service. Set the Subscription interval to 2000mS and try to limit the number of strings that you subscribe.
You'll probably manage to subscribe a few static strings at 500mS without too much trouble, but if you start subscribing lots of variable strings, then you'll probably begin to see an effect on the CPU load at some point.
The real problem is that String Handling in the AC800M controller is horribly inefficient. ANY and ALL processing that involves manipulating strings should be avoided if at all possible. Use constants whenever possible. If a string is static and does not change during run time, then perform any processing ONCE during warm start or the start_ block of control modules.
Use "Property Translation" aspects to convert an integer code in the AC800M controller into a Text String in the 800xA Aspect System. This avoids any need for string handling in the OPC server. And integers can subscribe quite happily at 500ms intervals.
If you really do need to subscribe strings from the AC800M controller, then you will need to change the OPC Subscription rate in the AC800M OPC Server configuration. All OPC Clients need to be disconnected when you do this. Alternatively, you can directly edit the OPC Server configuration text file and then restart the OPC Server service. Set the Subscription interval to 2000mS and try to limit the number of strings that you subscribe.
Add new comment