Modbus TCP 与 MBAP
规范:Modbus Messaging on TCP/IP Implementation Guide V1.0b
默认端口:502/tcp
PDU 与串行相同;差别在 MBAP 头 与无 CRC
1. TCP ADU
1 | ┌────────────────────────────────┬──────────────────┐ |
MBAP 字段
| 字段 | 长度 | 含义 |
|---|---|---|
| Transaction ID | 2 B | 事务标识,请求/响应配对 |
| Protocol ID | 2 B | 恒为 0 = Modbus |
| Length | 2 B | 后续字节数 = Unit ID(1) + PDU |
| Unit ID | 1 B | 单元标识(串行子网从站号 / 直连占位) |
2. Unit ID 怎么用
依据实现指南的常见建议:
| 场景 | Unit ID |
|---|---|
| 直连 TCP 设备 | 常用 0xFF 或 0(以设备为准) |
| 经网关访问后方 RTU 从站 | 填该从站地址 1–247 |
| 广播(经网关写) | 视网关;串行侧 0 为广播 |
错误使用显著 Unit ID + 日后 IP 改指到网关,可能导致误路由——指南因此推荐直连用非显著值。
3. 连接模型
- Client 主动连 Server:502
- 可保持长连接,多事务复用(靠 Transaction ID)
- Server 可并发多 Client(实现相关)
与 RTU 不同:TCP 下“主站”概念弱化,任何 Client 都可发起。
4. 安全
经典 Modbus TCP 无加密无认证。选项:
- 网络隔离 / VPN / 防火墙只放行必要主机
- Modbus/TCP Security(TLS,另有规范)
- 应用层鉴权(非标准,设备相关)
工控生产网不要对公网裸奔 502。
5. 抓包辨认
Wireshark 滤镜:tcp.port == 502 或 modbus
可见 Transaction ID、FC、寄存器地址与异常码。
下一篇:05-时序异常与互操作.md
正在加载留言…