本文目录
- 1. 1. 系统回调函数
- 2. 2. 通信控制
- 3. 2.1 start_read 参数
- 4. 3. 寄存器读写 API(速查)
- 5. 4. 其他常用
这是 VisualHMI LUA 的API 总表:系统回调、通信控制、寄存器读写、字符串、串口、定时器、画图、文件、数据库全套函数。开发时查这一篇就够。
1. 系统回调函数
| 函数 | 触发时机 |
|---|---|
| on_init() | 上电加载后执行一次 |
| on_run(screen) | 主循环周期调用(set_run_cycle 设周期) |
| on_update(slave,vtype,addr) | 变量被修改时(用户操作或脚本) |
| on_screen_change(screen) | 画面切换完成后 |
| on_press(state,x,y) | 触摸事件(0抬起/1按下/2长按) |
| on_usb_inserted(driver)/on_usb_removed() | U 盘插拔 |
| on_sd_inserted(dir)/on_sd_removed() | SD 卡插拔 |
| on_parse_timestamp(screen,control,timestamp) | 时间戳解析(数据记录控件) |
2. 通信控制
| 函数 | 说明 |
|---|---|
| set_notify(enable) | 通信帧收发通知开关:1=使能 on_cmd_resp,0=关闭 |
| select_slave(slave_id) | 选择当前从机(0 起);配合 set_slave_site 映射实际站号 |
| set_slave_site(idx, slave_id) | 设置从机序号与站号映射 |
| set_endian(en) | 字节序:0=小端(默认),1=大端 |
| create_resp_que() | 创建响应队列,使能 on_cmd_resp 回调 |
| start_read(index,vtype,addr,quantity,cycle,cycle_run,mode) | 后台自动轮询读从机寄存器 |
| stop_read(index) | 停止指定索引的轮询 |
| stop_all_read() | 停止全部轮询 |
| set_auto_read(en) | 0=脚本控制读取(配 start_read),1=自动 |
2.1 start_read 参数
start_read(index, vtype, addr, quantity, cycle, cycle_run, mode) -- index: 轮询任务索引(0~N) -- vtype: 变量类型 VT_4x/VT_0x 等 -- addr: 起始地址 -- quantity: 数量 -- cycle: 轮询周期(ms) -- cycle_run: 0=定时器触发, 1=画面触发 -- mode: 1=自动后台轮询(默认)
例:start_read(1, VT_4x, 0x2000, 10, 3, 2)——索引 1、保持寄存器 0x2000 起 10 个、周期 3ms。
3. 寄存器读写 API(速查)
| 函数 | 范围 | 地址跨度 |
|---|---|---|
| set_bit / get_bit | 位(0/1) | 1 位 |
| set_uint16 / get_uint16 | 0~65535 | 1 寄存器 |
| set_int16 / get_int16 | -32768~32767 | 1 寄存器 |
| set_uint32 / get_uint32 | 0~4294967295 | 2 寄存器 |
| set_int32 / get_int32 | -2^31~2^31-1 | 2 寄存器 |
| set_uint64 / get_uint64 | 0~2^64-1 | 4 寄存器 |
| set_int64 / get_int64 | -2^63~2^63-1 | 4 寄存器 |
| set_float / get_float | IEEE754 单精度 | 2 寄存器 |
| set_double / get_double | IEEE754 双精度 | 4 寄存器 |
| set_string / get_string | 最大 2048 字节 | 字节数/2 |
| set_uint16_ex | 批量写,最多 120 个 | 连续 |
| set_array | 批量写 Lua 表,最多 120 字 | 连续 |
vtype 取值(Modbus):VT_0x=10(线圈)、VT_1x=11(输入点)、VT_3x=12(输入寄存器)、VT_4x=13(保持寄存器)、VT_LW=1(内部变量)、VT_RW=2(掉电保持)。FX3U 另有 VT_X/VT_Y/VT_S/VT_M/VT_D/VT_T/VT_C。
4. 其他常用
get_date_time():读取系统时间(年/月/日/时/分/秒/星期)delay_ms(ms):延时(慎用,阻塞主循环)feed_dog():喂看门狗(超长任务里防复位)redraw():强制刷新画面(触发 on_draw)set_pen_color(color):设置画笔颜色(RGB565),供 on_draw 绘图用print(...):调试输出(虚拟屏设置窗口/实体屏调试口)pcall(f):保护调用,捕获运行时错误不崩脚本

API 名字大小写敏感、下划线不能省(set_uint16 写成 setuint16 直接 nil 报错)。on_cmd_resp 是通信回调核心:set_notify(1)+create_resp_que() 使能后,每帧响应都会回调,配 start_read 做脚本主导的通信。
整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「Lua API」,版权归大彩科技所有。
发表回复