VisualHMI Timer: Start _ timer / on _ timer und Countdown

kostenlosKostenloses technisches Material

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

Lua-Unterstützung für VisualHMI32 Software-Timer(Index 0 ~ 31). Nach dem Start wird ein Timeouton_timer(timer_id)ausgelöst, um periodische Aufgaben, verzögerte Operationen und Status-Abfragen durchzuführen. und️ Dies ist einApplication-Layer - Software-Timermit einer Genauigkeit, die von der Systemlast beeinflusst wird,nicht für die Hard-Echtzeit - Steuerung

1. API Gesamtübersicht

FunktionParameterBeschreibung
start_timer(timer_id, timeout, countdown, repeat)timeout millisekunden (minimum ca. 10 ~ 20ms); countdown 0 = vorwärtszeit / 1 = Countdown; repeat 0 = unendliche Wiederholung / N = automatisch nach N-Trigger stopptStart des Timers
stop_timer(timer_id)Timeout-Rückruf Unified PortSofort stoppt
on_timer(timer_id)Timer-IDUnterscheidung von gleichzeitigen Timern mit timer _ id
get_timer_value(timer_id)Timer-IDerhalten den aktuellen Zeitwert (ms), unterstützt vorwärts / Countdown

Countdown Parameternur beeinflussen internen Timer-Anzeige / DebuggingDas Triggerverhalten von on _ timer wird nicht geändert - der Zeituntergang bis zum Trigger Timeout, der Countdown von Timeout bis zum Trigger 0 reduziert und der Rückruf ist derselbe.

2. Basisnutzung

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
    -- 每秒做一次:状态轮询
  elseif timer_id == 1 then
    -- 5秒后执行一次
  end
end

3. Anwendung: Anweisung an die PLC nach Abschluss des Countdowns

Anforderung: Einstellung der Zeit / Minute nach dem Countdown, Countdown beendet Reset-Button und Anweisungen an das Motherboard. Layout der Steuerung: Bit-Status - Anzeige LW1002 (Schalter) steuert Start-Stopp; Rollsteuerung LW1000 (Stunden, 0 ~ 23), LW1001 (Minuten) Zeit; Textsteuerung LW1010 Zeige Countdown.

_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_
    -- 显示剩余时间 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)   -- 复位启停按钮
      set_uint16(VT_LW, 0x1003, 0x01)   -- 发指令给主板
    end
  end
end

Wichtige Punkte: _TIMER_REPEAT_ wird berechnet, wenn der Benutzer die Dauer festlegt (stunde * 3600 + min * 60); die Gesamtzahl der Wiederholungen von start _ timer, auf _ timer wird _TIMER _ CNT _ jedes Mal akkumuliert, gleich ist das Ende. set_notify(0/1) Steuert, ob eine Anweisung während des Timers ausgegeben wird oder nicht, wobei ein Set 1 ausgegeben wird.

Drei Gruben:1 Software-Timer - Genauigkeit wird von der Systemlast beeinflusst, harte Echtzeit-Kontrolle wird rollover;2timeout Minimum ca. 10 ~ 20ms, nicht übertragen 1ms Erwartungsgemäß;3repeat = N Trigger N Mal automatisch stoppen., um 0 unendlich zu übergeben; mehrere Timer gleichzeitig mit timer_id unterscheiden, on_timer ist ein einheitlicher Eingang.

Aus dem VisualHMI-Entwicklungsdokument von Guangzhou Dacai Technology (hmi-doc.gz-dc.com) LUA-Tutorial "Timer" zusammengestellt, das Urheberrecht liegt bei Dacai Technology.

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.