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[2,3]协议栈由物理层、介质访问控制层、网络层、安全层和高层应用规范组成。
图1 ZigBee协议栈 |
2.3 网络层关键技术
ZigBee协议栈的核心部分在网络层。网络层主要实现节点加入或离开网络、接收或抛弃其他节点、路由查找及传送数据等功能,支持Cluster-Tree,AODVjr,Cluster-Tree+AODVjr等多种路由算法,支持星形(Star)、树形(Cluster-Tree)、网格(Mesh)等多种拓扑结构[4]。
Cluster-Tree(簇-树)是一种由网络协调器(Coordinator)展开生成树状网络的拓扑结构,适合于节点静止或者移动较少的场合,属于静态路由,不需要存储路由表。AODVjr算法是针对AODV[5,6](Ad hoc按需距离矢量路由协议)算法的改进,考虑到节能、应用方便性等因素,简化了AODV的一些特点,但是仍然保持AODV的原始功能。表1是两种算法的优缺点比较。
表1 Cluster-Tree和AODVjr的优缺点比较 |
图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 网络层数据传输示意图 |
作者已在符合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模块框图 |
ZigBee网络最初是由协调器发动并且建立。协调器首先进行信道扫描(Scan),采用一个其他网络没有使用的空闲信道,同时规定Cluster-Tree的拓扑参数,如最大的儿子数(Cm)、最大层数(Lm)、路由算法、路由表生存期等。
图4 节点加入及脱离网络握手示意图 |
3.3路由设计与实现
在传输数据时,不同类型的的节点有不同的处理方法,协调器的处理机制与RN+相同。网络层路由设计分为RN+,RN-和RFD三个模块。图5至图7分别是三种类型节点接收到上层或者其他节点发送的数据包时,网络层处理程序的流程图。
图6 RN-网络层处理程序的流程图 |
图5 RN+网络层处理程序的流程图 |
因为实际点对点通信是通过MAC地址进行数据传输的,所以每个节点在接收到信息包时,都要维护邻居表,邻居表主要起地址解析(Address Resolution)的作用:将邻居节点的网络地址转换成MAC地址。另外,类型是RN+的节点在接收到信息包或者启动AODVjr查找路由时,还必须维护路由表。邻居表和路由表的记录都有生存期,超过生存期的记录将被删除。
图7 RFD网络层处理程序的流程图 |
无线通信有其特殊性质,每个节点发送的数据包既是信号源,同时又可能是干扰源,因此无线网络的测试是一大难题。为了能在室内方便测试网络性能,引入黑名单机制,强制让一些节点对黑名单节点发送的数据包“视而不见”,以测试十几点甚至几十点的特殊网络。在实际应用时,去掉黑名单并不影响网络的工作性能。测试时,还可以采用符合IEEE 802.15.4的包监听器(Sniffer),记录测试过程中空气中所传输的无线数据。每个模块还可以通过I/O输出自己的收发状态等信息。通过多种手段对测试过程进行分析,才能提高开发测试效率。
表2是某个