Should I store OPCUA object addresses in a database ? Seeking experience & good practice|OPC UA Standard|Forum|OPC Foundation

Forum Scope


Forum Options

Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
sp_Feed sp_PrintTopic sp_TopicIcon
Should I store OPCUA object addresses in a database ? Seeking experience & good practice
Clément Perrin
New Member
Forum Posts: 2
Member Since:
sp_UserOfflineSmall Offline
01/31/2024 - 08:24
sp_Permalink sp_Print sp_EditHistory


I've recently join an MES project that implies connecting existing machine with the OPCUA protocol.
The idea would be to connect a plant, make it standard, and replicate it to another plant. OPCUA was chosen in this project in order to have a healthy standard from which we can build upon and I have documented myself a little bit about it.

I will attempt to describe a situation from which I can't understand it's outcome but maybe my understanding of OPCUA corrupt the immagined situation:
Let's say I have set up an OPCUA Information Model, connected my machines and for example, set up a Node-Red application to read some machine variables. Everything was mildly-easy because I am on site, I know my machines well, I know what to get from them, and as I set up Node-Red, I know my machines and their variables OPCUA url.

If I want to copy this to another plant, and then manage it from afar, wouldn't it be recommended to store every address in a database? For example a relational database:
MachineTable: MachineID, MachineName, MachineOPCUAaddress  |  VariableTable: VarID, MachineID, VarName, VarOPCUAaddress

By doing so, everybody will be able to see how to get to any machine and the data it produces. But also be able to update if necessary, maintain, etc. Is it a good practice, am I missing the whole point of OPCUA?

Please share your knowledge with me, I haven't been able to find an answer to this in the OPCFoundation documents and I am also new to the industry. Thank you.

Randy Armstrong
Forum Posts: 1445
Member Since:
sp_UserOfflineSmall Offline
01/31/2024 - 22:19
sp_Permalink sp_Print

How the server assigns NodeIds is determined by the server, however, NodeIds must be persistent. So they must be stored somewhere or generated with a deterministic algorithm that always produces the same NodeId for the same Node.

Many servers read a configuration (from a file, DB or whatever) and assign nodeids based on the name of the entity or a unique identifier within the entity.

Many servers will persist the Object NodeIdId but generated the NodeIds for the components in the Object from the Object NodeId.

i.e. nsu=;s=MyObjectId.Property1

IOW, it is completely consistent with the way servers are expected to be designed.

Forum Timezone: America/Phoenix
Most Users Ever Online: 510
Currently Online:
Guest(s) 12
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Forum Stats:
Groups: 2
Forums: 10
Topics: 1347
Posts: 4567