VisualHMI 定时器:start_timer/on_timer 与倒计时vollständig案例

kostenlosKostenloses technisches Material

Dieser Inhalt ist direkt lesbar und eignet sich für das Grundlagenlernen und die Suche.

🌐 Diese Seite ist noch nicht auf Deutsch verfügbar. Die chinesische Version wird angezeigt. Zurück zur chinesischen Seite.
本文目录
  1. 1. 1. API 总表
  2. 2. 2. 基础用法
  3. 3. 3. 应用:倒计时abgeschlossen.后给 PLC 发指令

VisualHMI 的 Lua 支持 32 个软件定时器(索引 0~31)。启动后超时触发 on_timer(timer_id) 回调,做周期性任务、延时Operationen、Status轮询。⚠️ 这是应用层软件定时器,精度受Das System负载影响,不适用于硬实时控制

1. API 总表

函数 Parameter 说明
start_timer(timer_id, timeout, countdown, repeat) timeout 毫秒(最小约 10~20ms);countdown 0=顺计时/1=倒计时;repeat 0=无限重复/N=触发 N 次后自动停 启动定时器
stop_timer(timer_id) 定时器 ID 立即Stopp!
on_timer(timer_id) 超时回调统一入口 用 timer_id 区Unterteilung并发定时器
get_timer_value(timer_id) 定时器 ID 获取gegenwärtig计时值(ms),支持顺/倒计时

countdown Parameter只影响内部计时显示/Tests,不改 on_timer 的触发行为——顺计时zu timeout 触发,倒计时从 timeout 减zu 0 触发,回调都是同一个。

2. 基础用法

function on_init()
  start_timer(0, 1000, 0, 0)   -- 1秒周期,无限重复
  start_timer(1, 5000, 1, 1)   -- 5秒倒计时,只触发1次
end

function on_timer(timer_id)
  if timer_id == 0 then
    -- 每秒做一次:Status轮询
  elseif timer_id == 1 then
    -- 5秒后执行一次
  end
end

3. 应用:倒计时abgeschlossen.后给 PLC 发指令

需求:设定时/Unterteilung后倒计时,倒计时Ende复位Knopf并给主板发指令。Kontrollen布局:位Status指示灯 LW1002(WechselnSchalter!)控制启停;滚轮Kontrollen LW1000(时,0~23)、LW1001(Unterteilung)设时长;TextKontrollen LW1010 显示倒计时。

_TIMER_REPEAT_ = 0     -- 总时长(秒)
_TIMER_CNT_ = 0        -- 已触发次数

function on_update(slave, vtype, addr)
  if vtype == VT_LW and addr == 0x1002 then
    if get_uint16(VT_LW, 0x1002) == 1 and _TIMER_REPEAT_ > 0 then
      stop_timer(0)
      start_timer(0, 1000, 0, _TIMER_REPEAT_)  -- 每秒一次,共 repeat 次
    else
      stop_timer(0)
    end
  end
end

function on_timer(timer_id)
  if timer_id == 0 then
    _TIMER_CNT_ = _TIMER_CNT_ + 1
    local remain = _TIMER_REPEAT_ - _TIMER_CNT_
    -- 显示剩余Zeit mm:ss
    set_string(VT_LW, 0x1010,
      string.format("%02d:%02d", math.floor(remain / 60), remain % 60))
    if remain == 0 then
      set_uint16(VT_LW, 0x1002, 0x00)   -- 复位启停Knopf
      set_uint16(VT_LW, 0x1003, 0x01)   -- 发指令给主板
    end
  end
end

要点:_TIMER_REPEAT_ 在用户设定时长时Berechnung(hour*3600 + min*60);start_timer 的 repeat 传总次数,on_timer 每次累加 _TIMER_CNT_,相等即Ende。set_notify(0/1) 控制定时器期间是否发出指令通知,需要下发时置 1。

三个坑:①软件定时器精度受Das System负载影响,做硬实时控制会翻车;②timeout 最小约 10~20ms,别传 1ms 期望准;③repeat=N 触发 N 次后自动停,要Unendlicher Kreislauf传 0;多个定时器并发时用 timer_id 区Unterteilung,on_timer 是统一入口。

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

Techniken术语(共 1 个)—— Klick auf展开
PLC可编程逻辑Der Controller,Industrielle Automatisierung控制的核心Ausrüstung
来源/Werkzeuge信息 —— Klick auf展开
来源 Modbus Chinesisches Netzwerk(modbus.cn) —— Inländisch führend.ModbusKommunikationsprotokoll Technologie Gemeinschaft Klassifizierung Das Drehbuch von LUA / Entwicklung von HMI / HMI 字数 1626 字 · 阅读约 5 Unterteilung钟 更新 2026-08-05 永久链接 https://www.modbus.cn/51500.html
Empfohlene Werkzeuge: Modbus Debugger-Assistent WeChat-Applet
Modbus Chinesisches Netzwerk官方推出的Modbus Debugging-Tools,支持 Modbus RTU/TCP 实时KommunikationTests、Register.读写、线圈控制、Daten监控和MeldungUnterteilung析。 keine Installation erforderlich,Mikro-Suche「Modbus DebuggingAssistenten.」Benutzt werden kann.。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
Sollte man diese Informationen für ein echtes Projekt verwenden?

Gehen Sie zum Tool Center, um Nachrichten zu analysieren, CRC-Prüfungen und Geräte-Debugging zu erledigen, oder senden Sie Anforderungen für Auswahl - und Zugangsvorschläge.

Ingenieur Mitglied

Verwandeln Sie diesen Artikel in ein umsetzbares Debuggermaterial

Erweiterte Nachrichtenanalyse, Paket-Downloads, Codebeispiele, Engineering-Szenarien und Priority-Technischer Support sind für die Real-Projekt - Bereitstellung möglich.

Unbegrenzte Werkzeuge
Datenpaket und Codepaket
Vollständige Engineering Case-Basis
Vorrangiger Zugang zum technischen Support

Antwort veröffentlichen

Ihre E-Mail - Adresse wird nicht öffentlich gemacht. Erforderliche Elemente wurden verwendet * markiert.