本文介绍 Zport 系列 IND 模块与显控 HMI 通过 Modbus RTU 通讯读取扫码数据, 并将 Modbus 字寄存器数据转换为 HMI 可直接显示和比较的字符串。
文字版
Zport 系列 IND 模块_显控 HMI 示例程序说明
第一步
如图 1 所示,设置串口通讯参数为:115200,8,N,1, 建立 Zport 模块 ModbusRTU 通讯, 通讯周期时间设置为 100ms (通讯时间应大于宏指令脚本周期时间)。
第二步
如图 2 所示,建立“字地址转发”, 将 Modbus 地址为 3x1 (对应功能码 04,起始地址 01) 的连续 30 个字寄存器的数据 存入 HMI 内部寄存器地址 LW0..29。
第三步
如图 3 所示,创建宏指令, 设置全局变量 Modbus 数据缓存变量“scanner48” 和导出字符串_内部存储变量名称“LW100”, 分别映射地址 LW0..29 和 LW100..114。
设置全局变量 LB0 用于字符串比较测试, 设置全局变量 LW99 作为“扫码计数器”, 方便判断扫取相同码时扫码字符的新旧。
“Modbus 数据缓存变量”字节数与 “导出字符串_内部存储变量名称”字节数为 2 倍关系。
“导出字符串_内部存储变量名称”字节数 与第四步导出脚本之中, 扫码字符串最大长度相同。
第四步
如图 4 所示,使用 “Zport 系列 IND 模块显控 HMI—字符串脚本导出程序.html” 脚本,生成脚本程序,参数设置中:
“目标字符串变量名称”做为字符串比较时使用。
“Modbus 数据缓存变量名称” 对应宏指令“scanner48”全局变量;
“导出字符串_内部存储变量名称” 对应宏指令“LW100”全局变量;
“结尾字符串清除”一般选择 0D/03 结束符, 用于清除扫码自带 0x0D 回车字符 和模块自带 0x03 结束字符;
“扫码字符串最大长度”的最小设置值, 建议按照“项目最大扫码字符长度 + 3”进行设置。 实际应用中通常取 10 的整数倍, 便于配置和维护。
需要注意的是,读取寄存器数量越多, 单次通信的数据长度越大, 收发时间也会相应增加, 从而降低通信效率。 因此,应根据实际扫码字符长度 合理设置读取数量。
“LW 字节组合格式” 按照显控默认设置格式一。
第五步
如图 5 所示,创建脚本程序, 将第四步复制的程序代码粘贴、编译并保存后, 添加至全局宏中, 执行频率设置为 50ms, 此时间应小于 Modbus 通讯周期时间 100ms。
第六步
如图 6 所示,在宏指令尾部添加“用户程序”, 用于字符串比较输出指示和扫码计数。 比较测试字符串在宏指令头部 TestStr 数组中设置。
第七步
如图 7 所示,在画面中, 设置“ASCII 显示”和“数值显示”控件, 并分别绑定 “导出字符串_内部存储变量 LW100(长度 30)” 和“扫码计数器 LW99”。 字符串比较 LED 灯绑定 LB0。
第八步
编译下载后,进行测试。 扫取界面“1234”二维码后, 指示灯点亮, 扫取其他码时熄灭。
本页面提供 Zport 系列 IND 模块显控 HMI 示例程序说明 PDF 文档 以及完整显控 HMI 示例工程下载。 完整示例工程为 RAR 压缩文件, 可通过页面上方“下载完整示例工程”按钮获取。