告警매개변수让告警文本能嵌入实时레지스터 값——比如「1#压缩机电流过高:当前 12.5A」这种动态告警,而不是死板的固定文本。系统支持最多 4 个独立매개변수필드,每个필드可单独配표시 형식(整数位前置空格、小数位补零),告警콘텐츠自动拼接。适用 HMI&M 시리즈&Dx 시리즈。
1. API:on_get_warning_param(warning_id)
엔지니어링告警设置里활성화了「告警매개변수」后,系统在显示告警详情时自动调用此回调。매개변수 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}
在告警设置里写告警콘텐츠时,매개변수占位符要遵循这个형식:
| 필드 | 含义 | 예제 |
|---|---|---|
| 데이터 | 告警매개변수 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 튜토리얼「告警매개변수」,版权归大彩科技所有。
답글 작성