AS6 OPC/UA CS system limitations

Hello all,

i am currently working my way into OPC/UA and doing some tests within our program (AS6.5, OPC/UA CS 6.0.0). Now i was setting up some kind of performance test and tried to learn about the limitations of OPC/UA. The configuration in the .uacfg is mostly default, except some authentification settings. I started to publish some datapoints and everything works well until i increased the amount of data. For example if i activate some typedef-arrays (with every typedef having several substructures and mixed datatypes) including about 150 000 datapoints (nodes) in overall, it still works and i can browse the nodes via UAExpert. But if i doubled the amount of datapoints, the cpu usage increases significant i cannot connect to the OPC/UA-server anymore. If i increase the amount of published nodes even more, the plc (also ArSim) switches to ServiceMode with a memory access violation.

So my question is, do you guys have experience regarding the limitations of OPC/UA? How many nodes can be published by the plc without having that kind of performance issues?

Also, after browsing AutomationHelp, i was even wondering how it could work with 150 000 datapoints, since the amount of monitored items is limited to 65535. Isn’t each datapoint representing a monitored item?

I know that I don’t have much knowledge regarding OPC/UA yet, but I would still appreciate any helpful tips.

Thanks,

Thomas

Hi @Thomas.Haindl ,
Welcome to the Community!

Could you repeat your tests with latest versions?

If i increase the amount of published nodes even more, the plc (also ArSim) switches to ServiceMode with a memory access violation.

Could you please upload the SystemDump in case you get again service mode?

Thanks
Ciao
Valerio

Hi Valerio,

after the upgrades being done, it looks a bit different.

After transferring the project to ArSim, i got a few more logger entries regarding the OpcUa-Server not being able to start due to a lack of memory. But it was still in run mode (1).

Switching to the APC4100 it is still the same - once it started, it keeps on rebooting in service mode without any error entries except the memory access violation.

Going back to ArSim, it also keeps on rebooting in service mode. So the scenario (1) was only once after transferring the project.

I attached both system dumps.

SysDumps_OpcUa.zip (4.2 MB)

Thanks,

Thomas

150.000 nodes is already a lot. Is this in one node?

What is your goal ?
An OPC UA Client normally wants to read more data than it writes.
For this reading of data in most cases Subscriptions are used with different Publishing Intervals.
Each Subcription can contain so called Monitored items (nodes).
These Monitored items are checked by the server every Publishing Interval and then only the changed values are sent to the client.

It also possible for an OPC UA Client to just read the nodes, which is less efficient.
See for more info “Information about throughput”:
BrUa_ReadBulk

For more information about OPC UA you could also look for instance at the OPC Day(s) on YT.
OPC Day 2025 - International - YouTube

Hi @corne.geerts ,

well, i am just evaluating the possibility to set up the data exchange between the plc(server) and our HMI(client) via OPC/UA. Right now we are using PVI to transfer these parameters (depends on the machine, but somewhere around 20-150k datapoints). We have standard software and a lot of configuration parameters to be able to set up different equipped machines with the same plc program. Some parameters are transferred just after the startup, others within recipes between batches. But in theory we need to be able to access a few millions of parameters - of course they are not all used on one machine but being able to read and/or write them all means to publish them all (right?).

But could you please explain a bit more what you mean by “150.000 nodes is already a lot. Is this in one node?”? Do you mean if all these nodes are published by one plc?

Best regards,

Thomas

With one node is meant, one variable activated in the OPC UA Default view, which has a lot of substructures which leads to a total of 150.000 subelements.
In the default view you have the possibility to activate only the variable name and none of the subelements. This would result in one NodeID which can be monitored, read or written. (Extension object)
This is not optimal, because all the subelements would be communicated every time.

It is better to find an optimum in the number of NodeID’s and the size per NodeID, if these NodeID’s are defined as an array or structure.

Settings/Recipes could also be communicated with OPC UA Methods.

Fast data could be transmitted with Pub/Sub (See OPC UA FX).

The latetst OPC UA Server (OPC UA C/S 6.6) supports basic A&C and HistoryRead functionality based on Alarms maintained in mpAlarmX.

OPC UA has multiple communication possibilities.

Ok, thats what i can configure with the option “Automatic enable”, is it?

We need to be able to write only single datapoints - means i always would have to set this to “Recursive” to get a specific NodeID for every subelement. Otherwise i can only write the whole structure at once, but never just a single subelement, right?

Referring to the screenshot - for typCM_Drive i get only one NodeID, but for typEM_Motion x NodeIDs.

With the Common Properties it is possible to activate only some elements from a structure in the OPC UA Default View file.