Статус OCP UA = Bad_ConnectionClosed с использованием цифрового ПетриJAVA

Программисты JAVA общаются здесь
Anonymous
Статус OCP UA = Bad_ConnectionClosed с использованием цифрового Петри

Сообщение Anonymous »

Итак, в моей работе есть существующий скрипт 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-clien ... UaClientIT. 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 в конце URL-адреса (как рекомендуется). Система сертификатов отсутствует, и ожидается анонимный вход в систему.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ital-petri

Вернуться в «JAVA»