引言
无线传感器网络是由密集型、低成本、随机分布的节点组成,集成了传感器技术、计算机技术和通信技术,能够协同地实时监测、感知并采集各种环境的数据,适用于战场通信、抢险救灾和公共集会等突发性、临时性场合。保持节点之间时间上的同步在无线传感器网络中非常重要,它是保证可靠的数据传输、精确的节点定位、可靠的数据融合、准确的目标跟踪与检测的前提。如利用波的到达时间差测距,就需要高精度的时间同步。无线传感器网络中,由于频率漂移,各个节点之间必然会产生一定的时钟偏移,因此有效的时间同步技术对保证各个节点之间的时钟同步非常重要[2]。
2002 年,Elson 等人在影响未来网络研究发展方向的国际权威学术会议 HotNets 上,首次提出无线传感器网络时间同步的研究课题,至今已有相当多的典型时间同步算法。基于发送者接收者的双向同步算法中,比较典型的如 TPSN(Timingsync Protocol for Sensor Networks)算法[3]。TPSN 算法分成两个阶段,第一阶段为层次发现阶段,第二阶段为同步阶段。在同步阶段采用发送者接收者的双向成对同步算法, MAC 层采用加入时间戳的技术,进而估算出节点之间的传输延迟与时钟偏移。该作者在 Mica 节点上测试过,TPSN 平均单跳误差为 17.61 μs。基于发送者接收者的单向时间同步算法中,比较典型的如 FTSP(Flooding Time Synchronization Protocol)算法[4]、DMTS(Delay Measurement Time Synchronization)算法[5]。基于接收者接收者的同步算法,典型的有 RBS(Reference Broadcast Synchronization)算法[6]。近几年,也有作者提出了协作同步机制[7]。协作同步的核心思想仍然是属于集中式协议,要求整个网络中节点密度较高。参考文献[8]中,作者提出了分步式同步机制,整个网络无需构造由根节点发起的生成树,只需要每个节点之间使用分布式广播同步机制。
传统的同步机制只是简单地修正节点之间的时钟偏移,传感器节点时钟由晶体振荡器驱动。晶体振荡器的实际频率通常与它标定的频率之间存在一定的偏移,即存在时钟频率的漂移。传统的同步算法为了提高同步精度,节点就必须频繁地重复时间同步算法,以消除时钟偏移的影响。频繁地交换消息,必然给功耗受限的节点带来额外的负担,因此考虑节点之间的时钟漂移也是非常重要的[9]。
1 、CDCO 时钟同步算法设计
1.1 时钟模型
本同步算法采用的是发送者接收者的双向同步算法,同时考虑了时钟漂移与偏移对同步精度的影响。在无线传感器网络的节点中,如果采用的是时钟速率恒定模型,那么节点的硬件时钟 Ci(t)与真实时间 Ck(t)的关系可以表示为 Ci(t)=aik·Ck(t)+mik。式中,aik 为节点之间的相对漂移量,mik 为节点之间的相对偏移量。如果两个节点之间完全同步,则相对漂移量 aik 为 1,相对偏移量 mik 为 0。
1.2 单跳同步原理
如图 1 所示,hi(t1)、hi(t4)、hi(t5)用来记录参考节点的本地时间, hk(t2)、hk(t3)、hk(t6)用来记录同步节点的本地时间。同步过程采用类似 TPSN 算法的双向同步过程,假设同步节点与参考节点的时钟关系采用时钟恒定模型(这在现实中也是合理的),则 hk(t)=ρki·hi(t)+mki。式中,hk(t)、hi(t)分别为同步节点与参考节点在本地时刻 t 的时钟,ρki、mki 分别为时钟漂移量与偏移量。
图 1 双向同步原理图
假设传播延迟为 dki,因为在极短的时间内来回传播延迟与节点时偏可假设相同。假设漂移量
则在理想情况下,ρki 为 1,即线段 hi(t1)hk(t2)平行于线段 hi(t5)hk(t6),此时不存在时钟漂移[10]。如图 1 所示,根据双向同步原理与时钟恒定模型可以得到:
则根据得到的ρBA、mBA 修改同步节点的本地时钟,就能实现与同步节点的时钟同步。
1.3 多跳同步原理
假设节点 A 与其下一跳节点 B 已经实现了时间同步,则可以得到:
由式(5)与式(6)可以得到:
同样,假设节点 B 与下一跳节点 C 已经实现了时间同步,同理可以得到:
显然将式(7)带入式(8)可以得到节点 A 与 C 之间的同步。
采用同样的方法逐级迭代下去,就可以实现全网的时间同步。
1.4 理论误差来源分析
由 1.2 节的分析可知,两节点之间的时钟关系为 hk(t)=ρki·hi(t)+mki。如果两个节点不存在时钟频偏的情况,ρki 为 1,即 hi(t1)hk(t2)平行于边 hi(t5)hk(t6),则频率偏移误差:
假设不存在频率偏移的情况下,即ρki 为 1,我们来计算时钟偏移的误差来源。根据图 1 所示的发送接收双向消息同步过程,可以得到:
式中, hk(t3)、hi(t4)分别是 t3、t4 所对应的同步节点和本地节点所测出的本地时间,Sk 代表节点 k 的报文发送时间,Ak 是发送报文的访问时间,Pk→i 是节点 k 传播到节点 i 的时间,Ri 是节点 i 的报文接收处理时间,Nkt 是传输 Nk 个比特的总时间,Terror 指传输比特的误差,Rerror 为打时标过程存在的误差,Dk→it3 代表节点 k 与节点 i 在 hk(t3)时刻的时偏。因为在实验中采用了 MAC 层的打时标方法,这样就可以消除发送时间与访问时间对误差的影响。于是式(11)就可以简写为:
式中,Dk→it3=Dk→it6+RDk→it3→t6。同理可以得到 hk(t6):
由以上各式可以得到时偏:
式中,RDk→it3→t6 代表从 hk(t3)到 hk(t6)时段内,节点 k 相对于节点 i 增加的时偏;Dk→it6 是 hk(t6)时刻节点 k 与节点 i 之间的时偏。可以算出时钟偏差为:
2 、算法性能分析
无线传感器节点采用的是晶体振荡器来计时节点的本地时钟,由于成本的限制,只能采用一些低成本的晶振。硬件设备厂商一般都会给出晶振频率变化范围,一般时钟漂移为[10,100]ppm。同步周期取 20 s,在一个周期内采样 4 次,得到的结果如表 1 所列。相同情况下的多跳同步误差如表 2 所列。
从表 1 中可以看出,在同一个周期内,相比 TPSN 算法,CDCO 算法误差随采样间隔的增长明显比 TPSN 慢,在相同的采样间隔,误差也明显低于 TPSN 算法。因为相比于 TPSN 算法,本文考虑了时钟漂移,因此可以在较长的时间内保持同步。从表 2 可以看出,随跳数增加,CDCO 算法精度较高于 TPSN 算法。在相同的跳数内,CDCO 算法的误差明显低于 TPSN 算法,且随着跳数增加,CDCO 算法的同步误差增加明显低于 TPSN 算法。相对于 TPSN 算法,CDCO 算法可以减小误差多跳累加的影响。
3、结语
本文基于发送方接收方双向同步算法的原理,设计了一种同时考虑时钟偏移与漂移的同步补偿机制(CDCO 算法)。实验结果表明,相比传统的发送方接收方双向同步算法,CDCO 算法因为采用了时钟漂移补偿技术,在同一个同步周期内,同步误差随时间增加变化较小;而传统的算法因为存在时钟漂移,在同一个周期内误差随时间增大而变得越来越大。相对于 TPSN 算法,CDCO 算法可以减小误差多跳累加的影响。