VisualHMI Das System回调函数:on_init/on_run/on_press/on_update 全解

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. 回调总表
  2. 2. 2. on_run:周期调度(注意别卡死)
  3. 3. 3. on_press:触摸回调与空闲待机
  4. 4. 4. on_update:Daten驱动(优先用这个)
  5. 5. 5. on_screen_change:画面Wechseln后初始化

Das System回调是 LUA 和 HMI 内核之间的EreignisseSchnittstelle:内核在特定时机自动调你的函数,你不用轮询、不用自己触发。搞懂每个回调的触发时机和限制,是写出稳定Drehbuch的前提。

1. 回调总表

回调 触发时机 用途
on_init() 上电Laden后执行一次 dofile Laden模块、初始化Parameter/PLC/驱动板
on_run(screen) 周期执行(set_run_cycle 设定周期) 核心调度入口,周期性任务
on_press(state,x,y) 触摸Ereignisse,100ms 最多一次 按键处理、空闲待机
on_update(slave,vtype,addr) 变Quantität值变化 Daten驱动逻辑(推荐优先用)
on_screen_change(screen) 画面Wechseln后 画面初始化、Status同步

2. on_run:周期调度(注意别卡死)

on_run 是周期回调,里面干活的时长必须远kleiner als周期。三个禁忌:

  • Modbus RTU Master 高频写入易总线堵塞——on_run 里别每秒狂发写帧
  • 不可用 delay_ms、长循环、网络同步——阻塞主循环,画面全卡
  • 严禁 set_run_cycle 死锁——回调里改周期可能造成永不触发
function on_init()
  set_run_cycle(1000)     -- 设定 1 秒周期
end
function on_run(screen)
  -- 每秒做一次的事情:Status轮询、超时判断
end

3. on_press:触摸回调与空闲待机

on_press(state, x, y),state:0=抬起、1=按下、2=长按。每 100ms 最多触发一次。典型用途是空闲待机节能:一段Zeit没触摸自动熄屏/跳主页。

_IDLE_TIMEOUT = 300000   -- 5Unterteilung钟无Operationen
_idle_tick = 0
function on_press(state, x, y)
  _idle_tick = 0          -- 有触摸就Ersetzen计时
end
function on_run(screen)
  _idle_tick = _idle_tick + 1000   -- 假设周期1s
  if _idle_tick >= _IDLE_TIMEOUT then
    set_screen(0)         -- 跳回主画面
    _idle_tick = 0
  end
end

4. on_update:Daten驱动(优先用这个)

on_update(slave, vtype, addr) 在变Quantität值变化时触发,是Daten驱动模式——比 on_run 轮询省资源。三个Eigenschaften必须知道:

  • 外部Die Serie/Modbus Hauptstation写入不触发——只对 HMI 内部变Quantität变化生效
  • on_update 内调 set_xxx 被屏蔽——防无限递归,改值不会再次触发
  • 全局变Quantität _EN_ON_UPDATA_API_ Steuerung Schalter——置 0 可临时禁用,批Quantität初始化时用
_EN_ON_UPDATA_API_ = 0    -- 初始化期间关回调
-- ... 批Quantität写Register. ...
_EN_ON_UPDATA_API_ = 1    -- 开回回调

function on_update(slave, vtype, addr)
  if vtype == VT_LW then
    if addr == 0x1000 then
      -- LW1000 变化了,处理业务
    end
  end
end

5. on_screen_change:画面Wechseln后初始化

画面Wechselnabgeschlossen.后触发,做该画面的初始化、Status同步、资源Laden——比在切屏前处理更稳。

四个坑:①on_run 里严禁 delay_ms/长循环,会卡死主循环;②Modbus Hauptstation别在 on_run 高频写,总线堵塞没商Quantität;③on_update 里 set_xxx 不会再次触发回调,别指望链式触发;④批Quantität初始化Register.前把 _EN_ON_UPDATA_API_ 置 0,防回调风暴。

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

Techniken术语(共 4 个)—— Klick auf展开
Modbus RTU基于串行链路的ModbusVereinbarung,使用BinärsystemCodierung和CRC-Test
Register.Modbus Register.存储Daten单元,Unterteilung线圈/离散输入/保持/输入Register.四类
PLC可编程逻辑Der Controller,Industrielle Automatisierung控制的核心Ausrüstung
Die SerieBerechnung机与外部Ausrüstung进行串行Kommunikation的物理Schnittstelle
来源/Werkzeuge信息 —— Klick auf展开
来源 Modbus Chinesisches Netzwerk(modbus.cn) —— Inländisch führend.ModbusKommunikationsprotokoll Technologie Gemeinschaft Klassifizierung Das Drehbuch von LUA / Entwicklung von HMI / HMI 字数 1514 字 · 阅读约 4 Unterteilung钟 更新 2026-08-05 永久链接 https://www.modbus.cn/51494.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.