传感网通信协议消息报文解读:
一、有线通信协议消息帧
1.RS485网络的Modbus协议帧
(1) 主机向从机发送请求报文: 从设备地址 + 功能码 + 数据段(寄存器地址+寄存器数量) + 差错检测区 例如请求报文为: 01 03 00 00 00 01 84 0A What! 01 表示从设备的地址; 03 表示读保持寄存器功能(参考下图); 00 00 代表读取从设备0x0000这个寄存器开始的数据(由两个字节,16位组成); 00 01 代表读取一个寄存器的数据(常读取一个寄存器的值,由两个字节,16位组成); 84 0A 代表对前面的所有字节数据进行循环冗余校验检测,保证信息的准确性。 (以上报文均为16进制,一位十六进制能转化为4位二进制。) - 功能码参考表3-8: 部分常用功能码、寄存器地址、传感器如下3-28表: 传感器类型代号参考表3-28:
(2)从机响应报文 本机地址 + 功能码 + 数据段(数据域字节数 + 寄存器值(数据)) + 差错检测区 例如从机响应报文:01 03 02 1919 72 1E
- 01 表示本设备的地址;
- 03 表示读保持寄存器功能(参考表3-28);
- 02 代表返回两个字节的数据(即返回4位十六进制数);
- 19 19 第一个字节代表温度数据25℃,第二个字节代表湿度数据25%;
- 72 1E 代表对前面的所有字节数据进行循环冗余校验检测。(一般调用函数计算即可)
其它的传感器传递报文格式类同
2.CAN网络协议的消息帧
(1)从机给主机发送数据报文 传感器类型 + 传感器数值 + 保留1个字节 + 本机地址 + 保留3个字节 例如CAN数据报文:03 00 05 00 06 00 00 00
- 03 传感器类型,可参考表3-29
- 00 05 表示传感器数据,火焰数据为5;
- 00 保留没有使用;
- 06 为本机地址;
- 00 00 00 暂时保留,没有使用;
二、无线通信协议消息报文
1.LoRa网络的消息帧
(1)LoRa主机向从机发送请求报文 数据帧头 + 命令 + 网络ID号 + LoRa地址 + 校验和 例如LoRa网关请求报文:55 01 20 21 01 98 HEAD + CMD + NET_ID + LORA_ADDR + CHK;
- 55 数据帧头(HEAD),默认为0x55;
- 01 命令,0x01代表读传感器;
- 21 21 网络ID号,两个字节,代表网络ID为0x2021;
- 01 LoRa地址,代表向地址为0x01地址的LoRa节点发送请求报文
- 98 校验和,从HEAD到CHK前一个字节的和,保留低8位
(1)LoRa从机向主机发送响应报文 数据帧头 + 命令 + 网络ID号 + LoRa地址 + 响应 + 数据域长度 + 数据域 + 校验和 HEAD + CMD + NET_ID + LORA_ADDR + ACK + LEN + DATA + CHK;
- HEAD: 数据帧头,默认为0x55;
- CMD: 命令,0x01=读传感器;
- NET_ID: 网络ID号,2个字节;
- LORA_ADDR: LoRa地址;
- ACK:响应,0x00-响应OK,0x01-无数据,0x02-数据错误,其他预留;
- LEN:数据长度,指定数据域DATA有多少个字节。ACK非0x00时,无此项;
- DATA:数据域,传感器数据;
- CHK:校验和,从HEAD到CHK前一个字节的和,保留低八位
2.ZigBee网络的自定义协议消息帧
起始位 + 命令类型 + 数据总长度 + 传感器个数 + 传感器类型 + 数据域 + 校验位 START + CMD + LEN + Count + TYPE + DATA0~DATAN + CHK
协议各个报文的协议详解:
- 起始位(START):固定值为0xCC;
- 命令类型(CMD):一般为0x01,获取采集数据;
- 数据总长度(LEN):从起始位到校验位(不包括校验位)之前的字节长度;
- 传感器个数(Count):根据传感器种类确定,如果采集温湿度个数为2;
- 传感器类型(TYPE):0x01代表温湿度,其它参考表3-29;
- 数据域(DATA0~DATAN):存储传感器数据;
- 校验位(CHK):从START到CHK字节之前的累加和,然后把累加和的结果与0xFF按位与,取得低8位数据CHK的值;
三、汇聚节点汇聚数据上传网关消息帧
1.RS485网络上传的网关的报文
帧起始符 + 地址符(2个字节) + 命令码域 + 数据长度域 + 传感器类型 + 数据域(2个字节) + 校验码域 例如RS-485网络数据报文:DD 34 12 01 09 01 18 40 86
- DD 帧起始符(START):固定为0xDD;
- 34 12 地址域(ADDR) :汇聚节点的地址,地址的低位存在前面,高位存在后面,当前地址为从机地址0x1234;
- 01 命令码域(CMD):0x01代表汇聚节点上传CAN网络的数据到网关,0x02代表上传RS-485网络的数据到网关;
- 09 数据长度域(LEN):固定为0x09
- 01 传感器类型(TYPE):01 温湿度传感器,02人体红外传感器,03火焰传感器,04可燃气体传感器,05空气质量传感器,06光敏传感器,07声音传感器,08红外传感器,09 心率传感器,10表示其它;
- 18 40 数据域(DATA):占用两个字节,高8位代表温度传感器的温度值24℃,低8位代表湿度64%;
- 86 校验码域(CS):采用和校验方式,计算数据域之前所有字节数据的累加和,并将累加和与0xFF按位与而保留低8位数据;
|