TLV制式物联网通讯协议
3.9 报文正文由位置信息/传感器信息/控制信息/状态信息等自由组合完成。
序号
编码名称
1
子节点ID
2
位置信息
3
采集时间
4
空气温度
5
空气湿度
6
光照
7
二氧化碳
8
土壤温度
9
土壤湿度
10
子设备电压
11
设备电压
表 3 上行报文正文结构
信息编码结构 TLV TLV TLV TLV TLV TLV TLV TLV TLV TLV TLV
TYPE 0x0006
LENGTH 0x01
VALUE(HEX) ENQ/ACK/NAK/EOT/ESC
3.11 CRC 校验 校验(CRC)占用两个字节,包含了一个 16 位的二进制值。CRC 值由传输设备计算出来,
然后附加到数据帧上,接收设备在接收数据时重新计算 CRC 值,然后与接收到的 CRC 域中的 值进行比较,如果这两个值不相等,就表示数据传输发生了错误。
e) 采集器上行报文结束符是 ETB 时,表示后续有报文,不可退出通信;报文结束符是 ETX 时,表示后续无报文,可退出传输链路。
4.4 报文传输链路
a) 自报式报文传输链路规定见图 1。
终端设备
服务器
b) 查询应答式(包括控制命令)报文传输链路规定见图 2。
服务器
终端设备
5.部分常用传感器 TYPE 类型定义规则
crc=crc_s; while(len--!=0) {
crc = crc^(*ptr); for(i=0; i<8; i++) {
if((crc&0x0001)==0x0001) {crc>>=1;crc^=0xA001;} else crc>>=1; } ptr++; } return(crc); }
5.1 气体类传感器
气体信息
TYPE
空气温度(℃) 0x4E21
空气湿度(%)
0x4E22
CO2 浓度(ppm) 0x4E23
LENGTH 0x01 0x02 0x03 0x04 0x02 0x02
CO 浓度(ppm) 0x4E24
0x02
O2 浓度(ppm) 0x4E25
0x02
甲烷浓度(ppm) 0x4E26
4.3 链路传输基本规则
a) 包的字符之间无线路空闲间隔;两包之间的线路空闲间隔应考虑信道网络延时、间 环节延时、终端响应时间、波特率等因素。在两个数据包之间应至少等待一个线路空闲间隔。
b) 对于自报式工作制式,通信发起端是采集器,接收端是服务器;对于查询应答工作 制式,通信发起端是服务器,接收端是采集器。发起端在规定时间内没有正确收到响应报文, 应作为超时出错处理,超时等待时间应根据不同的信道类型来确定;超时出错后发起端应启 动重发机制。
D0
D1
D2
D3
D4
D5
D6
D7
1.3 报文帧结构框架规定
数据传出的通讯协议应采用表 2、表 3 规定的报文帧结构,传输顺序为高位字节在前, 低位字节在后。
包头 7E7EH
版本信息 23235554H
功能 码
两字
表 2 上行报文帧结构 流 水 时 间 报 文 ID 号 号 戳 长度
两字 六字 两字 TLV
表 2 通信协议功能码分配表
代码区域 0001H~4E20H 4E21H~A2C8H A2C9H~A4C8H A4C9H~CBD8H CBD9H~CDCCH CDCDH~FFFFH
代码类别 公共功能码 用户定义功能码 非法功能码 留作内部使用 用于异常应答
保留区域
3.通信报文说明 3.1 包头 7E7EH 两字节 HEX 码,作为本报文识别符。 3.2 版本信息
VALUE 无小数 保留两位小数 保留四位小数 保留六位小数 保留两位小数 保留两位小数 保留两位小数 保留两位小数 保留两位小数 保留一位小数
......
说明 当土壤温度为负 值时对数值进行 取反操作
无 无 无 无 无 0~14.0 扩展
3.10 报文结束符
ENQ:询问,作为下行查询及控制命令帧的报文结束符; ACK:肯定确认,继续发送,作为有后续报文帧的“确认帧”报文结束符; NAK:否定应答,反馈重发,用于要求对方重发某数据包的报文结束符; EOT:传输结束,退出,作为传输结束确认帧报文结束符,表示可以退出通信; ESC:传输结束,终端保持在线,在下行确认帧代替 EOT 作为报文结束符,要求终端在线。 保持在线 10 分钟若没有接收到服务器命令,终端退回原先设定的工作状态。
编码说明
T:0xA095 L:0x06 T:0x5140 L:0x08 T:0x0004 L:0x06 T:0x4E21 L:0x02 T:0x4E22 L:0x02 T:0x4FB2 L:0x02 T:0x4E23 L:0x02 T:0x4EE8 L:0x02 T:0x4EE9 L:0x02 T:0x51A9 L:0x02 T:0x51A9 L:0x02
4 链路传输规约
4.1 链路传输模式种类见表 5。
表 5 链路传输模式种类
模式代号 M1 M2 M3 M4
模式种类 发送/无回答 发送/确认 多包发送/确认 查询/响应
适用工作制式 自报式 自报式 自报式 查询应答式
适用信道 单向或双向信道 双向信道 双向信道 双向信道
4.2 链路传输模式应用规定
链路传输模式应用应符合下列规定: a) M1,采集器为通信发起端。采集器发出报文后,服务器不需响应。可用于发送单帧
扩展
5.2 土壤类传感器
土壤信息
TYPE
土壤温度(℃) 0x4EE8
土壤湿度(%) 含盐量(mg/m3) 含氮量(mg/m3) 含磷量(mg/m3) 含钾量(mg/m3) PH 值 其它
0x4EE9 0x4EEA 0x4EEB 0x4EEC 0x4EED 0x4EEE 0x4EEF-0x4F4C
LENGTH 0x01 0x02 0x03 0x04 0x02 0x04 0x04 0x04 0x04 0x02 ......
0. 前言
报文依据 TLV 格式编制
1. 传输规约
1.1 报文编码结构由 ASCII 字符编码和HEX/BCD编码的两种报文编码构成,其通信协议 基于面向字符异步通信方式。
1.2 报文帧基本单元
报文帧基本单元为字节,每个字节包含八个数据位,帧基本单元结构见表 1。
表 1 (HEX/BCD 编码)帧基本单元结构 8 个数据位
3.6 时间戳 时间值由 6 字节 BCD 码构成,在发送报文时取于实时时钟, 由年、月、日、时、分、秒组 成,编码格式为 YYMMDDHHmmSS。其中: a) YY 表示年份,2 位数字,取值 00~99; b) MM 表示月份,2 位数字,取值 01~12; c) DD 表示日期,2 位数字,取值 01~31; d) HH 表示小时,2 位数字,取值 00~23; e) mm 表示分钟,2 位数字,取值 00~59; f) SS 表示秒,2 位数字,取值 00~59。
采集器定时报、加报报、小时报、人工置数报;其上行帧报文结束符为 ETB/ETX; 下行帧为“确认”帧,报文结束符为 EOT/ESC。 c) M3,通常情况下采集器为通信发起端。采集器连续发出多包报文后,服务器正确接 收全部数据包,仅应回答 1 次确认报文;若有错误数据包,服务器应发送包括错误 数据包序列号(1 包序列号,每包单独重发)的响应包,采集器重发相应序列号包 数据,最多重发 2 次。用于发送多帧自报报文,包括图片信息报、均匀时段水文信 息报、人工置数报等。其上行帧报文结束符为 ETB/ETX(收到 NAK 的重发包用 ETX); 下行帧为“确认/否认”帧,报文结束符为 EOT/NAK/ESC。服务器采用该模式查询 采集器数据时,在采集器收到查询请求后,采集器则以类似发起端的传输方式想服 务器发送数据。 d) M4,服务器为通信发起端。服务器发出查询请求报文后,采集器接收请求报文正确, 应发送响应帧;如采集器接收请求报文无效,则不响应。用于查询采集器数据,设 置(修改)采集器运行状态参数、控制采集器运行。下行帧为“查询/确认”帧, 报文结束符为 ENQ/ACK/EOT;上行帧为响应帧,报文结束符为 ETB/ETX。
自报报文,包括测试报、均匀时段水文信息报、采集器定时报、加报报、小时报、 人工置数报;其上行帧报文结束符为 ETX,没有下行帧。 b) M2,采集器为通信发起端。采集器发出报文后,服务器接收报文正确,应响应发送 “确认”报文;服务器接收报文无效,则不响应。采集器收不到响应报文应启动重 发机制,最多重发 2 次。可用于发送自报报文,包括测试报、均匀时段水文信息报、
TYPE 0x0007
LENGTH 0x02
VALUE(HEX) 校验多项式 x16+X15+X2+1
C语言函数
unsigned int cal_crc16(unsigned char *ptr, unsigned int len,unsigned int crc_s) {
unsigned int crc; unsigned char i;
3.7 报文长度 报文长度由两个字节组成, 取值范围为 01~65535,报文长度代表完整一帧数据长度,从
包头一直到最后的校验码。
3.8 报文起始符 报文起始符分成两种格式,一种单包传输格式,一种多包传输格式。
TYPE 0x0005
LENGTH 0x01 0x03
VALUE(HEX) STX SYN+包总数+当前数
23235554H 四字节 HEX 码,作为本报文版本信息。
3.3 ID 号
ID 号为该设备识别号,长度可自定义。
TYPE
LENGTH
0x0001
n
VALUE(HEX) Value 1- Value n
3.4 功能码 功能码由两字节构成,功能码定义见表 A.1
3.5 流水号
流水号,表示发送报文的顺序。两个字节,高字节在前,低字节在后,报文流水号在 01~ 65535 之间循环;确认帧下行报文的流水号与上行报文的流水号相同;重发报文使用原报文 流水号;对于分包模式,报文正文分包传输时用同一个流水号。
c) 数据传输重发由通信发起端控制,应重发 2 次;若连续三次超时,应退出通信,等待 下次重新建立链路。
d) 对于单向信道,采集器发完报文即退出通信。对于双向信道,服务器负责控制是否退出通 信链路。服务器“确认”帧报文结束符为ESC时,采集器应保持通信设备带电值守,以随时 响应服务器查询/设置命令;“确认”帧报文结束符是EOT时,采集器退出通信状态。
0x02
PM2.5(μg/m3)
其它
0x4E27 0x4E28-0x4E84
0x02
VALUE 整型 保留两位小数 保留四位小数 保留六位小数 保留两位小数 整型
整型
整型
整型
整型
说明 当空气温度为负 值时对数值进行 取反操作
无 取值范围为 0-50000ppm 取值范围为 0-10000ppm 取值范围为 0-50000ppm 取值范围为 0-10000ppm 无
物联网数据通讯规约报文规定(WL/W0217-2017 V1.4)
版本号 V1.1 V1.2 V1.3 V1.4
作者 liCM liCM liCM liCM
版本说明 TLV 初始版本 TLV 修订版本 TLV 修订版本 TLV 修订版本
日期 2017.02.17 2017.02.22 2017.02.24 2017.07.14
密码长度最大为 255 字节,当密码全部为 0x00 时,报文为明文。 加密原理:对任意的两串二进制数做异或,得到的结果,再与其中任意一串二进制数做 异或,得到另一串二进制数。即 a^b=c , 则 b^c=a。
2.TLV 格式说明
TLV 是一种可变格式: Type 类型, Lengh 长度,Value 值。Type 类型为固定字节长度 2 个字节,Length 长度为可变字节。根据 Type 类型定义为一下几个区域: 公共区域、用户定义区域、非法区域、留作内部使用区域、用于异常应答区域、保留区域
报文 起始 符
TLV
报文 正文
TLV
报文 结束 符
Tห้องสมุดไป่ตู้V
校验 TLV
表 3 下行报文帧结构
包头 7E7EH
版本信息 23235554H
功能 码
两字
流水 号
两字
时间 戳
六字
报文 长度
两字
ID 号 TLV
报文 起始 符
TLV
报文 正文
TLV
报文 结束 符
TLV
校验 TLV
1.4 报文加密算法
报文加密采用异或加密算法,异或加密是一种很适合嵌入式系统的加密算法,无论是原 理还是操作性上,不会占用 MCU 过多处理时间,从而被广泛采用,加密需要对报文正文进行 加密处理。