1、8Modbus RTU协议 2018.05.08 Big Q功能码:01 02 03 04 05 06 15 16功能码:01 读取线圈状态读取 从站为1 起始地址为0 数量为10 主站发送报文: 01 01 00 00 00 0a bc 0d 01:从站地址 Type:Byte01:功能码; Type:Byte00 00 :读取从站的起始地址;Type:Word (主站访问实际起始地址=报文地址+1) 00 0a : 读取总共的线圈个数,10个;Type:Wordbc 0d: CRC校验;Type:Word从站返回报文: 01 01 02 07 00 bb cc01:从站地址 Type:By
2、te01:功能码 Type:Byte02:返回字节个数(每读8个BIT线圈为一个字节BYTE) Type:Byte07 00 :返回线圈状态,读取10个线圈状态,用两个字节存储(00000111,00000000) Type:Bytebb cc:发送CRC校验码 Type:Word如下图功能码:02 读取输入状态读取 从站为1 起始地址为10 数量为10 主站发送报文: 01 02 00 09 00 0a 28 0f 01:从站地址 Type:Byte02:功能码; Type:Byte00 00 :读取从站的起始地址;Type:Word (主站访问实际起始地址=报文地址+1) 00 0a :
3、读取总共的输入个数,10个;Type:Word28 0f: CRC校验;Type:Word从站返回报文: 01 02 02 00 00 b9 b801:从站地址 Type:Byte02:功能码 Type:Byte02:返回字节个数(每读8个BIT线圈为一个字节BYTE) Type:Byte00 00 :返回线圈状态,读取10个线圈状态,用两个字节存储(00000000,00000000) Type:Byteb9 b8:发送CRC校验码 Type:Word如下图功能码:03 读取保持型寄存器读取 从站为1 起始地址为10 数量为10 主站发送报文: 01 03 00 09 00 0a 15 cf
4、 01:从站地址 Type:Byte03:功能码; Type:Byte00 09 :读取从站的起始地址;Type:Word (主站访问实际起始地址=报文地址+1) 00 0a : 读取总共的输入个数,10个;Type:Word15 cf: CRC校验;Type:Word从站返回报文: 01 03 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a3 6701:从站地址 Type:Byte03:功能码 Type:Byte14:返回字节个数(每读1个寄存器为二个字节BYTE) Type:Byte00 00 00 00 0
5、0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 一个寄存器用两个字节存储,读取10个寄存器 为20个字节 Type:Byteb9 b8:发送CRC校验码 Type:Word如下图:功能码:04 读取输入寄存器读取 从站为1 起始地址为10 数量为10 主站发送报文: 01 04 00 09 00 0a a0 0f 01:从站地址 Type:Byte04:功能码; Type:Byte00 09 :读取从站的起始地址;Type:Word (主站访问实际起始地址=报文地址+1) 00 0a : 读取总共的输入个数,10个;Type:Worda0 0f:
6、CRC校验;Type:Word从站返回报文: 01 04 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 95 8101:从站地址 Type:Byte04:功能码 Type:Byte14:返回字节个数(每读1个寄存器为二个字节BYTE) Type:Byte00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 一个寄存器用两个字节存储,读取10个寄存器 为20个字节 Type:Byte发送CRC校验码:95 81Type:Word如下图:功能码:15 写
7、多个线圈寄存器读取 从站为1 起始地址为0 数量为10 主站发送报文: 01 0f 00 00 00 0a 02 1e 00 ec 9801:从站地址 Type:Byte0f:功能码; Type:Byte00 00 :读取从站的起始地址;Type:Word (主站访问实际起始地址=报文地址+1) 00 0a : 写入总共的线圈个数,10个;Type:Word02:总字节数(8个线圈占用一个字节,多余的再占用一个)Type:Byte1e 00 :写入数据的值(01111000 00000000)Type:Byteec 98: CRC校验;Type:Word从站返回报文: 01 0f 14 00
8、00 00 00 0a d5 cc01:从站地址 Type:Byte0f:功能码 Type:Byte00 00:返回起始地址 Type:Word00 0a :返回读取寄存器个数 Type:Wordd5 cc : 发送CRC校验码 Type:Word如下图功能码:16 写多个保持型寄存器读取 从站为1 起始地址为0 数量为4 主站发送报文: 01 10 00 00 00 04 08 01 00 01 01 00 01 00 00 1a 67 01:从站地址 Type:Byte10:功能码; Type:Byte00 00 :读取从站的起始地址;Type:Word (主站访问实际起始地址=报文地址+
9、1) 00 04 : 写入总共的寄存器数,4个;Type:Word08:总字节数(1个保持型占用二个字节,) Type:Byte01 00 01 01 00 01 00 00 :写入数据的值 Type:Byte1a 67: CRC校验;Type:Word从站返回报文: 01 10 00 00 00 04 c1 ca01:从站地址 Type:Byte10:功能码 Type:Byte00 00:返回起始地址 Type:Word00 04 :返回读取寄存器个数 Type:Wordc1 ca 发送CRC校验码 Type:Word如下图功能码:05 单个线圈读取 从站为1 起始地址为0 主站发送报文:
10、01 05 00 00 00 00 cd ca 01:从站地址 Type:Byte05:功能码; Type:Byte00 00 :写入从站的起始地址;Type:Word (主站访问实际起始地址=报文地址+1) 00 00 : 写入的数据值,高位 低位;cd ca: CRC校验;Type:Word从站返回报文: 01 05 00 00 00 00 cd ca01:从站地址 Type:Byte05:功能码 Type:Byte00 00 :返回写入从站的起始地址;Type:Word (主站访问实际起始地址=报文地址+1) 00 00 : 返回写入的数据值,高位 低位;cd ca: CRC校验;Typ
11、e:Word如下图功能码:06 单个寄存器读取 从站为1 起始地址为0 主站发送报文: 01 06 00 01 00 00 d8 0a 01:从站地址 Type:Byte06:功能码; Type:Byte00 00 :写入从站的起始地址;Type:Word (主站访问实际起始地址=报文地址+1) 00 00 : 写入的数据值,高位 低位;cd ca: CRC校验;Type:Word从站返回报文: 01 06 00 01 00 00 d8 0a01:从站地址 Type:Byte06:功能码 Type:Byte00 00 :返回写入从站的起始地址;Type:Word (主站访问实际起始地址=报文地址+1) 00 00 : 返回写入的数据值,高位 低位;cd ca: CRC校验;Type:Word如下图