一种WSN簇型拓扑的链同步时间同步方法与流程

文档序号:16131926发布日期:2018-12-01 00:25阅读:348来源:国知局

本发明涉及无线通信以及传感器网络领域,具体涉及一种wsn簇型拓扑的链同步时间同步方法。

背景技术

随着微机电系统飞速发展,无线传感器网络引起了全世界范围的重点关注,而时间同步技术是无线传感器网络的重要支撑技术。传统网络中提出了多种时间同步机制,如ntp(networktimeprotocol)、gps等,但这些成熟的时间同步技术很难直接向无线传感器网络进行移植,因为ntp协议是针对静态网络的,而传感器网络是动态网络,并且ntp协议需要频繁的交换消息来不断校准时钟频率偏差带来的误差,能量是不受限的,而传感器网络多数节点携带少量的能量,属于低能耗的网络;gps对环境的要求比较苛刻并且价格昂贵,而无线传感器节点低成本的要求很少会集成gps模块。因此需要专门研究适用于无线传感器网络的时间同步协议。

目前根据不同的需求,无线传感器网络时间同步算法大致可以分为三类:基于发送者-接收者的时间同步机制、基于接收者-接收者的时间同步机制、基于延迟测量的时间同步机制。这三种机制典型的代表算法分别是rbs(referencebroadcastsynchronization)、dmts(delaymeasurementtimesynchronization)、tpsn(timing-syncprotocolforsensornetworks),基于接收者-接收者的时间同步机制的算法如rbs算法,此算法计算量和同步开销较大,适用于规模相对较小的传感器网络。基于延迟测量时间同步机制的算法如dmts算法,此算法没有考虑传播延迟的影响,并且没有对时钟漂移进行补偿,同步精度不高。而基于发送者-接收者时间同步机制的算法之一的tpsn是一种容易实施且同步精度较高的时间同步算法,适用于高精度需求的场所。

但是基于发送者-接收者时间同步机制的算法会出现随着节点层次数增加,累积误差增加的问题,这对于大规模的无线传感器网络来说非常不利,会严重影响同步精度。



技术实现要素:

本发明的目的在于提供一种wsn簇型拓扑的链同步时间同步方法,可有效弥补随着节点层次数增加,累积误差增加的不足,从而提高同步精度。

为实现上述目的,本发明采用了以下技术方案:

一种wsn簇型拓扑的链同步时间同步方法,其特征在于,包括以下步骤:

(1)设计分簇算法应用于层次发现阶段,运行层次发现阶段构建簇型拓扑网络,设置不同的簇深度参数值,形成不同的簇型拓扑网络;

(2)采用链同步的方法实现簇头间及簇头与簇成员间的同步,若簇头节点间同步,则无条件进行同步;若簇成员节点同步到簇头节点,且当此路径上的中间节点正处于同步状态,则回复拒绝其它节点同步请求的消息;

(3)网络中的相邻两个传感器节点均采用双向信息交换机制计算时钟偏差,完成同步;

(4)计算多组全网同步误差之和,得出最优同步值。

进一步的,所述步骤(1)中,设计分簇算法应用于层次发现阶段,具体包括以下步骤:

(11)选择一个节点为根节点并分配层次level为0,通过根节点启动层次发现阶段;

(12)设置簇深度,即簇中节点层次level的最大值maxlevelinclusters;

(13)根节点广播层次发现数据包,该数据包包括节点的id、层次level和簇层次clusterlevel,每个接收到该数据包的节点将自己的层次的level设为收到数据包的层次level加1,当节点的层次level小于最大值maxlevelinclusters,节点的簇层次clusterlevel不变,否则节点的层次level重置为0,节点的簇层次clusterlevel加1,并设置层次level为0的节点为簇头节点,设置了层次level的节点广播包含自己id、层次level和簇层次clusterlevel的新的层次发现数据包;

(14)重复上述过程,直到网络中的节点都有自己的层次,形成簇型拓扑网络,同一个簇有相同的簇层次clusterlevel,除簇头节点外,其余节点均为簇成员节点。

