Does Ignition support OPC UA RangeOffset?

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)

Beckhoff Information System - English

By default arrays are regarded as individual nodes in the UA namespace. This means that if you define, for example, an array dyn_BOOL[10] in the PLC (and have also enabled it for OPC UA), it will subsequently appear in the UA namespace as follows:

Arrays 1:

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:

Arrays 2:

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.

I'm guessing not as "RangeOffset" does not occur in the docs and I can't seem to find anything relevant searching "Range Offset" either. @Kevin.Herron, am I missing anything?

If you subscribe to an array it’s not used on the read but I think if you write to an element using the array tag path syntax we attempt to use an index range to write to just that element.

It’s not used otherwise.

1 Like

Thanks for confirm, @Kevin.Herron. Breaking up write makes sense.

This leaves us with subscribing to the whole array and breaking it out into derived tags for ease of binding in Perspective (we already do this for bits of 32-bit integers) or setting the legacy array expansion option in TwinCAT OPC UA server. It looks like our Beckhoff PLC isn't breaking a sweat running 5 VPLCs and OPC UA server expanding arrays on 3 VPLCs that'll need it for our application so we'll take the legacy array expansion route.