データ記録控件是大彩シリアルポート屏里专门用来做告警 / 事件记录的工具。在 Modbus 工程里,它把スレーブ(PLC、周波数変換器、温控モジュール)上来的报警ステータス按时间排好表示在屏上。本チュートリアル走一遍从プロトコル構成、变量建立到画面联调完全に。流程,并重点把两种最も一般的な的事件记录用法分开讲清楚,避免配错导致屏上不表示、记不下来。ドキュメント整理自广州大彩光电科技有限公司《MODBUS Tutorial_データ記録控件 V1.0》,著作権は大彩。
1 适用範囲与开发环境
该ドキュメント適用される大彩すべてのサポート Modbus protocol的シリアルポート屏产品:基本型、经济型、商业型、F 型、物联型、86 盒、485 系列。NANO 系列除外(NANO 仅サポート大彩组态协议,サポートなし。 Modbus)。
搭建工程前先確認版本够用,版本不够会在编译或运行期出诡异問題,调半天发现是固件旧了:
| 软件 / 固件 | 最低版本要求 | 表示方式 |
|---|---|---|
| VisualTFT トップマシン | V3.0.0.1037 及以上 | 启动页右上角 / 软件右下角 |
| 基本型 / 经济型 / 商业型 固件 | MB 2.22.912.259 及以上 | 屏背面贴纸,或文本控件绑「系统变量→固件版本号」 |
| 物联型固件 | V3.0.301.0 及以上 | 同上 |
| F 型固件 | V4.1.66.0 及以上 | 同上 |
本例程硬件验证プラットフォーム为大彩基本型 7 寸屏 DC80480B070,其它尺寸シリアルポート屏照此チュートリアル即可。トップマシン用大彩自研的 VisualTFT,官网 http://www.gz-dc.com Download。
2 HMI Modbus protocol基础
大彩除 NANO 外的すべての系列シリアルポート屏,都同时サポート两种协议版本:大彩组态协议、Modbus RTU Protocol。屏的シリアルポート物理的仕様固定为:1 スタート地点。 / 8 data bit / 検証なし。 / 1 stop bit(8N1)。ボーレート範囲:RS232 サポート 1200~921600bps(典型 115200),RS485 サポート 1200~115200bps(典型 9600)。
开发 Modbus 工程时,你在 VisualTFT 里配好的变量和协议,编译后会固化进工程包下到屏里。屏作マスター时,按你设的ポーリング周期周期性地往スレーブ发readコマンド,收到スレーブ应答后解析,リフレッシュ绑定的控件或触发预设动作;屏作スレーブ时则レスポンス外部マスター的ポーリング。
3 Modbus protocol与变量設定(前置条件)
open VisualTFT 菜单【Tools】→【协议与变量設定】,左侧选文件路径,右侧协议設定栏设协议タイプ。データ記録控件本身不绑定具体レジスタの読み取り,它表示的是「变量」的ステータス变化,而变量是从 Modbus レジスタマップ上来的——所以協定と变量まず必要です。配好。
3.1 屏作マスター / スレーブ設定项


| 設定项 | デフォルト値 | 説明 |
|---|---|---|
| 有効协议 | — | 必须勾上才サポート Modbus |
| 协议タイプ | — | 选「Modbus マスター」或「Modbus スレーブ」;本例程即マスターモード |
| スレーブアドレス | 1 | 仅スレーブモード需要,マスターモード下スレーブアドレス在变量里单独填 |
| ポーリング周期 | 1 秒 | 周期性读变量的間隔 |
| ポーリング延时 | 100 毫秒 | 相邻两条读命令之间的間隔 |
| 应答タイムアウト | 100 毫秒 | 允许スレーブ的最大レスポンス延时 |
| 连续読み取り | — | 连续アドレス变量一次性最大読み取り数 |
| 优化読み取り | — | 开启后読み取り専用本画面相关的变量,省シリアルポート带宽 |
| 存储設定 | — | 不存储 / すべて存储 / 存储指定变量(おすすめ后者,存很少改的系统参数) |
| 存储标记 | — | データ格式改了手动改这个值,防止读到旧版本存储 |
存储設定里「すべて存储」不おすすめ——频繁写 Flash 会加速坏块。要掉电保存的,用「存储指定变量」勾选特定变量即可。屏作スレーブ时設定项少一些:有効协议、协议タイプ选「Modbus スレーブ」、スレーブアドレス(デフォルト 1)、存储設定、存储标记。
3.2 建立变量


