ZigBee技术的树簇网络监控系统设计
3 软件设计
3.1 Z-Stack简介
Z-Stack是由TI公司推出的基于ZigBee标准的协议栈软件,可在www.focu.ti.com.cn免费下载。它包含了ZigBee标准描述的各层次的功能组件模块,向开发人员提供了一系列的API。通过调用这些API,可以实现ZigBee标准中各层次的相应功能。基于这些功能模块,可以更便捷地开发出各种基于ZigBee协议的应用产品。图3为Z-Stack结构。(注:Z-Stack协议栈核心的部分,包括安全模块、路由模块、Mesh 网络支持等,都只以库的方式提供。)
在终端设备嵌入式软件中,操作系统模块主要实现的是简单的任务轮询和工作调度的功能,同时还需实现节点硬件的初始化和功能配置。这个操作系统模块不是真正意义上的操作系统,而是一个具有操作系统任务调度功能的模块。该操作系统模块在Z-Stack中由OSAL组件构成。操作系统模块的任务调度具体方式是:首先,为需要实现的功能建立任务,且每一个任务有不同的事件。当操作系统运行时,会不间断地轮询所有任务的标志位。若标志位有效,则表明该任务有事件发生,调用任务事件处理函数,并在任务处理函数中,根据标志位,判断是什么事件发生。然后,系统做出对应的操作,最后将标志位清零。
3.2 树簇拓扑的形成及路径发现与维护
由于文章篇幅有限,不能依次介绍方案中比较关键的应用层、硬件描述层、NWK层以及OSAL,以下着重描述NWK层的树簇拓扑的形成以及路径的发现与维护。
Z-Stack总共默认65 000个设备入网。为保证网络中每个节点的地址是唯一的,使用了分布式寻址方案,由父节点分配子节点地址。此种算法保证了控制端的数据包能够精确地发送到指定设备,子节点也只能有一个父节点,有助于网络的可测量性。在网络初始化之前,有几个参数需要配置,分别是MAX_DEPTH、MAX_ROUTERS 和MAX_CHILDREN[6]。
MAX_DEPTH决定了网络的最大深度。协调器在最顶层,位于深度0;它的子节点位于深度1,依此类推。MAX_CHILDREN决定了一个路由器或者一个协调器可以处理的最大子节点个数。MAX_ROUTERS决定了一个路由器或者一个协调器可以连接的最大路由器的个数。这个参数是 MAX_CHILDREN的一个子集,终端设备使用(MAX_CHILDREN-MAX_ROUTERS)剩下的地址空间。图4为使用自定义栈配置后的网络拓扑和节点地址分配示意图。LAYER1最多20个节点,其中包含6个路由节点。
在网络初始化过程中,协调器先将自身设置为一个簇标识符为0的簇头,并向临近的设备以广播方式发送信标帧。接收到信标帧的设备(路由器或终端设备)向簇头请求加入网络,如果作为父节点的协调器允许该设备的加入,则将其作为子节点加入到它的邻居表中,同时,请求加入的设备将协调器作为父节点加入到邻居表中,成为从设备。已经加入网络的路由器也广播信标帧,以这种方式,直到所有设备都接入网络。在接入网络的同时,广播信标帧的父节点会向接人的子节点分配唯一的 16位网络短地址。图5是网络建立和节点入网流程。
终端设备没有路由功能。它需要将数据发送给它的父节点,父节点以它自己的名义执行路由。当路由器从应用层或子节点收到单点发送数据包时,NWK层会将其传递到下层。如果目标节点是相邻路由器中的一个,则数据包被直接发送;否则,路由器会检索它的路由表中与所要传送的数据包的目标地址相符合的记录。如果存在与目标地址相符合的路由记录,则数据包将被发往记录中的下一级地址;如果没有发现任何相关的路由记录,则路由器发起路径寻找,数据包存储在缓冲区中直到路径寻找结束。如果数据包沿着某条路由路径传送失败,这个路径就被认定是坏链,父节点将启动路径修复。节点发起重新发现直到下一次数据包到达该节点,标志路径修复完成。如果不能够启动发现或者由于某种原因失败了,节点则向数据包的源节点发送一个错误包(RERR),它将重新启动路径发现。
3.3上位机GUI设计
在GUI中将节点编号和其IEEE地址绑定,实现了对突发事件地点的报警和定位。采用数据库,分别将每个节点上传数据写入,同时贴上时间标签。监控人员可以自由查看选定时段的仓库任意地点的状况,同时GUI将突发事件数据以列表方式单独抽取出来,以供查阅方便。在工作时间可以将人体红外传感器采集的数据屏蔽,避免误触发。
4 运行及测试结果
4.1 节点性能测试
通信距离测试:CC2430芯片工作电压为3.3 V,射频发送功率0 dBm,空旷地带可靠传输距离30 m。功耗测试:CC2430射频发射峰值功耗30 mA,接收峰值25 mA,休眠状态0.1μA;为了保证实时监控,传感器得24小时工作,由此选择了低功耗的传感器。节点整机平均电流消耗17 mA。UPS功能测试:路由器接上220 V市电,正常入网后拔掉电源插头,节点不掉电,不重启;工作一段时间再插上电源,节点无死机,不重启,充电芯片给电池正常充电。表1为不同通信距离节点数据包丢包率比较。丢包率在2%以下时,认为数据可靠传输。
- 直接变频接收机设计可实现多标准/多频带运行(10-11)
- 基于蓝牙芯片的无线通信模块设计与开发(02-03)
- 无线通信网络设计与现场测试(10-10)
- WiMAX数据传输加密方案设计与实现(05-25)
- 高性能TD-SCDMA接收机的设计(03-15)
- 初步设计WiMAX射频系统(03-29)