TwinCAT OPC UA by default exposes arrays as a single node with members accessed via RangeOffset in "modern" UA clients. This is to decrease complexity of OPC UA namespace and consequent memory usage on server. Does Ignition support this, or do we need to enable the legacy array handling option in TwinCAT OPC UA for Ignition to access array elements?
TwinCAT OPC UA Server Arrays (from Beckhoff Infosys)
By default arrays are regarded as individual nodes in the UA namespace. This means that if you define, for example, an array dyn_BOOL in the PLC (and have also enabled it for OPC UA), it will subsequently appear in the UA namespace as follows:
The advantage of this approach is a considerable reduction in the complexity of the UA namespace and in memory consumption, since not every position of an array needs to be made available as an individual node in the namespace. However, modern UA Clients can continue to access the individual array positions via the so-called "RangeOffset".
In order to support older UA Clients that don’t offer this feature, however, you can also make the positions of an array available as individual nodes in the UA namespace. It is illustrated as follows:
This setting is available by activating the Legacy Array Handling option in the UA Configurator within the respective namespace configuration.
Depending on the scope of the PLC project, the UA namespace can become significantly more complex, which in turn is reflected in an increased memory utilization of the UA Server.