本发明涉及无线传感器网络时间同步,更具体地说,涉及一种轻量级低功耗无线传感器网络时间同步方法。
背景技术:
1、无线传感器网络(wireless sensor network,wsn)是一种分布式传感网络,是由部署在监测区域内大量的静止或移动的微型传感器节点组成,传感器节点监测的数据沿着其他传感器节点,通过无线通信的方式逐跳的进行传输,在传输过程中监测数据可能被多个节点处理,经过多跳后路由到汇聚节点,协作地感知、采集、处理和传输网络覆盖地理区域内被感知对象的信息,最后通过互联网或卫星把这些信息发送给网络的管理者。时间同步是无线传感网节点间成功通信需要解决的一个重要问题。
2、为了符合传感器节点成本的限制,无线传感器节点内嵌有一个低功耗硬件时钟振荡器。但是低功耗硬件时钟振荡器往往导致时钟偏移误差较大,为了降低误差,需要周期执行高精准的时间同步进程。
3、目前已经提出了一些面向无线传感网的时间同步协议,如洪泛时间同步协议(mmaróti,kusy b,simon g,et al.the flooding time synchronization protocol[c]//proc international conference on embedded network sensor systems.dblp,2004.)、轻量级双向时间同步协议(dai r.tsync:a lightweight bidirectional timesynchronization service for wireless sensor networks[j].acm sigmobile mobilecomputing&communications review,2004,8(1):125-139.)和使用参考广播的细粒度网络时间同步协议(elson j e,girod l d,estrin d.fine-grained network timesynchronization using reference broadcasts[j].acm sigops operating systemsreview,2002.)等。但这些现有的协议都只关注时间同步的精度改善,而忽略了网络的能耗。
技术实现思路
1、本发明要解决的技术问题是提供一种轻量级低功耗无线传感器网络时间同步方法,通过预估邻居节点数量生成邻居矩阵来选择最小同步序列,最小化节点间的报文交换数量,在保证节点间的时钟同步的同时,降低网络能耗。
2、为了达到上述目的,本发明采取以下技术方案:
3、一种轻量级低功耗无线传感器网络时间同步方法,包括如下步骤:
4、s1:每个传感器节点通过广播方式获取自身的邻居节点情况,并在自身存储用于记录邻居节点情况的邻居矩阵m;
5、s2:根据每个传感器节点的邻居矩阵m,构建最小化参照节点同步序列;
6、s3:根据最小化参照节点同步序列,实施时间同步算法,使得无线传感器网络中的节点时间保持同步。
7、更具体的:
8、步骤s1中所述的邻居矩阵m的矩阵元cij按以下方式确定:
9、如果节点vi和vj是邻居,则cij的值为1,否则为0;
10、其中:vi,vj分别表示两个传感器节点,i、j分别为两个传感器节点的编号,i、j均为整数且均从1取至n。
11、定义任一节点vi的度为:
12、步骤s1中,任一节点vi构建其自身的邻居矩阵m的方法包括以下步骤:
13、s11:在一定时间段内,节点vi随机间隔广播3个nsm消息,nsm消息中包括节点vi的id编号;
14、s12:收到nsm消息的任一节点vj,向节点vi回传1个ack消息,ack消息中包括节点vi和节点vj的id编号;
15、s13:收到ack消息的节点vi,提取两个id编号,从而获取其邻居信息,并按照下述方法构建自己的邻居矩阵m:若节点vj接收到了节点vi的nsm消息,且节点vi也接收到了vj的ack消息,则取cij=1,否则取cij=0;因此,每个节点的邻居矩阵m只存储自身周围的邻居节点情况,可以减少存储量,并提高效率。
16、步骤s2具体包括以下步骤:
17、s21:设置标记向量i={f1,f2,f3,…,fi,…,fn},向量中的每个标记值fi对应于一个节点vi,其中i为该节点对应的编号;
18、初始时设定i={f1,f2,f3,…,fi,…,fn}={0,0,0,…,0,…,0};
19、设置同步序列集合s,初试始值时设置集合s为空集;
20、s22:从传感器节点中随机选择一个节点,将其作为参考节点,并将其编号记为ref;
21、s23:设置标记向量i中的fref=1,并将该节点vref加入到集合s中;
22、s24:节点vref向不在集合s中的vref的邻居节点广播下一个参考节点的请求消息;
23、s25:每一个收到所述下一个参考节点的请求消息的邻居节点vj按照自己的邻居矩阵m,计算vj的度,并将度的信息发送给vref;
24、s26:vref从返回的度里选出最大值,并将最大值所对应的节点作为下一个参考节点,并将选出的下一个参考节点通知给vref的所有邻居节点;
25、s27:将未被选为下一个参考节点的vref的所有邻居节点的标记值f更新为1;
26、s28:将新的参照节点作为vref并重复s23至s27,直到标记向量里的值均为1;
27、s29:以同步序列集合s中的元素以及其加入s的时间顺序为依据,构建最小化参照节点同步序列:
28、v1、v2、…、vh;
29、其中v1表示最早进入同步序列集合s的参照节点,vh表示最晚进入同步序列集合s的参照节点。
30、步骤s3具体包括以下步骤:
31、s31:针对最小化参照节点同步序列v1、v2、…、vh执行s32~s39,初始时设置r=1;
32、s32:节点vr向它的所有邻居节点广播第一时间同步消息,广播消息发出的时刻记作t1;
33、s33:每一个收到第一时间同步消息的节点vi记录自己接收到第一时间同步消息的时刻t2i;
34、s34:节点vrnext发送第二时间同步消息给vr,第二时间同步消息中包括第二时间同步消息发出的时刻t3和节点vrnext接收到第一时间同步消息的时刻t2rnext;其中rnext=r+1,vrnext表示最小化参照节点同步序列中vr的下一个参照节点;
35、s35:节点vr记录收到第二时间同步消息的时刻t4,按照下述公式计算时钟偏移o,并将o和t2rnext广播发送给vr的所有邻居节点:
36、
37、s36:收到o和t2rnext的任一邻居节点vi根据自己的t2i按照下述公式计算自己的时间偏差d:
38、di=t2rnext–t2i
39、并利用按照下述公式矫正自己的时钟:
40、tnewi=toldi+o+di;
41、其中toldi为该邻居节点vi的原始时钟时刻,tnewi为修正后的该邻居节点vi的时钟时刻;
42、s37:设置r=r+1;
43、s38:若r≤h,则重复s32至s37的循环,否则结束循环,完成节点时间同步。
44、本发明相对于现有技术的优点在于,通过预估邻居节点数量生成邻居矩阵来选择最小化参照节点同步序列,因为最小化参照节点同步序列的节点数目最小,进而使得节点间报文交换数量大大降低。同时,每个节点只存储各自局部邻居信息,利用稀疏矩阵进行存储,降低数据的存储量和计算开销,从而在保证节点间时钟同步的同时,大幅降低网络能耗。