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

OPCUA修改采样率后订阅队列无法获取全部值问题

问题产生原因
  • 你使用的python-opcua库中,modify_monitored_item方法的queuesize参数默认值为0,该取值代表让OPC UA服务器使用默认队列大小(通常为1)。你在初始调用subscribe_data_change时设置的queuesize=2,在调用修改接口时没有主动传入该参数,导致队列大小被重置为1,因此每次发布只能拿到1个最新值,回调仅触发一次。
  • OPC UA订阅存在两个核心时间参数:发布间隔(create_subscription传入的10000ms,即服务器每10秒给客户端推送一次队列中缓存的采样数据)、采样间隔(监控项采集节点值的频率)。你修改后采样间隔为500ms远小于发布间隔,若队列大小正常为2,每次发布时服务器会返回队列中存储的最新2个采样值,触发两次回调。
解决方案

两种可行修改方式任选其一即可:

  • 调用modify_monitored_item时主动传入队列大小参数,保留初始配置的队列长度:
sub.modify_monitored_item(handle, 500, queuesize=2)
  • 省略单独修改监控项的步骤,在初始订阅时就直接指定采样间隔,避免参数被重置:
# 无需再单独调用modify_monitored_item,直接在订阅时指定采样间隔
handle = sub.subscribe_data_change(counter, queuesize=2, sampling_interval=500)

内容的提问来源于stack exchange,提问作者Rony Tesler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:15:08