我在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());
}我得到回应:
信息:收到的订阅值: 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})
我看到该名称为null,并且没有为节点获取名称的方法。但是,如果我使用OPC客户端"OPC专家“,我也可以获得节点的名称,因为它们在PLC上:

是否还有其他选项可以获得变量的名称?
发布于 2021-11-05 13:58:58
UaExpert比你做更多的簿记工作。您应该知道您为哪些节点创建了MonitoredItems,并能够从这些节点获取BrowseName或DisplayName属性。
在这个回调中,您可以访问NodeId --这应该是访问Node和您感兴趣的任何属性的关键。
https://stackoverflow.com/questions/69854183
复制相似问题