ZigBee网络路由器低功耗优化设计与实现
2021-07-30王凯
王凯
(天津博宜特科技有限公司,天津 300384)
0 引言
TI提供的ZigBee协议栈定义了协议的网络层、应用层和安全层,并采用IEEE 802.15.4的PHY层和MAC层作为其部分协议。此协议规定路由器要保持时刻工作,需要外接电源持续供电。在诸多工业应用的现场,铺设供电线路难以实现,即使供电也难以保证稳定。鉴于此方案的局限,本文研究了路由器低功耗的优化方法,实现了路由器在电池供电状态下长时间的工作,解决了复杂工业现场路由器供电困难的问题。
1 无线传感器网络通讯协议研究
1.1 路由器能耗分析
无线传感器网络中,路由器能耗主要包含三部分:监听信道;接收数据;发送数据。而造成多余能耗的主要原因有以下两点:
1)信号冲突:路由器作为父设备接收其所有子设备数据,但子设备之间并不能互相知道其他子设备的数量、唤醒时间和发送数据时间,如多个设备同时发送数据产生冲突,导致发送失败,它们则会尝试重新发送数据,路由器则会一直工作在接收数据状态,导致高能耗。
2)空闲监听:路由器为保证无线网络内数据的及时转发,避免电池供电的子设备找不到父设备,路由器需要时刻侦听信道内数据,然而并非时刻都有数据需要接收,所以在无数据传输时的监听消耗了大量的能量,造成多余的耗电。
以采用IEEE802.15.4/ZigBee标准的路由器为例,数据传输速度为250Kbps。当节点1s内转发(接收并且发送)一个133字节满桢报文(4字节前导信号+1字节分隔符+1字节报文长度+127字节数据),路由器仅需工作0.9%的时间,99%的通讯能耗用于空闲监听。对路由设备不同工作状态下的工作电流进行测试见表1:
表1 CC2530 无线收发工作电流
可见在无线传感器网络能量浪费的两大原因中,空闲监听所消耗的能量所占比重最大,因此尽可能的将空闲监听转换为休眠是最有效的解决方案。但让路由器具备休眠模式,首先要解决的是终端设备和路由器唤醒的时间问题[1-2]。
1.2 路由休眠策略通讯机制的研究
目前,采用休眠策略通讯机制的协议中,路由器休眠策略有两种调度方式:1)基于精确同步。此类协议需要在路由器和终端设备之间进行精确的时间同步,并约定在某一特定时间唤醒进行通讯。2)基于异步策略的通讯协议。此类协议并不要求路由和节点同时唤醒进行通讯,无需时间同步。为了避免设备因休眠而错过接收数据,终端设备通常是在传输数据时,连续发送信号,直到路由器唤醒进行数据传输。或者终端设备保持监听状态,路由器在唤醒时发送一个信号报文,终端设备探测到父设备的信号时传输数据。
基于精确同步策略的通讯协议,在高度同步机制保障的基础上极大的缩短了监听时间,使得路由器的功耗明显降低,但路由器和终端设备的物理时钟是无法达到绝对同步的,越高的同步精度需要消耗设备更多的计算能力,产生更多的数据交换,这都要占用极为有限的系统资源。因此精确同步机制对设备来说负担较大,过多的能量浪费在运算和数据交换上。基于异步策略的通讯协议,虽然减少了路由器空闲侦听的能耗,但是大幅增加了终端设备的数据量和工作时间,导致终端设备功耗上升,对于整个系统的寿命来说,并没有太大的意义[3]。
2 无线传感器网络路由器优化方法的研究
综上所述,精确同步策略和异步策略都有一定的缺陷,并非完全适用于无线传感器网络,因此我们需要借鉴两者优点制定一种路由休眠策略,在不影响网络稳定和通讯质量的情况下,实现路由器的休眠,且计算量少,方式简单,又不会对终端设备造成负担。
首先路由器初始化时与协调器通讯取得系统时间,然后进入请求系统时间状态,处理其子设备的系统时间请求,如图1所示:
图1 请求系统时间状态机制
此时众多的终端设备上电初始化,他们与路由器通讯的时刻无法确定,因此路由器将在此阶段保持Ta的唤醒时间,等待终端设备与其取得通讯。终端设备与路由通讯后得到的系统时间,可以判断出距路由休眠的时间Tcn,这样此终端设备休眠的时间Twn可由Tcn和路由器的固定休眠时间Tb得到(Trandom为一个很小的随机量,避免终端同时唤醒造成信号冲突):
Twn = Tcn + Tb + Trandom
路由器的请求系统时间状态Ta结束后,进入时长为Tb的休眠,终端设备则在得到系统时间后进入时长为Twn的休眠;路由器和终端设备在取得系统时间的同时完成了同步,下次他们将在相对集中的一个时刻唤醒,因终端设备唤醒时间都增加了一个随机量,为保证路由器能与所有终端通讯,路由器会有一个保持唤醒的时间Td;终端设备通讯完成计算出新一轮的休眠时间Twn后再次进入休眠,路由则在工作时间Td后进如休眠,此后他们将以这种方式进行周期性的工作,如图2所示:
图2 工作状态机制
在设备初始化时请求得到的系统时间只是一个时间点,之后的计时完全是由自身设备的计时器来完成,由于设备本身计时器的误差,经过数个这样的周期后,终端设备和他们的路由有可能不再同步,为避免这样的情况发生,我们规定每n个周期进入一次请求系统时间状态,将终端设备和路由器的时间再次同步,如图3所示:
图3 多个周期后同步机制
以上情况我们只考虑了设备同时上电和初始化的情况,在实际的应用中,由于网络环境的变化,连接在一个路由器的终端设备有可能改变通讯路径,请求加入另一个路由器;或者某些外界因素导致终端设备重启,需要重新建立与路由器的联接;这些终端设备都会向路由器请求系统时间,且时间无法确定,为避免这些设备长时间入网请求得不到回应,路由器增加了一个Te时长的特殊状态,如图4所示:
图4 新设备加入时间同步机制
这些新请求入网的终端设备会持续发送网络加入请求信标直到路由器醒来将其加入网络。而路由器唤醒后,在其正常工作时间Td内,如果收到这些新设备发来的网络加入请求信标帧,会先将其加入网络,正常工作时间结束再进入Te时长的特殊状态予以时间同步,Te占用了路由器的休眠时间,路由器休眠时间变短,但不改变其下次唤醒的时刻,因此也不会打乱其他设备的同步[4-5]。
3 路由器功耗优化结果分析
根据上述优化方式来看,终端设备仅增加了少量的时间计算和时间同步产生的少量数据,这样并不会给终端设备带来明显的功耗增加,也不影响其正常休眠;而路由器则每个周期都加入了一个休眠时间Tb,大大降低了路由器功耗,在实际应用测试中,我们通常设定一个周期为180s,其中Td为5s,Tb为175s,结合表1中我们实测的电流数据,可以粗略计算出路由器使用休眠策略后要比不休眠持续工作节省97.15%的功耗。这样路由器完全可以使用电池供电,不必再使用外部电源供电。
4 结语
本文探讨了zigbee网络路由器低功耗的优化和实现,通过路由器的休眠极大的节省了空闲侦听的功耗,同时也给出了一种同步方法,避免了精确同步造成的系统资源浪费,也避免了异步策略终端设备能耗过高的问题。