如何在 Eclipse Milo 中获取 OPC UA 节点名称?

Posted

技术标签:

【中文标题】如何在 Eclipse Milo 中获取 OPC UA 节点名称?【英文标题】:How can I get OPC UA node name in Eclipse Milo? 【发布时间】:2021-12-19 13:32:21 【问题描述】:

我按照 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:收到的订阅值:item=NodeIdns=4, id=4, value=Variantvalue=false, valueID=ReadValueId(nodeId=NodeIdns=4, id=4,attributeId=13,indexRange=null, dataEncoding=QualifiedNamename=null, namespaceIndex=0)

我看到 name 为 null 并且没有获取节点名称的方法。但是,如果我使用 OPC 客户端“OPC Expert”,我还可以获得节点的名称,就像它们在 PLC 上一样:

还有其他方法可以获取变量名吗?

【问题讨论】:

【参考方案1】:

UaExpert 做的簿记工作比您做的多。您应该知道您为哪些节点创建了 MonitoredItems,并且能够从这些节点获取 BrowseName 或 DisplayName 属性。

在该回调中,您可以访问 NodeId - 这应该是您访问 Node 和您感兴趣的任何属性的关键。

【讨论】:

以上是关于如何在 Eclipse Milo 中获取 OPC UA 节点名称?的主要内容,如果未能解决你的问题,请参考以下文章

Springboot 实现操作OPC ua Server 的数据读写 | 代码教程

Springboot 实现操作OPC ua Server 的数据读写 | 代码教程

opc-ua milo项目的骆驼路线

我无法从 Eclipse Milo Client 和 KepServerEx 服务器中的服务器获取价值

OPCUA标准java实现 Milo库

如何获取 .Net C# 上的 OPC UA 服务器列表?