Modbus Tcp通信格式详解

Modbus TCP  03功能码 读取一个或多个保持寄存器的数值
读取连续三个保持寄存器的数值
(40001=1000、40002=5000、40003=650)

发送:00 00 00 00 00 06 01 03 00 00 00 03
接收:00 00 00 00 00 09 01 03 06 03 E8 13 88 02 8A

发送详解:00 00 00 00 00 06 01 03 00 00 00 03
00 00 事务标识符
00 00 协议标识符
00 06 长度标识符
01 站号
03 功能码
00 00 首个寄存器地址 
00 03 读取寄存器的个数 RTU格式 (无需CRC)
Modbus TCP 与Modbus RTU 比较就是头部多了六个字节
Modbus TCP 无需CRC校验码

接收详解:00 00 00 00 00 09 01 03 06 03 E8 13 88 02 8A
00 00 事务标识符
00 00 协议标识符
00 09 长度标识符
01 站号
03 功能码
06 读取的字节数
03 E8 读取第一个寄存器的数值
13 88 读取第二个寄存器的数值
02 8A 读取第三个寄存器的数值  RTU格式 (无需CRC)
03功能码 读取(03 E8=1000、13 88=5000、02 8A=650)

Modbus TCP  06功能码 写一个寄存器的值
(40001=10)(00 0A=10=40001)
发送:00 00 00 00 00 06 01 06 00 00 00 0A
接收:00 00 00 00 00 06 01 06 00 00 00 0A

Modbus TCP  01功能码 读取一组逻辑线圈的当前状态(ON/OFF)
读5个线圈状态:(00001=1、00002=1、00003=1、00004=1、00005=1)
返回状态:(1F=0001 1111)
发送:00 00 00 00 00 06 01 01 00 00 00 05
接收:00 00 00 00 00 04 01 01 01 1F




Modbus TCP  02功能码 读取一组开关输入的当前状态(ON/OFF)
读5个输入状态
(10001=1、10002=0、10003=1、10004=0、10005=1)
(15=0001 0101)提示15为十六进制数。
发送:00 00 00 00 00 06 01 02 00 00 00 05
接收:00 00 00 00 00 04 01 02 01 15

Modbus TCP  04功能码 读取一个或多个输入寄存器的数值
读5个输入寄存器的数值
(30001=0、30002=1、30003=2、30004=3、30005=4)
发送:00 00 00 00 00 06 01 04 00 00 00 05
接收:00 00 00 00 00 0D 01 04 0A 00 00 00 01 00 02 00 03 00 04

Modbus TCP  05功能码 强置一个逻辑线圈的通断状态
发送:00 00 00 00 00 06 01 05 00 00 FF 00
接收:00 00 00 00 00 06 01 05 00 00 FF 00

Modbus TCP  16(16进制=10码)功能码 写多(3)个寄存器的值
发送详解:00 00 00 00 00 0D 01 10 00 00 00 03 06 00 0A 00 0B 00 0F
00 00 事务标识符
00 00 协议标识符
00 0D 长度标识符
   01 站号
   10 功能码
00 00 首个寄存器通讯地址
00 03 写入的寄存器个数
06 00 写入的字节数
00 0A 写入第一个寄存器的数值
00 0B 写入第二个寄存器的数值
00 0F 写入第三个寄存器的数值

接收详解:00 00 00 00 00 06 01 10 00 00 00 03
00 00 事务标识符
00 00 协议标识符
00 06 长度标识符
01 站号
10 功能码
00 00 首个寄存器通讯地址
00 03 写入的寄存器个数

Modbus TCP  15(16进制=0F码)功能码 强置一串连续逻辑线圈的通断
发送:00 00 00 00 00 0B 01 0F 00 00 00 02 04 FF 00 00 00
发送:00 00 00 00 00 06 01 0F 00 00 00 02

你可能感兴趣的:(物联网)