weixin_40855208 2023-10-09 14:35 采纳率: 0%
浏览 86
已结题

java代码获取opc ua服务端数据

服务端是科大智控的组态软件,已开启OPCUA服务,使用组态软件内自带的OPCUA客户端,能看到数据,如下图:

img

我们自己写的java 客户端只能接收到时间:如下图:

img


,怎么才能读取到objects里面的数据呢。

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-10-09 14:43
    关注

    引自强大而免费的微信小程序:皆我百晓生。如有帮助,还望采纳。


    要读取OPC UA服务端的数据,你需要使用一个OPC UA的Java库,例如Eclipse Milo。以下是一个使用Eclipse Milo读取OPC UA服务端数据的示例代码:

    import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
    import org.eclipse.milo.opcua.stack.core.UaException;
    import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;
    import org.eclipse.milo.opcua.stack.core.types.builtin.Variant;
    import org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UInteger;
    
    import java.util.concurrent.CompletableFuture;
    
    public class Main {
    
        public static void main(String[] args) throws Exception {
            // 创建一个OPC UA客户端
            OpcUaClient client = OpcUaClient.create("opc.tcp://localhost:4840");
    
            // 连接到OPC UA服务端
            client.connect().get();
    
            // 读取Objects节点下的某个变量
            NodeId nodeId = new NodeId(2, "/Objects/YourVariable");
            CompletableFuture<Variant> cf = client.readValue(0, UInteger.valueOf(0), nodeId);
    
            // 获取读取结果
            Variant value = cf.get();
    
            System.out.println("Value: " + value.getValue());
    
            // 断开连接
            client.disconnect().get();
        }
    }
    

    在代码中,你需要将opc.tcp://localhost:4840替换为你实际的OPC UA服务端地址。你还需要将/Objects/YourVariable替换为你想要读取的变量的ID。这个ID可以在OPCUA客户端中查看。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月9日
  • 创建了问题 10月9日