Zigbee技术规范与协议栈分析

fish001   2019-6-18 21:17 楼主

     伴随无线传感器网络的迅猛发展,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.

回复评论 (1)

现在都在用zigbee 3.0了,zigbee 2007 Pro已经老了

点赞  2020-1-14 17:01
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复