一种基于超帧机制的Zigbee时间同步算法研究与实现
2012-05-31高广恩,刘全利,贾灵利,王伟
高 广 恩, 刘 全 利, 贾 灵 利, 王 伟
(大连理工大学 控制科学与工程学院,辽宁 大连 116024)
0 引 言
无线传感器网络(wireless sensor network,WSN)是近几年一个新兴的研究热点,可广泛应用于军事、环境监测、工业控制等领域.在无线传感器网络中,无论数据融合、节点定位还是传感节点的协同都要求网络同步.因此,时间同步技术已成为无线传感器网络的关键技术之一[1].无线传感器网络有着自组织、多跳、资源受限、低能耗、低带宽的特点,这使其对时间同步算法提出特殊的要求.在某些特定网络环境或应用场合,现有的时间同步算法有着较好的同步精度和较短的收敛时间.但针对Zigbee协议的时间同步算法较少,不能和协议很好兼容.针对无线个域网Zigbee联盟提出了Zigbee[2]标准,它为用户提供了一种成本低、功耗小、速率低、可靠性高、灵活性好的解决方案.Zigbee技术被广泛应用于智能家居、监控监测、智能交通、过程控制等领域,完成数据采集和处理,并对采集对象进行控制等功能.已有的Zigbee网络时间同步算法,考虑的多为星形网络中的同步问题,而对多跳网络研究较少.基于此,借鉴已有的时间同步算法思想并结合Zigbee网络的特点,本文提出一种适用于Zigbee网络的时间同步算法Zigbee-Sync.Zigbee-Sync充分利用超帧机制,具有低开销、高精度、高可靠性的特点.最终通过搭建测试平台验证算法的性能.
1 无线传感器网络时间同步
目前国内外已有多篇文献对无线传感器网络的时间同步问题进行了研究,提出了不同的时间同步算法.下面将几种具有代表性的时间同步算法进行介绍和分析.
RBS算法[3]利用无线信道的广播特性,节点发送参考信标到邻居节点,邻居节点交换它们收到参考信标的时间信息,根据此信息接收节点调节本地时间,达到和其他邻居节点同步的目的.RBS算法消除了发送时间和访问时间的影响,提高了邻居节点间的同步精度.TPSN算法[4]是一种基于层次结构的时间同步算法,整个同步过程分为两个阶段:一是层次发现阶段,二是时间同步阶段.TPSN算法可实现全网同步,其同步收敛时间的长短和网络规模有关,若需要长时间保持同步,则需要周期性地执行同步过程.LTS算法[5]是一种轻量级的同步算法.当节点i需要同步时,就发送同步请求到其邻居节点.若邻居节点此时处于同步状态,则发送同步时间信息到节点i,完成节点i的时间同步;否则邻居节点继续沿着朝向时钟源节点的方向发送同步请求,直到完成同步.LTS算法降低了同步所需的信息开销,其同步收敛时间和节点所处的深度有关系.
每一种同步算法都有其优势和不足,所以针对不同的应用网络,要充分考虑其网络特点来设计合适的算法,Zigbee-Sync便是针对Zigbee网络设计的同步算法.
2 Zigbee-Sync算法
Zigbee是 Zigbee联盟在IEEE 802.15.4[6]定义的物理层和媒体访问控制层的基础之上,又定义了网络层和应用层,因此它包含IEEE 802.15.4的所有功能和特点.
2.1 软时钟构造
在实际的无线节点上,处理器所使用的时钟周期和无线网络时间同步所需要的同步参数有着较大的差别,因此需要在程序设计中构建时间同步所需的软时钟.此软时钟不仅要精度高、可靠性高,更要符合网络需求和便于实现.在Zigbee协议中,超帧是网络设备访问信道的基本周期,协调器维护超帧,为网络内设备分配访问时隙,图1为Zigbee协议的超帧结构,其中BO(beacon order)、SO(superframe order)分别为信标阶数和超帧阶数,SDb表示基本超帧周期.
图1 超帧结构Fig.1 Structure of superframe
在Zigbee网络中,时间同步指的是两个设备间的相对同步,而非和国际标准时间的绝对同步.Zigbee标准中,维护超帧所需的最小时间单位为符号(symbol)周期,其实际时间长度为16μs,因此选取符号周期为基本的时间单位.符号周期为软时钟的基本时钟节拍(tick),超帧周期用节拍的数目表示.这利于超帧维护,同时便于退避周期、时隙等时间参数的计算.DLUTWIA-PA平台上MCU的主时钟频率为11.059 2MHz,本文通过定时器分频得到时间长度为16.004 7μs的基本时钟节拍,其与16μs的误差很小,可以满足网络要求.在信标开始时对节拍从零进行计数,在本次超帧结束,下一信标帧到来前记录此计数值,表示超帧周期的大小,通过设定此计数值的大小可达到维护超帧的目的.软时钟的同步精度为一个节拍,为16μs.网络内的两个设备可调节本地的计数值达到同步的目的,其最大时间偏差应为两个节拍,即32μs,可达到较高的同步精度.
2.2 时间戳标记
时间戳为发送设备在发送数据帧时所获取的本地节拍计数值,其准确性对网络同步精度有很大影响.因此在中断中获取此计数值,尽量减少程序处理带来的误差.在Zigbee-Sync算法中,发送设备将时间戳信息添加在信标帧负载中,以广播的方式告知网络内其他节点.从节点捕获信标帧并解析负载中的时间戳信息,根据此信息调节本地时钟,以达到和发送设备同步的目的.
Zigbee协议规定在发送数据帧时首先传输同步头和定界符(SFD).射频芯片可在发送数据帧时产生SFD中断,发送设备在SFD中断中获取本地时间信息,并将其作为时间戳放在信标帧负载中.接收设备在数据接收完成中断中可解析信标帧负载中的时间戳信息,并根据信标帧的长度估算出数据接收时间.发送设备和接收设备处理时间戳的时刻如图2所示.
Mica2等一些平台可以通过处理器直接控制发送数据流,从而可以很容易地标记和读取时间戳[7].而 在 DLUTWIA-PA 平 台 上 处 理 器 通 过SPI接口和射频芯片相连,数据的发送与接收都需通过SPI接口进行.所以在时间同步算法中要考虑数据在SPI接口上传输所需要的时间.
SPI接口数据传输速率为5Mbps,射频收发器的数据传输速率为250kbps.并且射频收发器支持先执行“发送”命令,然后再写入数据到射频收发器内部的缓存,只要保证数据发送过程中缓存中有数据可用.在IEEE 802.15.4物理层标准中,定义了5个字节的同步头,发送完毕需要160 μs,且射频收发器从空闲状态切换到发送状态需要192μs,在这352μs时间内处理器可将数据写入射频收发器的内部缓存.并且射频收发器的数据传输速率小于SPI接口的速率,不会产生内部缓存被读空的情况.时间戳信息共32位,通过SPI接口其传输需要6.4μs,所需时间很短.图3为携带时间戳负载的信标帧.
图2 时间戳标记Fig.2 Mark of timestamp
图3 信标帧Fig.3 Beacon frame
如图3所示,信标帧中Beacon payload部分为时间戳信息,表示发送方信标帧发送时刻的本地时间.由于每次发送信标帧之前都要对本地计数器清零,在超帧周期一定的情况下,其时间戳大小不会有太大变化.在时间戳信息中,前4个字节0x00000012为SFD触发时的本地时间,即第18个符号周期.最后一个字节0x04为本地修正时间,表示读取本地时钟以及时间戳处理的时间,主要通过理论计算的方式,根据具体的软硬件环境进行设定.
2.3 算法描述
在单跳的星形网络中,协调器周期性广播信标帧,网络内其他节点只需跟踪捕获信标帧,根据时间戳信息调节本地时钟便可达到和协调器同步.为了进一步降低网络能耗,网络内设备并不转发信标帧,这样节点可在无数据传输时处于睡眠状态,延长网络生存时间.树形网络是一种多跳拓扑的网络.假如两个相邻设备同时发送信标帧,则会产生信标帧冲突,造成子设备无法正常接收来自父设备的同步信息,进而影响网络同步.如何避免信标帧冲突便成为一个重要问题[8].
可以通过分时复用的方式将各设备发送信标帧的时刻错开以避免冲突.在设备入网时根据设备在拓扑中的位置为其分配网络内短地址.根据此地址信息计算出父子设备间发送信标帧的时间偏移量(Δt),通过在父设备发送信标帧的起始时刻添加偏移量,子设备发送信标帧的时刻便与父设备错开.各子设备间的偏移量有所不同,所以多个子设备发送信标帧的时刻也不会相同.在Zigbee网络中,一个发送信标帧设备的典型信标时序如图4所示.
图4 信标设备典型信标时序Fig.4 Classic beacon timing of beacon device
在Zigbee中,信标间隔BI=SDb×2BO,活动周期CAP=SDb×2SO,其中时间长度为960个符号.在活动周期,网络内设备进行数据传输,而在非活动周期则处于空闲,子设备可利用非活动周期发送信标帧.一个超帧周期可包含BI/CAP=2(BO-SO)个CAP.非 活 动 周 期 内 还 可 以 容 纳2(BO-SO)-1个CAP,这些周期均可合理调度用来发送信标帧.以一个BO=6,SO=2的网络为例,选取父子设备的时间偏移Δt=2*CAP,经过信标调度后的协调器和两个子设备间的信标发送时序如图5所示.
经过这样的信标调度之后,不会产生邻居节点间信标冲突的情况,每个节点只需侦听其父设备的信标帧,根据信标帧负载中的时间戳信息完成与其父设备的同步,达到间接和协调器同步的效果.这种机制简化了整个网络的同步机制,减少了节点间的信息交换,同时在网络规模不是很大的情况下可保证一定的时间同步精度.
图5 父子设备信标时序关系Fig.5 Beacon timing relationship between child and father device
3 算法实验验证
本时间同步算法在TinyOS[9]软件平台中实现,硬件平台为自主研发的DLUTWIA-PA平台.DLUTWIA-PA平台选用LPC2136作为微处理器,提供了丰富的外围接口,射频芯片为TI公司的CC2520,该芯片兼容Zigbee协议.
3.1 实验方案
在实验室环境下,将同步算法在DLUTWIAPA上加以实现,并对算法的性能进行了实验验证.网络分为星形网络和树形网络2种.在星形网络中包括Zigbee网络协调器,协调器上电后完成本地参数初始化并周期性广播信标帧.5个Zigbee终端设备扫描网络,并尝试加入网络.终端设备入网成功后执行本地的时间同步算法,解析时间戳信息,完成与协调器的时间同步.在超帧的起始时刻处理器触发一个IO的翻转操作,可通过示波器捕获波形,来观察设备间的同步误差.树形网络包括1个Zigbee协调器、3个路由设备和5个终端设备.协调器和路由设备均发送信标帧,终端设备捕获信标帧,最终达到全网同步.为了更真实地模拟现场工作环境,整个网络在发送信标帧的同时,还在CAP时段和GTS时段传输数据.在实验过程中,网络连续运行12h,不断统计此期间各设备间的时间偏差.具体实现流程如图6所示.
3.2 算法验证
在星形网络中,每隔5min采样一次主从节点和从从节点间的同步偏差,每次采样20个超帧周期.进行多组实验,发现各组间时间偏差并不大,同步算法有着较好的稳定性.在此给出一组时间同步精度的统计结果,如图7所示,n表示第n个超帧周期,Δt表示时间偏差.
图6 算法实现流程Fig.6 Process of algorithm realization
图7 星形拓扑时间同步精度Fig.7 Time synchronization precision for star topology
由图7可见,主从节点间的同步精度随时间变化波动较大,这主要是受信标帧长度变化的影响.在网络工作过程中,信标帧除了需传递时间戳信息,还需传递GTS分配等信息.而不同的GTS分配情况会带来信标帧负载长度的变化.接收方只能在接收完整个信标帧后才能对时间偏差进行处理和调整,而信标帧负载长度的变化会对此处理时间产生影响,进而影响到同步精度.用Ta表示从节点所需调整的本地时间偏差,那么Ta=Ts+t,其中Ts表示时间戳信息,t为根据信标帧长度估算出的一个补偿变量.从从节点间的时间偏差波动较小.因为各从节点的时间戳信息均来自同一信标帧,由于超帧长度变化对各从节点造成的影响相同,所计算出的时间偏差相差不大.
按照相同的实验方法,统计了多跳树形网络中父子路由设备之间以及各终端节点间的时间同步偏差情况,统计结果如图8所示.
将实验中获取的时间偏差统计结果和加州大学伯克利分校在MICA平台上实现的RBS和TPSN算法[4]进行比较,结果如表1所示.本文算法取得的平均时间偏差要小于其他两种算法.
图9给出了不同大小的时间偏差在所有偏差中所占百分比p.
图8 树形网络时间同步精度Fig.8 Time synchronization precision for tree network
表1 时间同步偏差Tab.1 Error of time synchronization
图9 节点间时间偏差Fig.9 Time deviation between nodes
功耗对Zigbee网络设备来说是一个非常重要的指标,根据实际的实验环境通过仿真软件NS2仿真得出网络节点的能耗曲线图,如图10所示.具体的仿真参数设置见表2.通过仿真结果可以看出,同异步网络相比,引入同步算法的Zigbee网络,其网络设备能耗大大降低,延长了网络生存时间.
图10 节点能耗曲线图Fig.10 Energy-consuming graph for nodes
表2 仿真参数Tab.2 Parameters of simulation
Zigbee-Sync算法借鉴了RBS算法的思想,借助第三方广播传递时间戳信息,并达到了较好的同步精度.针对RBS算法不适于多跳网络的缺陷,本文通过引入信标帧调度机制,成功将Zigbee-Sync算法在多跳网络中实现.TPSN算法将时间戳信息标记在MAC层,可达到16.9μs的同 步 精 度[4],Zigbee-Sync 算 法 将 时 间 戳 放 在MAC层的信标帧负载中,其同步精度和TPSN算法不相上下,但却有效降低了同步过程中信息交换的次数,使节点由于传输同步信息所消耗的能量大大降低.网络内设备还可以进行按需同步,在无任务处理之时,转入休眠状态;当有中断唤醒新任务时,可按照已获取的网络信息重新捕获信标帧,这可进一步降低能耗.对于轻量级的LTS算法而言,其所取得的同步精度要低于Zigbee-Sync算法.
本算法基于节点较少的无线网络对同步算法的性能进行了验证.要想更好地在多节点、大规模网络中实现此同步算法,则需要考虑引入信标帧调度机制,保证路由节点间的信标传输不会发生冲突,以可靠地传输同步信息.一个中间路由设备在接收到其父设备的信标帧后,根据自身与父设备之间的时间偏移量以及信标帧中的时间戳信息来校正本地时钟,从而确定出自身的信标时序.因为路由设备和父设备间的时间偏移量是一个预先分配的固定值,此值对本算法的同步精度不会造成负面影响,多跳网络中的路由设备及其父设备之间依然能够保证较好的同步精度.可见在引入信标帧调度机制的情况下,本同步算法在多节点、大规模的无线网络中依然是可行的、有效的.
4 结 语
本文提出了一种基于超帧机制的适合于Zigbee网络的时间同步算法,该算法有效降低了同步过程中的信息交换次数,降低了网络内节点能耗,并且具有良好的稳定性.将Zigbee-Sync算法在实际平台DLUTWIA-PA上进行了实验验证,通过实验结果可知其可达到较高的同步精度,且运行稳定.本文设计的通过软件来标记时间戳的方式,可广泛用于其他无法通过处理器直接发送数据的硬件平台.
[1] 康冠林,王福韵,段渭军.无线传感器网络时间同步综述[J].计算机测量与控制,2005,13(10):1021-1030.KANG Guan-lin,WANG Fu-yun,DUAN Wei-jun.Survey on time synchronization for wireless sensor networks [J].Computer Measurement & Control,2005,13(10):1021-1030.(in Chinese)
[2] Zigbee Alliance.Zigbee Standards.[2011-04-02].http://www.Zigbee.org.
[3] Jeremy E,Lew G,Deborah E.Fine-grained network time synchronization using reference broadcasts[C]//Proceedings of the 5th Symposium on Operating Systems Design and Implementation.New York:ACM Press,2002:147-163.
[4] Saurabh G,Ram K,Mani B S.Timing-sync protocol for sensor networks[C]//Proceedings of the First International Conference on Embedded Networked Sensor Systems.New York:ACM Press,2003:138-149.
[5] Jana V G,Jan R.Lightweight time synchronization for sensor networks[C]//Proceedings of the Second ACM International Workshop on Wireless Sensor Networks and Applications.New York:ACM Press,2003:11-19.
[6] ZHOU M,ZHANG L N.Analysis and design of Zigbee MAC layers protocol [C] // 2010 International Conference on Future Information Technology and Management Engineering.Piscataway:IEEE Press,2010:211-215.
[7] Cox D, Jovanov E, Milenkovic A. Time synchronization for Zigbee networks [C] //Proceedings of the Thirty-Seventh Southeastern Symposium.Piscataway:IEEE Press,2005:135-138.
[8] Ahn S,Cho J,An S.Slotted beacon scheduling using Zigbee Cskip mechanism [C] // The Second International Conference on Sensor Technologies and Applications.Piscataway:IEEE Press,2008:103-108.
[9] Levis P A.TinyOS:An open operating system for wireless sensor networks[C]//Proceedings of the 7th International Conference on Mobile Data Management.Piscataway:IEEE Press,2006:1-11.