LUA 是 VisualHMI 的脚本语言,负责把 HMI 从「表示终端」变成「能干活的マスター」:协议解析、逻辑判断、データ运算、文件操作全在脚本里。先搞懂 main.lua 的程序構造和系统回调,后面すべての API 才有地方放。
1. main.lua 基本構造
_ENCRYPT_ = 0 -- LUA script加密开关(量产加密置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,Baud rate 115200 8N1,print 出力走这个口。

4. dofile 分モジュール管理
function on_init()
dofile("config.lua") -- 参数設定
dofile("protocol.lua") -- 协议解析
dofile("ui.lua") -- 界面逻辑
endモジュール之间共享全局变量,注意命名别冲突(习惯加前缀,如 g_、m_)。
整理自 广州大彩科技 VisualHMI 开发ドキュメント(hmi-doc.gz-dc.com)LUA Tutorial「什么是LUA」,著作権は大彩科技すべての。
Leave a Reply