OPC节点路径中“ ns = 2; s =“的含义是什么?

Kyl*_*son 3 opc opc-ua

我注意到所有OPC标签ID都以开头ns=2;s=

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

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

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


研究:

有人在论坛上问了这个问题。给出的答案是ns前缀指定NodeId所属的名称空间索引。回答者继续指出:

出于奇怪的历史原因,我们假设ns = 1(如果未明确显示)。Kepware的节点都在ns = 2中,因此必须指定。

我没有使用“ Kepware节点”,并且我的命名空间仍设置为2 ...它将始终为2吗?我找不到有关前缀s代表什么的任何信息。

Kev*_*ron 6

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

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

共有4种类型NodeId

  1. 数值(值为UInteger)
  2. 字符串(值是一个字符串)
  3. Guid(值是Guid / UUID)
  4. 不透明(值为ByteString)

此语法是从用于以OPC UA XML编码对NodeId进行编码的语法中借用的:

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

出现什么名称空间节点以及有多少个名称空间取决于您连接的服务器。

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

Cam*_* G. 6

命名空间值仅取决于您的 OPC UA 服务器及其配置。强制要求的是 0 是为 OPC UA 默认命名空间保留的。

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