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

时间:2019-01-02 07:58:10

标签: opc-ua milo

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

  1. 如何在发现服务器上注册OPC UA服务器?这是 仅当制造商提供类似网络的内容时, 接口,还是有标准化的方法?
  2. 如何在发现服务器上注册由milo创建的OPC UA服务器?
  3. 是否可以禁用由milo opc ua服务器自动启动的发现服务器?
  4. 如何通过milo获取有关已注册服务器的信息?

1 个答案:

答案 0 :(得分:1)

  
      
  1. 如何在发现服务器上注册OPC UA服务器?如果制造商为此提供了诸如Web界面之类的东西,还是只有一种标准化的方法可以做到?   

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

OPC UA发现有三个主要概念:

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

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

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

  
      
  1. 如何在发现服务器上注册由milo创建的OPC UA服务器?
  2.   

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

  
      
  1. 是否可以禁用由milo opc ua服务器自动启动的发现服务器?
  2.   

由于Eclipse Milo默认情况下不支持发现服务,因此不会自动启动它。无论如何,您可以通过添加或删除相应的服务集来定义支持哪些服务。看看这一行:

stackServer.addServiceSet((DiscoveryServiceSet) sessionManager);

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

  
      
  1. 如何通过milo获取有关已注册服务器的信息?
  2.   

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

  • FindServers返回已注册服务器的列表,称为RegisterServerRegisterServer2
  • FindServersOnNetwork仅受LDS-ME服务器支持,并且还会返回通过mDNS消息声明自己但尚未注册的服务器。

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

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

其他资源:

您还可以查看我写的有关OPC UA LDS-ME发现功能和特定用例的论文用于即插即用的OPC UA:使用LDS-ME进行自动设备发现https://mediatum.ub.tum.de/node?id=1375255