VisualHMI Modbus 一主多从:start_read 轮询、cycle 调度与读写从机

免费免费技术资料

这篇内容可直接阅读,适合用于基础学习和搜索引流。

Modbus 一主多从:HMI 作为 Modbus 主机,通过 start_read 后台轮询多个从机的寄存器。核心函数 start_read 建任务、get_xxx 读缓存、on_cmd_resp 收结果——不阻塞脚本。

1. start_read 参数

start_read(index, vtype, addr, quantity, cycle, cycle_run, mode)
参数 说明
index 任务索引 0~127,stop_read(index) 用
vtype 寄存器类型(VT_0x/VT_3x/VT_4x 等)
addr 起始地址
quantity 读取数量 1~120 个寄存器
cycle 选填,轮询周期倍数(默认 0=每周期都读)
cycle_run 选填,周期内第几次执行(0-based,须 < cycle)
mode 选填,0=持续周期读(默认)/1=仅读一次(需先 create_resp_que())

2. 基本用法

function on_init()
  -- 每周期都读从机0的 4x1000~1009(10个寄存器)
  start_read(0, VT_4x, 0x1000, 10)
  -- 每 3 个周期读一次从机1的 4x2000~2009,且在周期内第3次执行
  start_read(1, VT_4x, 0x2000, 10, 3, 2)
end

function on_run(screen)
  -- 读数据直接拿缓存,零通信开销
  local v = get_uint16(VT_4x, 0x1000)
  local f = get_float(VT_4x, 0x2000)
end

start_read 只建任务,实际数据靠 get_xxx 从本地缓存读——和寄存器操作篇同一个机制。要拿读完成通知,用 on_cmd_resp 回调(需 create_resp_que 配合)。

3. 多从机轮询调度

-- 8 台从机,每台读 20 个寄存器,错开周期避免总线拥堵
function on_init()
  for i = 0, 7 do
    start_read(i, VT_4x, 0x0000, 20, 8, i)  -- 8周期轮一遍,每周期读一台
  end
end

function on_cmd_resp(slave, vtype, addr, count, ret, wr)
  if ret == 0 then
    -- 第 slave 台从机读取成功,处理数据
  else
    -- 通信异常,标记从机离线
  end
end

从机多了总线带宽有限,用 cycle/cycle_run 错峰读;异常在 on_cmd_resp 里 ret 非 0 判断,做离线标记。

三个坑:①quantity 最大 120,超过要分多次 start_read;②cycle_run 必须小于 cycle,且 cycle_run 从 0 计数;③stop_read 停止任务后缓存保留最后值——不会清零,判断离线要靠 on_cmd_resp 的 ret。

整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「Modbus一主多从」,版权归大彩科技所有。

技术术语(共 1 个)—— 点击展开
寄存器Modbus 寄存器存储数据单元,分线圈/离散输入/保持/输入寄存器四类
来源/工具信息 —— 点击展开
来源 Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 分类 LUA 脚本 / 串口屏/HMI 开发 字数 1199 字 · 阅读约 3 分钟 更新 2026-08-05 永久链接 https://www.modbus.cn/51499.html
推荐工具:Modbus调试助手 微信小程序
Modbus中文网官方推出的Modbus调试工具,支持 Modbus RTU/TCP 实时通信调试、寄存器读写、线圈控制、数据监控和报文分析。 无需安装,微信搜索「Modbus调试助手」即可使用。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
📝 作者声明
本文由 Modbus中文网技术团队 原创撰写,内容基于实际项目案例与技术文档,力求为读者提供准确、实用的参考信息。
把这篇资料用于真实项目?

进入工具中心进行报文解析、CRC 校验和设备调试,或提交需求获取选型与接入建议。

工程师会员

把这篇文章变成可执行的调试资料

开通后可使用高级报文解析、资料包下载、代码示例、工程案例和优先技术支持,适合真实项目交付。

高级工具不限次
资料包与代码包
完整工程案例库
优先技术支持入口

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注