OpcUA 地址空间

问题描述 投票:0回答:2

我第一次从事需要 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

qt opc-ua qt6
2个回答
2
投票

这种做法正确吗?制造商是否应该告诉我命名空间 ns=4?

这对我来说听起来是正确的。如果出现问题,我会与他们仔细检查命名空间和标识符是否正确。

如果您需要一个面向用户的工具来帮助您在开发时浏览 UA,我建议使用 UAExpert


1
投票

是的,您应该知道NamespaceUri,然后最好从服务器提供的NamespaceArray中找到相应的NamespaceIndex。通常,您可以相信 NamespaceIndex 是固定的,但并非总是如此,因此这对您来说是安全的。

您可以使用 UaExpertProsys OPC UA Browser 读取 NamespaceArray(在服务器对象下),并自己从那里找到 NamespaceUri。

或者,如果您的库支持提供 NodeId 作为 ExpandedNodeId,您可以简单地使用其中的 NamespaceUri。然后,这将在 XML 字符串表示中查找类似“nsu=urn:the_namespace_uri;s=MT_MAX_SETUP”的内容。

© www.soinside.com 2019 - 2024. All rights reserved.