Skip to content

Modbus 报文查看 ​

进入报文查看 ​

  1. 在左侧设备树中选中 Modbus 设备;
  2. 点击右侧上方的"报文"图标;
  3. 在弹出的窗口中实时查看通讯帧,支持暂停刷新、按方向/从机筛选、查看报文详情与原始字节定位。

Modbus TCP 帧结构 ​

TCP 模式下报文由 MBAP 头 + PDU 组成:

┌──────────────┬──────────────┬──────────┬──────────────┬──────────────────┐
│ 事务标识符     │ 协议标识符     │ 长度      │ 单元标识符     │ PDU(功能码+数据) │
│ 2 字节        │ 2 字节       │ 2 字节   │ 1 字节       │ N 字节            │
└──────────────┴──────────────┴──────────┴──────────────┴──────────────────┘
字段说明
事务标识符客户端生成,用于匹配请求与响应(响应回显同值)
协议标识符Modbus 固定为 0x0000
长度后续(单元标识符 + PDU)的字节数
单元标识符从站地址(多从站网关时使用)

Modbus RTU 帧结构 ​

┌──────────┬──────────┬──────────────┬──────────┐
│ 从站地址  │ 功能码    │ 数据          │ CRC16    │
│ 1 字节   │ 1 字节   │ N 字节        │ 2 字节   │
└──────────┴──────────┴──────────────┴──────────┘
  • 从站地址:1~247(0 为广播地址);
  • CRC16:从从站地址到数据末尾的循环冗余校验;
  • 帧间间隔 ≥ 3.5 个字符时间,用于帧定界。

请求 / 响应示例 ​

读保持寄存器(功能码 03)请求(从站 1,起始地址 0x0000,读 2 个寄存器):

01 03 00 00 00 02 C4 0B
│  │  │    │    │    └─ CRC16
│  │  │    │    └────── 寄存器数量 = 2
│  │  │    └─────────── 起始地址 = 0x0000
│  │  └──────────────── 功能码 = 03
│  └─────────────────── 从站地址 = 1
└────────────────────── 帧起始

响应:

01 03 04 00 0A 00 14 ...
│  │  │  │    │
│  │  │  │    └──── 寄存器2 = 0x0014(按解析码解释)
│  │  │  └───────── 寄存器1 = 0x000A
│  │  └──────────── 数据字节数 = 4(2 个寄存器)
│  └─────────────── 功能码 = 03
└────────────────── 从站地址 = 1

报文解析功能 ​

EMS Simulate 对原始十六进制报文自动解析,展示:

  • 时间记录:发送 / 接收时间;
  • 方向标记:TX(发送)/ RX(接收);
  • 字段解析:功能码、起始地址、寄存器数量、字节数、寄存器原始值;
  • 值解释:按测点配置的解析码将原始值解释为浮点/整数等,并应用系数换算;
  • 异常帧:功能码最高位置 1(如 0x83)表示异常,附异常码(非法地址/非法数据等)。

交互流程 ​

  1. 客户端发起请求(事务 ID + 功能码 + 地址 + 数量);
  2. 服务端处理并回送响应帧(事务 ID 回显);
  3. 读取类请求返回数据区内容,写入类请求返回写入确认。

排查技巧 ​

  • 长时间无响应:先看 TCP 是否建立(连接超时参数),再看从站地址与功能码;
  • 数据值异常:核对解析码字节序与系数;
  • 偶发失败:查看命令超时与重试次数,检查网络抖动或从站负载;
  • 结合"报文详情"的逐字节定位,快速判断是哪一段数据异常。

Released under the Apache 2.0 License.