1. 引言

    随着科学技术的发展,无线技术逐渐取代有线技术,仅支持静态固定拓扑的无线网络也逐渐被支持动态变化拓扑的无线网络取代。在短距离的无线控制、监测、数据传输领域,通用的技术有802.11、蓝牙、HomeRF等,它们各有自己的优势,但仍然存在功耗大、组网能力差等劣势。为了弥补上述协议的不足,ZigBee联盟于2004年12月中旬推出基于IEEE 802.15.4的ZigBee协议栈。 ZigBee短距离低速无线个域网(Low Rate-Wireless Personal Area Network,LR-WPAN)不仅具有低成本、低功耗、低速率、低复杂度的特点;而且具有可靠性高,组网简单、灵活的优势。本文将介绍ZigBee协议栈并提出网络层的具体实现方案。

    2. ZigBee协议栈体系结构

    本节将在介绍IEEE 802.15.4标准和ZigBee协议的基础上,重点分析ZigBee协议栈的网络层关键技术及其工作机制。

    2.1 IEEE 802.15.4标准

    IEEE 802.15.4标准[1]于2003年5月制定完成,它满足国际标准化组织 (ISO)开放系统互连(OSI)参考模型,主要包括物理层、数据链路层。IEEE 802.15.4协议与其他无线网络相比,突出的优点是:组网能力强,适应面广,可靠性高,节能性好。

    2.2 ZigBee协议栈

    完整的Zigbee协议栈由物理层、介质访问控制层、网络层、安全层和高层应用规范组成。

图1 ZigBee协议栈

    如图1所示,ZigBee协议栈的网络层、安全层和应用程序接口等由ZigBee联盟制定。其中安全层(Security)主要实现密钥管理、存取等功能。应用程序接口负责向用户提供简单的应用软件接口(API),包括应用子层支持(Application Sub-layger Support,APS)、ZigBee设备对象(ZigBee Device Object,ZDO)等,实现应用层对设备的管理。

    2.3 网络层关键技术

    ZigBee协议栈的核心部分在网络层。网络层主要实现节点加入或离开网络、接收或抛弃其他节点、路由查找及传送数据等功能,支持Cluster-Tree,AODVjr,Cluster-Tree+AODVjr等多种路由算法,支持星形(Star)、树形(Cluster-Tree)、网格(Mesh)等多种拓扑结构。

    Cluster-Tree(簇-树)是一种由网络协调器(Coordinator)展开生成树状网络的拓扑结构,适合于节点静止或者移动较少的场合,属于静态路由,不需要存储路由表。AODVjr算法是针对AODV[5,6](Ad hoc按需距离矢量路由协议)算法的改进,考虑到节能、应用方便性等因素,简化了AODV的一些特点,但是仍然保持AODV的原始功能。表1是两种算法的优缺点比较。

    Cluster-Tree+AODVjr路由算法汇聚了Cluster-Tree和AODVjr的优点。网络中的每个节点被分成四种类型:Coordinator、RN+、RN-、RFD(RN:Routing Node,路由节点;RFD:Reduced Function Device)。其中Coordinator的路由算法跟RN+相同,Coordinator、RN+和RN-都是全功能节点(FFD: Full Function Device),能给其他节点充当路由节点;RFD只能充当Cluster-Tree的叶子(Leaf Node)。如果待发送数据的目标节点是自己的邻居,直接通信即可;反之,如果不是自己的邻居时,三种类型的节点处理数据包各不相同:RN+可以启动AODVjr,主动查找到目标节点的最佳路由,且它可以扮演路由代理(Routing Agent)的角色,帮助其他节点查找路由;RN-只能使用Cluster-Tree算法,它可以通过计算,判断该交给数据包请自己的父节点还是某个子节点转发;而RFD只能把数据交给父节点,请其转发。

    图2为Cluster-Tree+AODVjr算法时网络层数据传输示意图。节点E发送数据包给节点D,数字代表各种包发送的时间先后次序。从图中可以看出,节点E的类型是RFD,它只能将数据DATA传送给其父节点C。C的类型是RN+,所以它先把数据放入缓存后,再通过组播AODVjr路由请求包RREQ查找到节点D的路由,节点D再通过单播沿最短的路径D-B-C给节点C回复AODVjr路由应答包RREP。节点C找到路由后,把缓存数据沿C-B-D发送给节点D,节点D再沿D-B-C-E发送确认包ACK给节点E,节点E收到确认包后,整个通信过程结束。