変数の追加节点后在属性窗口設定。几个关键属性:
| 属性 | 説明 |
|---|---|
| Name | デフォルト Variable1/2/3…,建议改成有意义的,如「机组ステータス」;セグメント化变量デフォルト Field1/2/3…,可改「开/关机」 |
| format / 符号 | 短整型、长整型、单精度浮点、ストリング·ストリング;可设符号なし。 / 記号付き。 |
| 読み書き設定 | 読み書きができる。 / 只読み取り / 只写入 |
| デフォルト値 | デフォルト表示值 |
| 数值转换 | 实际值 = 元の值 × Zoom + 平移,比如 0.1 倍率把レジスタ全回転。成带小数工程量 |
| Display format | 設定整数和小数部分的位数 |
| 配列タイプ | 开启后从该アドレス连续操作 N Registers |
| 是否储存 | 协议开启存储設定后,此处勾选可掉电保存 |
变量参数里:变量タイプサポートコイル、ショップ型入力、レジスタを保持する。、入力レジスタ。、内存变量、系统变量;屏作マスター时才需要填スレーブアドレス和变量アドレス(16 进制填写);「初期化スレーブ」是上电后把变量值写回スレーブ;「読み取り失敗归零」是读不到时变量归零(报警场合慎用,可能误显)。
4 データ記録控件的两种用法(先读这段,再配)
データ記録控件记录的是「变量ステータス变化产生的事件」。要让某条告警表示出来,要做两件事:
- 告警解析:建立「event ID → Text / 颜色」的对照表。屏上表示什么字、什么颜色,由这里决定。
- 事件记录[触发]:决定「什么时候记一条」。只有触发条件满足,才会按告警解析里的文本生成一条带时间戳的记录。
event ID 怎么填、触发条件怎么写,取决于你的スレーブ戻る的是什么データ。实务里有两种用法,配法完全不同,下面分层讲。
4.1 用法一:bit ビットマップ(レジスタ戻る位图,需要拆子节点)
適用可能なシーン:スレーブ在一1つのレジスタ里用不同 bit 表示不同告警,戻る的是「位图」。例如建一個別入力です。变量「机组故障」(占 1 个 16 位レジスタ),bit0=压缩机低压、bit1=风机故障、bit2=烟感报警、bit3=过滤网堵塞。
必须建子节点:因为这种用法要把每一位单独拆出来当成一个变量,否则控件分不清是哪一位。在变量下追加子节点(セグメント化变量),把 bit0~bit3 分别命名:
| 子节点(セグメント化变量) | 对应 bit | 含义 |
|---|---|---|
| Field1 | bit0 | 压缩机低压 |
| Field2 | bit1 | 风机故障 |
| Field3 | bit2 | 烟感报警 |
| Field4 | bit3 | 过滤网堵塞 |
告警解析:event ID 填子节点番号 0/1/2/3(对应 bit0~bit3),并设好説明和颜色。
事件记录[触发]:事件参数选变量、event ID 选对应子节点(0/1/2/3),执行条件写「该子节点 == 1」。例如:事件参数=变量 / event ID=0 / 执行条件=equal to / 变量=机组故障/压缩机低压 / numerical value=1。
⚠ 注意:bit 用法里事件 ID 是子节点番号(从 0 开始),ではないレジスタ戻る的 0001/0002。底层对应レジスタの値 0x0001/0x0002/0x0004/0x0008。一个 16 位レジスタ最多 bit0~bit15 共 16 个事件。事件关联发生在屏侧:控件拿レジスタの値按 bit マッチング子节点,再去告警解析取文本。
4.2 用法二:值マッピング(レジスタ直读事件编号,不拆子节点)
適用可能なシーン:スレーブ直接戻る一个「事件编号」值,例如读到 0x0001 表示事件一、0x0002 表示事件二、0x0003 表示事件三……レジスタ里放的就是编号本身,必要なし。拆 bit、必要なし。建子节点。
不建子节点:这种用法下,变量就一个,读回来的值就是事件编号,别去拆位。
告警解析:event ID 填スレーブ戻る的那个编号值(如 1、2、3,或对应的十六进制 0001、0002、0003,按你レジスタ实际戻る填),并设好説明和颜色。
事件记录[触发]設定(严格按下面 5 步):
- 事件参数:Choice「变量」
- event ID:選択上面设定的那1つのレジスタ变量(就是读编号的那个变量本身)
- 执行条件:Choice「equal to」
- 变量:まだ选这1つのレジスタ(和步骤 2 同一个)
- numerical value:填写スレーブ戻る的值(如 1 / 2 / 3,或 0001 / 0002 / 0003,与告警解析里的事件 ID 一致)
⚠ 注意:值マッピング用法不设子节点、不写「某位 == 1」。条件是「register value == 某个编号」,命中后屏直接按告警解析里那个编号对应的文本表示 / 记录时间。告警解析里的事件 ID 和此处「numerical value」必须完全一致,否则读过来的数对不上文本,屏上就不表示、也不计时。
4.3 两种用法怎么选
| comparison items | 用法一 bit ビットマップ | 用法二 值マッピング |
|---|---|---|
| スレーブ戻る | 位图(每位一个告警) | 事件编号值(0001/0002/0003…) |
| 是否建子节点 | 需要(拆 bit) | 必要なし。 |
| event ID 填什么 | 子节点番号 0/1/2/3 | レジスタ戻る的编号值 |
| 执行条件 | 某子节点 == 1 | register == 某个编号 |
| 常见场景 | 一个故障字含多个开关量 | スレーブ主动上报事件流水号 |
5 チュートリアル実装(以 bit 用法完全演示,值マッピング见 4.2)
データ記録控件サポート三种记录タイプ:当前告警、历史告警、历史告警与解除(比「历史告警」多了每条告警的解除时间)。本例程对前两种做示范,整体分三步:准备素材 → 功能実装 → 下载工程。下面以 4.1 的 bit 用法走完全流程(有图);若你的工程是 4.2 值マッピング,把「事件记录[触发]」按 4.2 的 5 步改即可,其它一致。
5.1 准备工程素材
硬件用 DC80480B070 基本型 7 寸屏;软件用 VisualTFT;UI 用準備して的美工图。工程構造采用ホーム导航 + 分画面:ホーム放2つ按钮切到【当前告警】和【历史告警】画面,每个子画面有ホームに戻る按钮。另外配【当前告警説明】和【历史告警説明】2つ纯説明画面。
5.2 新建工程

