OpcUa custom NodeIds

Hello everyone,
We use the standard OpcUa server of Automation Studio and provide our customers a seperate login/account where only the relevant data (production mode, produced volume, machine state, etc.) is available.
Our machines consist of up to 30 Lanes, each with individual data - we are talking about 500+ datapoints.
Until now all customers could work with String based NodeIds like:
=::AsGlobalPV:OPCUAData.FromPLCToClient.Lane[0].Status.LastWeight

One customer states that his SCADA-System only supports numeric NodeIds. So I made a little deep dive into OpcUa and found out that there are essentially 4 different formats for Node Ids and B&R uses the string based as standard:
i = NUMERIC (UInteger)
s = STRING (String)
g = GUID (Guid)
b = OPAQUE (ByteString)

Furthermore I’ve stumbled across the possible solution to use the “uanodeset” file to create a new structure with numeric NodeIds and reference existing variables.
But there I’m stuck now and hoping for help.

  1. Where can I find an example of the xml structured with a referenced PLC Variable of the nodeset file. The automation help is not very “helpful” at this topic :wink:
  2. Are there other viable solutions like creating a whole new OpcUa configuration file (.uad) that is numeric or something like this?
  3. Does anybody know tools to automate some part of the (for me still unknown) process?

Thank you in advanced, my hope ist that the customer is able to use the string based IDs, otherwise the dive has to get a bit deeper for me…

Numeric identifiers are used for objects or data types which do not change.
The plc variables of a PLC changes a lot. Every download of software could change these identifiers, so for this reason the string identifier is used.

The scada software should be able to use string identifiers or browsepaths.

Most scada software can browse the complete information model of the PLC.

Thank you for your answer.
I think we are not entirely talking about the same thing.

My question is whether there is a way in Automation Studio to assign a static numeric NodeId to an existing PLC variable.

I also disagree with the statement that “PLC variables change a lot.”
The memory address of a PLC variable may change after compilation, but the symbolic name or identifier (the name the programmer uses to access the variable, such as Global.UserSettings.Language) does not change.
The compiler doesn’t care about the variable names — it works with memory addresses instead.

A static numeric NodeId should be assigned statically, as the name implies.

  • Static numeric NodeId → references → static symbolic name
  • The memory address of the PLC variable may change, but since we use symbolic names, the compiler can handle these changes automatically.

B&R has implemented plc variables with the STRING identifier option (since 2012) , like also some other PLC brands.

If you want this to change you can contact your local B&R subsidiary and create a Product Request.

For creating your own nodeset file external tools like UaModeler can be used.
The nodes created in this nodeset file can then be linked to the B&R Information model.

In the AS-help some limited information is available:
B&R Online Help

In the AS samples folder you can find some AS-project examples with standarized nodeset files for instance Euromap (OPC40077, OPC40082).