Modbus TCP报文解析之遥信、遥控
的有关信息介绍如下:
针对Modbus TCP协议报文的部分功能码做详细解析说明。
主要介绍电力设备通讯涉及较多的、常用的功能码。
注意:举例的报文全为16进制。
功能码01
主站下发:00 0A 00 00 00 06 0201 00 1300 14
解析: 00 0A 00 00 00 06 表示MBAP报文头;
其中 00 0A为Transation ID;
00 00 为协议标识符,固定的;
00 06 为报文后面的长度;
02表示装置地址为2;01表示功能码为1;
00 13表示起始寄存器地址为0x0013;
00 14表示召唤遥信个数为20个;
从站回答:00 0B00 00 00 06 02 0103CD 6B 05
解析: 00 0B00 00 00 06表示MBAP报文头;
02表示装置地址为2;
01表示功能码为1;03表示后面数据量字节个数为3;
CD 6B 05表示召唤20个遥信的具体状态,
CD(1100 1101)代表第1个遥信合,第2个遥信分,第3个遥信合,第4个遥信合, 第5个遥信分, 第6个遥信分, 第7个遥信合,第8个遥信合。6B(0110 1011)代表第9个遥信合,第10个遥信合,第11个遥信分,第12个遥信合, 第13个遥信分, 第14个遥信合, 第15个遥信合,第16个遥信分。
05 (0000 0101)代表第17个遥信合,第18个遥信分,第19个遥信合,第20个遥信分。前面4个0没意义,只是为了补全8位;
功能码02
主站下发: 00 0A 00 00 00 060202 00 C400 16
解析:00 0A 00 00 00 06 表示MBAP报文头;
02表示装置地址为2;
02表示功能码为2;
00 C4表示起始寄存器地址为0x00C4;
00 16表示召唤遥信个数为22个;
从站回答:00 0B00 00 00 060202 03AC DB 35
解析:00 0B00 00 00 06表示MBAP报文头;
02表示装置地址为2;
02表示功能码为2;
03表示后面数据量字节个数为3;
AC DB 35表示召唤22个遥信的具体状态,
其中:AC(1010 1100)代表第1个遥信分,第2个遥信分,第3个遥信合,第4个遥信合, 第5个遥信分, 第6个遥信合, 第7个遥信分,第8个遥信合。
DB(1101 1011)代表第9个遥信合,第10个遥信合,第11个遥信分,第12个遥信合, 第13个遥信合, 第14个遥信分, 第15个遥信合,第16个遥信合。
35 (0011 0101)代表第17个遥信合,第18个遥信分,第19个遥信合,第20个遥信分,第21个遥信点合,第22个遥信点合。前面2个0没意义,只是为了补全8位;
功能码03
主站下发: 00 0A00 00 00 0602 03 00 6B00 01
解析:00 0A00 00 00 06表示MBAP报文头;
02表示装置地址为2;
03表示功能码为3;
00 6B表示起始寄存器地址为0x006B;
00 01表示召唤寄存器个数为1个;
子站回答:00 0B00 00 00 05 02 03 0202 20
解析:00 0B00 00 00 05表示MBAP报文头;
02表示装置地址为2;
03表示功能码为3;
02表示后面数据量字节个数为2;
02 20表示召唤遥信的具体状态,
其中:02(0000 0010)代表第9个遥信分,第10个遥信合,第11个遥信分,第12个遥信分, 第13个遥信分, 第14个遥信分, 第15个遥信分,第16个遥信分。
20 (0010 0000)代表第1个遥信分,第2个遥信分,第3个遥信分,第4个遥信分, 第5个遥信分, 第6个遥信合, 第7个遥信分,第8个遥信分;
功能码04
主站下发: 00 0A00 00 00 0602 0400 2800 01
解析:00 0A00 00 00 06表示MBAP报文头;
02表示装置地址为2;
04表示功能码为4;
00 28表示起始寄存器地址为0x0028;
00 01表示召唤寄存器个数为1个;
从站回答:00 0B00 00 00 05 02 04022420
解析:00 0B00 00 00 05表示MBAP报文头;
02表示装置地址为2;
04表示功能码为4;
02表示后面数据量字节个数为2;
2420表示召唤遥信的具体状态,
其中:24 (0010 0100)代表第9个遥信分,第10个遥信分,第11个遥信合,第12个遥信分, 第13个遥信分, 第14个遥信合, 第15个遥信分,第16个遥信分。
20 (0010 0000)代表第1个遥信分,第2个遥信分,第3个遥信分,第4个遥信分, 第5个遥信分, 第6个遥信合, 第7个遥信分,第8个遥信分;
注意:
标准modbus规约功能码为03或者04的时候都是先送高字节后送低字节,但是有的厂家是先送低字节后送高字节,这个时候返回报文数据部分就需要跟上面解释的相反.
功能码05
主站下发: 00 0A00 00 00 0602 0500 AC FF 00
解析:00 0A00 00 00 06表示MBAP报文头;
02表示装置地址为2;05表示功能码为5;
00 AC表示遥控位地址为0x00AC;FF 00表示控合;
从站回答:00 0B00 00 00 0602 0500 AC FF 00
解析: 00 0B00 00 00 06表示MBAP报文头;
02表示装置地址为2;
05表示功能码为5;
00 AC表示遥控位地址为0x00AC;
FF 00表示控合;
注意:数据FF 00表示控合;00 00表示控分其它都为非法数据。
功能码为06
主站下发: 00 0A00 00 00 0602 0600 01 00 04
解析:00 0A00 00 00 06表示MBAP报文头;
02表示装置地址为2;
06表示功能码为6;
00 01表示遥控寄存器地址为0x0001;
00 04表示把0x0001这个寄存器的第2位控合;
从站回答:00 0B00 00 00 0602 0600 01 00 04
解析: 00 0B00 00 00 06表示MBAP报文头;
02表示装置地址为2;06表示功能码为6;
00 01表示遥控寄存器地址为0x0001;
00 04表示把0x0001这个寄存器的第2位控合;
注意:04(0100) 遥控位从0开始到15总共16个位,功能码6控制谁,他那个位是1。