打开菜单【文件】→【新建工程】,弹出新建工程窗口,設定好工程名称、路径、デバイスタイプ,click【确定】。
5.3 設定 Modbus マスター

进入【Tools】→【协议与变量設定】,协议タイプ设「Modbus マスター」,参数按 3.1 节。ポーリング周期 1 秒、ポーリング延时 100ms、应答タイムアウト 100ms 是デフォルト,一般不用动。
5.4 画面与控件設定


ホーム放2つ按钮(control ID:1),触控タイプ「切换画面」,目标画面分别指【当前告警】和【历史告警】。按钮属性里把触控タイプ设为「切换画面」、目标画面选【当前告警】,另一个同理。
5.5 当前告警画面
スレーブ产生报警时,データ記録控件表示current的告警和触发时间;报警解除后控件不再表示该条。設定步骤:
- 画面加一个データ記録控件(control ID:1),把「记录タイプ」设为当前告警;
- 在「告警解析」里設定各事件 ID 的数值、表示颜色、Description;
- 针对每个事件 ID,加一条用途为「事件记录[触发]」的逻辑処理,执行条件设成该位 == 1(bit 用法)或该レジスタの値 == 编号(值マッピング,见 4.2)。


「告警解析」对话框三列:event ID(numerical value)、前景颜色、Description。本例用 bit 用法,建ショップ型入力变量「机组故障」取前 4 位,event ID 填子节点番号 0=压缩机低压、1=风机故障、2=烟感报警、3=过滤网堵塞(当前告警里颜色按严重度区分,例如压缩机低压红、风机/烟感绿、滤网蓝)。

