Modbus TCP是基于TCP/IP协议的Modbus变体,常用于以太网网络中。与Modbus RTU和Modbus ASCII不同,Modbus TCP没有起始和结束静默时间,而是使用TCP/IP协议进行数据传输。以下是Modbus TCP帧结构的详细解释:
Modbus TCP帧结构
Modbus TCP帧由以下几个部分组成:
- MBAP头(Modbus Application Protocol Header)
- PDU(Protocol Data Unit)
1. MBAP头
MBAP头包含7个字节,具体结构如下:
- 事务标识符(Transaction Identifier): 2字节
- 用于匹配请求和响应。
- 协议标识符(Protocol Identifier): 2字节
- 固定为0,表示Modbus协议。
- 长度(Length): 2字节
- 表示后续数据的长度,包括单元标识符和PDU。
- 单元标识符(Unit Identifier): 1字节
- 用于标识从设备,在Modbus TCP中通常用于网关场景。
2. PDU(Protocol Data Unit)
PDU包含以下部分:
- 功能码(Function Code): 1字节
- 指定请求的操作类型(如读写寄存器)。
- 数据域(Data): 可变长度
- 包含与功能码相关的数据(如寄存器地址和数量)。
完整的Modbus TCP帧结构
+------------------+------------------+------------------+------------------+------------------+------------------+------------------+
| Transaction ID | Protocol ID | Length | Unit ID | Function Code | Data |
| (2 bytes) | (2 bytes) | (2 bytes) | (1 byte) | (1 byte) | (N bytes) |
+------------------+------------------+------------------+------------------+------------------+------------------+------------------+
示例
假设我们有一个读取保持寄存器(功能码0x03)的请求,其事务标识符为0x0001,协议标识符为0x0000,单元标识符为0x01,读取的寄存器地址为0x0010,数量为2。帧结构如下:
- 事务标识符: 0x0001
- 协议标识符: 0x0000
- 长度: 0x0006(1字节Unit ID + 1字节Function Code + 4字节Data)
- 单元标识符: 0x01
- 功能码: 0x03
- 数据: 0x0010(起始地址) + 0x0002(寄存器数量)
+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+
| 0x00 | 0x01 | 0x00 | 0x00 | 0x00 | 0x06 | 0x01 | 0x03 | 0x00 | 0x10 | 0x00 | 0x02 |
+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+
响应帧结构
如果从设备响应读取请求,返回的帧结构如下:
- 事务标识符: 0x0001(与请求一致)
- 协议标识符: 0x0000
- 长度: 0x0005(1字节Unit ID + 1字节Function Code + 1字节Byte Count + N字节Data)
- 单元标识符: 0x01
- 功能码: 0x03
- 字节计数: 0x04(读取2个寄存器,每个寄存器2字节)
- 数据: 寄存器值(每个寄存器2字节)
假设读取的寄存器值为0x1234和0x5678:
+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+
| 0x00 | 0x01 | 0x00 | 0x00 | 0x00 | 0x07 | 0x01 | 0x03 | 0x04 | 0x12 | 0x34 | 0x56 | 0x78 |
+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+
更多通讯协议请访问--点击跳转
Comments NOTHING