Zigbee下行协议.docx
《Zigbee下行协议.docx》由会员分享,可在线阅读,更多相关《Zigbee下行协议.docx(58页珍藏版)》请在冰点文库上搜索。
Zigbee下行协议
下行协议及设备协议
1.概述
1.1、术语定义:
中控下行协议:
Server的业务程序发往适配器的协议称为中控下行协议。
设备下行协议:
适配器通过RS232/USB至各网关的协议称为设备下行协议。
设备协议:
网关至各节点的协议称为设备协议。
例如CAN协议,zigbee协议等。
不管是何种网关,Server与其通信的下行协议均使用相同的格式;根据传输介质的不同,设备协议则随之不同。
通常一个节点控制多路硬件(比如8路红外发射或双路开关),每路硬件在该节点中均存在一个唯一的通道号;同时每路硬件也提供一个或多个功能供用户操作(比如LED调光硬件提供开、关、调光三个功能),每个功能在该节点中存在一个唯一的操作功能号。
对于某些操作功能,还需要一些额外的参数(比如调光操作功能,还需要最大亮度的相对值)。
图1:
术语定义
1.2、功能界定:
适配器与节点完成发送、接收的分片、重组,网关只实现简单的透传,后续如有必要,再实现分片、重组。
超时则同时在适配器、网关中完成,其中适配器的超时时间比网关略长(原因为拓朴类似于分布式架构,存在一致性问题)。
适配器对于不同的网关的发送、接收超时时间可不相同。
1.3、发送时,Server根据中控下行协议将报文发送至适配器,适配器如有必要则先分片,将报文通过RS232/USB发送至网关,网关将报文发送至节点后,需要回应适配器发送成功/失败。
当一定时间内网关无法将报文发送至目的节点,需要取消报文的发送,并应答适配器发送超时。
考虑到在此过程中,网关有可能出现故障,因此适配器也必须启动定时器,以判断报文是否发送超时。
当适配器收到网关的ACK报文后,继续发送下一个报文。
当适配器收到网关的NAK或超时后,取消后续分片报文的发送,启动下一个完整报文的发送。
1.4、Server发送报文时,由于其承载内容为应用层报文,必然保序到达目的节点。
由于节点的处理能力及设备协议栈原因,Server往同一个目的节点发送报文时,采用“发送、等待”的模式,Server必须收到网关的应答报文或者自身发送超时后,才允许下一个报文的发送。
对于不同的目的节点,目前可同时发送。
后续如碰以TCP等保序的协议栈,再增加同时发送至相同目的节点的功能。
1.5、Server发往适配器的中控下行协议格式参见下图:
SOF用于同步并表明新的一帧;MAC指目的节点地址,对于不同的网关其使用的长度并不相同(比如CAN最多只需29bit,ZigBee为8字节,IP报文为4字节,以太网为6字节,为方便起见,统一为8字节,每种协议使用哪个bit及其字节序由协议自行定义即可),ControlField为控制域,表明上层对网关发送该报文的控制信息(比如单播、组播、广播、透传等等),Length字段包含了后续DATA及CRC16的长度总和(每种协议可自定义其一帧的最大Length值):
图2:
中控下行协议报文格式
1.6、ControlField域的格式参见下图,,链路层和应用层确认标志ACK,ACK=0000b网关肯定回答中控机,其它为网关的链路层否定回答,ACK=1000b节点的应用层肯定回答,其它为节点应用层否定回答;报文方向DIR,DIR=0,报文发起方,DIR=1,报文响应方。
SOF、MF,用于指示设备节点的重组信息;SOF、MF的组合如下:
SOF=1表示新的一帧,MF=1表示后续有分片帧,有效组合如下:
10:
新的一帧无分片;11新的一帧后续有分片;00:
当前帧后续无分片;01:
当前帧后续有分片;packettype表明该报文的发送方式(单播、广播或组播,目前一般为单播或广播);transparentindicator表示该报文的接收者是接收处理或是透传(CAN/ZigBee互换);目前该bit必然是接收处理,后续需要网关转换传输介质时,才引入透传功能,其它位预留:
图3:
ControlField域格式
1.7、中控下行协议DATA域的格式参见下图,通道号、操作功能码中实际使用的bit由各设备协议自行制订,可各不相同:
图4:
中控下行协议DATA域格式
1.8、适配器往Server发送报文的格式同图2
1.9、适配器往Server发送报文的DATA域格式同图4
1.10、适配器从Server收到报文后,如Length小于等于设备链路的MTU,则直接将报文透传至网关,如Length大于MTU,则须将报文进行分片,分片的区域包含:
Length、DATA、CRC16,每个分片报文的格式遵守如下设备下行协议的格式:
图5:
中控下行协议分片包格式
1.11、目前节点往网关发送报文时,严禁分片!
由于节点只会从网关中收到报文,其重组比较简单,而适配器理论上会从各节点收到分片包,重组工作就比较复杂,因此一期工作适配器不支持重组。
2.帧格式定义
大于一个字节的定义都使用大端,高字节在低地址,以下描述中统一为Byte0为低字节,ByteX为高字节。
2.1SOF
帧起始位,固定为0x4455,如下图:
SOF
0x44
0x55
图6:
设备下行协议SOF域格式
2.2MAC
MAC地址,最长8字节,根据实际设备网络而定,zigbee无线8字节,CAN网8字节,右对齐,不足8字节高位补0,如下图:
MAC
MAC7
MAC6
MAC5
MAC4
MAC3
MAC2
MAC1
MAC0
图7:
设备下行协议MAC域格式
2.3ControlField
控制域包括2个字节共16bit,每位的定义如下图:
ControlField
B15~B8
Reserve
ACK3
ACK2
ACK1
ACK0
B7~B0
RES
RES
DIR
SOFflag
MFflag
Packettype1
Packettype0
Transparentindicator
图8:
设备下行协议ControlField域格式
ACK:
0-7为网关链路层ACK,8-15为网关和子节点应用层ACK。
00:
网关链路层肯定回答;01:
网关接收长度不一致;02:
网关CRC16错误;03:
网关发送超时;04-07:
保留;
08:
子节点应用层肯定回答;09:
子节点报文重组错误;10:
节点OPCODE不匹配;11:
子节点执行失败;12-15:
保留。
DIR:
启动报文位,0:
报文启动方,一般为为中控机至设备;1:
报文响应方,一般为设备至中控机。
当设备有重要变更通知时可以设置DIR=0主动向中控机发送报文。
SOF_MF:
10:
新的一帧无分片;11新的一帧后续有分片;00:
当前帧后续无分片;01:
当前帧后续有分片。
Packettype:
00:
单播;01:
广播;10:
组播;11保留。
Transparentindicator:
0:
接收处理报文;1:
透传报文。
2.4Length
数据长度Length,包括DATA域和CRC16域的长度。
Length
Lengthhighbyte
Lengthlowbyte
图9:
设备下行协议Length域格式
2.5DATA
DATA域为应用层的数据域,一般包括CHANNELID,DeviceOpcode,OpcodeARG,若是分片数据包,则将Length、DATA、CRC16打包后分成MTU长度的分片包放在DATA域中传送。
透传数据报文则在DATA区前再附加最终接收节点的MAC.如下图
GeneralDATAField
ChannelID
Deviceopcode1
Deviceopcode0
OpcodeARG(Length-7bytes)
图10.1:
设备下行协议DATA域格式
SubpackageDATAField(SOF_MF≠10)
Frame1
SOF
MAC
ControlField
Length
DATAlength.1
DATAlength.0
DATA(MTU-2)
CRC16
Frame2
SOF
MAC
ControlField
Length
DATA(MTU)
CRC16
Frame……
Frameend
SOF
MAC
ControlField
Length
DATA
(Lenngth-4)
DATACRC16.1
DATACRC16.0
CRC16
图10.2:
设备下行协议DATA域格式(分片包)
TransparentDATAField(Transparentindicator=1)
SOF
MAC
ControlField
Length
TransparentDATAField
CRC16
RemoteMAC
DATA
图10.3:
设备下行协议DATA域格式(透传包)
TransparentDATAField(Transparentindicator=1)(SOF_MF≠10)
SOF
MAC
ControlField
Length
TransparentDATAField
CRC16
DATAlength
RemoteMAC
DATA
DATACRC16
图10.4:
设备下行协议DATA域格式(透传包需分片)
10.1所述格式是一个标准的数据包DATA域格式,没有任何附加内容
对于10.2、10.3、10.4所述格式,每一帧的格式都遵循标准的下行报文格式,即SOF、MAC、ControlField、Length、CRC16,
分片包的DATA域的内容则是由GeneralDATAField(图10.1所示)前后附加DATAlength和DATACRC组成,其中
DATAlength:
GeneralDATAField+DATACRC的长度,长2字节。
DATACRC:
DATAlength和DATA的CRC16值,长2字节。
透传包的DATA域需要在DATA前附加最终接收端的MAC地址,格式同MAC,如图10.3所示。
若需要分片则将TransparentDATAField遵循分片包的格式发送出去。
格式如图10.4所示。
2.6CRC16
CRC16为SOF、MAC、ControlField、Length、DATA的校验值,如下图
CRC16
CRC16highbyte
CRC16lowbyte
图11:
设备下行协议CRC16域格式
CRC16算法统一使用以下算法:
uint16_tEH_CRC:
:
CreateCrc16(constuint8_t*msg,uint32_tlen){
uint16_tcrc=0xFFFF;
uint32_ti,j=0;
for(i=0;ifor(j=0;j<8;j++){
BOOLc15=((crc>>15&1)==1);
BOOLbit=((msg[i]>>(7-j)&1)==1);
crc<<=1;
if(c15^bit){
crc^=0x1021;
}
}
}
returncrc;
}
算出的CRC16值需进行大小端转换后按大端放入CRC16中,即高8位放在CRC16highbyte,低8位放在CRC16lowbyte中。
2.7MTU
对于不同设备指定不同的MTU值,暂定CAN设备MTU=128,Zigbee设备MTU=128。
3.通用DATA域定义
3.1ChannelID
一般节点的ChannelID为0,子模块的通道从1开始。
255保留。
channel_id是个8位的一个字节
0000 0000
高5位是逻辑通道号,低三位是硬件通道号
0000 0001 代表硬件通道1的 第0个逻辑号
0000 1001 硬件通道1的第一个逻辑号
0000 1010 硬件通道2的第一个逻辑号
00010010硬件通道2的第二个逻辑号
音频矩阵是从1开始的,所以是0000 1001
0001 0001
0001 1001
3.2OPCODE域定义
OPCODE域即DeviceOpcode,占2个字节。
DeviceOpcode定义了不同类别中各种操作的操作码。
公共功能部分对各类别通用,具体上送的信息在各自类别中详细定义。
对于多通道的相关功能应结合ChannelID来解析。
DEVICENAME
DEVICEOPCODE
Des.
公共功能
0x0000
查询状态
当通道号为0时,上送节点当前的运行状态。
其他情况下上送该通道的数据状态。
0x0001
读取节点链路状态
一般使用广播
0x0002
预留
预留
0x0003
设置节点通信参数
可由通道号区分
0x0004
强制重启
0x0005
IAP下传设备IMAGE信息
写入设备版本号、CRC等信息
0x0006
IAP数据报文
程序文件
0x0007
初始化完成报文
一般为上电初始化
0x0008
IAP初始化完成
IAP初始化完成
0x0009
分配节点ID
网关向节点发送包含ID和MAC的报文
0x000A
状态变更通知
仅D-C节点主动上送
0x000B
获取设备通道信息
获取该设备的通道数和通道类型
0x000C
识别设备
用于定位设备位置
网关
0x0101
下传节点地址表
整表(仅CAN)
0x0102
新增节点地址
可以一个或多个
0x0103
删除节点地址表
删除整张表
0x0104
查询MAC地址
查询网关中是否有该地址
0x0105
查询上送通信状态
可一个或多个节点
0x010B
上报新加入节点
当有新的节点加入网络时,网关推送消息到中控主机。
0x010C
获取设备列表
获取加入网络的所有设备地址信息
0x010D
删除设备
删除节点设备
0x010E
取消该节点加入上报
当网关收到该消息后,节点取消该节点的周期上报
0x010F
查询网关信息
网关信息
0x0110
新bin消息通知
中控机到网关的通知
0x0111
请求获取bin文件
网关到中控机的请求
0x0112
Bin文件推送
中控机到网关的文件发送
0x0113
启动升级
网关开始升级
0x0114
组网通道操作
Zigbee,433,315,868
0x0115
创建一个设备
比如:
警报器
0x1116
对码成功推送
通过对码的节点的推送
0x1117
启动加入报警器
给报警器发送报文
0x1118
配置网关功能
配置网关安防启动与否
0x1119
获取安防配置
网关安防配置
0x111A
升级结果通知
网关通知中控机升级结果
灯具控制类
0x0100
开关
包括单路、双路LED、白炽灯等
0x0101
调光
0x0102
调色
0x0103
下传绑定MAC
申请和下传调光LED灯节点所绑定面板的MAC
0x0104
申请绑定MAC
0x0105
下传MAC绑定表
仅灯端LED调光面板有效,MAC为所控灯节点的MAC地址。
0x0106
删除MAC绑定表
0x0107
申请MAC绑定表
0x0108
查询通信状态
插座控制类
0x0100
开
0x0101
关
0x0102
读取电量值
0x0103
读取电压电流值
用于装置调校
0x0104
设置采样系数
0x0105
设置电流变比
电机控制类
0x0100
正转(open)
0x0101
反转(close)
0x0102
停止
红外发射类
0x8100-0x8400
红外发射
注:
1
0x0101
红外接收
0x0102
红外发送
0x0103
红外上报
0x0104
红外保存
0x0105
红外清除
RS232串口控制类
0x8100-0x8400
串口数据收发
注:
1
0x0101
查询串口参数
继电器控制类
0x0100
开
0x0101
关
情景面板
0x0102
执行情景模式
0x0100
情景模式开始执行
0x0101
情景模式执行结束
Hailin空调面板
0x0100
设置空调面板
布尔量传感器
0x0100
查询状态或主动上报
开关类传感器
0x0100
查询状态或主动上报
门锁模块
0x0101
搜索门锁
0x0102
添加门锁
0x0103
删除门锁
0x0104
增加开锁人
0x0105
删除开锁人
0x0106
禁用开锁人
0x0107
启用开锁人
0x0108
同步门锁时间
0x0109
开门成功推送
0x010A
报警推送
报警器
0x0100
启动报警
0x0200
取消报警
安防遥控器
0x0100
布防
0x0200
撤防
0x0300
在家布防
0x0400
SOS
注1:
对于红外发送和RS232控制的设备,OPCODE含义扩展为家电OPCODE,范围0x8100-0x8400,应用层反馈时需返回家电的DeviceID、Opcode以及OpcodeARG,详见OPCODEARG定义。
3.2OPCODEARG域定义
OPCODEARG是和OPCODE相对应的参数,可变长度且可以为空。
定义中控机(C)向设备(D)方向的报文为C->D,设备向中控机方向为D->C。
1.公共类
公共功能除特殊说明外对每种类别的设备都有效。
查询设备状态(OPCODE=0x0000)
序号
C->D
说明
01
NULL
查询设备状态(OPCODE=0x0000)
序号
D->C
说明
01
State
02
Alarm
读取节点链路状态(OPCODE=0x0001)
序号
C->D
说明
01
NULL
无参数,一般广播时使用,也可对单个节点召唤
读取节点链路状态(OPCODE=0x0001)
序号
D->C
说明
01
Status
0=正常,1=节点ID未确认
设置节点通信参数(OPCODE=0x0003)(仅串口)
序号
C->D
说明
01
Baudrate
波特率:
0=9600;1=19200;2=38400;3=57600;4=115200
02
Parity
校验:
0=NONE;1=EVEN;2=ODD
03
Stopbit
停止位:
0=1BIT;1=2BIT
设置节点通信参数(OPCODE=0x0003)
序号
D->C
说明
01
Status
设置状态,1=成功,0=失败。
强制重启(OPCODE=0x0004)
序号
C->D
说明
01
Mode
1=重启后进入程序升级模式
2=重启后进入运行模式
18=重启后进入带CRC校验的运行模式
注:
Mode:
低4bit为启动模式。
高4bit为附加选项。
其中low4bit=1进入程序升级模式
low4bit=2进入运行模式
high4bit=1用户程序启动时需要校验CRC
强制重启(OPCODE=0x0004)(预留)
序号
D->C
说明
01
Mode
原值返回
IAP下传设备IMAGE信息(OPCODE=0x0005)
序号
C->D
说明
01
Version_h
应用程序版本号VX.XX
02
Version_l
03
APPCRC_h
应用程序的CRC16
04
APPCRC_l
05
APPLen_h
应用程序大小,最大64K
06
APPLen_l
IAP下传设备IMAGE信息(OPCODE=0x0005)
序号
D->C
说明
01
Status
写入状态,1=成功,0=失败。
IAP数据报文(OPCODE=0x0006)
序号
C->D
说明
01
AppDATA
程序文件和传输过程中的交换信息
02
AppDATA
……
……
IAP数据报文(OPCODE=0x0006)
序号
D->C
说明
01
AppDATA
传输过程中的交换信息
02
AppDATA
……
……
注:
IAP启动过程为,中控机向节点发送IAP启动命令,节点收到后将IAP启动允许标志写入Flash中指定位置,成功后返回应用层确认给中控机,中控机收到确认命令后下发强制重启命令强制节点重启,节点每次重启后首先是运行BOOT程序,BOOT程序先读取IAP启动标志,有效则启动IAP程序进入升级过程,否则再检测应用程序是否有效,有效就运行应用程序,无效则转入IAP程序等待更新程序。
IAP进程运行2分钟后仍无任何升级程序连接则清除IAP允许标志,转入应用程序检测阶段,本次升级取消。
初始化完成报文(OPCODE=0x0007)(节点主动上送,DIR=0)
序号
D->C
说明
01
Version_h
程序版本号VX.XX
02
Version_l
03
APPCRC_h
应用程序的CRC16值。
04
APPCRC_l
注:
该初始化完成报文应在对码结束后发送。
IAP初始化完成(OPCODE=0x0008)(DIR=0)
序号
D->C
说明
01
NULL
无参数
分配节点ID(OPCODE=0x0009)
序号
C->D
说明
01
ID_h
节点ID
02
ID_l
03~10
MAC7-0
MAC地址
说明:
对于CAN,此时发送报文CAN_ID中的节点ID使用网关的ID(=1),使用广播发送方式。
获取设备通道信息(OPCODE=0x000B)
序号
C->D
说明
01
NULL
无参数
获取设备通道信息(OPCODE=0x000B)
序号
D->C
说明
01
通道数
该设备中通道数目(不含0通道)
02
Channel
通道号
03
Operate_type_h
Operate_type
04
Operate_type_l
05
Channel
通道号
06
Operate_type_h
Operate_type
07
Operate_