Eclipse Milo:如何使用 OPC UA 的发现功能?
Eclipse Milo: How to use the Discovery Feature of OPC UA?
我对 OPC UA 的发现功能有一些疑问:
- 如何在发现服务器上注册 OPC UA 服务器?这是
只有在制造商提供类似网络的东西时才有可能
接口,还是有标准化的方法?
- 如何在发现服务器上注册使用 milo 创建的 OPC UA 服务器?
- 是否可以禁用使用 milo opc ua-server 自动启动的发现服务器?
- 如何获取milo注册服务器的信息?
- 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 调用 RegisterServer
或 RegisterServer2
服务。
具有多播扩展的本地发现服务器 (LDS-ME):
服务器和客户端使用标准化的 mDNS 多播查询来查找网络中的其他 OPC UA 实例。一旦 LDS-ME 服务器宣布自己,普通的 OPC UA 服务器就会知道 IP 地址并调用 RegisterServer
或 RegisterServer2
全球发现服务器 (GDS):
对于大型系统,可能有多个子网,其中多播查询不起作用。 GDS 是一个企业范围的发现服务器,它也支持证书管理。
- 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
- 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
- How to get informations about the registered servers with milo?
在另一台服务器通过 RegisterServer
或 RegisterServer2
自行注册后,客户端可以通过两次服务调用检索已注册服务器的列表。
FindServers
returns注册服务器列表,其中调用RegisterServer
或RegisterServer2
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)
我对 OPC UA 的发现功能有一些疑问:
- 如何在发现服务器上注册 OPC UA 服务器?这是 只有在制造商提供类似网络的东西时才有可能 接口,还是有标准化的方法?
- 如何在发现服务器上注册使用 milo 创建的 OPC UA 服务器?
- 是否可以禁用使用 milo opc ua-server 自动启动的发现服务器?
- 如何获取milo注册服务器的信息?
- 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 调用RegisterServer
或RegisterServer2
服务。具有多播扩展的本地发现服务器 (LDS-ME):
服务器和客户端使用标准化的 mDNS 多播查询来查找网络中的其他 OPC UA 实例。一旦 LDS-ME 服务器宣布自己,普通的 OPC UA 服务器就会知道 IP 地址并调用RegisterServer
或RegisterServer2
全球发现服务器 (GDS):
对于大型系统,可能有多个子网,其中多播查询不起作用。 GDS 是一个企业范围的发现服务器,它也支持证书管理。
- 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
- 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
- How to get informations about the registered servers with milo?
在另一台服务器通过 RegisterServer
或 RegisterServer2
自行注册后,客户端可以通过两次服务调用检索已注册服务器的列表。
FindServers
returns注册服务器列表,其中调用RegisterServer
或RegisterServer2
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)