引言
有人将ZigBee翻译成「紫蜂」,为无线个人局域网络(Wireless Personal Area Networks, WPAN)的标准之一,已于 2005年6月27日 公布。除了逻辑链路控制(Logic Link Control, LLC)层、媒介存取控制层(MAC),与物理层使用2003年10月公布的IEEE 802.15.4标准外,ZigBee标准协议制定了应用层与网络层,及MAC、应用层与网络层的安全加密服务标准。
以传感器和自组织网络为代表的无线应用并不需要较高的传输带宽,但却需要较低的传输延时和极低的功率消耗,使用户能拥有较长的电池寿命和较多的器件阵列。目前迫切需要一种符合传感器和低端的、面向控制的、应用简单的专用标准,而Zigbee的出现正好解决了这一问题。Zigbee有着高通信效率、低复杂度、低功耗、低速率、低成本、高安全性以及全数字化等诸多优点。这些优点使得Zigbee和无线传感器网络完美地结合在一起。目前,基于Zigbee技术的无线传感器网络的研究和开发已得到越来越多的关注。
1 Zigbee协议术语
配置文件(profile):Zigbee协议的配置文件是对逻辑组件及其相关接口的描述,是面向某个应用类别的公约、准则.通常没有程序代码与配置文件相关联.
属性(attribute):设备之间通信的每一种数据像开关的状态或温度计值等皆可称为属性.每个属性可得到唯一的ID值.
簇(cluster):多个属性的汇集形成了簇,每个簇也拥有一个唯一的ID。虽然个体之间传输的通常是属性信息,但所谓的逻辑组件的接口指的却是簇一级的操作,而非属性一级.
终端(endpoint):每个支持一个或多个簇的代码功能块称为终端。不同的设备通过它们的终端及所支持的簇来进行通信。
配置文件定义了属性ID与簇ID,使之看起来就像设备的某种特性.以家庭智能控制系统为例,灯配置文件设定了远程控制设备的簇OnOffDRC含有一种属性OnOff,且该属性为无符号8位值,值0XFF意味着"开",0X00为关,0XF0则为无效。通常,配置文件也为设备定义了,哪些簇是强制托管的,哪些簇是可选择的。另外,配置文件还定义了一些可选择的Zigbee协议托管服务.
基于簇及配置所定义的服务,用户可使用配置文件中定义的属性编写所需的函数.改写自己的程序代码.因此,配置文件使得ZigBee 设备可以互操作。任何遵循某一标准配置文件的节点都可以与其他实现相同配置文件的节点进行互操作。也就是说,在使用同一标准配置文件进行设计的基础上,即使生产开关的厂家与生产控制器的厂家不同,他们生产的产品仍可实现协同操作.
以家庭智能系统中的灯光控制为例,灯配置文件定义了6个设备,协议栈通过带有以下信息的报头文件对此配置提供支持:配置(profile)ID,设备ID及版本,簇ID,属性ID,属性数据类型.
下图(1)显示了不同术语之间的关系,对于家庭智能控制系统的灯光配置,图中给出了两种设备.每种设备各有一个终端.负荷切换控制器的终端中仅有一个输入簇,而远程转换控制终端则有两个簇,且分别为一个输入一个输出.数据的传输基于簇而进行.
2 Zigbee协议栈结构
如图(2)所示,ZigBee堆栈的不同层与802.15.4 MAC通过服务接入点(SAP)进行通信。SAP是某一特定层提供的服务与上层之间的接口。 ZigBee堆栈的大多数层有两个接口:数据实体接口和管理实体接口。数据实体接口的目标是向上层提供所需的常规数据服务。管理实体接口的目标是向上层提供访问内部层参数、配置和管理数据的服务。图中的APSDE-SAP,NLDE-SAP即为数据实体接口,而APSME-SAP,NLME-SAP即为管理实体接口。
3 Zigbee协议的消息格式及帧格式
3.1 消息格式
一个Zigbee消息由127个字节组成,它主要包括以下几个部分:
MAC报头:该报头包含当前被传输消息的源地址及目的地址.若消息被路由,则该地址有可能不是实际地址,产生及使用该报头对于应用代码是透明的.
NWK报头:该报头包含了消息的实际源地址及最终的目的地址,该报头的产生及使用对于应用代码是透明的.
APS报头:该报头包含了配置ID,簇ID及当前消息的目的终端.同样,报头的产生及使用是透明的.
有效载荷:该域包含了待应用层处理的Zigbee协议帧.
3.2 Zigbee协议帧格式
Zigbee协议定义了两种帧格式:KVP关键值对及MSG消息帧.
KVP:是ZigBee 规范定义的特殊数据传输机制,通过一种规定来标准化数据传输格式和内容,主要用于传输较简单的变量值格式。
MSG:是ZigBee 规范定义的特殊数据传输机制,其在数据传输格式和内容上并不作更多规定,主要用于专用的数据流或文件数据等数据量较大的传输机制。
KVP帧是专用的比较规范的信息格式,采用键值对的形式,按一种规定的格式进行数据传输.通常用于传输一个简单的属性变量值;而MSG帧还没有一个具体格式上的规定,通常用于多信息,复杂信息的传输。KVP、MSG是通讯中的两种数据格式。如果将帧比作一封邮件,那么信封、邮票、地址人名等信息都是帧头、帧尾,里面的信件内容就是特定的数据格式KVP或MSG。根据具体应用的配置文件(Profile) ,KVP一般用于简单属性数据,MSG用于较复杂的,数据量较大信息。
4 寻址
4.1 Zigbee协议中的两类地址
Zigbee网络协议的每一个节点皆有两个地址:64位的IEEE MAC地址及16位网络地址.
每一个使用Zigbee协议通信的设备都有一个全球唯一的64位MAC地址,该地址由24位OUI与40位厂家分配地址组成,OUI可通过购买由IEEE分配得到,由于所有的OUI皆由IEEE指定,因此64位IEEE MAC地址具有全球唯一性.
当设备执行加入网络操作时,他们会使用自己的扩展地址进行通信。成功加入Zigbee网络后,网络会为设备分配一个16位的网络地址。由此,设备便可使用该地址与网络中的其它设备进行通信.
4.2 寻址方式
单播:当单播一个消息时,数据包的MAC报头中应含有目的节点的地址,只有知道了接收设备的地址,消息方可以单播方式进行发送。
广播:要想通过广播来发送消息,应将信息包MAC报头中的目的地址域置为0XFF。此时,所有射频收发使能的终端皆可接收到该信息。
该寻址方式可用于加入一个网络、查找路由及执行ZigBee协议的其它查找功能。ZigBee协议对广播信息包实现一种被动应答模式。即当一个设备产生或转发一个广播信息包时,它将侦听所有邻居的转发情况。如果所有的邻居都没有在应答时限内复制数据包,设备将重复转发信息包,直到它侦听到该信息包已被所有邻居转发,或广播传输时间被耗尽为止。
5 数据传输机制
对于非信标网络,当一个设备想要发送一个数据帧时,它会等待信道空闲,直到检测到信道为空后设备会传输该帧。
若目的设备为FFD全功能设备,它的接收器应始终保持开启状态,以便其它的设备可随时向它传输数据。但是若设备为RFD精简功能设备,无操作时设备将关闭收发器以节约能量。此时RFD设备无法接收到任何数据。因此,其它设备只能通过RFD的FFD双亲向RFD设备请求或发送数据。直到RFD上电RX收发器后,它会向双亲请求自己的信息数据,若双亲缓冲区中存有发给孩子的信息,则将该信息发给孩子设备。该操作模式可降低RFD的功耗,但相应的双亲FFD节点应拥有足够的RAM空间,以便为孩子设备缓冲信息。若孩子设备没有在规定的时间内请求信息,信息将被丢失。
6 Zigbee无线网络的形成
首先,由Zigbee协调器建立一个新的Zigbee网络。一开始,Zigbee协调器会在允许的通道内搜索其它的Zigbee协调器。并基于每个允许通道中所检测到的通道能量及网络号,选择唯一的16位PAN ID,建立自己的网络。一旦一个新网络被建立,Zigbee路由器与终端设备就可以加入到网络中了。
网络形成后,可能会出现网络重叠及PAN ID冲突的现象。协调器可以初始化PAN ID冲突解决程序,改变一个协调器的PAN ID 与信道,同时相应修改其所有的孩子设备。通常,Zigbee设备会将网络中其它节点信息存储在一个非易失性的存储空间-邻居表中。加电后,若孩子设备曾加入过网络,则该设备会执行孤儿通知程序来锁定先前加入的网络。接收到孤儿通知的设备检查它的邻居表,并确定设备是否是它的孩子,若是,设备会通知孩子设备它在网络中的位置,否则孩子设备将作为一个新设备来加入网络。而后,孩子设备将产生一个潜在双亲表,并尽量以合适的深度加入到现存的网络中。
通常,设备检测通道能量所花费的时间与每个通道可利用的网络可通过ScanDuration扫描持续参数来确定,一般设备要花费1分钟的时间来执行一个扫描请求,对于Zigbee路由器与终端设备来说,只需要执行一次扫描即可确定加入的网络。而协调器则需要扫描两次,一次采样通道能量,另一次则用于确定存在的网络。