OPC UA唯一ID

Ido*_*dov 4 opc opc-ua node-opcua

我正在尝试构建OPC UA客户端应用程序。
我希望能够在OPC树中唯一标识一个UA节点。
我知道在OPC DA中,标准节点ID是带有“。”的字符串。作为我可以用来识别节点的分度符。

在OPC UA中,节点ID不必是字符串,但是我仍然希望能够构建映射到特定节点的唯一字符串。
我正在考虑将其基于节点名称。例如:Demo.MyNode.MyValue。
但恐怕节点名称可能包含诸如“。”之类的字符。这会使我的ID不唯一。

有没有可以用作分隔符的字符?
有没有更好的方法将节点ID表示为字符串(包括其路径)?

Kev*_*ron 5

OPC-UA为每个节点提供了唯一的“ BrowsePath”概念,客户端可以选择存储BrowsePaths而不是NodeIds,然后在启动时调用TranslateBrowsePathsToNodeIds服务。

实际上,我认为这可能是预期的行为,因为在重启后,即使实际上是这样,也不要求服务器对任何给定节点使用相同的NodeId。

我错误地认为NodeId可以更改。规范说:“服务器应保留节点的NodeId,即,它在重新引导时不会生成新的NodeId。”

我现在认为最好存储NodeId,并且仅使用BrowsePaths来帮助针对类型定义进行编程。