《电子技术应用》

Zigbee技术规范与协议栈分析

作者:李战明,刘 宝,骆东松
2009/5/25 14:29:50

    摘 要: 以Zigbee 2006协议栈为对象,研究其技术规范,使用串口调试助手及数据分析仪解读其协议栈程序,详细解释OSAL(操作系统)的工作流程及整个协议栈的实现过程,以达到提高Zigbee源代码的可读性和可操作性的目的。
    关键词:技术规范;Zigbee协议栈;串口调试助手;数据分析议;OSAL

 

    伴随无线传感器网络的迅猛发展,Zigbee技术作为最近发展起来的一种短距离无线通信技术,以其低功耗、自组织、安全可靠、支持大量节点等优势,被业界认为是最有可能应用在工控场合的无线方式。到目前为止,节点已经应用于工业监控、智能家庭、安全医疗等多个领域,具有很大的发展空间。
    Zigbee协议栈(Z-STACK)作为Zigbee技术的核心,是开发802.15.4/Zigbee必须掌握的关键技术。协议栈发展至今已有四种版本(见表1),尽管实现功能越发完善,但是并未移植标准的操作系统统一任务调度,嵌套相当复杂,而显得源代码的可读性和可操作性较差,开发者在理解和实现协议的过程中仍会遇到很多困难。本文通过对最典型的、起到承上启下作用的Zigbee-2006协议栈的解读,对协议程序的运行过程提供一种准确的解释分析,降低开发者的阅读难度和工作量,为协议栈自身的发展、Zigbee设备的开发及应用的推广提供强有力的技术支持。

 


1 协议栈体系结构及规范
    Zigbee协议栈体系结构如图1所示[1],协议栈的层与层之间通过服务接入点(SAP)进行通信。SAP是某一特定层提供的服务与上层之间的接口。大多数层有两个接口:数据实体接口和管理实体接口。数据实体接口的目标是向上层提供所需的常规数据服务;管理实体接口的目标是向上层提供访问内部层参数、配置和管理数据的服务[2]

 


1.1 物理层服务规范
    物理层通过射频固件和硬件提供MAC层与物理无线信道之间的接口。从概念上说,物理层还应包括物理层管理实体(PLME),以提供调用物理层管理功能的管理服务接口;同时PLME还负责维护物理层PAN信息库(PHY PIB)。物理层通过物理层数据服务接入点(PD-SAP)提供物理层数据服务;通过物理层管理实体服务接入点(PLME-SAP)提供物理层管理服务。
1.2 MAC层服务规范
    MAC层提供特定服务会聚子层(SSCS)和物理层之间的接口。从概念上说,MAC层还应包括MAC层管理实体(MLME),以提供调用MAC层管理功能的管理服务接口;同时MLME还负责维护MAC PAN信息库(MAC PIB)。MAC层通过MAC公共部分子层(MCPS)的数据SAP(MCPS-SAP)提供MAC数据服务;通过MLME-SAP提供MAC管理服务。这两种服务通过物理层PD-SAP和PLME-SAP提供了SSCS和PHY之间的接口。除了这些外部接口外,MCPS和MLME之间还隐含了一个内部接口,用于MLME调用MAC数据服务。
1.3 应用层规范
    Zigbee应用层包括APS子层、ZDO(包含ZDO管理平台)和厂商定义的应用对象。应用支持子层(APS)提供了网络层(NWK)和应用层(APL)之间的接口,功能是通过ZDO和厂商定义的应用对象都可以使用的一组服务来实现。数据和管理实体分别由APSDE-SAP和APSME-SAP提供。APSDE提供的数据传输服务在同一网络的两个或多个设备之间传输应用层PDU;APSME提供设备发现和绑定服务,并维护管理对象数据库——APS信息库(AIB)。
1.4 网络层规范
    网络层应提供保证IEEE 802.15.4 MAC层正确工作的能力并为应用层提供合适的服务接口。数据和管理实体分别由NLDE-SAP和NLME-SAP提供。具体来说,NLDE提供的服务:一是在应用支持子层PDU基础上添加适当的协议头产生网络协议数据单元(NPDU);二是根据路由拓扑,把NPDU发送到通信链路的目的地址设备或通信链路的下一跳。而NLME提供的服务包括配置新设备、创建新网络、设备请求加入/离开网络和Zigbee协调器或路由器请求设备离开网络、寻址、近邻发现、路由发现、接收控制等。网络层的数据和管理服务由MCPS-SAP和MLME-SAP提供了应用层和MAC子层之间的接口。除了这些外部接口,在NWK内部NLME和NLDE之间还有一个同隐含接口,允许NLME使用NWK数据服务。
