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

무료무료 기술 자료

이 글은 바로 읽을 수 있으며 기초 학습과 검색 유입에 적합합니다.

告警集中管理: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 4x1000 起连续 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 튜토리얼「告警集中管理」,版权归大彩科技所有。

실제 프로젝트에 이 자료를 활용하시겠습니까?

도구 센터에서 프레임 분석, CRC 검증, 장비 디버깅을 진행하거나 요청을 제출하여 선정 및 연동 제안을 받아보세요.

엔지니어 회원

이 글을 실행 가능한 디버깅 자료로 활용하세요

가입하면 고급 프레임 분석, 자료 패키지 다운로드, 코드 예제, 엔지니어링 사례, 우선 기술 지원을 이용할 수 있어 실제 프로젝트 납품에 적합합니다.

고급 도구 무제한 이용
자료 패키지와 코드 패키지
완전한 엔지니어링 사례 라이브러리
우선 기술 지원 채널

답글 작성

이메일 주소는 공개되지 않습니다. 必填项已用 * 标注