You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让OPC UA服务器无数据变化时也按订阅sampling interval推送通知

OPC UA 订阅无数据变化时按采样间隔推送通知的实现方案

默认配置下,OPC UA 监控项(MonitoredItem)仅在数据值、状态码符合触发规则发生变化时,才会将采样结果存入推送队列,这就是你当前仅在值变化时收到通知的原因。可以通过以下两种方案实现无数据变化也按采样间隔推送的需求:

方案1:调整数据变化过滤器触发规则(兼容所有主流OPC UA版本)

  • 创建监控项时,将DataChangeFilter的DataChangeTrigger枚举值设置为STATUS_VALUE_TIMESTAMP,即状态、值、源时间戳任意一项变化就触发通知
  • 要求服务端配置对应监控节点的源时间戳(SourceTimestamp)每次采样时自动更新,即使节点值没有发生变化
    按你的场景参数配置后,每次500ms采样时源时间戳更新都会触发通知,每两次采样结果会按1000ms的PublishInterval合并推送,刚好匹配你的需求。

方案2:使用监控项心跳配置(适用于OPC UA 1.04及以上版本)

直接在创建监控项时,将HeartbeatInterval参数设为和采样间隔一致的500ms即可:

  • HeartbeatInterval是OPC UA 1.04版本新增的配置,定义了即使没有数据变化,服务端必须向队列推送采样记录的最长间隔
  • 该参数设为500ms时,每次采样都会生成通知存入队列,完全匹配无变化也推送的需求,不需要额外修改服务端节点的时间戳配置。

配置注意事项

  • 部分老旧OPC UA服务端不支持HeartbeatInterval参数,优先选择方案1进行适配
  • 不要将调整Deadband死区参数作为解决方案:即使死区设为0,值无变化时也不会触发数据变化通知,该参数仅用来控制值变化的最小判定阈值
  • 你当前的PublishInterval=1000、sampling interval=500、queue=2配置不需要调整,两次采样结果会合并成一次发布消息推送,不会额外增加通信负载。

内容的提问来源于stack exchange,提问作者A MJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 17:00:01