OCP UA 状态=Bad_ConnectionClosed 使用数字培养物

问题描述 投票:0回答:1

所以我的工作有一个现有的 python 脚本用于连接到 OPC UA 服务器。这一切都非常基本,我试图用 java 创建一个更好的系统,但是每当我尝试对服务器执行任何操作时,我都会收到消息 status=Bad_ConnectionClosed 的异常。涉及建立连接和检索值的现有 python 脚本如下:

from opcua import Client, ua

opcClient = Client("opc.tcp://localhost:54321")

opcClient.connect;

valueNode = opcClient.get_node("ns=1;s=measure.value")

我不是在开玩笑,这就是这里所做的一切。我能找到的最好的java开源库是Digital Petri,通过maven,com.digitalpetri.opcua:ua-client:1.0.4(也尝试过1.1.1) 我的连接尝试如下:

OpcUaClient opcUaClient = new OpcUaClient(OpcUaClientConfig.builder().setEndpointUrl("opc.tcp://localhost:54321").build()).connect().get();

此行抛出提到的异常,然后我无法检索节点或其他任何内容

经过进一步研究,我在 Digital Petris github 页面上找到了一个客户端示例, https://github.com/kevinherron/ua-client-sdk/blob/master/ua-client-tests/src/test/java/com/digitalpetri/opcua/sdk/client/OpcUaClientIT.java

使用 python 脚本提取所需的配置值后,我能够复制与将客户端连接到服务器相关的部分:

 EndpointDescription[] endpoints = UaTcpStackClient.getEndpoints("opc.tcp://localhost:54321").get();

        EndpointDescription endpoint = Arrays.stream(endpoints)
                .filter(e -> e.getSecurityPolicyUri().equals(SecurityPolicy.None.getSecurityPolicyUri()))
                .findFirst().orElseThrow(() -> new Exception("no desired endpoints returned"));

        OpcUaClientConfig clientConfig = OpcUaClientConfig.builder()
                .setApplicationName(LocalizedText.english("Pure Python Client"))
                .setApplicationUri("urn:freeopcua:client")
                .setEndpoint(endpoint)
                .setRequestTimeout(uint(60000))
                .build();

        OpcUaClient client = new OpcUaClient(clientConfig);

然而,在第一行 EndpointDescription[] endpoints = UaTcpStackClient.getEndpoints("opc.tcp://localhost:54321").get();我也遇到同样的异常。

我尝试在网址末尾添加 /discovery (按照推荐)。没有适当的证书系统,需要匿名登录。

python java opc-ua opcua-client
1个回答
0
投票

但无论如何,数字 Petri 似乎是 Java 的首选,并且应该可以正常工作。

digitalpetri OPC UA 存储库已存档,并明确指出您可以使用 Eclipse Milo 作为替代品。

© www.soinside.com 2019 - 2024. All rights reserved.