- Как зарегистрировать OPC UA-сервер на сервере обнаружения?Это возможно только в том случае, если производитель предоставляет для этого что-то вроде веб-интерфейса или существует стандартизированный способ сделать это?
Производителю необходимо поддерживать профиль обнаружения.Спецификация OPC UA 11 (свободно доступна после регистрации: 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
Global Discovery Server (GDS):
В больших системах может быть несколько подсетей, где многоадресные запросы неработа. GDS - это корпоративный сервер обнаружения, который также поддерживает управление сертификатами.
Как зарегистрировать OPC UA-сервер, созданный с помощью milo, на сервере обнаружения?
Eclipse Milo не полностью поддерживает функции обнаружения.Он в основном поддерживает LDS.В настоящее время существует один открытый PR, но, к сожалению, он еще не объединен: https://github.com/eclipse/milo/pull/89
Можно ли отключить сервер обнаружения, который автоматически запускается с помощью ua-сервера milo opc?
Поскольку Eclipse Milo по умолчанию не поддерживает службы обнаружения, он неавтоматически запускаетсяВ любом случае вы можете определить, какие сервисы поддерживаются, добавляя или удаляя соответствующий набор сервисов.Проверьте эту строку:
stackServer.addServiceSet((DiscoveryServiceSet) sessionManager);
https://github.com/eclipse/milo/pull/89/files#diff-6eb416ef6889e36b34b34e32cb78b823R122
Как получить информацию о зарегистрированных серверах с 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)
Дополнительные источники:
Вы также можете проверить статью, которую я написал о функции OPC UA LDS-ME Discovery и конкретнойсценарий использования под названием OPC UA для Plug & Produce: автоматическое обнаружение устройств с использованием LDS-ME (https://mediatum.ub.tum.de/node?id=1375255)