如何在 Eclipse Milo 中添加警报

How to add alarms in Eclipse Milo

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

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

不幸的是,订阅总是与特定时间间隔相关联。我正在寻找类似 "push notification" 的东西,它可以立即收到,没有特定的间隔。显然,创建一个非常频繁的订阅是可能的,但这不是一个优雅的方法。

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

非常感谢。

Unfortunately, subscriptions are always tied to a specific interval. I am looking for something like a "push notification" that is received instantly, without a specific interval.

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

OPC UA 警报和条件是在 OPC UA 事件模型之上定义的。客户端目前支持订阅事件,所以如果你有一个支持警报的服务器,客户端就可以订阅它们。

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

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

  1. 订阅变量值(变量的值属性)的数据变化,
  2. 订阅对象事件(对象和事件过滤器集的 EventNotifier 属性),以及
  3. 订阅聚合值,这些值是根据当前变量值按客户定义的时间间隔计算的。

第二个选项似乎适用于您的用例,因为在 OPC UA 服务器中不进行采样。当对象的事件发生时,它们被添加到队列中。我不知道该怎么做,我不确定这个对象事件是 Kevin Herron 所说的:"events are not yet implemented in the server SDK".

(Source)