VisualHMI 关于 LUA:main.lua 结构、数据类型声明、查错与分模块

免费免费技术资料

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

LUA 是 VisualHMI 的脚本语言,负责把 HMI 从「显示终端」变成「能干活的主机」:协议解析、逻辑判断、数据运算、文件操作全在脚本里。先搞懂 main.lua 的程序结构和系统回调,后面所有 API 才有地方放。

1. main.lua 基本结构

_ENCRYPT_ = 0            -- LUA 脚本加密开关(量产加密置1)
-- 数据类型定义(随协议变化,Modbus 常用这些)
VT_LW = 1               -- 内部变量(掉电不保存)
VT_RW = 2               -- Flash 掉电保存区
VT_0x = 10              -- 线圈
VT_1x = 11              -- 输入
VT_3x = 12              -- 输入寄存器
VT_4x = 13              -- 保持寄存器

-- 系统回调函数(自动被调用,不用自己调)
function on_init() end              -- 上电加载后执行一次
function on_run(screen) end         -- 周期执行
function on_update(slave,vtype,addr) end  -- 变量变化
function on_draw(screen,control) end      -- 自绘

main.lua 是入口文件,工程编译时一并打包。大工程建议分模块:在 on_init 里 dofile(“xxx.lua”) 拆开,好维护。

2. 编辑工具与编码

官方推荐 NotePad++、Lua editor、VS Code 编辑脚本。编码必须注意:文件编码和 HMI 工程设置要一致(UTF-8 或 GB2312),编码不对中文会乱码,字符串比较也全错。

3. 查错方法(LUA 没有断点调试)

LUA 是解释性语言,不能断点单步。虚拟屏调试常见三类异常:

  • nil 值错误:访问了未定义的变量/表元素——先检查变量初始化
  • 类型错误:number 当 table 用、string 拼接 nil——print 打印类型确认
  • 内存溢出重启:全局累积数据不释放——查循环里是不是一直 table.insert

实体屏调试用 TTL 调试串口 J2,波特率 115200 8N1,print 输出走这个口。

VisualHMI 关于 LUA:main.lua 结构、数据类型声明、查错与分模块插图

4. dofile 分模块管理

function on_init()
  dofile("config.lua")     -- 参数配置
  dofile("protocol.lua")   -- 协议解析
  dofile("ui.lua")         -- 界面逻辑
end

模块之间共享全局变量,注意命名别冲突(习惯加前缀,如 g_、m_)。

三个坑:①_ENCRYPT_ 置 1 后脚本被加密,改脚本要重新编译下载,调试期保持 0;②文件编码必须和工程一致,UTF-8/GB2312 混用中文全乱;③print 输出走调试串口 J2(115200 8N1),实体屏看日志接 USB-TTL。

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

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

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

工程师会员

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

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

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

发表回复

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