进一步的,所述层次level是指网络中的节点距根节点的跳数,簇层次clusterlevel指的是节点的簇号。

进一步的,所述步骤(2)中,采用链同步的方法实现簇头间及簇头与簇成员间的同步,具体包括以下步骤:

(21)当请求节点需要同步到目的节点时,向其父节点发送请求同步数据包,直到消息到达目的节点;

(32)目的节点发送应答消息沿反向路径给请求节点,对于请求节点和目的节点,将包含本节点收发数据包时间信息的数据包发送给其它节点,对于中间节点,修改请求包的发送时间信息后进行发送或转发。

进一步的,步骤(32)中,对于中间节点,修改请求包的发送时间信息,具体为:中间节点收到请求同步数据包时,首先存储请求节点的地址和发送时间,更改包中请求者的发送时间为此中间节点的发送时间,然后再把包转发给父节点。

进一步的,所述步骤(3)中,采用双向信息交换机制来计算时钟偏差,具体为:

(41)请求节点向同步节点发送syncpulsepacket同步请求数据包,该数据包包含了请求节点的层次level和发送时间t1;

(42)同步节点接收请求节点发送的数据包,并记录接收时刻为t2;

(43)在相对时间偏移和包传输延迟在同步期间维持不变的情况下,同步节点发送syncackpacket同步应答数据包给请求节点,并记录发送时刻为t3,该数据包包含了同步节点的层次level和时间戳t1、t2、t3;

(44)请求节点接收同步节点发送的syncackpacket同步应答数据包,并记录接收时刻t4;

(45)请求节点通过以下公式计算出时间差并修正自己的时间,完成同步:

其中,δ表示请求节点与发送节点间的相对时间偏移,d表示数据包传输延迟时间。且假设相对时间偏移和包传输延迟在同步期间维持不变。

由上述技术方案可知,本发明通过将网络分簇且采用链同步的方式实现簇头间以及簇头与簇成员间的同步,相比于不分簇而是采用孩子节点同步到父节点的同步方式的算法,可有效弥补随着节点层次数增加,累积误差增加的不足,从而提高同步精度。同时本发明采用设置优先级机制同步,即若是簇头节点间同步,则无条件进行同步,若是簇成员节点同步到簇头节点,当此路径上的中间节点正处于同步状态,则回复拒绝其它节点同步请求的消息,有效解决了中间节点消息开销大而导致能量过早耗尽造成的网络生命周期短的问题。此外,本发明得出簇深度与网络总层数满足簇深度为网络总层数的一半取整时,同步效果最佳。

附图说明

图1是本发明的方法流程图;

图2为本发明实例中分簇算法的程序流程图;

图3是本发明的簇型网络拓扑结构示意图;

图4是本发明的链同步的同步过程示意图;

图5是本发明的双向信息交换示意图。

具体实施方式

下面结合附图对本发明做进一步说明:

本实施例的一种wsn簇型拓扑的链同步时间同步方法,具体步骤如下:

s1:设计分簇方法应用于层次发现阶段,运行层次发现阶段形成簇型拓扑网络;

如图2所示为分簇算法的程序流程图,具体过程如下所述:

s11:选择一个节点为根节点并分配level为0,根节点启动层次发现阶段;

s12:设置簇深度,即簇中节点level的最大值maxlevelinclusters;

s13:根节点广播层次发现数据包,此数据包包含了节点的id、层次level和簇层次clusterlevel,每个接收到此数据包的节点将自己的level设为收到数据包的level加1,当节点的level小于maxlevelinclusters,节点的clusterlevel不变,否则节点的level重置为0,节点的clusterlevel加1,另外设置level为0的节点为簇头节点,设置了level的节点广播包含自己id、level和簇层次clusterlevel的新的层次发现数据包,此过程持续到网络中的节点都有自己的层次;若网络总层数为l,则簇深度可以设置2~l-1。图3是设置簇深度为3时的一种簇型拓扑网络,此网络总层数level为14,同一水平位置的节点有相同的level,图中一个圈里的节点属于同一个簇,同一个簇有相同的clusterlevel,每个簇只有0、1、2三个level,设置其它的簇深度值将得到不同的簇型拓扑网络。

