У меня есть две службы windows, одна служба (service1) подключается к двум серверам OPC-UA, это прекрасно работает. Другая служба Windows (service2) подключается к тем же двум серверам OPC-UA с идентичным кодом подключения из базового стека в базе данных OPC-UA.OPC-UA BadSecureChannel Закрыто
Service1 может подключаться к серверам OPC-UA и успешно проверяет данные. Во время развертывания Service2 Service2 может также подключать и считывать значения с обоих серверов OPC-UA. В этот момент все было хорошо.
Однако, через некоторое время, без каких-либо изменений какого-либо кода. Service2 больше не может подключаться к одному из серверов OPC-UA, при выполнении Session.Create он просто отвечает ServiceResultException BadSecureChannelClosed (2156265472).
Запуск устранения неполадок. На нашем клиентском сайте у нас также есть тестовый сервер, который выполняет идентичную настройку установки в производственной среде, что означает, что Service1 и Service2 также работают на тестовом сервере и сообщаются одинаково с этими двумя OPC-UA.
Я заметил, что при отключении служб на тестовом сервере ошибка BadSecureChannelClosed Service2 исчезает (однако Service2 все еще может взаимодействовать с другим сервером OPC-UA). Все работает на рабочем сервере.
Это заставляет меня задаться вопросом, какие ограничения сеансов и соединений существуют на сервере OPC-UA. Серверы OPC-UA имеют тип SINUMERIK 840d. Я спросил у Siemens, возможно ли активировать объект ServerDiagnostics для устранения количества сеансов и т. Д., Но они ответили, что это невозможно. Я думал, что этот объект был обязательным для включения?
Может ли кто-нибудь дать мне подсказки о том, что может вызвать это, и о каких ограничениях и о чем я должен думать при создании соединения, например. что должно быть уникальным? Имя приложения? Имя_сеанс? и т. д. Что может вызвать эту, казалось бы, «случайную» ошибку BadSecureChannelClosed. Обратите внимание, что я использую updateBeforeConnect = true в вызове Create Session. И я использую UserIdentity с жестко заданными именами пользователей и паролем.
Еще странно симптомом является то, что для этого сервера OPC-UA, отвечающему с BadSecureChannelClosed, он дает ошибку обнаружения при подключении к нему с UaExpert (ошибки, которые не были представлены несколько недель назад):
16: 58: 41,806 | Автоматическое обновление | Ошибка получения текущей информации о версии: Host updates.unified-automation.com не найден
16: 58: 35.404 | DiscoveryWidget | Открытие GetEndpoints на opc.tcp: //192.168.0.200: 4840 не удалось (BadCommunicationError)
16: 58: 35.401 | DiscoveryWidget | Discovery FindServers на opc.tcp: //192.168.0.200: 4840 не удалось (BadCommunicationError)
Благодарим вас за ответ. О ExtensionObjects, хотя я могу прочитать объект ServerDiagnostics, я не могу включить его, чтобы видеть данные. Вы знаете, нужна ли мне другая конфигурация для включения ServerDiagnostics? Если нет, как я могу узнать, сколько сеансов и т. Д. Я подключил. Когда я пытаюсь написать true для enabledFlag, он просто говорит, что он не записывается, см. Изображение: https://cdn.pbrd.co/images/BlFt52NrP.png –
Серверы не обязаны поддерживать включительную диагностику. –
Я добавил примечание об ExtensionObjects, которое объясняет проблему немного больше. –