本文目录
- 1. 1. 启用条件
- 2. 2. on_select_warning
- 3. 3. 案例:告警处置建议
点击告警列表中的某条记录,触发 on_select_warning 回调,获取告警的 ID、触发/解除时间、文本描述,据此显示标准化处置建议——故障响应效率直接拉满。
1. 启用条件
告警控件配两点才能触发回调:
- 告警显示的控件 ID ≠ 0(如 1)
- 容许选中:勾选
⚠️ 仅定制固件可用;若该告警启用了”告警参数”功能,此回调不会被触发(二者互斥)。

2. on_select_warning
function on_select_warning(screen_id, control_id, warning_id, starttime, stoptime, warning_text) -- warning_id: 告警序号(从0开始) -- starttime/stoptime: 触发/解除时间(32位时间戳,秒) -- warning_text: 告警原始描述 end
3. 案例:告警处置建议
告警设置:ID0 相序保护(LW1001==1,等级1)、ID1 水流开关保护(LW1002==1,等级2)、ID2 水位开关保护(LW1003==1,等级3)。
画面:告警控件 ID=1、容许选中;新增画面放 1 个数值控件(显示告警ID)+ 3 个文本控件(触发时间/解除时间/告警内容及解决方案)。
LUA:
g_Solution = {
[0] = "1. 确认是否真的相序错误n2. 交换任意两根火线n3. 检查相序保护器/继电器设置n4. 变频器/软启动器内部设置n5. 现场多设备供电冲突",
[1] = "1. 冷却水未开启或阀门关闭n2. 管路堵塞或滤网脏堵n3. 水泵故障或扬程不足n4. 水流开关本身故障或设定不当n5. 气堵(Air Lock)n6. 水温过低导致粘度变化",
[2] = "1. 水箱实际缺水n2. 水位开关卡滞或污垢覆盖n3. 水位开关接线松动或损坏n4. 气泡或泡沫干扰n5. 安装位置不当",
}
function on_select_warning(screen_id, control_id, warning_id, starttime, stoptime, warning_text)
if screen_id == 0 and control_id == 1 then
set_uint16(VT_LW, 0x2000, warning_id) -- 告警ID
local y1,mo1,d1,h1,mi1,s1 = make_datetime(starttime)
set_string(VT_LW, 0x2010, string.format("%04d-%02d-%02d %02d:%02d:%02d", y1,mo1,d1,h1,mi1,s1))
local y2,mo2,d2,h2,mi2,s2 = make_datetime(stoptime)
set_string(VT_LW, 0x2020, string.format("%04d-%02d-%02d %02d:%02d:%02d", y2,mo2,d2,h2,mi2,s2))
set_string(VT_LW, 0x2030, warning_text) -- 告警内容
set_string(VT_LW, 0x2040, g_Solution[warning_id]) -- 处置建议
end
end
make_datetime(时间戳) 返回 年/月/日/时/分/秒 六个值,配合 string.format 输出标准时间串。

on_select_warning 是「定制固件」专属,普通固件没这回调。和告警参数功能互斥——要选中的告警别开参数。
整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「告警选择」,版权归大彩科技所有。
发表回复