Eclipse Milo:如何使用 OPC UA 的发现功能?

Eclipse Milo: How to use the Discovery Feature of OPC UA?

我对 OPC UA 的发现功能有一些疑问:

  1. 如何在发现服务器上注册 OPC UA 服务器?这是 只有在制造商提供类似网络的东西时才有可能 接口,还是有标准化的方法?
  2. 如何在发现服务器上注册使用 milo 创建的 OPC UA 服务器?
  3. 是否可以禁用使用 milo opc ua-server 自动启动的发现服务器?
  4. 如何获取milo注册服务器的信息?
  1. How do I register a OPC UA-server on a discovery-server? Is this only possible, if the manufacturer provides something like a web interface for that, or is there a standardized way to do it?

制造商需要支持发现配置文件。 OPC UA 规范第 11 部分(注册后免费提供:https://opcfoundation.org/developer-tools/specifications-unified-architecture/)对此进行了更详细的描述。

OPC UA Discovery 的三个主要概念:

  • 本地发现服务器 (LDS):
    客户端需要知道 LDS 服务器的 IP 地址,然后通过 OPC UA 调用 RegisterServerRegisterServer2 服务。

  • 具有多播扩展的本地发现服务器 (LDS-ME):
    服务器和客户端使用标准化的 mDNS 多播查询来查找网络中的其他 OPC UA 实例。一旦 LDS-ME 服务器宣布自己,普通的 OPC UA 服务器就会知道 IP 地址并调用 RegisterServerRegisterServer2

  • 全球发现服务器 (GDS):
    对于大型系统,可能有多个子网,其中多播查询不起作用。 GDS 是一个企业范围的发现服务器,它也支持证书管理。

  1. How do I register a OPC UA-server, which is created with milo, on a discovery-server?

Eclipse Milo 不完全支持发现功能。它基本上支持LDS。目前有一个自己开放的PR,可惜还没合并:https://github.com/eclipse/milo/pull/89

  1. Is it possible to disable the discovery-server which is automatically started with a milo opc ua-server?

由于Eclipse Milo默认不支持发现服务,所以不会自动启动。不管怎样,您可以通过添加或删除相应的服务集来定义支持哪些服务。查看这一行:

stackServer.addServiceSet((DiscoveryServiceSet) sessionManager);

https://github.com/eclipse/milo/pull/89/files#diff-6eb416ef6889e36b34b34e32cb78b823R122

  1. How to get informations about the registered servers with milo?

在另一台服务器通过 RegisterServerRegisterServer2 自行注册后,客户端可以通过两次服务调用检索已注册服务器的列表。

  • FindServers returns注册服务器列表,其中调用RegisterServerRegisterServer2
  • FindServersOnNetwork 仅支持 LDS-ME 服务器,另外 returns 通过 mDNS 消息宣布自己但尚未注册的服务器。

如果您正在寻找完全实现 LDS 和 LDS-ME 功能的开源堆栈,您可以查看 open62541 项目,它是 OPC 的 C/C++ 实现用户代理: https://github.com/open62541/open62541

GDS 功能目前正在为 open62541 堆栈开发。 (免责声明:我是 open62541 的核心开发者之一)

其他资源:

您还可以查看我写的一篇关于 OPC UA LDS-ME 发现功能和标题为 OPC UA for Plug & Produce: Automatic Device Discovery using 的论文 use-case LDS-ME (https://mediatum.ub.tum.de/node?id=1375255)