Modbus TCP 与 MBAP

Modbus TCP 与 MBAP

规范:Modbus Messaging on TCP/IP Implementation Guide V1.0b
默认端口:502/tcp
PDU 与串行相同;差别在 MBAP 头 与无 CRC


1. TCP ADU

1
2
3
┌────────────────────────────────┬──────────────────┐
│ MBAP Header (7 bytes) │ PDU │
└────────────────────────────────┴──────────────────┘

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 设备 常用 0xFF0(以设备为准)
经网关访问后方 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 == 502modbus
可见 Transaction ID、FC、寄存器地址与异常码。

下一篇:05-时序异常与互操作.md

文章互动

阅读 --

留言

0 条留言

正在加载留言…