“ns=2;s=”在 OPC 节点路径中的意义是啥?

Posted

技术标签:

【中文标题】“ns=2;s=”在 OPC 节点路径中的意义是啥?【英文标题】:What is the significance of "ns=2;s=" in an OPC node path?“ns=2;s=”在 OPC 节点路径中的意义是什么? 【发布时间】:2019-12-25 00:59:20 【问题描述】:

我注意到所有 OPC 标记 ID 都以 ns=2;s= 为前缀。

可能的 NodeId 值的一些示例如下:

ns=2;s=AcquisitionTimeRemaining ns=2;s=Status ns=2;s=Time

我想知道这个前缀的意义是什么。


研究:

论坛上的其他人asked this question。给出的答案是 ns 前缀指定了 NodeId 所属的命名空间索引。回答者继续说:

由于奇怪的历史原因,如果没有明确存在,我们假设 ns=1。 Kepware的Nodes都在ns=2,所以必须指定。

我没有使用“Kepware 节点”并且我的命名空间仍然设置为 2...这总是会是 2 吗?我找不到前缀中的 s 代表什么的任何信息。

【问题讨论】:

【参考方案1】:

ns=2 表示命名空间索引 2。

s=foo 表示它是一个字符串类型的 NodeId,值为“foo”。

NodeId有4种类型:

    数字(值是一个 UIInteger) 字符串(值是字符串) Guid(值是 Guid/UUID) 不透明(值为 ByteString)

此语法借用了用于在 OPC UA XML 编码中对 NodeId 进行编码的语法:

ns=<namespaceindex>;<type>=<value>

出现在哪些命名空间节点以及有多少命名空间取决于您连接到的服务器。

【讨论】:

应该注意的是规范允许命名空间索引在会话之间改变。因此,保存数字命名空间索引应该被认为是不安全和不好的(即使是广泛传播的)做法,因为它只保证在当前会话的上下文中有效。【参考方案2】:

命名空间值仅取决于您的 OPC UA 服务器及其配置。 必须为 OPC UA 默认命名空间保留 0。

您可以在“ns=0;i=2255”(Server_NamespaceArray) 处读取/订阅您的 OPC UA 服务器命名空间配置。 Node 值是该服务器上所有可用命名空间的数组

【讨论】:

以上是关于“ns=2;s=”在 OPC 节点路径中的意义是啥?的主要内容,如果未能解决你的问题,请参考以下文章

OPC ua是啥?

了解python中的免费OPC/UA代码

通讯接口采用OPC和Ethetnet/IP是啥概念

C# 读写opc ua服务器,浏览所有节点,读写节点,读历史数据,调用方法,订阅,批量订阅操作

Simatic NET OPC Server 的 Server ID 和 CLSID 是啥,用 C# 编程?

如何在 Eclipse Milo 中获取 OPC UA 节点名称?