Modbus 总览与工作原理
Modbus = 应用层客户/服务器报文协议
不绑定某一种物理介质:同一 PDU 可跑在 RS-485 RTU 或以太网 TCP 上
官方规格页:https://www.modbus.org/modbus-specifications
1. Modbus 是什么
Modbus 提供设备间的远程数据访问:读线圈、读寄存器、写单个/多个点等。
通信模型是 Client 发起请求 → Server 应答(串行时代常称 Master/Slave)。
| 属性 | 值 |
|---|---|
| 起源 | Modicon(现施耐德)1979 |
| 维护 | Modbus Organization |
| 应用层规范 | Application Protocol V1.1b3 |
| 串行线 | Serial Line V1.02(RTU / ASCII) |
| TCP | Messaging Implementation Guide V1.0b;默认端口 502 |
| 最大 PDU | 253 字节(继承串行 ADU≤256 的历史约束) |
| TCP ADU | PDU + 7 字节 MBAP ≈ 260 字节 |
2. 分层:PDU 与 ADU
1 | ┌─────────────────────────────────────┐ |
| 传输 | ADU 组成(概念) |
|---|---|
| RTU | Address(1) + PDU + CRC(2) |
| ASCII | : + 十六进制字符编码 + LRC + CR LF |
| TCP | MBAP(7) + PDU(无 CRC,由 TCP 校验) |
关键点:学会功能码与数据模型后,换 RTU/TCP 只是换“信封”。
3. 典型事务
1 | Client Server |
特点:
- 同步问答:一问一答(串行总线尤其严格)
- 无发现协议:地址/寄存器表靠手册或配置
- 无内建安全:明文;安全需 TLS(Modbus/TCP Security)或网络隔离
4. 三种常见形态
| 形态 | 介质 | 校验 | 典型场景 |
|---|---|---|---|
| Modbus RTU | RS-485 / RS-232 | CRC16 | 变频器、仪表、IO 模块 |
| Modbus ASCII | 串行 | LRC | 遗留/调试可读性 |
| Modbus TCP | 以太网 | TCP 校验和 | PLC、网关、上位机 |
网关常见:以太网侧 TCP Client/Server,串口侧 RTU Master,用 Unit ID 选从站。
5. 与其它协议对比(机器人语境)
| Modbus | CANopen | MQTT | EtherCAT | |
|---|---|---|---|---|
| 模型 | 请求/响应 | 对象字典 + PDO/SDO | Pub/Sub | 过程数据 + 邮箱 |
| 实时性 | 低~中(轮询) | 中(PDO) | 非硬实时 | 高 |
| 发现/描述 | 弱(靠点表) | EDS/DCF | Topic 约定 | ESI/XML |
| 典型用途 | IO/仪表/简单驱动 | 运动/设备网络 | 云边消息 | 多轴伺服 |
工程分层示例:
1 | 伺服/关节:EtherCAT / CANopen |
6. 学习路径一句话
- 弄清四个数据表(线圈/离散/保持/输入)
- 背常用功能码 01/02/03/04/05/06/15/16
- 分清 RTU 帧与 TCP MBAP
- 用 libmodbus / pymodbus 实读一台设备
下一篇:01-数据模型与寻址.md
正在加载留言…