引言
随着国内物联网行业进入发展快车道,ZigBee技术越来越多地被应用到环境、安全监测系统中,利用传感器技术与ZigBee技术的有机结合,将采集的数据周期性发送到网络中心节点,进行多点信息 实时监控。
传统的ZigBee多点监控网络中节点采用同步休眠或异步休眠方式,节点的功耗和同步性难以得到平衡,网络性能不稳定。本文将同步和异步方式相结合,采用混合休眠策略构建基于ZigBee星型网络 拓扑结构[1]的无线监控系统,并加入网络自愈功能,提高系统的稳定性。
1ZigBee技术简介
ZigBee技术是一种基于IEEE 802.15.4标准[4]的无线技术,在农业、工业、环境、军事、医疗等诸多领域取得了成功的应用[5]。IEEE 802.15.4标准定义了物理层和媒体访问控制层,ZigBee联盟[6] 在这个基础上扩展了网络层和应用层框架。
ZigBee网络是一种结构简单、低功耗、低成本的无线网络,它实现了低功耗和低数据吞吐量的无线连接。IEEE 802.15.4网络中根据设备所具有的通信能力,可以分为全功能设备(Full Function Device, FFD)和精简功能设备[7](Reduced Function Device, RFD)。FFD之间以及FFD与RFD之间都可以直接通信,RFD之间只能通过FFD转发数据,进而实现间接通信,这个与RFD相关联的FFD称为该 RFD的协调器。IEEE 802.15.4网络中,必须有一个FFD作为PAN(Personal Area Network)网络协调器,其除了直接参与应用外,还要完成成员身份管理、链路状态信息管理以及分组转发等任务[8]。
2自组网设计
2.1网络组建
ZigBee星型网络中,只有一个FFD作为协调器,其他RFD都是终端节点。完整的ZigBee网络组建分为两步:第一步是协调器初始化网络;第二步是终端节点加入网络。
ZigBee协调器上电后,首先由协调器发起建立一个新网络的进程;然后,由网络层管理实体请求媒体访问控制层对信道进行扫描[1],找到建立网络的最佳信道,并为新建网络选择唯一的PAN描述符;最 后确定好PAN描述符后,网络层管理实体将协调器网络地址设为0x 0000,网络建立完成,运行并等待终端节点加入。
ZigBee协调器建立网络后,终端设备可以申请加入网络。终端设备上电后主动寻找射频范围内的网络,如果一定时间内检测到包含PAN标识符的信标帧,则向协调器发出连接请求。协调器在地址分配 空间充足的条件下为之分配16位的网络地址,在经过传输响应确认后,终端节点成功加入。
2.2网络自愈功能
在网络正常运行的情况下,如果某个节点由于断电或受到干扰,而与网络断开连接,会影响系统的稳定性。本设计提供了良好的网络自愈功能,在软件设计中,及时检测节点网络状态并对异常节点 进行处理。当节点出现网络异常或重新上电后,通过访问非易失(NV)存储器,查看之前网络信息,主动查找并重新加入之前的网络。网络自愈功能使节点能自动处理网络异常,系统中其他节点的数据 传输不受异常节点的干扰而能正常运行,增强了网络的稳定性,提高了系统的容错性。
3休眠同步机制
ZigBee网络中终端节点采用电池供电,节省能耗对网络的运作和维护非常重要,休眠是降低功耗的有效方法,而对于多点监控网络,节点的同步工作更有利于数据的分析和处理。节点的休眠方式会 影响系统的同步性能,本设计在同步休眠和异步休眠的基础上提出混合休眠策略。
3.1同步休眠
在多点监测系统中,终端节点周期性地采集发送数据,在不工作时进入休眠状态。同步休眠模式下,终端节点同时工作、同时休眠。终端节点同步休眠模式下的时间片使用方式如图1所示。其中,时间片的同步由协调器向全网广播同步休眠指令实现。休眠指令命令终端节点同时进入同步休眠状态,其休眠时间长度可灵活设定,醒来时自动进入工作状态。
图1 同步休眠示意图
在同步休眠中,终端节点待机电流为1 μA,系统同步性高,但若由于某些因素导致终端节点未能正常收到协调器的休眠指令,则无法进入休眠状态,待机电流为24 mA,会造成大量不必要的功率损 耗,系统性能不稳定。
3.2异步休眠
在异步休眠模式下,各节点间休眠相互独立,终端节点在完成数据传输后主动进入休眠状态,无需等待协调器的休眠指令。节点按照预设的频率进行周期性的休眠,在休眠时间片结束时,会打开无 线接收器监听网络中的数据报文。如果在监听时间片内收到协调器的唤醒指令,则进入正常工作状态,否则进入下一个休眠时间片。终端节点异步休眠模式下的时间片使用方式如图2所示。
图2 异步休眠示意图
监听时间片与节点从睡眠状态转入工作状态的时间长度有关,而休眠时间片的长度可以根据系统实际需求灵活设定。CC2530浅度休眠时电流为1 μA,接收时电流为24 mA,如果按照200:1的睡醒比例 计算,则终端节点的平均待机电流为:
异步休眠中,终端节点避免了由于收不到休眠指令而造成的大量功耗浪费,系统性能稳定。不足的是节点平均待机功耗有所增加,且系统的同步性低于同步休眠机制,其最大误差为一个睡醒周期。 因此,系统须根据此误差合理设置监听时间片的长度。
3.3混合休眠
正常情况下终端节点工作在同步休眠模式,当某个节点出现异常没有正确接收到协调器休眠指令时,进入异步休眠模式。同步和异步的有效结合组成了本设计的混合休眠模式,如图3所示。
图3 混合休眠示意图
当异步休眠节点进入监听时间片时,会主动向协调器询问是否缓存了属于自己的唤醒报文,协调器在收到请求后会向终端节点返回媒体访问控制层的ACK报文,告诉终端节点是否有缓存报文。当终端 节点被告知没有缓存的唤醒报文时,可以再次进入异步休眠模式。如果有缓存的唤醒报文,则查看缓存报文中同步节点的醒来时刻,并根据此时刻进入休眠等待,从而避免了空闲等待的功耗浪费。当 从休眠等待中醒来时,此节点和同步休眠节点共同进入同步模式,进行数据传输。
其中,唤醒报文是协调器在同步节点休眠即将结束时向全网广播。假设异步状态中监听时间片长度为t1,休眠时间片长度为t2,则协调器缓存报文时间t3应满足:t3>t1+t2,确保异步节点在t3时间 段至少有一次进入监听状态,以被唤醒。由于协调器缓存数据报文时间有限,所以采用多次重发短报文方式,使唤醒报文在缓存区连续存在t3的时间长度。同时,协调器在每个同步周期内都广播一次 唤醒报文,使异常节点在一个工作周期内能被及时唤醒,尽可能地减少由于异步休眠次数过多造成的功耗浪费。
混合模式下,同步节点平均待机电流为1 μA,异步节点平均待机电流为120.4 μA,假设平均在n次休眠中进入一次异步休眠,则混合模式下节点的平均待机电流为:
可以看出当系统越稳定,即n越大时,混合休眠模式下的平均待机电流越接近同步休眠模式下的待机电流,且明显小于异步休眠模式下的平均待机电流。因此,混合休眠策略在实现低功耗传感器网络 的基础上,能够达到全网节点同步的效果,更有利于整个系统的运行和管理。
4系统软件设计
系统软件设计主要包括协调器和终端节点的工作控制。
4.1协调器程序设计
协调器主要负责网络的组建、维护和控制及数据处理的工作,网络的组建主要由协议栈内部完成,协调器主要工作流程如图4所示。
图4 协调器主要工作流程
协调器组网成功后,接收到终端节点发送的无线消息,并进行处理。根据接收到的无线消息节点的设备ID号判断是否成功接收所有节点的数据,若成功接收,则广播同步休眠指令,终端节点进入同 步休眠。否则,记录未成功发送数据的节点,提醒其再次发送,通过重传机制增强数据传输的稳定性。若规定时间内,检测不到无线消息,协调器也将广播同步休眠指令,实现全网终端节点的同步休眠。
协调器向终端节点发送休眠指令后,将数据打包发送至上位机,同时启动定时器,在同步休眠节点醒来前t3时刻,连续发送t3时间长度的唤醒指令,确保异步休眠模式下的节点在同步节点醒来前被唤醒,并在下一个工作周期加入到同步网络中。
4.2终端节点程序设计
终端节点加入网络后,周期性地采集和发送数据,并处理协调器的消息。终端节点主要工作流程如图5所示。
图5 终端节点主要工作流程
终端节点成功发送采集信息后,若在一定时间内收到协调器重发指令,则再次发送采集数据;若收到休眠指令,则进入同步休眠;其余情况进入异步休眠。异步模式下,若监听时间片内收到协调器唤醒指令,则进入休眠等待,醒来后和同步休眠节点一起进入同步模式。
5实验结果分析
为了验证混合休眠策略在实际应用中的可行性,选取50个终端节点模块和1个协调器模块组成ZigBee星型网络,异步模式下采取200:1的睡醒比,在各终端节点程序中对异步休眠次数、唤醒周期数进行统计,求得每个节点的平均异步休眠次数和每次异步休眠的平均唤醒周期数,计算出各节点的平均待机电流,整理数据如表1所列。
由测试数据可以看出,通信距离小于80 m时,异步休眠节点在1个工作周期内能被及时唤醒,节点的平均待机电流维持在2 μA以下。由于ZigBee的通信距离受环境因素影响较大,当通信距离继续增大、超出可靠通信范围时,网络性能不稳定,节点平均待机电流增加。因此,在正常通信状态下,混合休眠策略能有效降低节点功耗,提高网络同步性和稳定性。
结语
本文提出基于ZigBee技术的多点自组网设计方案,通过节点的混合休眠策略和网络自愈功能,在实现ZigBee无线网络通信的基础上,加强了通信的可靠性和网络的稳定性,实现了节点的低功耗和高同步。