Modbus 튜토리얼 6:데이터记录控件(시리얼 HMI Modbus 告警记录)

무료무료 기술 자료

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

데이터记录控件是大彩시리얼 HMI里专门用来做告警 / 事件记录的도구。在 Modbus 엔지니어링里,它把从机(PLC、变频器、温控模块)上来的报警状态按时间排好显示在屏上。本튜토리얼走一遍从프로토콜설정、변수建立到화면联调的完整流程,并重点把两种最常见的事件记录用法分开讲清楚,避免配错导致屏上不显示、记不下来。문서整理自广州大彩光电科技有限公司《MODBUS 튜토리얼_데이터记录控件 V1.0》,版权归大彩。

1 适用范围与개발환경

该문서适用于大彩所有支持 Modbus 프로토콜的시리얼 HMI产品:基本型、经济型、商业型、F 型、物联型、86 盒、485 시리즈。NANO 시리즈除外(NANO 仅支持大彩구성(SCADA)프로토콜,不支持 Modbus)。

搭建엔지니어링前先确认버전够用,버전不够会在编译或运行期出诡异문제,调半天发现是固件旧了:

软件 / 固件最低버전要求보기방식
VisualTFT 上位机V3.0.0.1037 及以上启动页右上角 / 软件右下角
基本型 / 经济型 / 商业型 固件MB 2.22.912.259 及以上屏背面贴纸,或文本控件绑「系统변수→固件버전号」
物联型固件V3.0.301.0 及以上同上
F 型固件V4.1.66.0 及以上同上

本例程硬件验证平台为大彩基本型 7 寸屏 DC80480B070,其它크기시리얼 HMI照此튜토리얼即可。上位机用大彩自研的 VisualTFT,官网 http://www.gz-dc.com 下载。

2 시리얼 HMI Modbus 프로토콜基础

大彩除 NANO 外的所有시리즈시리얼 HMI,都同时支持两种프로토콜버전:大彩구성(SCADA)프로토콜、Modbus RTU 프로토콜。屏的시리얼 포트物理사양固定为:1 시작位 / 8 데이터 비트 / 패리티 없음 / 1 정지 비트(8N1)。통신 속도范围:RS232 支持 1200~921600bps(典型 115200),RS485 支持 1200~115200bps(典型 9600)。

개발 Modbus 엔지니어링时,你在 VisualTFT 里配好的변수和프로토콜,编译后会固化进엔지니어링包下到屏里。屏作主机时,按你设的轮询周期周期性地往从机发读指令,收到从机应答后분석,새로고침绑定的控件或触发预设动作;屏作从机时则响应外部마스터的轮询。

3 Modbus 프로토콜与변수설정(前置条件)

열기 VisualTFT 菜单【도구】→【프로토콜与변수设置】,左侧选文件路径,右侧프로토콜设置栏设프로토콜유형。데이터记录控件本身不绑定具体레지스터읽기,它显示的是「변수」的状态变化,而변수是从 Modbus 레지스터 매핑上来的——所以프로토콜和변수必须先配好。

3.1 屏作主机 / 从机설정项

Modbus 教程 6:数据记录控件(串口屏 Modbus 告警记录)插图

Modbus 教程 6:数据记录控件(串口屏 Modbus 告警记录)插图1

설정项默认值설명
활성화프로토콜—必须勾上才支持 Modbus
프로토콜유형—选「Modbus 主机」或「Modbus 从机」;本例程即主机모드
从机주소1仅从机모드需要,主机모드下从机주소在변수里单独填
轮询周期1 秒周期性读변수的间隔
轮询延时100 毫秒相邻两条读命令之间的间隔
应答超时100 毫秒允许从机的最大响应延时
连续읽기—连续주소변수一次性最大읽기数
优化읽기—开启后只读本화면相关的변수,省시리얼 포트带宽
存储设置—不存储 / 전체存储 / 存储指定변수(推荐后者,存很少改的系统매개변수)
存储기호—데이터형식改了手动改这个值,防止读到旧버전存储

存储设置里「전체存储」不推荐——频繁写 Flash 会加速坏块。要掉电저장的,用「存储指定변수」勾选特定변수即可。屏作从机时설정项少一些:활성화프로토콜、프로토콜유형选「Modbus 从机」、从机주소(默认 1)、存储设置、存储기호。

3.2 建立변수

Modbus 教程 6:数据记录控件(串口屏 Modbus 告警记录)插图2

