VisualHMI LUA Warnverwaltung: Warning_set Massen-Trigger und 8 Slave-Resolution

kostenlosKostenloses technisches Material

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

Zentrale Warnverwaltung:warning_set(warning_id, value, count)Massen-Alarm auslöst +on_parse_warningBenutzerdefinierter Warntext. Typisches Szenario: Das HMI liest die Ausfallbits des Slaves aus dem Modbus zurück, die Bit für Bit in Alarm zugeordnet werden - 8 Slaves, 96 Alarme pro Gerät, ein Befehl ausgelöst.

1. API Gesamtübersicht

FunktionBeschreibung
warning_set_mode(en)Globale Aktivierung: 1 = ON / 0 = OFF
warning_set(warning_id, value, count)Bitmaske Batch-Trigger: Low count-Bits von value entsprechen Warnungen ab warning_id (bit0 → warning_id, count 1 ~ 16)
on_parse_warning(id, text, screen_id, control_id, p0, p1, p2, p3)Benutzerdefinierter Warntext Rückruf, Rückgabe (String, encode), encode1=UTF - 8 / 0=GBK

2. 8 Slaves × 96 Alarm-Fälle

Architektur: 8 Slaves, jeder Leser Modbus 4x1000 6 aufeinanderfolgende Register (16bit × 6 = 96 Bit Alarm). In create _ response _ que und in on _ cmd _ response wird warning _ set bit für bit aufgerufen.

_warningTb = {}   -- 0x1000~0x1005 各 bit 的告警名

function on_init()
  set_auto_read(0)
  create_resp_que()
  -- 告警设置里预配 768 条(8 台 × 96)
end

function on_cmd_resp(slave, vtype, addr, count, ret, wr)
  if ret == 0 and wr == 0 then
    -- slave 从机,addr 起始,读回 count 个寄存器
    for i = 0, 5 do
      local val = get_uint16(vtype, addr + i)
      for j = 0, 15 do
        local bitv = (val >> j) & 0x01
        local wid = (addr - 0x1000) * 16 + j + slave * 100
        warning_set(wid, bitv, 1)     -- 单 bit 触发
      end
    end
  end
end

function on_parse_warning(id, text, screen_id, control_id, p0, p1, p2, p3)
  local slave_no = math.floor(id / 96) + 1   -- 从机号
  local msg_id = id % 96                      -- 消息 ID
  local name = _warningTb[0x1000 + math.floor(msg_id / 16)] or "未知告警"
  local msg = "从机"..slave_no.." : "..name
  return msg, 1      -- 1=UTF-8
end

Alarm-ID - Codierung Konvention: von der Maschinennummer × 100 + Bit-Seriennummer, umgekehrt bei der Analyse. Die Alarmeinstellung muss alle 768 Texte bereitstellen, und der Text wird dynamisch mit on_parse_warning generiert (auf dem Präfix von Slave-Nummern), was viel weniger aufwandfrei ist als statisch mit 768 Texte.

Drei Gruben:1warning_set Wert niedriger Count-Bits entsprechen Warnung von warning_id, bit0 → warning_id, bit1 → warning_id + 1, Batch-Auslösung eines Befehls zu erledigen;2count Bereich 1 - 16mehrmals abgerissen;3on_parse_warning gibt den ersten Text zurück, der zweite ist die Codierung(1 = UTF - 8 / 0 = GBK), nicht falsch codiert.

Aus dem VisualHMI-Entwicklungsdokument von Guangzhou Dacai Technology (hmi-doc.gz-dc.com) LUA-Tutorial "Zentralisiertes Warnmanagement", 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.