VisualHMI LUA 告警集中管理:warning_set 批量触发与 8 从机解析

免费免费技术资料

这篇内容可直接阅读,适合用于基础学习和搜索引流。

本文目录
  1. 1. 1. API 总表
  2. 2. 2. 8 从机 × 96 告警案例

告警集中管理:warning_set(warning_id, value, count) 批量触发告警 + on_parse_warning 自定义告警文本。典型场景:HMI 从 Modbus 读回从机的故障位,逐位映射成告警——8 台从机、每台 96 个告警,一条命令全触发。

1. API 总表

函数 说明
warning_set_mode(en) 全局使能:1=开/0=关
warning_set(warning_id, value, count) 位掩码批量触发:value 的低 count 位对应从 warning_id 起的告警(bit0→warning_id,count 1~16)
on_parse_warning(id, text, screen_id, control_id, p0, p1, p2, p3) 自定义告警文本回调,返回 (字符串, encode),encode 1=UTF-8/0=GBK

2. 8 从机 × 96 告警案例

架构:8 台从机,每台读 Modbus 4×1000 起连续 6 个寄存器(16bit×6=96 位告警)。on_init 里 create_resp_que,on_cmd_resp 中逐从机逐寄存器逐位调用 warning_set。

_warningTb = {}   -- 0x1000~0x1005 各 bit 的告警名

function on_init()
  set_auto_read(0)
  create_resp_que()
  -- 告警设置里预配 768 条(8 台 × 96)
end

function on_cmd_resp(slave, vtype, addr, count, ret, wr)
  if ret == 0 and wr == 0 then
    -- slave 从机,addr 起始,读回 count 个寄存器
    for i = 0, 5 do
      local val = get_uint16(vtype, addr + i)
      for j = 0, 15 do
        local bitv = (val >> j) & 0x01
        local wid = (addr - 0x1000) * 16 + j + slave * 100
        warning_set(wid, bitv, 1)     -- 单 bit 触发
      end
    end
  end
end

function on_parse_warning(id, text, screen_id, control_id, p0, p1, p2, p3)
  local slave_no = math.floor(id / 96) + 1   -- 从机号
  local msg_id = id % 96                      -- 消息 ID
  local name = _warningTb[0x1000 + math.floor(msg_id / 16)] or "未知告警"
  local msg = "从机"..slave_no.." : "..name
  return msg, 1      -- 1=UTF-8
end

告警 ID 编码约定:从机号×100 + 位序号,解析时反推。告警设置需预配全部 768 条,文本用 on_parse_warning 动态生成(按从机号前缀),比静态配 768 条文本省事得多。

三个坑:①warning_set 的 value 低 count 位对应从 warning_id 起的告警,bit0→warning_id、bit1→warning_id+1,批量触发一条命令搞定;②count 范围 1~16,超过拆多次;③on_parse_warning 的返回值第一个是文本、第二个是编码(1=UTF-8/0=GBK),中文屏别用错编码。

整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「告警集中管理」,版权归大彩科技所有。

技术术语(共 1 个)—— 点击展开
寄存器Modbus 寄存器存储数据单元,分线圈/离散输入/保持/输入寄存器四类
来源/工具信息 —— 点击展开
来源 Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 分类 LUA 脚本 / 串口屏/HMI 开发 字数 1429 字 · 阅读约 4 分钟 更新 2026-08-05 永久链接 https://www.modbus.cn/51503.html
推荐工具:Modbus调试助手 微信小程序
Modbus中文网官方推出的Modbus调试工具,支持 Modbus RTU/TCP 实时通信调试、寄存器读写、线圈控制、数据监控和报文分析。 无需安装,微信搜索「Modbus调试助手」即可使用。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
📝 作者声明
本文由 Modbus中文网技术团队 原创撰写,内容基于实际项目案例与技术文档,力求为读者提供准确、实用的参考信息。
把这篇资料用于真实项目?

进入工具中心进行报文解析、CRC 校验和设备调试,或提交需求获取选型与接入建议。

工程师会员

把这篇文章变成可执行的调试资料

开通后可使用高级报文解析、资料包下载、代码示例、工程案例和优先技术支持,适合真实项目交付。

高级工具不限次
资料包与代码包
完整工程案例库
优先技术支持入口

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注