Петли конфигурации подключения - Prosys OPC UA Client

Я использую примеры кодов из документации и пытаюсь подключиться к серверу с помощью Prosys OPC UA Client. Я пробовал opcua-commander и объекты интеграции opc ua client, и похоже, что сервер работает нормально.

Вот что происходит:

  1. После ввода endpointUrl клиент добавляет к url ​​-- urn:NodeOPCUA-Server-default.
  2. Клиент просит указать параметры безопасности.
  3. Клиент просит выбрать сервер - только 1 вариант и его урна: NodeOPCUA-Server-default.

И это снова и снова возвращается к шагам 2 и 3.

Если я просто минимизирую клиент ProSys, не закрывая конфигурацию, через некоторое время я получаю эту информацию в терминале: Server: closing SESSION new ProsysOpcUaClient Session15 because of timeout = 300000 has expired without a keep alive \x1B[46mchannel = \x1B[49m ::ffff:10.10.13.2 port = 51824

Я пробовал этот проект, и он работает -> node-opcua-htmlpanel. Чего тогда не хватает в образце кода?

После открытия отладчика я заметил, что каждый раз, когда я выбираю настройки безопасности и нажимаю ОК, server_publish_engine сообщает:

server_publish_engine:179 Cencelling pending PublishRequest with statusCode BadSecureChannelClosed (0x80860000) length = 0


person Wiktor    schedule 22.03.2018    source источник


Ответы (2)


Это связано с конкретной проблемой совместимости, появившейся в [email protected]. это будет исправлено в следующей версии node-opcua. Разрешение можно отслеживать здесь https://github.com/node-opcua/node-opcua/issues/464

person Etienne    schedule 23.03.2018

Проблема решена на Форум Prosys OPC:

Ошибка возникает из-за того, что сервер отправляет разные EndpointDescriptions в GetEndpointsResponse и CreateSessionResponse.

В GetEndpoints возвращаемые EndpointDescriptions содержат TransportProfileUri = http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary. В CreateSessionResponse соответствующий TransportProfileUri пуст.

В принципе, серверное приложение не работает согласно спецификации. В части 4 спецификации OPC UA указано, что «Сервер должен вернуть набор EndpointDescriptions, доступных для serverUri, указанного в запросе. … Клиент должен сверить этот список со списком из DiscoveryEndpoint, если он использовал DiscoveryEndpoint для выборки EndpointDescriptions. Рекомендуется, чтобы Серверы включали только server.applicationUri, endpointUrl, securityMode, securityPolicyUri, userIdentityTokens, transportProfileUri и securityLevel со всеми другими параметрами, установленными на null. Клиент проверяет только рекомендуемые параметры ».

person Jouni Aro    schedule 23.03.2018