串行线 RTU 与 ASCII
规范:Modbus over Serial Line Specification and Implementation Guide V1.02
新项目优先 RTU;ASCII 多用于遗留或人工可读调试
1. 物理层常见实践
| 项目 |
建议 |
| 介质 |
RS-485 半双工最常见;短距可用 RS-232 |
| 拓扑 |
总线 + 两端终端电阻(常 120Ω) |
| 波特率 |
9600 / 19200 / 38400 / 115200… 全网一致 |
| 数据位 |
常 8 |
| 校验 |
Even / Odd / None(与设备一致) |
| 停止位 |
1 或 2 |
| 从站地址 |
1–247,唯一 |
2. Modbus RTU 帧
1 2 3 4
| ┌─────────┬──────────────────┬────────┐ │ Address │ PDU (FC+Data) │ CRC16 │ │ 1 byte │ ≤253 bytes │ 2 bytes│ └─────────┴──────────────────┴────────┘
|
特点:
- 二进制紧凑
- CRC 低字节在前(小端存放于线上的常见描述:先发 CRC Lo)
- 帧与帧之间靠静默间隔定界(经典要求约 3.5 字符时间;高速/实现中常有放宽与 FIFO 影响)
主站轮询:同一时刻总线通常只有一问一答;多主站需额外仲裁(标准串行线不原生支持多主)。
3. Modbus ASCII 帧
1
| : + 十六进制字符编码的 (Address + PDU) + LRC + CR LF
|
- 每字节变 2 个 ASCII 字符 → 更慢、更大
- 用
: 与 CRLF 定界,对“字符间隙”更宽容
- 校验为 LRC
4. 时序要点(RTU)
| 概念 |
说明 |
| 字符超时 |
帧内字符间隔过大可能判为新帧/错误 |
| 响应超时 |
主站发出后等待从站应答的时间 |
| 周转延迟 |
485 方向切换方向需要时间 |
嵌入式注意:DE/RE 收发使能脚时序不对 → 丢首字节/CRC 错。
5. 与 TCP 对照
|
RTU |
TCP |
| 地址 |
帧头 Address |
MBAP Unit ID(子网)/ IP |
| 校验 |
CRC |
TCP 校验 |
| 定界 |
时间间隙 |
长度字段 |
| 并发 |
弱 |
可多连接 |
下一篇:04-ModbusTCP与MBAP.md
正在加载留言…