Eclipse Milo: Как использовать функцию обнаружения OPC UA?
У меня есть несколько вопросов о функции обнаружения OPC UA:
- Как мне зарегистрировать OPC UA-сервер на discovery-сервере? Возможно ли это только в том случае, если производитель предоставляет для этого что-то вроде веб-интерфейса или существует стандартизированный способ сделать это?
- Как мне зарегистрировать OPC UA-сервер, созданный с помощью milo, на discovery-сервере?
- Можно ли отключить discovery-сервер, который автоматически запускается с milo opc ua-server?
- Как получить информацию о зарегистрированных серверах с milo?
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 - это корпоративный сервер обнаружения, который также поддерживает управление сертификатами.
- Как мне зарегистрировать OPC UA-сервер, созданный с помощью milo, на discovery-сервере?
Eclipse Milo не полностью поддерживает функции обнаружения. Он в основном поддерживает LDS. В настоящее время у меня есть открытый PR, но, к сожалению, он еще не объединен: https://github.com/eclipse/milo/pull/89
- Можно ли отключить discovery-сервер, который автоматически запускается с milo opc ua-server?
Поскольку Eclipse Milo по умолчанию не поддерживает службы обнаружения, он не запускается автоматически. В любом случае вы можете определить, какие сервисы поддерживаются, добавляя или удаляя соответствующий набор сервисов. Проверьте эту строку:
stackServer.addServiceSet((DiscoveryServiceSet) sessionManager);
https://github.com/eclipse/milo/pull/89/files
- Как получить информацию о зарегистрированных серверах с 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)