我第一次在一个需要OpcUA连接的项目上工作。我在open62541后端使用Qt包装器(Qt )。
承载服务器的PLC制造商告诉我,我可以访问的变量列表:
MT_MAX_SETUP (qreal)
MT_ALARM (bool)
...还有其他几个。使用示例 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吗?
发布于 2022-04-21 18:21:38
这种做法正确吗?制造商应该也告诉我名称空间ns=4吗?
你应该亲自去问问他们。否则,您将不得不自己搜索这些变量,这可能是一个挑战,也可能不是一个挑战。
如果您需要一个面向用户的工具来帮助您在开发过程中浏览UA,我建议您使用UAExpert。
发布于 2022-04-22 06:08:07
是的,您应该知道NamespaceUri,然后最好从服务器提供的NamespaceArray中找到相应的NamespaceIndex。通常,您可以相信NamespaceIndex是固定的,但并不总是固定的,所以这样做对您来说是安全的。
您可以用NamespaceArray或Prosys OPC UA浏览器读取UaExpert (服务器下的对象),也可以自己从那里找到NamespaceUri。
或者,如果您的库支持将NodeId作为ExpandedNodeId提供,则只需在其中使用NamespaceUri即可。然后,这将在something表示中查看,类似于"nsu=urn:the_namespace_uri;s=MT_MAX_SETUP“。
https://stackoverflow.com/questions/70946384
复制相似问题