Modbus 教程 6:数据记录控件(串口屏 Modbus 告警记录)插图3

추가변수节点后在属性窗口设置。几个关键属性:

属性설명
名称默认 Variable1/2/3…,建议改成有意义的,如「机组状态」;分段변수默认 Field1/2/3…,可改「开/关机」
형식 / 符号短整型、长整型、单精度浮点、문자串;可设无符号 / 有符号
读写设置可读写 / 只읽기 / 只쓰기
默认值默认显示值
数值转换实际值 = 原始值 × 缩放 + 平移,比如 0.1 倍率把레지스터整数转成带小数엔지니어링量
표시 형식设置整数和小数部分的位数
数组유형开启后从该주소连续操作 N 个레지스터
是否储存프로토콜开启存储设置后,此处勾选可掉电저장

변수매개변수里:변수유형支持코일、이산 입력、유지 레지스터、입력 레지스터、内存변수、系统변수;屏作主机时才需要填从机주소和변수주소(16 진법填写);「初始化从机」是上电后把변수值写回从机;「읽기失败归零」是读不到时변수归零(报警场合慎用,可能误显)。

4 데이터记录控件的两种用法(先读这段,再配)

데이터记录控件记录的是「변수状态变化产生的事件」。要让某条告警显示出来,要做两件事:

  1. 告警분석:建立「事件 ID → 文本 / 颜色」的对照表。屏上显示什么字、什么颜色,由这里决定。
  2. 事件记录[触发]:决定「什么时候记一条」。只有触发条件满足,才会按告警분석里的文本生成一条带时间戳的记录。

事件 ID 怎么填、触发条件怎么写,取决于你的从机返回的是什么데이터。实务里有两种用法,配法完全不同,下面分层讲。

4.1 用法一:bit 位映射(레지스터返回位图,需要拆子节点)

适用시나리오:从机在一个레지스터里用不同 bit 表示不同告警,返回的是「位图」。例如建一个이산 입력변수「机组故障」(占 1 个 16 位레지스터),bit0=压缩机低压、bit1=风机故障、bit2=烟感报警、bit3=过滤网堵塞。

必须建子节点:因为这种用法要把每一位单独拆出来当成一个변수,否则控件分不清是哪一位。在변수下추가子节点(分段변수),把 bit0~bit3 分别命名:

子节点(分段변수)对应 bit含义
Field1bit0压缩机低压
Field2bit1风机故障
Field3bit2烟感报警
Field4bit3过滤网堵塞

告警분석:事件 ID 填子节点순번 0/1/2/3(对应 bit0~bit3),并设好설명和颜色。

事件记录[触发]:事件매개변수选변수、事件 ID 选对应子节点(0/1/2/3),执行条件写「该子节点 == 1」。例如:事件매개변수=변수 / 事件 ID=0 / 执行条件=等于 / 변수=机组故障/压缩机低压 / 数值=1。

⚠ 注意:bit 用法里事件 ID 是子节点순번(从 0 开始),不是레지스터返回的 0001/0002。底层对应레지스터 값 0x0001/0x0002/0x0004/0x0008。一个 16 位레지스터最多 bit0~bit15 共 16 个事件。事件关联发生在屏侧:控件拿레지스터 값按 bit 일치子节点,再去告警분석取文本。

4.2 用法二:值映射(레지스터直读事件번호,不拆子节点)

适用시나리오:从机直接返回一个「事件번호」值,例如读到 0x0001 表示事件一、0x0002 表示事件二、0x0003 表示事件三……레지스터里放的就是번호本身,不需要拆 bit、不需要建子节点。

不建子节点:这种用法下,변수就一个,读回来的值就是事件번호,别去拆位。

告警분석:事件 ID 填从机返回的那个번호值(如 1、2、3,或对应的16진수 0001、0002、0003,按你레지스터实际返回填),并设好설명和颜色。

事件记录[触发]설정(严格按下面 5 步):

  1. 事件매개변수:选择「변수」
  2. 事件 ID:选择上面设定的那个레지스터변수(就是读번호的那个변수本身)
  3. 执行条件:选择「等于」
  4. 변수:还是选这个레지스터(和步骤 2 同一个)
  5. 数值:填写从机返回的值(如 1 / 2 / 3,或 0001 / 0002 / 0003,与告警분석里的事件 ID 一致)

