上一篇讲了占位符格式 {#0:num1.num2} 和 on_get_warning_param。这篇是”Lua 版”——不用占位符,直接在 on_parse_warning 里用 p0~p3 参数拼字符串,灵活度更高。
1. on_parse_warning 带参数
function on_parse_warning(id, text, screen_id, control_id, p0, p1, p2, p3)
-- p0~p3 由 on_get_warning_param 返回, 按告警ID对应
if id == 0 then
return "电机#1 温度 " .. string.format("%.1f", p0) .. "°C 超过阈值 95°C!", 1
elseif id == 1 then
return "压力 " .. string.format("%.2f", p1) .. " MPa 异常", 1
end
end
p0~p3 的来源:工程启用告警参数后,显示告警时系统先调 on_get_warning_param(warning_id) 取参数,再调 on_parse_warning 时把参数作为 p0~p3 传入。两者按告警 ID 联动。

2. 完整示例
function on_get_warning_param(warning_id)
if warning_id == 0 then
local temp = get_uint16(VT_4x, 0x1000) / 10 -- 温度, 寄存器存10倍
return temp, 0, 0, 0
elseif warning_id == 1 then
local press = get_uint16(VT_4x, 0x1001) / 100 -- 压力, 寄存器存100倍
return press, 0, 0, 0
end
end
function on_parse_warning(id, text, screen_id, control_id, p0, p1, p2, p3)
if id == 0 then
return "压缩机排气温度 " .. string.format("%.1f", p0) .. "°C 过高", 1
elseif id == 1 then
return "系统压力 " .. string.format("%.2f", p1) .. "MPa 超限", 1
end
end

p0~p3 只在工程为告警启用了参数功能时有效。返回值编码参数:1=GBK(默认推荐,中文屏),0=UTF-8——选错中文直接乱码。
整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「告警参数(Lua)」,版权归大彩科技所有。
发表回复