VisualHMI 定时器:start_timer/on_timer 与倒计时完整案例

免费免费技术资料

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

本文目录
  1. 1. 1. API
  2. 2. 2. 倒计时案例(完整)

VisualHMI 提供 32 个软件定时器(索引 0~31),配合 on_timer 回调实现延时、周期、倒计时逻辑。注意:软件定时器精度受系统负载影响,不适合硬实时控制。

1. API

函数 说明
start_timer(timer_id, timeout, countdown, repeat) 启动定时器:timeout 单位 ms(最小约 10~20ms);countdown 0=顺计时/1=倒计时(只影响显示调试,不改变 on_timer 行为);repeat 0=无限重复/N=触发 N 次后自动停止
stop_timer(timer_id) 立即停止指定定时器
on_timer(timer_id) 超时统一回调,用 timer_id 区分并发定时器
get_timer_value(timer_id) 获取当前计时值(ms),支持顺/倒计时

VisualHMI 定时器:start_timer/on_timer 与倒计时完整案例插图

2. 倒计时案例(完整)

场景:设定时长(小时+分钟),按启动键开始倒计时,剩余时间显示,到 0 自动复位并发指令给主板。

画面配置:位状态指示灯 LW1002(切换开关)控制启停;滚轮控件 LW1000(时,24 项候选 0~23)、LW1001(分)设时长;文本控件 LW1010 显示倒计时。

LUA

_TIMER_REPEAT_ = 0  -- 总秒数
_TIMER_CNT_    = 0  -- 已计秒数

function on_update(slave, vtype, addr)
  if vtype == VT_LW then
    if addr == 0x1002 then
      local sw = get_uint16(VT_LW, 0x1002)
      local hour = get_uint16(VT_LW, 0x1000)
      local minu = get_uint16(VT_LW, 0x1001)
      if sw == 1 and _TIMER_REPEAT_ > 0 then
        _TIMER_REPEAT_ = hour*3600 + minu*60
        stop_timer(0)
        start_timer(0, 1000, 0, _TIMER_REPEAT_)  -- 每秒触发, 共repeat次
      else
        stop_timer(0)
        _TIMER_REPEAT_ = hour*3600 + minu*60
      end
    end
  end
end

function on_timer(timer_id)
  if timer_id == 0 then
    _TIMER_CNT_ = _TIMER_CNT_ + 1
    local remain = _TIMER_REPEAT_ - _TIMER_CNT_
    local h = math.floor(remain/3600)
    local m = math.floor((remain%3600)/60)
    local s = remain%60
    set_string(VT_LW, 0x1010, string.format("%02d:%02d:%02d", h, m, s))
    if remain <= 0 then
      stop_timer(0)
      set_uint16(VT_LW, 0x1002, 0x00)  -- 复位按钮
      set_uint16(VT_LW, 0x1003, 0x01)  -- 发指令给主板
    end
  end
end

VisualHMI 定时器:start_timer/on_timer 与倒计时完整案例插图1

定时器三坑:①timeout 最小 10~20ms,设 1ms 不会更准;②countdown 参数只影响 get_timer_value 的显示方向,on_timer 触发逻辑一样;③软件定时器受系统负载影响,要做精确时序(如电机控制)别指望它

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

来源/工具信息 —— 点击展开
来源 Modbus.cn — China's leading Modbus communication protocol technical community 分类 LUA 脚本 / 串口屏/HMI 开发 字数 1430 字 · 阅读约 4 分钟 更新 2026-08-04 永久链接 http://www.modbus.cn/en/51500.html
Recommended: Modbus Debug Assistant Mini Program
Modbus中文网官方推出的Modbus调试工具,支持 Modbus RTU/TCP 实时通信调试、寄存器读写、线圈控制、数据监控和报文分析。 无需安装,微信搜索「Modbus调试助手」即可使用。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
📝 作者声明
本文由 Modbus中文网技术团队 原创撰写,内容基于实际项目案例与技术文档,力求为读者提供准确、实用的参考信息。
把这篇资料用于真实项目?

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

工程师会员

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

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

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

发表回复

Your email address will not be published. 必填项已用 * 标注