VisualHMI - 告警参数(Lua)

在HMI(人机界面)系统中,为实现告警信息的动态化与语义清晰化,告警文本支持将寄存器中的实时数据嵌入。系统提供最多四个可独立配置的参数字段,每个参数可分别设置其显示格式(如小数位数)。告警内容可自动拼接,从而更直观的体现告警信息。

适用范围:VisualHMI - HMI&M系列&Dx系列

例程下载链接:ViusalHMI - 告警参数 Lua (点击下载)

1.API 说明

1.1.on_get_warning_param(warning_id)

告警参数动态回调函数,on_get_warning_param(warning_id) 是 HMI 系统提供的告警参数设置接口,当工程告警设置中为启用“告警参数”功能后,系统在显示告警详情时自动调用此函数,通过告警ID,根据具体业务逻辑,返回该告警的参数,支持返回最多 4 个数值/状态参数(data0data3);实现个性化、可读性强的告警提示

📊 参数说明

参数名 类型 说明
warning_id number 告警唯一标识符

📊 返回值说明

返回值 类型 必填 说明
data0 number 告警参数 0
• 用于填充告警设置→中的{#0:num1.num2}
• 或者on_parse_warning(...)中的p0
data1 number 告警参数 1
• 用于填充告警设置→中的 {#1:num1.num2}
• 或者on_parse_warning(...)中的p1
data2 number 告警参数 2
• 用于填充告警设置→中 {#2:num1.num2}
• 或者on_parse_warning(...)中的p2
data3 number 告警参数 3
• 用于填充告警设置→中 {#3:num1.num2}
• 或者on_parse_warning(...)中的p3

1.2.on_parse_warning(id, text, screen_id, control_id, p0, p1, p2, p3)

告警内容动态解析回调函数,on_parse_warning 是 HMI 系统提供的告警文本自定义生成接口,开发者根据告警 ID、画面信息,生成自定义的告警描述字符串。

📊 参数说明

参数 类型 说明
id number 告警 ID*
• 对应 warning_set 中使用的 warning_id • 用于区分不同类型的告警
text string 原始告警文本
• 此处可以忽略,因为本回调中,拼接新的字符串返回
screen_id number 当前画面 ID
control_id number 当前控件 ID
p0p3 number 告警参数(0~3)
• 仅在工程中为该告警启用了参数功能时有效
• 实际值由 on_get_warning_param 回调提供(见下方说明)

返回值

返回值 类型 说明
str string 告警描述字符串
• 支持拼接变量、单位、状态等 • 示例:"电机#3 温度 98°C 超过阈值 95°C!",带参配合on_get_warning_param `实现
encode number 字符编码标识(可选)
1:表示返回字符串为 UTF-8 编码(默认)
• 0:GBK-8 编码

2.工程设置

2.1.告警设置

在工程的告警设置中,勾选“启用告警参数”,使用Lua脚本实现告警处理,告警设置不需要预先写入告警内容,如下图所示:

2.2.画面设置

在画面添加一个告警显示控件,“告警控件”属性配置如下所示:

  1. 告警模式:历史告警;
  2. 时间排序:时间逆序;
  3. 显示序号:√;
  4. 发生时间:显示时间;
  5. 解除时间:显示时间;
  6. 时间在前:√;
  7. 列宽比例:20;150;40;40;
  8. 每页行数:5;
  9. 显示滚动条:√;
  10. 增加触控范围:20

界面设置一个位状态指示灯,关联地址LW1000,用于触发和解除告警,配置属性如下:

  1. 读取地址:LW1000

    • 开关类型:切换开关
  2. 切换开关:√
  3. 使用图库:√

界面设置四个数值控件,关联地址LW1200~LW1203,用于告警参数的模拟,配置属性如下:

  1. 读取地址:LW1200

界面设置四个字设置按钮,关联地址LW1200~1203,覆盖在数值控件上,用于设置数值控件,配置属性如下:

  1. 写入地址:LW1200;
  2. 操作模式:递增;

  3. 步长:1;

  4. 最小值:0;
  5. 最大值:100;
  6. 循环调节:√;
  7. 长按调节:√;

3.Lua脚本

脚本初始化开启告警脚本解析,按键按下对地址LW1000写入,触发回调函数on_updata,在回调函数内读取地址LW1000的值来对告警进行触发或关闭,通过回调函数on_get_warning_param返回告警参数,在回调函数on_parse_warning内拼接文本内容返回告警内容,代码如下显示:

function on_get_warning_param(warning_id)

    local data0,data1,data2,data3 = 0,0,0,0

    if warning_id == 1
    then
        data0 = get_uint16(VT_LW, 0x1200)
        data1 = get_uint16(VT_LW, 0x1201)
        data2 = get_uint16(VT_LW, 0x1202)
        data3 = get_uint16(VT_LW, 0x1203)
    end
    print('on_get_warning_param('..warning_id..') : '..data0..', '..data1..', '..data2..', '..data3)
    return data0,data1,data2,data3
end

--告警解析
function on_parse_warning(warning_id,text,screen_id,control_id, p0,p1,p2,p3)

    local id = 0
    text = nil

    if warning_id == 1
    then
        text = '馈线'..(string.format('%03d', p0))..' '..'电流上限告警:' ..' '..(p1/10)..'A\n'..(string.format('%03d', p2))..'号箱电压:'..(p3/10)..'V'
    end

    if text ~= nil 
    then 
        return text, 1
    end

end


function on_init()

    warning_set_mode(1)--告警脚本解析

end

function on_update(slave,vtype,addr)

    if vtype == VT_LW and addr == 0x1000
    then
        local val = get_uint16(VT_LW, 0x1000)
        warning_set(1 , val, 1)
    end
end

4.运行预览

运行虚拟屏,通过字设置按钮对数值控件进行数值写入,点击位状态指示灯触发告警查看告警带参数显示,如下所示:

Copyright ©Dacai all right reserved,powered by Gitbook该文件修订时间: 2026-02-05 15:27:17

results matching ""

    No results matching ""