VisualHMI について LUA:main.lua 構造、データ型声明、查错与分モジュール

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

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 出力走这个口。

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 Tutorial「什么是LUA」,著作権は大彩科技すべての。

Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.