Zigbee技术规范与协议栈分析
进入主循环处理函数以后,始终周期扫描此任务列表,这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.
- 光缆结构及工艺的发展(03-04)
- 基于Zigbee的远程家庭监护系统的应用研究(04-08)
- 触摸屏基本原理(04-16)
- 无线传感器网络的服务质量保障技术(10-16)
- 网络自组织通信模式和技术研究综述(10-26)
- 视频传感器网络覆盖控制(Coverage Control)问题研究概述(11-24)