每个事件 ID 对应一条「事件记录[触发]」逻辑。bit 用法写法形如:事件记录[触发] / control(1,1) / event(0) / 条件(机组故障/压缩机低压 == 1),即该位为 1 时触发一条告警记录。四个事件分别为事件0(压缩机低压)、event1(风机故障)、event2(烟感报警)、event3(过滤网堵塞)——event ID 必须和「告警解析」里填的数值一一对上。
若你用的是 4.2 值マッピング,这里就按 4.2 的 5 步来:事件参数=变量 / event ID=那1つのレジスタ / 执行条件=equal to / 变量=同レジスタ / numerical value=戻る的编号(如 1)。
5.6 历史告警画面
历史告警与当前告警設定几乎一样,唯一区别是记录タイプ选历史告警。不同点:报警解除后,历史告警的这件のレコード仍然留在表格里;もし在 Modbus protocol里开了存储設定,还能掉电保存,重新上电不丢。



历史告警的「告警解析」与「事件记录[触发]」逻辑和当前告警完全对称,只是控件指向画面 2,且告警解析里四项颜色统一设为红(255,0,0),强调"已发生即留痕"。event ID 同样从 0 起始对应子节点番号(bit 用法),逻辑里同样要写"各位 == 1"的条件;值マッピング用法见 4.2。
5.7 运行预览


本例程屏作マスター,用 Modbus Slave 软件模拟スレーブ应答。运行虚拟屏,与 Modbus Slave 联机即可看到效果:当前告警画面列出活动告警(压缩机低压、烟感报警、过滤网堵塞)及其触发时间,右侧 Modbus Slave 表示对应レジスタの値与通信日志。具体操作参照大彩《【MODBUS】HMI_应用ドキュメント_V1.0.pdf》。
6 下载工程

VisualTFT 编译成功后出力窗口会提示「编译成功」,再下到屏里,两种方式:
- USB Download:点菜单【下载到デバイス】,用 USB 线把設定下进屏;
- SD 卡下载:菜单【Tools】→【量产向导】→ 选「SD 卡下载」,把弹窗里すべての文件拷到 SD 卡根目录,插屏后重新上电,烧录完取下 SD 卡。
7 工程实操要点(踩坑提示)
- 先定用法,再配:スレーブ戻る的是位图(bit 用法,要拆子节点)まだ事件编号(值マッピング,不拆子节点)?两种配法完全不同,混着写屏上必然不表示。
- bit 用法:event ID = 子节点番号 0/1/2/3,对应レジスタの値 0x0001/0x0002/0x0004/0x0008。别把"レジスタ戻る 0001/0002/0003"当编号填进事件 ID——0003 是 bit0+bit1 同置,ではない"event 3"。
- 值マッピング用法:不建子节点、不写「某位 == 1」。事件记录[触发]按 4.2 的 5 步:事件参数=变量 → event ID=那1つのレジスタ → 执行条件=equal to → 变量=同レジスタ → numerical value=戻る编号。告警解析里的事件 ID 与这里数值必须完全一致。
- event ID 必须对齐:「告警解析」里填的 ID,和「事件记录[触发]」逻辑里的事件 ID(或数值)是同一个东西,对不上屏上就不表示那条告警。
- 逻辑必设条件:「事件记录[触发]」不写执行条件会无条件触发,すべての事件都被记下来,画面一团乱。
- 历史告警要掉电保存,记得开存储:のみ Modbus protocol設定里开了「存储設定 = 存储指定变量」,且変数属性です勾了「是否储存」,历史告警停電后才不丢。两处都要设,只设一处不生效。
- 当前告警 vs 历史告警的语义:当前告警是「活的」——解除即消失;历史告警是「记账」——解除也留痕。选型时想清楚你要的是实时ステータスまだ审计记录。
- ポーリング周期别太狠:スレーブレスポンス慢或バスデバイス多时,1 秒ポーリング + 100ms 延时要酌情放大,否则会出现读到一半タイムアウト、报警跳变。
- 颜色 ID 有意义:当前告警按严重度用不同前景色(红/绿/蓝),历史告警统一红——别随便填,否则屏上区分不出来。
整理自广州大彩光电科技有限公司《MODBUS Tutorial_データ記録控件 V1.0》(www.gz-dc.com),著作権は大彩すべての。如需联机デバッグ细节,参见大彩《【MODBUS】HMI_应用ドキュメント_V1.0.pdf》。
Leave a Reply