- 1. 1. API:on_get_warning_param(warning_id)
- 2. 2. 告警内容格式:{#data:num1.num2}
- 3. 3. 应用案例:电流/温度告警带参数
- 4. 3.1 画面配置
- 5. 3.2 Lua:按告警 ID 返回参数
告警参数让告警文本能嵌入实时寄存器值——比如「1#压缩机电流过高:当前 12.5A」这种动态告警,而不是死板的固定文本。系统支持最多 4 个独立参数字段,每个字段可单独配显示格式(整数位前置空格、小数位补零),告警内容自动拼接。适用 HMI&M 系列&Dx 系列。
1. API:on_get_warning_param(warning_id)
工程告警设置里启用了「告警参数」后,系统在显示告警详情时自动调用此回调。参数 warning_id 是告警唯一标识符,按 ID 区分业务逻辑,返回最多 4 个数值/状态参数:
| 返回值 | 必填 | 用途 |
|---|---|---|
data0 |
否 | 填充告警设置里的 {#0:num1.num2},或 on_parse_warning 的 p0 |
data1 |
否 | 填充 {#1:num1.num2},或 on_parse_warning 的 p1 |
data2 |
否 | 填充 {#2:num1.num2},或 on_parse_warning 的 p2 |
data3 |
否 | 填充 {#3:num1.num2},或 on_parse_warning 的 p3 |
2. 告警内容格式:{#data:num1.num2}
在告警设置里写告警内容时,参数占位符要遵循这个格式:
| 字段 | 含义 | 示例 |
|---|---|---|
| data | 告警参数 ID,最多 4 个,从 0 开始 | {#0:2.2} 用 data0 |
| num1 | 整数位前置空格个数 | num1=2:值 12.5 显示成「 12.5」(2 个前导空格) |
| num2 | 小数位个数,显示补零 | num2=2:值 12.5 显示成「12.50」 |
例:告警内容写「1#压缩机电流过高:{#0:2.2}A」,data0 返回 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} 的意思是 data0 要缩小 100 倍显示(寄存器存的是放大 100 倍的值),所以回调里除 100:
function on_get_warning_param(warning_id)
if warning_id == 0 or warning_id == 1 then -- 告警ID 0 或 1
local data0, data1, data2, data3 = 0, 0, 0, 0
data0 = get_uint16(VT_LW, 0x1001) / 100 -- 放大100倍存储,除以100还原
data1 = get_uint16(VT_LW, 0x1002) / 100
data2 = get_uint16(VT_LW, 0x1003) / 100
data3 = get_uint16(VT_LW, 0x1004) -- 这个不缩
return data0, data1, data2, data3
end
end
运行虚拟屏,键盘给 LW1001 输入 1250,触发告警 0,告警内容里的 {#0:2.2} 显示 12.50——比例换算全在回调里做,显示端不用再处理。
整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「告警参数」,版权归大彩科技所有。
发表回复