Eclipse Milo: Как использовать функцию обнаружения OPC UA?

У меня есть несколько вопросов о функции обнаружения OPC UA:

  1. Как мне зарегистрировать OPC UA-сервер на discovery-сервере? Возможно ли это только в том случае, если производитель предоставляет для этого что-то вроде веб-интерфейса или существует стандартизированный способ сделать это?
  2. Как мне зарегистрировать OPC UA-сервер, созданный с помощью milo, на discovery-сервере?
  3. Можно ли отключить discovery-сервер, который автоматически запускается с milo opc ua-server?
  4. Как получить информацию о зарегистрированных серверах с milo?

1 ответ

Решение
  1. Как мне зарегистрировать OPC UA-сервер на discovery-сервере? Возможно ли это только в том случае, если производитель предоставляет для этого что-то вроде веб-интерфейса или существует стандартизированный способ сделать это?

Производитель должен поддерживать профиль обнаружения. Часть 11 Спецификации OPC UA (свободно доступна после регистрации: https://opcfoundation.org/developer-tools/specifications-unified-architecture/) описывает это более подробно.

Существует три основных понятия для OPC UA Discovery:

  • Локальный сервер обнаружения (LDS):
    Клиент должен знать IP-адрес сервера LDS, а затем вызывает RegisterServer или же RegisterServer2 Сервис через OPC UA.

  • Локальный сервер обнаружения с расширением многоадресной рассылки (LDS-ME):
    Сервер и клиент используют стандартизированные многоадресные запросы mDNS для поиска других экземпляров OPC UA в сети. Как только сервер LDS-ME объявляет о себе, обычный сервер OPC UA знает IP-адрес и вызывает RegisterServer или же RegisterServer2

  • Глобальный сервер обнаружения (GDS):
    Для больших систем может быть несколько подсетей, где многоадресные запросы не работают. GDS - это корпоративный сервер обнаружения, который также поддерживает управление сертификатами.

  1. Как мне зарегистрировать OPC UA-сервер, созданный с помощью milo, на discovery-сервере?

Eclipse Milo не полностью поддерживает функции обнаружения. Он в основном поддерживает LDS. В настоящее время у меня есть открытый PR, но, к сожалению, он еще не объединен: https://github.com/eclipse/milo/pull/89

  1. Можно ли отключить discovery-сервер, который автоматически запускается с milo opc ua-server?

Поскольку Eclipse Milo по умолчанию не поддерживает службы обнаружения, он не запускается автоматически. В любом случае вы можете определить, какие сервисы поддерживаются, добавляя или удаляя соответствующий набор сервисов. Проверьте эту строку:

stackServer.addServiceSet((DiscoveryServiceSet) sessionManager);

https://github.com/eclipse/milo/pull/89/files

  1. Как получить информацию о зарегистрированных серверах с milo?

После того, как другой сервер зарегистрировался через RegisterServer или же RegisterServer2 клиент может получить список зарегистрированных серверов с помощью двух сервисных вызовов.

  • FindServers возвращает список зарегистрированных серверов, на которых RegisterServer или же RegisterServer2
  • FindServersOnNetwork поддерживается только для серверов LDS-ME и дополнительно возвращает серверы, которые объявили себя через сообщение mDNS, но еще не зарегистрировались.

Если вы ищете стек с открытым исходным кодом, который полностью реализует функции LDS и LDS-ME, вы можете взглянуть на проект open62541, который является реализацией OPC UA на C / C++: https://github.com/open62541/open62541

Функция GDS в настоящее время разрабатывается для стека open62541. (Отказ от ответственности: я один из основных разработчиков в open62541)

Дополнительные ресурсы:

Вы также можете проверить статью, которую я написал о функции обнаружения LDS-ME OPC UA и конкретном сценарии использования под названием OPC UA для Plug & Produce: автоматическое обнаружение устройств с использованием LDS-ME ( https://mediatum.ub.tum.de/node?id=1375255)

Другие вопросы по тегам