s2:采用链同步的方法实现簇头间及簇头与簇成员间的同步,若簇头节点间同步,则无条件进行同步;若簇成员节点同步到簇头节点,且当此路径上的中间节点正处于同步状态,则回复拒绝其它节点同步请求的消息;

当请求节点需要同步到目的节点时,发送请求同步数据包给它的父节点,这条路径上的其它节点也这样做,直到消息到达目的节点,目的节点发送应答消息沿反向路径给请求同步的节点,对于请求节点和目的节点,只需要将包含本节点收发数据包时间信息的数据包发送给其它节点,对于中间节点,需要修改请求包的发送时间信息再进行发送或转发;中间节点收到请求同步数据包时,首先存储请求节点的地址和发送时间,更改包中请求者的发送时间为此中间节点的发送时间,然后再把包转发给父节点;此链同步方法可以应用于任何一个节点,但是若节点正在参与链同步过程而不能及时回复另一个节点的链同步请求将会造成同步误差增加,同时由于中间节点不断参与同步过程消息开销大而导致能量过早耗尽造成的网络生命周期短,所以算法采用优先级机制,若是簇头节点间同步,则无条件进行同步,若是簇成员节点同步到簇头节点,当此路径上的中间节点正处于同步状态,则回复拒绝其它节点同步请求的消息。

图4描述了一种简单的链同步的同步过程,图中节点i是源节点,节点j是中间节点,节点k是目的节点,当节点i需要同步时,发送包含节点i时间的请求数据包给节点j,节点j转发数据包给节点k,转发之前,节点j需要存储请求者节点i的地址和发送时间,更改包中请求者的发送时间为节点j的发送时间,然后再把包转发给节点k,当节点k收到转发包时,就如同收到来自节点j的包,节点k将包含自己时间的数据包发送给节点j,节点j收到此数据包时更新自己的时间,然后节点j更改数据包中请求者的发送时间为原来存储的节点i的发送时间并将包含自己时间信息的数据包发送给节点i,节点i利用此信息更新自己的时间完成同步。

s3:采用双向信息交换机制来计算时钟偏差;

如图5所示,节点a要和节点b同步,图中t1、t4分别是由节点a的本地时钟记录的数据包的发送、接收时间,t2、t3分别是由节点b的本地时钟记录的数据包的发送、接收时间,4个时间戳都是从mac层获取的,具体过程为:

s31:节点a发送一个syncpulsepacket给节点b,此数据包包含了节点a的level和发送时间t1;

s32:同步节点在t2时刻收到此数据包,设δ是两节点的相对时间偏移,d是包传输延迟,且假设相对时间偏移和包传输延迟在同步期间维持不变,则t2=t1+δ+d;

s33:在t3时刻,节点b发送syncackpacket数据包给节点a,此数据包包含了节点b的level和时间戳t1、t2、t3;

s34:在t4时刻节点a收到此数据包;

s35:最后,节点a通过以下公式计算出时间差并修正自己的时间,完成同步。

s4:改变种子值及簇深度参数,产生不同的拓扑网络并运行算法,多次进行实验,统计同步结果;

由于无线传感器网络节点都是随机布置的,为确保算法的通用性,通过设置不同的种子值,随机生成不同结构的网络,对簇型拓扑的链同步时间同步方法进行了测试;其中种子值指的是所采用的随机数发生器srand(unsignedintseed)函数中的seed,通过改变seed值,改变网络中节点的分布状况及连接情况而簇深度参数指的是簇中节点level的最大值(maxlevelinclusters),通过设置不同的簇深度值,形成不同的簇型拓扑网络,以得出簇深度的不同对同步效果的影响,通过大量实验后,随机挑选了100个不同网络结构的实验结果进行性能分析,得出当设置簇深度为网络总层数的一半取整时,同步效果最佳。

以上所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案作出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1