引 言
仓库监控系统是仓库自动化管理的重要组成部分。监控系统可对大面积范围多部位地区实行实时有效的监控,并对得到的信息进行及时处理,以保证物资安全储存。传统监控系统存在因采用有线连接方式而导致的可靠性差、易受损、布线麻烦等问题。随着半导体技术、微系统技术、通信技术和计算机技术的飞速发展,无线传感器网络(WSN)的出现恰好可以解决这类问题;而具有低成本、小体积、低功耗、低传输速率的ZigBee技术无疑成为目前无线传感器网络应用的首选技术之一。
自2004年ZigBee联盟正式发布ZigBee技术标准以来,许多公司厂商陆续推出了自己的芯片产品和开发系统,如飞思卡尔公司的MC13192, TI公司的CC24xx系列,Atmel公司的AT86RF系列等。目前,对ZigBee技术的研究与应用也几乎是基于以上的芯片。
本文在Z-Stack基础上,成功组建了一个树簇拓扑网络监控系统。在该网络中,子节点将传感器采集的4类数据以多跳的方式发往sink节点,在父节点失效的情况下,子节点能够找到其他数据路径,从而实现了数据的可靠传输。
1 总体方案架构
1.1 系统需求分析
仓库为长方形,面积600 m2,所存储物资是烟草,属于贵重物品,所以设计的系统需要具备以下功能:
①防盗防破坏。贵重物品是犯罪分子盗窃和破坏的目标。案例分析表明,破门破窗而人占有很大比例,还有挖墙和揭顶而入的。
②防火报警。库房物资属于易燃物品,而且非常密集,如果火灾发现晚会增加灭火困难,造成重大经济损失;对其监控有利于提前发现灾情,及时采取对策。
③温湿度监控。物资在仓库集中存储,易受环境影响,对环境温湿度的监控可以避免因库房温湿度的变化而造成烟叶霉变或糙碎,达到提高烟叶自然醇化质量和卷烟制成品的内在品质的目的。
④无线通信。采用电缆布线缺点明显,易对系统造成不必要的干扰且存在火灾的隐患。
1.2 系统方案设计
无线通信中,在接收灵敏度一定的情况下,无线发射功率P和接收半径R之间的关系是P正比于 R2~R5。在长距离数据传输情况下,能耗情况会十分严重,特别是对于能量有限的系统来说,会造成节点过早死亡,所以直接数据传输的星形网络不能满足需要,只能采用具有多级中继路由节点的树簇网络。系统总体结构示意图如图1所示。
网络中的设备分为三种:终端设备、路由器、协调器。其中终端设备为RFD,其他两种为FFD。RFD作为树枝末位的节点,一次只能连接一个FFD设备。
因为温度湿度信号不会突变,所以在正常情况下每120s采集1次的频率足够满足要求。成功发送数据后RFD节点进入休眠状态,以节省能量;但是若探测到烟雾或者有人闯入,节点将以突发的方式传送数据,以求数据达到监控终端的延时最小。
2 节点硬件设计
由于节点的数量较大,为了方便生产,将FFD和RFD设备的主要区别放在软件方面;而硬件部分除了协调器具有UART接口外,其他都是相同的。总体分为核心单元CC2430、传感器模块以及电源管理模块3部分。硬件的总体框图如图2所示。
2.1 核心单元CC2430
CC2430是TI公司推出的支持ZigBee协议的SoC解决方案,可用于各种ZigBee无线节点,包括协调器、路由器和终端设备。它延用了 CC2420芯片的架构,在单个芯片上整合了ZigBee射频(RF)前端、存储器和微控制器。CC2430F128内嵌增强型8051 MCU,8 KB RAM,128 KBFlash,包含8路ADC、3个定时器、AESl28加密电路,MAC协处理器、看门狗定时器,以及21个可编程I/O引脚,支持4种不同程度的休眠模式。
2.2 传感器模块
(1)温湿度传感器
采用瑞士Sensirion传感器公司推出的SHT1O温湿度一体传感器。该传感器芯片由温度和湿度探头、校准存储器、14位模数转换器、双向I/O两线串行输出接口组成。其工作电压为2.4~5.5 V,支持闲时自动低功耗。测湿精度为±4.5%RH,25℃时测温精度为±0.5℃。SHT10对温度或湿度的测量由串行输入的指令确定,测量值的输出可选择为8位、12位或14位。
(2)烟雾报警传感器和人体红外传感器考虑到监控人员对烟雾和闯入人员的信息需求只限为“有”或“没有”,因此两种传感器只需在事件发生时传递一个脉冲信号即可。此脉冲经过滤波限流后输入CC2430的I/O口,将相应的I/O口设置为上升沿中断检测模式即可检测信号。
烟雾报警传感器采用SH-533模块,搭载TP1.1气体传感器,附带蜂鸣器、LED报警指示;工作电压7~20 V,静态电流10 mA,检测面积为10 m2左右。烟雾触发输出为5 V高电平脉冲信号,由于CC2430工作电压为3.3 V,所以用电阻对其做了简单的分压。
人体红外传感器采用sH-912模块,搭载PIR热释电传感器并配合菲涅尔透镜使用;工作电压4.5~20 V,静态电流50 μA,感应角度110°,最大感应距离7 m。红外触发输出3.3 V脉冲信号。
2.3 电源管理模块
为保证传感器采集数据的及时传递,减小终端在竞争信道过程中产生的碰撞造成能量的损耗,本系统中FFD设备采用不间断供电(UPS)。即使在库房掉电的情况下,FFD设备也能靠充电电池维持工作。
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%以下时,认为数据可靠传输。
4.2网络测试
由于节点个体有差异,在实际布局时,FFD设备间隔15~20 m,终端设备按照8 m2一个的密度布置。设置2条路由路径,每条路径中继节点4个,终端20个,在网络拓扑稳定后,关闭LAYER1的一个路由节点,路由路径中断后, LAYER2及以下路由器的新路由路径重新建立时间为26 s,断路的所有节点全部重新入网的时间为134 s。网络较快的自修复能力保证了网络的鲁棒性、系统的稳定性和监控的实时性,避免了多跳网络中由于主要路由器故障导致大面积网络瘫痪。
4.3 系统测试
节点正常工作时120 s采集传送一次温度湿度信号,人体红外传感器和烟雾报警传感器在触发后,节点立即传送信号。实验中人体接近监控区域,监控GUI在3 s内发出报警信号,并且随着人体移动,移动轨迹上的节点依次报警。烟雾信号测试也符合要求。
结 语
本文重点介绍了硬件平台的搭建和对Z-Stack的NWK层的分析与修改,完成了对树簇拓扑网络的组建。所设计的节点能够正确采集多种传感器信号,网络也具有较好的稳定性和自愈能力。系统在人体红外传感器的配合下,可以对监控范围内活动的人员实行跟踪定位。该方案已经应用于某烟草仓库的自动化管理项目中。
由于本设计中FFD设备与RFD设备射频发送功率相同,通信距离较短,还不能显著体现ZigBee树簇多跳网络优势;给关键路由器添加射频功放,拓展其通信距离,可在低功耗、大面积监控领域中大显身手。