⚠ 注意:值映射用法不设子节点、不写「某位 == 1」。条件是「레지스터 값 == 某个번호」,命中后屏直接按告警분석里那个번호对应的文本显示 / 记录时间。告警분석里的事件 ID 和此处「数值」必须完全一致,否则读过来的数对不上文本,屏上就不显示、也不计时。

4.3 两种用法怎么选

对比项用法一 bit 位映射用法二 值映射
从机返回位图(每位一个告警)事件번호值(0001/0002/0003…)
是否建子节点需要(拆 bit)不需要
事件 ID 填什么子节点순번 0/1/2/3레지스터返回的번호值
执行条件某子节点 == 1레지스터 == 某个번호
常见시나리오一个故障字含多个开关量从机主动上报事件流水号

5 튜토리얼实现(以 bit 用法完整演示,值映射见 4.2)

데이터记录控件支持三种记录유형:当前告警、历史告警、历史告警与解除(比「历史告警」多了每条告警的解除时间)。本例程对前两种做示范,整体分三步:准备素材 → 功能实现 → 下载엔지니어링。下面以 4.1 的 bit 用法走完整流程(有图);若你的엔지니어링是 4.2 值映射,把「事件记录[触发]」按 4.2 的 5 步改即可,其它一致。

5.1 准备엔지니어링素材

硬件用 DC80480B070 基本型 7 寸屏;软件用 VisualTFT;UI 用准备好的美工图。엔지니어링结构采用홈导航 + 分화면:홈放两个버튼切到【当前告警】和【历史告警】화면,每个子화면有返回홈버튼。另外配【当前告警설명】和【历史告警설명】两个纯설명화면。

5.2 新建엔지니어링

Modbus 教程 6:数据记录控件(串口屏 Modbus 告警记录)插图4

열기菜单【文件】→【新建엔지니어링】,弹出新建엔지니어링窗口,设置好엔지니어링名称、路径、设备유형,클릭【确定】。

5.3 설정 Modbus 主机

Modbus 教程 6:数据记录控件(串口屏 Modbus 告警记录)插图5

进入【도구】→【프로토콜与변수设置】,프로토콜유형设「Modbus 主机」,매개변수按 3.1 节。轮询周期 1 秒、轮询延时 100ms、应答超时 100ms 是默认,一般不用动。

5.4 화면与控件설정

Modbus 教程 6:数据记录控件(串口屏 Modbus 告警记录)插图6

Modbus 教程 6:数据记录控件(串口屏 Modbus 告警记录)插图7

홈放两个버튼(控件 ID:1),触控유형「전환화면」,目标화면分别指【当前告警】和【历史告警】。버튼属性里把触控유형设为「전환화면」、目标화면选【当前告警】,另一个同理。

5.5 当前告警화면

从机产生报警时,데이터记录控件显示当前的告警和触发时间;报警解除后控件不再显示该条。설정步骤:

  1. 화면加一个데이터记录控件(控件 ID:1),把「记录유형」设为当前告警;
  2. 在「告警분석」里设置各事件 ID 的数值、显示颜色、설명;
  3. 针对每个事件 ID,加一条用途为「事件记录[触发]」的逻辑处理,执行条件设成该位 == 1(bit 用法)或该레지스터 값 == 번호(值映射,见 4.2)。

Modbus 教程 6:数据记录控件(串口屏 Modbus 告警记录)插图8

Modbus 教程 6:数据记录控件(串口屏 Modbus 告警记录)插图9

「告警분석」对话框三列:事件 ID(数值)、前景颜色、설명。本例用 bit 用法,建이산 입력변수「机组故障」取前 4 位,事件 ID 填子节点순번 0=压缩机低压、1=风机故障、2=烟感报警、3=过滤网堵塞(当前告警里颜色按严重度区分,例如压缩机低压红、风机/烟感绿、滤网蓝)。

Modbus 教程 6:数据记录控件(串口屏 Modbus 告警记录)插图10

每个事件 ID 对应一条「事件记录[触发]」逻辑。bit 用法写法形如:事件记录[触发] / 控件(1,1) / 事件(0) / 条件(机组故障/压缩机低压 == 1),即该位为 1 时触发一条告警记录。四个事件分别为事件0(压缩机低压)、事件1(风机故障)、事件2(烟感报警)、事件3(过滤网堵塞)——事件 ID 必须和「告警분석」里填的数值一一对上。

若你用的是 4.2 值映射,这里就按 4.2 的 5 步来:事件매개변수=변수 / 事件 ID=那个레지스터 / 执行条件=等于 / 변수=同레지스터 / 数值=返回的번호(如 1)。