2 协议栈程序分析
2.1 运行环境

    软件环境:IAR 7.20、串口调试工具、数据分析仪以及各硬件驱动软件等。
    硬件环境:PC(.NET 1.1 架构, Windows 98以上,1个串口,1个USB接口)、CC2430 ZigBee开发板(至少包括一个网络协调器和一个终端设备,验证阶段可省略路由设备)等。
2.2 程序流程
    将各开发板与PC正确连接,运行各软件,当程序烧至开发板后,启动即调用主函数ZSEG int main( void )。主函数的主要工作流程如图2所示。需要注意的是,Zigbee协议栈的精华在于操作系统OSAL的任务调度,因此,在进入主循环处理函数之前的准备工作中,操作系统的初始化尤为重要。osalTaskInit()、osalAddTasks()、osalInitTasks()三个函数的调用构成了协议栈的七大任务列表,其具体实现结果如图3。

 

 


    进入主循环处理函数以后,始终周期扫描此任务列表,这7个任务由taskID和taskPriority来决定扫描和处理顺序。在循环扫描的过程中,数据的传输使用直接存取(DMA)控制器进行操作,可以减轻8051CPU核传送数据时的负担,实现CC2430在高效利用电源条件下得高性能,其操作流程如图4所示。

 


    作为协调器,如果程序使用了串口调试助手,则DMA将上位机的数据按照一个字节波特率加一个字节数据的形式组装到cfg->rxBuf中供其他函数调用,并且通过回调函数SPIMgr_ProcessZToolData ( uint8 port, uint8 event )将任务的ID和强制事件发送到任务列表中,供主循环处理函数扫描;作为终端节点和路由设备,无法使用串口调试助手,则通过回调函数SPIMgr_ProcessZAppData ( uint8 port, uint8 event ) 将任务的ID和强制事件发送到任务列表中。当扫描至参数events=1,则进入相应层的处理程序进行任务ID和events的约定比对,完成相应的功能,具体流程如图5所示。

 


2.3 组网
    利用数据分析仪[3]记录监控协调器与终端设备的组网过程如图6所示。

 


    首先,Zigbee协调器上电以后,不断周期发送空的数据包,在允许的通道内搜索其他的Zigbee协调器,并基于每个允许通道中所检测到的通道能量及网络号,选择惟一的16位PAN ID,建立自己的网络[4]。一旦一个新网络被建立,Zigbee路由器与终端设备就可以加入到网络中了。而终端设备上电以后,重复发送信标请求,要求加入到最近的网络中。当协调器发现终端设备发出的信标请求,则响应一个超帧结构,用于设备间的同步,一旦同步成功,则实现图5中的关联过程,由终端设备向协调器发送关联请求,协调器同意则回应终端设备并自动分配16位的短地址,至此,两者组网成功。
    网络形成后,可能会出现网络重叠及PAN ID冲突的现象。协调器可以初始化PAN ID冲突解决程序,改变一个协调器的PAN ID与信道,同时相应修改其所有的子设备。通常,Zigbee设备会将网络中其他节点信息存储在一个非易失性的存储空间——邻居表中。加电后,若子设备曾加入过网络,则该设备会执行孤儿通知程序来锁定先前加入的网络。接收到孤儿通知的设备检查它的邻居表,并确定设备是否是它的子,若是,设备会通知子设备它在网络中的位置,否则子设备将作为一个新设备来加入网络。而后,该子设备将产生一个潜在双亲表,并尽量以合适的深度加入到现存的网络中[5]
    通常,设备检测通道能量所花费的时间与每个通道可利用的网络可通过ScanDuration 扫描持续参数来确定,一般设备要花费1 min的时间来执行一个扫描请求,对于Zigbee路由器与终端设备来说,只需要执行一次扫描即可确定加入的网络。而协调器则需要扫描两次,一次采样通道能量,另一次则用于确定存在的网络。
    限于篇幅,本文没有列出各种帧结构以及消息的处理过程,对于Zigbee协议的具体应用即是对数据包的封装与分解,这些分析、学习对于编写上位机软件,开发通过Zigbee协议与上位机进行交互的轻量级的现场设备,都是有意义的。已经据此以C++开发出用户自定义的上位机程序,实现对传感器数据的监视和现场采集、数据库入库、趋势图等功能。
参考文献
[1] ZigBee Alliance. ZigBee Document 053474r13 [S]. December 1, 2006
[2] Zheng JianLiang, Lee Myung. A Comprehensive Performance Study of IEEE 802.15.4[M]. IEEE Press Book,2004.
[3] Chipcon, Packet Sniffer for IEEE802. 15. 4 and Zigbee [S]. User Manual. Oslo, Norway, Oct. 2004.
[4] KINNEY P. Zigbee Technology :Wireless Control that Simply Works [S] . Zigbee Alliance ,Oct . 2004.
[5] Zigbee Alliance. Network Specification (Draft Version 1.0) [S] . 2004.

继续阅读>>