gpt4 book ai didi

opc-ua - NodeId 的实时/唯一性(如何管理动态节点的 NodeIds)

转载 作者:行者123 更新时间:2023-12-05 01:42:46 25 4
gpt4 key购买 nike

OPC UA规范(第3部分:地址空间模型)说

5.2.2 NodeId

... A Server shall persist the NodeId of a Node, that is, it shall not generate new NodeIds when rebooting.

但这怎么可能呢?

  1. NodeId 是 NamespceIndex 和标识符的组合。 NamespceIndex 可以在服务器重新启动时更改。见:

    http://documentation.unified-automation.com/uasdkhp/1.0.0/html/_l2_ua_node_ids.html

    For this reason, a Client should not persist the namespace index without storing the namespace URI as well, because a namespace URI represented by index “2” during one session could be represented by index “5” during the next session

  2. 还可以使用 FolderType,例如"file"作为 Items 再次说明这一点,还是服务器应该存储它用于 File-X 的 NodeId,以便在重启后再次正确分配它?

  3. 如果无法创建 NodeId,“GenericModelChangeEventType”有什么用?

客户端: 我想使用 BrowsePath-Path(例如“Objects.Server.ServerStatus.CurrentTime”(*))来寻址 NodeId,然后在 clinet session 访问节点时使用 NodeId一个好方法。还因为配套规范定义了浏览名称,所以我可能会保存。这是一个好主意吗? (*需要注意不同命名空间引起的冲突)

Server:当服务器需要生成/创建新的 NodeId 时,它应该如何表现。需要 NodeIds 始终明确或仅针对服务器运行时。我知道一些服务器正在使用带有字符串类型标识符的 NodeId,而这个字符串标识符是由 BrowsePath 制成的,例如“ns=1;s=Server.ServerStatus.CurrentTime”。但是我不喜欢这样...

最佳答案

OPC UA 规范说“服务器应保留节点的 NodeId,即重启时不应生成新的 NodeId”是什么意思。如下所示:当被视为 namespace URI 和标识符的组合时,NodeIds 不得更改。服务器在重启后可能会也可能不会重新分配 namespace 索引 - 但生成的 namespace URI/标识符不得更改。因此,如果在第一次运行时我有一个标识符为 1234 且命名空间索引为 7 的节点,并且该命名空间索引对应于命名空间表中的“http://mynamespace.mycompany.com”,则在第二次运行时,同一节点可能具有标识符 1234,但命名空间索引 8,只要在新的 NamespaceTable 索引 8 现在对应于“http://mynamespace.mycompany.com”。

关于opc-ua - NodeId 的实时/唯一性(如何管理动态节点的 NodeIds),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50873554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com