04-功能详解
功能详解
Modbus RTU 详解
┌─────────┬──────────┬───────────────┬──────────┐
│ 从站地址 │ 功能码 │ 数据 │ CRC16 │
│ 1 byte │ 1 byte │ N bytes │ 2 bytes │
└─────────┴──────────┴───────────────┴──────────┘
- 从站地址:1-247(0 为广播地址,所有从站执行但不回复)
- 功能码:bit7 为 0 表示请求,为 1 表示异常响应
- 数据:长度取决于功能码
- CRC16:程序自动计算和验证
CRC16 校验
程序自动计算发送帧的 CRC16 并验证接收帧的 CRC16。CRC 错误时会在日志中提示。
CRC16 算法:初始值 0xFFFF,多项式 0xA001,处理所有字节(地址 + 功能码 + 数据)。
广播模式
从站地址设为 0,所有从站执行指令但不回复。仅适用于写操作(功能码 05/06/15/16)。
Modbus TCP 详解
┌──────────┬──────────┬──────────┬──────────┬──────────┬───────────────┐
│ 事务标识符 │ 协议标识符 │ 长度 │ 单元标识符 │ 功能码 │ 数据 │
│ 2 bytes │ 2 bytes │ 2 bytes │ 1 byte │ 1 byte │ N bytes │
└──────────┴──────────┴──────────┴──────────┴──────────┴───────────────┘
└─────────────── MBAP 报文头 (7 bytes) ──────────────┘└────── PDU ──────┘
- 事务标识符:程序自动生成递增的事务 ID
- 协议标识符:固定为
00 00(Modbus 协议) - 长度:后续字节数(单元标识符 + PDU)
- 单元标识符:同 RTU 的从站地址
- PDU:与 RTU 相同的功能码 + 数据(无 CRC)
TCP vs RTU 差异
| RTU | TCP | |
|---|---|---|
| 帧定界 | 字符间隔(3.5 字符时间) | TCP 分包 |
| 校验 | CRC16 | TCP 校验 |
| 地址 | 1 字节(1-247) | IP:Port + MBAP |
| 默认端口 | N/A | 502 |
功能码详解
| 功能码 | 请求数据 | 响应数据 |
|---|---|---|
| 01 读线圈 | 起始地址(2B) + 数量(2B) | 字节数 + 位数据(每8个线圈1字节) |
| 02 读离散输入 | 同上 | 同上 |
| 03 读保持寄存器 | 起始地址(2B) + 数量(2B) | 字节数 + 寄存器值(每寄存器2B) |
| 04 读输入寄存器 | 同上 | 同上 |
写入功能码(05-06, 15-16)
| 功能码 | 请求数据 |
|---|---|
| 05 写单线圈 | 线圈地址(2B) + 值(FF00=ON, 0000=OFF) |
| 06 写单寄存器 | 寄存器地址(2B) + 值(2B) |
| 15 写多线圈 | 起始地址(2B) + 数量(2B) + 字节数 + 位数据 |
| 16 写多寄存器 | 起始地址(2B) + 数量(2B) + 字节数 + 寄存器值序列 |
异常响应
当从站无法处理请求时,返回异常响应。功能码最高位置 1。
| 异常码 | 名称 | 说明 |
|---|---|---|
| 01 | 非法功能码 | 从站不支持该功能码 |
| 02 | 非法数据地址 | 起始地址 + 数量超出范围 |
| 03 | 非法数据值 | 写入值不合理 |
| 04 | 从站设备故障 | 从站内部错误 |
| 05 | 确认 | 从站已接受但需较长时间处理 |
| 06 | 从站设备忙 | 从站正在处理其他任务 |
程序会自动识别异常响应并在日志中显示对应的异常信息。
写入多寄存器
对于功能码 16(写多寄存器),在 写入数据 框中输入要写入的值,以空格或逗号分隔:
100 200 300 400 500
程序自动计算字节数和寄存器数量。
自动轮询
- 勾选后,按设定间隔自动发送当前配置的请求。适用于:
- 持续监控设备状态
- 配合图表观察数据变化趋势
- 设备长时间稳定性测试
> 提示:轮询间隔不宜过短(建议 ≥ 200ms),避免从站处理不过来。
数据可视化
- 在左侧 数据可视化 面板中勾选 启用图表
- 图表区域显示在报文日志下方
图表类型
| 类型 | 适用场景 |
|---|---|
| 折线图 | 寄存器值连续变化趋势 |
| 平滑曲线 | 同上,更平滑的展示 |
| 散点图 | 离散采样点分布 |
| 面积图 | 强调数值累积量 |
| 柱状图 | 多寄存器值对比 |
| 饼图 | 各寄存器值占比 |
提取 Modbus 寄存器值
- 使用 Modbus 寄存器 规则类型,直接填入寄存器地址(偏移量)即可。例如:
- 寄存器规则表达式填
0→ 提取地址 0 的寄存器值 - 寄存器规则表达式填
5→ 提取地址 5 的寄存器值
程序自动从 Modbus 响应报文中解析对应地址的寄存器值并在图表中绘制。
时间窗口
调整图表显示的时间范围:5 秒 ~ 600 秒(10 分钟)。
智能分析
点击 智能分析 按钮,程序自动扫描最近的寄存器数据并推荐可能的数值提取规则。
日志导出
支持 TXT 和 CSV 格式。导出内容为十六进制格式的完整 Modbus 报文。