在Modbus TCP协议中,数据交换是通过请求和响应的方式进行的。
数据交换遵循一定的结构,包括事务标识符、协议标识符、长度字段、单元标识符和数据本身。
下面是发送数据和接收数据的解析。
发送数据:2f3100000006010400010006 的解析:
为了方便观察,分割一下:2f31 0000 0006 01 04 0001 0006
2f31
:事务标识符(Transaction Identifier),用于异步通信中匹配请求和响应。
0000
:协议标识符(Protocol Identifier),在Modbus TCP协议中通常为0。
0006
:长度字段(Length field),指示后续帧的长度,包括单元标识符、功能码和数据字段。
01
:单元标识符(Unit Identifier),标识了目标设备或从站。
04
:功能码(Function Code),这里指示读取模拟量输入寄存器。
0001
:起始地址(Starting Address),表示开始读取的寄存器地址。
0006
:寄存器数量(Quantity of Registers),指示请求读取的寄存器数量。
接收数据:2f310000000f01040c00fa0000000000d4000001f6 的解析:
为了方便观察,分割一下:2f31 0000 000f 01 04 0c 00fa 0000 0000 00d4 0000 01f6
2f31
:事务标识符(Transaction Identifier),与发送的请求匹配。
0000
:协议标识符(Protocol Identifier),同样为0,符合Modbus TCP/IP协议。
000f
:长度字段(Length field),指示后续帧的长度,这里长度为15字节。
01
:单元标识符(Unit Identifier),与请求中的单元ID一致,表示来自同一设备或从站。
04
:功能码(Function Code),和请求中的功能码相同,表示对读取模拟量输入寄存器操作的响应。
0c
:字节计数(Byte Count),表示后续响应中数据字节数,这里为12字节。
接下来是寄存器的值,每个寄存器是16位(2个字节):
00fa
:第一个寄存器的值
0000
:第二个寄存器的值
0000
:第三个寄存器的值
00d4
:第四个寄存器的值
0000
:第五个寄存器的值
01f6
:第六个寄存器的值