OpcUA 地址 space
OpcUA address space
我是第一次参与需要 OpcUA 连接的项目。
我在 open62541
后端使用 Qt 包装器 (Qt OPCUA)。
托管服务器的 PLC 制造商告诉我可以访问的变量列表:
MT_MAX_SETUP (qreal)
MT_ALARM (bool)
...
和其他几个人。
使用 example Qt OPC UA Viewer Example
我发现了那些变量的 nodeId
,例如:
`ns=4;s=MT_MAX_SETUP`
所以我可以通过这种方式在连接后检索它的值:
_opcNode = _opcUaClient->node("ns=4;s=MT_MAX_SETUP");
connect(_opcNode, &QOpcUaNode::attributeRead, this, &MyOPC::handleAttributes);
connect(_opcNode, &QOpcUaNode::attributeUpdated, this, &MyOPC::handleAttributes);
_opcNode->readAttributes(QOpcUa::NodeAttribute::Value);
这种做法正确吗?制造商是否应该也告诉我命名空间 ns=4
?
Is it correct this approach? Should the manufacturer have told me also the namespace ns=4?
你或许应该自己问问他们。否则,您将不得不自己搜索这些变量,这可能是也可能不是挑战。
如果您需要 user-facing 工具来帮助您在开发过程中浏览 UA,我建议您使用 UAExpert
是的,您应该知道NamespaceUri,然后最好从服务器提供的NamespaceArray 中找到相应的NamespaceIndex。通常,您可以相信 NamespaceIndex 是固定的,但并非总是如此,因此这对您来说是安全的。
您可以使用 UaExpert or Prosys OPC UA Browser 读取 NamespaceArray(在 Server 对象下)并自己从那里找到 NamespaceUri。
或者,如果您的库支持将 NodeId 作为 ExpandedNodeId 提供,您可以简单地在其中使用 NamespaceUri。然后这将在 XML 字符串表示中查找类似 "nsu=urn:the_namespace_uri;s=MT_MAX_SETUP".
我是第一次参与需要 OpcUA 连接的项目。
我在 open62541
后端使用 Qt 包装器 (Qt OPCUA)。
托管服务器的 PLC 制造商告诉我可以访问的变量列表:
MT_MAX_SETUP (qreal)
MT_ALARM (bool)
...
和其他几个人。
使用 example Qt OPC UA Viewer Example
我发现了那些变量的 nodeId
,例如:
`ns=4;s=MT_MAX_SETUP`
所以我可以通过这种方式在连接后检索它的值:
_opcNode = _opcUaClient->node("ns=4;s=MT_MAX_SETUP");
connect(_opcNode, &QOpcUaNode::attributeRead, this, &MyOPC::handleAttributes);
connect(_opcNode, &QOpcUaNode::attributeUpdated, this, &MyOPC::handleAttributes);
_opcNode->readAttributes(QOpcUa::NodeAttribute::Value);
这种做法正确吗?制造商是否应该也告诉我命名空间 ns=4
?
Is it correct this approach? Should the manufacturer have told me also the namespace ns=4?
你或许应该自己问问他们。否则,您将不得不自己搜索这些变量,这可能是也可能不是挑战。
如果您需要 user-facing 工具来帮助您在开发过程中浏览 UA,我建议您使用 UAExpert
是的,您应该知道NamespaceUri,然后最好从服务器提供的NamespaceArray 中找到相应的NamespaceIndex。通常,您可以相信 NamespaceIndex 是固定的,但并非总是如此,因此这对您来说是安全的。
您可以使用 UaExpert or Prosys OPC UA Browser 读取 NamespaceArray(在 Server 对象下)并自己从那里找到 NamespaceUri。
或者,如果您的库支持将 NodeId 作为 ExpandedNodeId 提供,您可以简单地在其中使用 NamespaceUri。然后这将在 XML 字符串表示中查找类似 "nsu=urn:the_namespace_uri;s=MT_MAX_SETUP".