Silicon Lab Ember zigbee学习杂谈---zcl frame解析

这篇文章主要讲一下zcl命令的帧结构:

所有zcl桢都包含包头和有效负载两部分,如下图:


包头包括控制字节(frame control)、制造商ID(manufacturer code)、序列号(Transaction sequence number)、命令ID(command identifier)。

frame control桢控制字节决定了该桢的类型、是否为制造商特有、方向和是否 使能默认回复,具体结构如下图:


frame type(2bits):00 表示命令为全局命令,与特定属性无关,比如读属性命令、写属性命令等;01表示属性相关指令即某一属性特有的命令,如door lock属性的unlock与lock命令;10-11:保留

manufacturer specific(1bit):1表示该命令为制造商自定义zcl命令;0表示标准zcl命令。zigbee标准规定了一些标准的zcl命令,还允许制造商使用自定义的命令,标准zcl命令对所有符合zigbee标准的产品都是通用的,但是制造商自定义命令则只对该制造商生产的产品有效,因此当为制造商自定义命令时,需要在包头包含制造商ID来确定是哪家制造商,zigbee联盟对每个成员都分配了唯一的制造商ID。

direction(1bit):1:server->client;0:client->server。通常控制命令是client->server,而回复是server->client;sever是命令执行端而client是命令发送端。

disable default response(1bit):1:禁止默认回复;0:使能默认回复。当使能默认回复时,即使用户程序未对该指令做处理,系统仍然会回复默认回复。

manufacturer code:当该指令为制造商自定义命令时即当frame control中manufacturer specific为1时,该内容需要包含到包头里,当为标准zcl命令时这部分就不存在了。

Transanction sequence number:序列号,每发一条自增1,,发送命令与回复命令具有相同的sequence number。

commd identifier:用于识别不同命令,如读属性命令ID为0x00,写属性命令ID为0x02。

对于zcl frame有效负载部分因命令不同包含的数据不同,以读属性命令为例,读属性包结构如下:


他的有效负载就包含了要读的所有属性ID,Atrribute identifier1.....Attribute identifiern。

如果想要了解各命令的详细帧结构请参阅文档《075366r02ZB_AFG-ZigBee_Cluster_Library_Public_download_version》

文档下载:http://www.silabs.com/support/pages/document-library.aspx?p=Wireless%20-%20ZigBee%20and%20Thread&f=EM3xxx&pn=EM3587

猜你喜欢

转载自blog.csdn.net/wangchongttg/article/details/50938248