图2 网络层数据传输示意图

    3.网络层实现

    作者已在符合IEEE 802.15.4的硬件平台上实现ZigBee协议栈,成功研发出ZigBee开发包(ZigBee Development Kit,ZDK),验证了其可行性。同时,根据一些特定的应用将算法改进,取得良好的运用效果。本节将重点介绍ZigBee网络层的实现。

    3.1无线模块的设计

    根据不同类型节点功能不同的特点,作者在不同的硬件平台设计模块。设计制作的ZigBee系列模块完全满足IEEE 802.15.4和ZigBee协议的规范要求,符合ISM/SRD规范,通过美国FCC认证。模块集无线收发器、微处理器、存储器和用户API等软硬件于一体,能实现1.0版ZigBee协议栈的功能。Coordinator可以连接使用ARM处理器开发的嵌入式系统,功能较多的路由节点(RN+,RN-)由高档单片机充当,功能较少的叶子节点(RFD)使用普通的单片机。模块还可以根据实际需要,工作在不同的睡眠模式和节能方式。

    图3是模块的硬件设计框图,射频芯片采用Chipcon公司生产的符合IEEE 802.15.4标准的模块CC2420;控制射频芯片的微处理器,可以根据需要选择Atmel公司的AVR系列单片机或者Silicon Labs公司的8051内核单片机。单片机与射频芯片之间通过SPI进行通信,连接速率是6Mbps。单片机与外部设备之间通过串口进行通信,连接速率是38.4kbps。单片机自带若干ADC或者温度传感器,可以实现简单的模数转换或者温度监控。为了方便代码移植到不同的硬件平台,模块固件采用标准C语言编写代码实现。


图3 ZigBee模块框图
 

    3.2网络的建立

    ZigBee网络最初是由协调器发动并且建立。协调器首先进行信道扫描(Scan),采用一个其他网络没有使用的空闲信道,同时规定Cluster-Tree的拓扑参数,如最大的儿子数(Cm)、最大层数(Lm)、路由算法、路由表生存期等。


图4 节点加入及脱离网络握手示意图

    图4是设计的节点加入及脱离网络握手示意图。协调器启动后,其他普通节点加入网络时,只要将自己的信道设置成与现有的协调器使用的信道相同,并提供正确的认证信息,即可请求加入(Join)网络。一个节点加入网络后,可以从其父节点得到自己的短MAC地址,ZigBee网络地址以及协调器规定的拓扑参数。同理,一个节点要离开(Leave)网络,只须向其父节点提出请求即可。一个节点若成功地接收一个儿子,或者其儿子成功脱离网络,都必须向协调器汇报。因此,协调器可以即时掌握网络的所有节点信息,维护网络信息库(PIB,PAN Information Base)。

    3.3路由设计与实现

    在传输数据时,不同类型的的节点有不同的处理方法,协调器的处理机制与RN+相同。网络层路由设计分为RN+,RN-和RFD三个模块。图5至图7分别是三种类型节点接收到上层或者其他节点发送的数据包时,网络层处理程序的流程图。

图5 RN-网络层处理程序的流程图

图6 RN+网络层处理程序的流程图
 

    因为实际点对点通信是通过MAC地址进行数据传输的,所以每个节点在接收到信息包时,都要维护邻居表,邻居表主要起地址解析(Address Resolution)的作用:将邻居节点的网络地址转换成MAC地址。另外,类型是RN+的节点在接收到信息包或者启动AODVjr查找路由时,还必须维护路由表。邻居表和路由表的记录都有生存期,超过生存期的记录将被删除。


