Please consider registering

sp_LogInOut Log In sp_Registration Register

Register | Lost password?
Advanced Search

— Forum Scope —

— Match —

— Forum Options —

Minimum search word length is 3 characters - maximum search word length is 84 characters

sp_Feed Topic RSS sp_TopicIcon
NodeID vs BrowsePath
January 11, 2018
20:53, EET
Forum Posts: 3
Member Since:
April 14, 2015
sp_UserOfflineSmall Offline

Hello All,

For an implementation, I need to clarify the doubt about using NodeID or Its BrowsePath.
For the server I am connecting to create own NodeID after every update to its software. As being client each and everytime I need to reconfigure all nodes with new NodeID and it make unnecessary a lot of work as there are 1000+ nodes need to configure.
I know TranslateBrowsePathsToNodeId would be an alternate solution for this issue but I would like to know if creating Static NodeID(at OPC UA Server) does make any sense rather than Browsing 1000+ nodes to get its NodeIDs?
and I also would like to know about what would be performance if we use Static NodeID vs TranslateBrowsePathsToNodeId service to identify 1000+ nodes?

Thank you very much!

January 12, 2018
10:53, EET
Heikki Tahvanainen

Forum Posts: 402
Member Since:
April 17, 2013
sp_UserOfflineSmall Offline


Typically OPC UA servers do not dynamically change NodeIds between restarts. So in the normal situation the client application can safely cache the NodeIds and use the same NodeIds everytime.

However, based on the sentence “after every update to its software” I would understand that there has been larger changes in the OPC UA server software and in these situations it’s in principle possible that NodeIds change. If the NodeIds change, then you indeed need to reconfigure them. However, this should happen only seldom.

The original use case of TranslateBrowsePathsToNodeId service is that client application can be programmed by using TypeDefinitions. You can use it also as a “more convenient browse” but it’s good to know that there are some caveats. As an example, there’s no guarantee that BrowseNames are unique and this means that TranslateBrowsePathsToNodeId service may return an array of NodeIds. Then you need to be able to decide which one of the NodeIds is the correct one.

It’s good to keep in mind that NodeId is the unique identifier of a Node in the server address space and NodeId is the concept that is used in all service calls. In other words, using static NodeIds would be the better option.

According to my understanding the performance question is not meaningful: of course it’s better to use NodeIds directly because browsing for the Nodes in every client restart is just an additional step. You would only use the dynamical NodeIds if you have no other choice.

Also, it’s good to note that NodeId structure contains NamespaceIndex which points to an index in server’s NamespaceArray. Usually the NamespaceIndexes do not change between server restart. However, the OPC UA specification does not require this and it’s possible that the NamespaceIndex order change much more often than NodeId identifiers otherwise would. For this reason, it would actually be better to store the NamespaceURI instead of the NamespaceIndex in the client. The most practical way is to convert the NodeId to ExpandedNodeId and back with methods


Alternatively, you can do this in a more manual way with

int index = client.getAddressSpace().getNamespaceTable().getIndex(namespaceUri)
Forum Timezone: Europe/Helsinki

Most Users Ever Online: 267

Currently Online: Jouni Aro, MichaelBraveDigital
12 Guest(s)

Currently Browsing this Page:
1 Guest(s)

Top Posters:

hbrackel: 103

pramanj: 86

ibrahim: 70

kapsl: 57

gjevremovic: 49

TimK: 41

Fransua33: 39

fred: 38

Rainer Versteeg: 32

Thomas Reuther: 31

Member Stats:

Guest Posters: 0

Members: 1160

Moderators: 15

Admins: 1

Forum Stats:

Groups: 3

Forums: 15

Topics: 1048

Posts: 4416

Newest Members:

jonas.rahm, sophiekohler, zqecortney, adeletoscano947, forestgenders23, auroratrumper, ericmclain04, rblu, starlowery23194, dakotadalgety82

Moderators: Jouni Aro: 853, Otso Palonen: 32, Tuomas Hiltunen: 5, janimakela: 0, Pyry: 1, Terho: 0, Petri: 0, Bjarne Boström: 579, Heikki Tahvanainen: 402, Jukka Asikainen: 1, moldzh08: 0, Teppo Uimonen: 21, Markus Johansson: 24, Matti Siponen: 72, Lusetti: 0

Administrators: admin: 1