1

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

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

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

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

非常感谢。

4

2 回答 2

2

不幸的是,订阅总是与特定的时间间隔相关联。我正在寻找类似“推送通知”的东西,它可以立即收到,没有特定的时间间隔。

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

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

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

于 2017-02-10T13:54:45.697 回答
0

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

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

第二个选项似乎适用于您的用例,因为这是在 OPC UA 服务器中不进行采样的选项。随着对象的事件发生,它们被添加到队列中。我不知道该怎么做,我不确定这个对象事件是 Kevin Herron 所说的:“事件尚未在服务器 SDK 中实现”。

来源

于 2017-12-16T15:02:34.513 回答