图7 RFD网络层处理程序的流程图
 

    3.4测试方法

    无线通信有其特殊性质,每个节点发送的数据包既是信号源,同时又可能是干扰源,因此无线网络的测试是一大难题。为了能在室内方便测试网络性能,引入黑名单机制,强制让一些节点对黑名单节点发送的数据包“视而不见”,以测试十几点甚至几十点的特殊网络。在实际应用时,去掉黑名单并不影响网络的工作性能。测试时,还可以采用符合IEEE 802.15.4的包监听器(Sniffer),记录测试过程中空气中所传输的无线数据。每个模块还可以通过I/O输出自己的收发状态等信息。通过多种手段对测试过程进行分析,才能提高开发测试效率。

    表2是某个节点的黑名单列表,该节点接收到的数据包发送方MAC地址s如果符合下列n个公式中的一个,则该节点认为没有接收到数据包,对该数据包不作任何处理。


表2 黑名单列表
 

    4典型应用

    ZDK开发包,除了实现IEEE 802.15.4的MAC层及ZigBee的网络层功能外,目前还完成一些应用层功能,同时提供简单易用的API接口,以便使用者根据实际需要进行二次开发。该技术已经成功地应用于组建家庭无线网络、无传感器网络、无线门控系统和无线停车场计费系统等领域中。

    4.1网络功能

    图8是一个典型的ZigBee网络,该网络可取代有线电缆构成的拓扑。网络中端对端设备可以采用透明模式(Transparent Mode)交互信息,完成无线RS232和RS485的数据传输功能。只要接上模块,多台设备的串口就能直接交互数据。这种应用尤其适合不易铺设有线电缆、通信时须要考虑避雷等因素的场合。


图8 典型的ZigBee网络示意图
 

    为了充分发挥其他网络的作用,实现网络与外网(WLAN,Ethernet,PSTN,GPS等)的连接,以便远程控制ZigBee网络的工作,协调器还必须充当网关(Gateway),实现内网(WPAN)和外网的连接。由ARM处理器开发的嵌入式系统充当协调器及无线网关,它有RJ45,RJ11,RS232接口,可以通过以太网(Ethernet)、有线电话网(PSTN)、通用无线分组业务网(GPRS)或者全球地位系统(GPS)连接ZigBee网络,如图9所示。

图9 ZigBee网络与其他网络连接图

    4.2实践效果

    ZigBee模块载波频率为2.4GHz,通信速率为250kbps,发射功率在0dbm至-24dbm,接收灵敏度为-94dm。点对点通信距离,室内为60米左右,室外为100米左右,误包率小于0.5%。在不超过10跳的范围内通信,传输延迟不超过2秒,误包率小于1%;每包数据能传输的最大有效纯负荷为110字节。
目前,已经测试过50点的网络,实现跨多个房间、楼宇的数据传输。在节能模式下,模块能在电池供电的条件中长时间(约3个月)工作。本网络除了包含通用ZigBee网络的特点外,还能跟其他有线或者无线网络互通互融,达到优势互补,在实际应用中取得良好的效果。实践证明,ZigBee网络有其自己的鲜明特点,在众多的无线网络中有其存在和发展的空间。

    5. 总结和展望

    本文主要讨论了该网络的理论基础,同时给出了网络层实现办法及解决方案。这种方案已被美国赫立讯科技公司用于设计IP-Link系列模块、ZigBee开发套件以及海尔家庭无线网络,取得较好的市场价值。

    基于IEEE 802.15.4的ZigBee网络是扩充现有网络应用的一种良好手段,具有广阔的应用场合和发展前景。ZigBee协议栈还在不断升级,如何根据不同的需求设计高性能的ZigBee网络,如何将ZigBee网络与其他网络进行可靠连接,达到功能互补,是一项很有意义的课题。