Right now I have a Ignition instance that was originally configured to be a gateway between process equipment (with local Kepware) to connect with an AB L83 PLC. The connection is as follows:
Kepware (with about 40 clients, future 100+) <— OPC UA —> Ignition <— Logix Driver —> L83 PLC.
Ignition itself doesn’t have tags added in the project (Ignition Designer → Tag Browser), the clients use [PLC]TagName and are able to ‘directly’ connect to the PLC.
Our problems are mainly with the loading of the processor & the load factor in Ignition. The processor shows class 3 comms at 100% all of the time, and Ignition shows the load factor > 100% most of the time.
The PLC is using a continuous task which I plan to change once I get some more testing time- last time I made that change it broke some stuff (integrator used 5ms timers) and had to roll back. Even when it was changed, I still noticed a loading >80% for both class 3 and Ignition.
There’s a finite amount of class 3 comms that these PLCs can handle.
The best thing you can do is ensure that the tags you need to expose to the world are grouped into UDTs or arrays, that you don’t access alias tags, and that you don’t access AOIs. UDTs also must have all members configured with External Access set to Read or Read/Write. If even a single member is set to None then all of the tags will be read individually instead.
Another thing that will help that is particular to this scenario (multiple UA clients) is to try to make sure any tags they create monitored items for, that will also have monitored items created by another client, are created with the same sampling interval. If client 1 monitors tag “foo” at 1000ms and client 2 monitors tag “foo” at 1500ms that’s 2 separate requests to the PLC, they don’t end up going together.