如何在Eclipse Milo

时间:2017-02-10 08:21:10

标签: java opc opc-ua milo

我目前正在使用Eclipse Milo订阅来自OPC UA服务器(也是Milo)的值:

client.getSubscriptionManager().createSubscription(interval).get();

不幸的是,订阅始终与特定的区间相关联。我正在寻找类似于“推送通知”的内容,即立即,没有特定的间隔。显然,可以创建一个非常频繁的订阅,但这不是一个优雅的方法。

浏览Milo源代码时,我注意到了课程LimitAlarmNode。是否可以设置服务器上的节点设置为特定值后立即收到的警报?如果是这样,我该怎么做?

非常感谢。

2 个答案:

答案 0 :(得分:2)

  

不幸的是,订阅始终与特定时间间隔相关联。我正在寻找类似于"推送通知"即时收到,没有特定的间隔。

OPC UA中没有即时订阅;通知将始终按订阅定义的时间间隔发布。当您只处理少量项目时,这似乎是不可取的,但当您发生数万(或更多)潜在变化时,它是唯一可扩展的方法。

OPC UA警报和条件在OPC UA事件模型之上定义。客户端当前支持订阅事件,因此如果您确实拥有支持警报的服务器,则客户端可以订阅它们。

不幸的是,服务器SDK中尚未实现事件,因此即使警报确实提供了您正在寻求支持的功能,也可能是服务器中的一种出路。

答案 1 :(得分:0)

根据OPC UA的Unified Automatiion文档,OPC UA客户端可以订阅三种类型的更改:

  1. 订阅变量值的数据更改(变量的值属性),
  2. 订阅对象事件(Object& EventFilter Set的EventNotifier属性),
  3. 根据当前的变量值订阅聚合值,这些值是在客户定义的时间间隔内计算的。
  4. 第二个选项似乎适用于您的用例,因为这是OPC UA服务器中不进行采样的选项。随着对象的事件发生,它们被添加到队列中。我不知道该怎么做,我不确定这个事件对象是Kevin Herron所说的:"事件尚未在服务器SDK中实现"。

    Source