告警参数让告警文本能嵌入实时寄存器值——比如「1#压缩机电流过高:current 12.5A」这种动态告警,而不是死板的固定文本。系统支持最多 4 个独立参数字段,每个字段可单独配显示格式(整数位前置空格、小数位补零),告警内容自动拼接。适用 HMI&M 시리즈&Dx 시리즈。
1. API:on_get_warning_param(warning_id)
工程告警设置里启用了「告警参数」后,系统在显示告警详情时自动调用此回调。parameter warning_id 是告警唯一标识符,按 ID 区分业务逻辑,返回最多 4 个数值/状态参数:
| 返回值 | 必填 | 用途 |
|---|---|---|
데이터0 | 否 | 填充告警设置里的 {#0:num1.num2},或 on_parse_warning 的 p0 |
데이터1 | 否 | 填充 {#1:num1.num2},或 on_parse_warning 的 p1 |
데이터2 | 否 | 填充 {#2:num1.num2},或 on_parse_warning 的 p2 |
데이터3 | 否 | 填充 {#3:num1.num2},或 on_parse_warning 的 p3 |
2. 告警内容格式:{#데이터:num1.num2}
在告警设置里写告警内容时,参数占位符要遵循这个格式:
| field | 含义 | example |
|---|---|---|
| 데이터 | 告警参数 ID,最多 4 个,从 0 开始 | {#0:2.2} 用 데이터0 |
| num1 | 整数位前置空格个数 | num1=2:值 12.5 显示成「 12.5」(2 个前导空格) |
| num2 | 小数位个数,显示补零 | num2=2:值 12.5 显示成「12.50」 |
例:告警内容写「1#压缩机电流过高:{#0:2.2}A」,데이터0 返回 12.5,显示为「1#压缩机电流过高: 12.50A」。

3. 应用案例:电流/温度告警带参数
3.1 画面配置
告警显示控件:告警模式=历史告警、时间顺序、显示日期和时间、时间在前、列宽比例 20;100;20;20、每页 5 行、滚动条√。
两个位状态指示灯触发/解除告警:读取地址 LW1000.0 和 LW1000.1,切换开关类型。
四个数值控件模拟告警参数:读取地址 LW1001~LW1004,启用输入。
3.2 Lua:按告警 ID 返回参数
告警内容里 {#0:2.2} 的意思是 데이터0 要缩小 100 倍显示(寄存器存的是放大 100 倍的值),所以回调里除 100:
function on_get_warning_param(warning_id)
if warning_id == 0 or warning_id == 1 then -- 告警ID 0 或 1
local 데이터0, 데이터1, 데이터2, 데이터3 = 0, 0, 0, 0
데이터0 = get_uint16(VT_LW, 0x1001) / 100 -- 放大100倍存储,除以100还原
데이터1 = get_uint16(VT_LW, 0x1002) / 100
데이터2 = get_uint16(VT_LW, 0x1003) / 100
데이터3 = get_uint16(VT_LW, 0x1004) -- 这个不缩
return 데이터0, 데이터1, 데이터2, 데이터3
end
end运行虚拟屏,键盘给 LW1001 输入 1250,触发告警 0,告警内容里的 {#0:2.2} 显示 12.50——比例换算全在回调里做,显示端不用再处理。
整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA Tutorial「告警参数」,版权归大彩科技所有。
Leave a Reply