VisualHMI 自由串口协议(主动):uart_recv/calc_crc16 与 XGUS 映射

免费免费技术资料

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

在被动模式基础上增加主动读取能力:HMI 主动向设备发查询帧并读取响应。适合 HMI 做主设备的私有协议对接。

1. 新增 API

函数 说明
uart_rxsize(ch) 查询接收缓冲字节数
uart_recv(ch, size) 主动读取指定字节数(size≥1),返回下标从 1 的字节表
uart_rxclear(ch) 清空接收缓冲
calc_crc16(data) Modbus CRC-16 计算(低字节在前)

⚠️ 主动读需要工程属性里串口设置 → 接收回调 → 禁用,否则和 on_uart_recv 冲突。

VisualHMI 自由串口协议(主动):uart_recv/calc_crc16 与 XGUS 映射插图

2. 案例:XGUS 协议映射

帧格式:5A A5 + 长度 1B + 指令 1B + 数据 + CRC(可选)。指令 0x82 写、0x83 读。

官方提供基于协程 + 元表的非阻塞框架 XGUS.lua:

dofile("XGUS.lua")
xgus = XGUS:new(0, 0x55AA, true, true)

-- 读从机 0x55AA 的 0x0000 地址 10 个字
local data = xgus:read(0x0000, 10)
if data then
  set_uint16(VT_LW, 0x2000, data[1])
end

-- 写地址 0x0100
xgus:write(0x0100, {0x12, 0x34})

协程框架的好处:脚本层写起来像同步调用,底层自动处理”发请求→等响应→超时重试”,不阻塞 on_run 主循环。

VisualHMI 自由串口协议(主动):uart_recv/calc_crc16 与 XGUS 映射插图1

主动模式三注意:①必须禁用接收回调(工程串口设置里),否则 on_uart_recv 和 uart_recv 抢数据;②calc_crc16 是 Modbus CRC-16,低字节在前;③主动读要防设备无响应——框架内部有超时机制,自己写的话务必加超时

整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「自由串口协议(主动)」,版权归大彩科技所有。

技术术语(共 1 个)—— 点击展开
串口计算机与外部设备进行串行通信的物理接口
来源/工具信息 —— 点击展开
来源 Modbus.cn — China's leading Modbus communication protocol technical community 分类 LUA 脚本 / 串口屏/HMI 开发 字数 752 字 · 阅读约 2 分钟 更新 2026-08-04 永久链接 http://www.modbus.cn/en/51514.html
Recommended: Modbus Debug Assistant Mini Program
Modbus中文网官方推出的Modbus调试工具,支持 Modbus RTU/TCP 实时通信调试、寄存器读写、线圈控制、数据监控和报文分析。 无需安装,微信搜索「Modbus调试助手」即可使用。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
📝 作者声明
本文由 Modbus中文网技术团队 原创撰写,内容基于实际项目案例与技术文档,力求为读者提供准确、实用的参考信息。
把这篇资料用于真实项目?

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

工程师会员

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

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

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

发表回复

Your email address will not be published. 必填项已用 * 标注