如何在 Eclipse Milo 中获取 OPC UA 节点名称?
How can I get OPC UA node name in Eclipse Milo?
我按照 github 页面上的 ManagedSubscriptionDataExample.java (https://github.com/eclipse/milo/blob/master/milo-examples/client-examples/src/main/java/org/eclipse/milo/examples/client/ManagedSubscriptionDataExample.java) 示例从 PLC S7-1200 读取 OPC 节点。
节点的值正在更新,但我无法获取名称。
代码:
subscription.addDataChangeListener((items, values) -> {
for (int i = 0; i < items.size(); i++) {
logger.info(
"subscription value received: item={}, value={}, valueID={}",
items.get(i).getNodeId(), values.get(i).getValue(), items.get(i).getReadValueId());
}
我收到回复:
INFO: subscription value received: item=NodeId{ns=4, id=4},
value=Variant{value=false}, valueID=ReadValueId(nodeId=NodeId{ns=4,
id=4}, attributeId=13, indexRange=null,
dataEncoding=QualifiedName{name=null, namespaceIndex=0})
我看到名称为空,并且没有获取节点名称的方法。但是,如果我使用 OPC 客户端“OPC 专家”,我还可以获得节点在 PLC 上的名称:
是否有任何其他选项来获取变量的名称?
UaExpert 做的簿记工作比您多。您应该了解为哪些节点创建了 MonitoredItems,并能够从这些节点获取 BrowseName 或 DisplayName 属性。
在该回调中,您可以访问 NodeId - 这应该是您访问节点和您感兴趣的任何属性的关键。
我按照 github 页面上的 ManagedSubscriptionDataExample.java (https://github.com/eclipse/milo/blob/master/milo-examples/client-examples/src/main/java/org/eclipse/milo/examples/client/ManagedSubscriptionDataExample.java) 示例从 PLC S7-1200 读取 OPC 节点。
节点的值正在更新,但我无法获取名称。
代码:
subscription.addDataChangeListener((items, values) -> {
for (int i = 0; i < items.size(); i++) {
logger.info(
"subscription value received: item={}, value={}, valueID={}",
items.get(i).getNodeId(), values.get(i).getValue(), items.get(i).getReadValueId());
}
我收到回复:
INFO: subscription value received: item=NodeId{ns=4, id=4}, value=Variant{value=false}, valueID=ReadValueId(nodeId=NodeId{ns=4, id=4}, attributeId=13, indexRange=null, dataEncoding=QualifiedName{name=null, namespaceIndex=0})
我看到名称为空,并且没有获取节点名称的方法。但是,如果我使用 OPC 客户端“OPC 专家”,我还可以获得节点在 PLC 上的名称:
是否有任何其他选项来获取变量的名称?
UaExpert 做的簿记工作比您多。您应该了解为哪些节点创建了 MonitoredItems,并能够从这些节点获取 BrowseName 或 DisplayName 属性。
在该回调中,您可以访问 NodeId - 这应该是您访问节点和您感兴趣的任何属性的关键。