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
| Funktion | Beschreibung |
|---|---|
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
endAlarm-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.
Aus dem VisualHMI-Entwicklungsdokument von Guangzhou Dacai Technology (hmi-doc.gz-dc.com) LUA-Tutorial "Zentralisiertes Warnmanagement", das Urheberrecht liegt bei Dacai Technology.
Antwort veröffentlichen