Ignition OPC UA Server namespace

We are working on upgrading a system from 7.9 to 8.1, and noticed that addressing tags on ignition’s OPC server seems to have changed?

For example, I have this tag: [default]testme
Using ignition’s opc quick client in 7.9, if i subscribe to that tag the address shows: ns=2;s=[default]testme

In 8.1, doing the same thing shows: nsu=urn:inductiveautomation:ignition:opcua:tags;s=[default]/testme

Is there a reason for this?
Is there a way we can keep the old opc addresses going into 8.1?

Thank you.

You can still use the index-based namespace prefix, both formats should work, and as long as you’re connected to a server that is deterministic in which namespace URIs is assigned to which index in the namespace array then it won’t matter. (Like ours)

Dragging from the OPC Browser will use this new format, though, and there’s nothing you can do to change that.

edit: to further clarify, only namespace indices 2 and above default to the new syntax. It is assumed namespaces at indices 0 and 1 will always have the same URI. So when dragging from the OPC browser you may see the old format if the Node belongs to the namespace at index 0 or 1.

2 Likes

Great. I tested using the index-based namespace and it’s working for me.

One other thing. It looks like in 8.1 there is a slash between the tag provider name and the rest of the tagpath.
7.9: s=[default]testme
8.1: s=[default]/testme

This isn’t a huge problem. Just wondering if this how addressing is going to work from now on?

Yeah, my guess is we inadvertently changed that between 7.9 and 8.0. I won't change it back now because it's been that way for too long and would break things for current 8.x users.

1 Like

I would like to re-clarify.

On Ignition OPC tag, it points to OPC Path: ns=2;s=some_identifier
On Ignition OPC Browser, same tag has the following path: nsu=KEPServerEX;s=some_identifier

How did ns=2 equal to nsu=KEPServerEX?

I know that ns=2 refer to the index of array, where "KEPServerEX" lives.

But how do I validate that, where is the ns Array?
In other words, If I am to write a UDT. which pattern do I follow?
ns=2 or nsu=KEPServerEX
Say I want to use ns=2, how do I know that its ns=2 not ns=3 for example?

Thanks.

You don't know. That's why the name is used. OPC spec indicates that ns=0 and ns=1 are the only ones that you can be sure won't get moved by the OPC server arbitrarily. Above ns=1, only the names are reliable.