5.6 历史告警화면

历史告警与当前告警설정几乎一样,唯一区别是记录유형选历史告警。不同点:报警解除后,历史告警的这条记录仍然留在表格里;如果在 Modbus 프로토콜里开了存储设置,还能掉电저장,重新上电不丢。

Modbus 教程 6:数据记录控件(串口屏 Modbus 告警记录)插图11

Modbus 教程 6:数据记录控件(串口屏 Modbus 告警记录)插图12

Modbus 教程 6:数据记录控件(串口屏 Modbus 告警记录)插图13

历史告警的「告警분석」与「事件记录[触发]」逻辑和当前告警完全对称,只是控件指向화면 2,且告警분석里四项颜色统一设为红(255,0,0),强调"已发生即留痕"。事件 ID 同样从 0 시작对应子节点순번(bit 用法),逻辑里同样要写"各位 == 1"的条件;值映射用法见 4.2。

5.7 运行预览

Modbus 教程 6:数据记录控件(串口屏 Modbus 告警记录)插图14

Modbus 教程 6:数据记录控件(串口屏 Modbus 告警记录)插图15

本例程屏作主机,用 Modbus Slave 软件模拟从机应答。运行虚拟屏,与 Modbus Slave 联机即可看到效果:当前告警화면列出活动告警(压缩机低压、烟感报警、过滤网堵塞)及其触发时间,右侧 Modbus Slave 显示对应레지스터 값与통신로그。具体操作参考大彩《【MODBUS】시리얼 HMI_적용문서_V1.0.pdf》。

6 下载엔지니어링

Modbus 教程 6:数据记录控件(串口屏 Modbus 告警记录)插图16

VisualTFT 编译成功后출력窗口会提示「编译成功」,再下到屏里,两种방식:

  • USB 下载:点菜单【下载到设备】,用 USB 线把설정下进屏;
  • SD 卡下载:菜单【도구】→【量产向导】→ 选「SD 卡下载」,把弹窗里所有文件拷到 SD 卡根目录,插屏后重新上电,烧录完取下 SD 卡。

7 엔지니어링实操要点(踩坑提示)

  • 先定用法,再配:从机返回的是位图(bit 用法,要拆子节点)还是事件번호(值映射,不拆子节点)?两种配法完全不同,混着写屏上必然不显示。
  • bit 用法:事件 ID = 子节点순번 0/1/2/3,对应레지스터 값 0x0001/0x0002/0x0004/0x0008。别把"레지스터返回 0001/0002/0003"当번호填进事件 ID——0003 是 bit0+bit1 同置,不是"事件 3"。
  • 值映射用法:不建子节点、不写「某位 == 1」。事件记录[触发]按 4.2 的 5 步:事件매개변수=변수 → 事件 ID=那个레지스터 → 执行条件=等于 → 변수=同레지스터 → 数值=返回번호。告警분석里的事件 ID 与这里数值必须完全一致。
  • 事件 ID 必须对齐:「告警분석」里填的 ID,和「事件记录[触发]」逻辑里的事件 ID(或数值)是同一个东西,对不上屏上就不显示那条告警。
  • 逻辑必设条件:「事件记录[触发]」不写执行条件会无条件触发,所有事件都被记下来,화면一团乱。
  • 历史告警要掉电저장,记得开存储:只在 Modbus 프로토콜설정里开了「存储设置 = 存储指定변수」,且변수属性里勾了「是否储存」,历史告警断电后才不丢。两处都要设,只设一处不生效。
  • 当前告警 vs 历史告警的语义:当前告警是「活的」——解除即消失;历史告警是「记账」——解除也留痕。选型时想清楚你要的是实时状态还是审计记录。
  • 轮询周期别太狠:从机响应慢或总线设备多时,1 秒轮询 + 100ms 延时要酌情放大,否则会出现读到一半超时、报警跳变。
  • 颜色 ID 有意义:当前告警按严重度用不同前景色(红/绿/蓝),历史告警统一红——别随便填,否则屏上区分不出来。

整理自广州大彩光电科技有限公司《MODBUS 튜토리얼_데이터记录控件 V1.0》(www.gz-dc.com),版权归大彩所有。如需联机디버깅细节,参见大彩《【MODBUS】시리얼 HMI_적용문서_V1.0.pdf》。

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

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

엔지니어 회원

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

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

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

답글 작성

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