一种多跳低开销的分布式时钟同步方法
技术领域
本发明涉及一种无线传感器网络的分布式时钟同步技术,尤其涉及一种多跳低开销的分布式时钟同步方法。
背景技术
传感器网络系统融合多种技术,其中时间同步技术是无线传感器网络(WirelessSensor Network,WSN)稳定运行的重要基础,给很多技术应用如时分多址接入、标记数据采集时间、节能监测定位、目标追踪、休眠调度等提供了必要的支持。
2002年,美国加州大学的教授提出了适用于无线传感器网络的时间同步协议:参考广播同步协议(Reference Broadcast Synchronization, RBS),这是第一个系统的解决了WSN时间同步问题的协议。但是RBS算法在解决多跳同步问题过程中,区域划分是一个难点,存在多样性。它的基本要求:区域中一个节点能够直接与区域内其他所有节点进行通信,并且区域之间有一定的重合,还要求beacon分组的发送节点被分入另外的区域,从而使两个区域内的节点同步。2004年,PALCHAUDHUR等人提出Adaptive RBS算法,它是在RBS算法的基础上使用概率统计的方法对RBS算法的广播频率和广播数量进行了改善。目前,大部分学者都是在原有算法的基础上,提出一些优化算法,使网络系统的时间同步更加完善。
本发明针对多跳RBS算法没有合适的网络拓扑实现时间同步以及同步开销多的问题,构建环形网络模型,提出RBS环形算法(References Broadcast RingSynchronization,RBRS),实现小型网络的多跳时间同步。
发明内容
本发明提供一种多跳低开销的分布式时钟同步方法,针对多跳RBS算法没有合适的网络拓扑实现全网的时间同步以及同步开销大的问题,采用广播的方式发送数据包并且可以有效的降低同步开销,解决现有技术中存在的问题。
本发明的目的是提供一种多跳低开销的分布式时钟同步方法,包括以下步骤:
步骤1:建立无线传感器网络区域;
步骤2:步骤1的无线传感器网络进行区域划分并,形成网络拓扑;
步骤3:单跳区域内的节点同步,之后利用已同步的节点进行区域之间同步,最后实现全网的同步。
进一步的,所述步骤 1包括 :
步骤1.1:首先建立一个am*am的正方形区域,以该区域中心为圆心,半径为1/4 am画一个圆;
步骤1.2:在am*am区域内除去圆即为无线传感器网络区域。在无线传感器网络区域内均匀随机布置网络节点。
进一步的,所述步骤 2 的环形网络拓扑的区域划分包括 :
步骤2.1:在步骤1无线传感器网络区域内先画出一个区域A,在区域A中选取一个节点A.0为发送节点,A.0感知其直接通信的节点,即为A区域中的节点;
步骤2.2:在步骤1无线传感器网络区域内画一个B区域。B区域与A区域有一部分重合,在A区域中选取一个节点A.3作为B区域的发送节点B.0,在A区域中选取一个节点A.4作为B区域的时间基准节点B.1;B.0为发送节点,感知其直接通信的节点,即为B区域中的节点;
步骤:2.3:以此类推,当划分最后一个区域时,它的发送节点和时间基准节点为上一个区域已同步的节点,同时选取A区域中的发送节点A.0作为最后一个区域的子节点,最后便形成一个环形的网络拓扑图。
进一步的,所述步骤 3的全网时间同步包括 :
步骤3.1:A区域内,发送节点A.0向其它节点广播beacon分组,所有A区域中的节点接收到beacon分组后,记录到达的时间戳后进入等待状态;
步骤3.2:选取区域A中的一个节点A.1,将其的到达的时间戳发送给A.0节点后进入等待状态;
步骤3.3:A.0节点接收到A.1的时间戳后再次使用广播的方式发送给A区域中其余的节点,这个过程重复m次;
步骤3.4:选取区域A中的一个节点A.2,假设对A.1,A.2进行同步,节点A.1为时间基准节点,发送节点A.0以1μs的时间周期向A.1,A.2发送同步分组,共发送n个同步分组,发送时间分别为t01、t02、t03、…t0n;
步骤3.5:区域A中的两节点A.1,A.2分别记录下同步分组达到的时间戳;
步骤3.6:设节点A.1记录第m个同步分组到达的时间戳为t1m,对应的A.2节点为t2m;
步骤:3.7:和的关系如式(1)所示,,其中a12为节点A.1相对于节点A.2的频率偏差;b12为两个节点的本地时钟初始相位偏差,就是两节点接受同一个分组时的接收时间偏差;A.1节点和A.2节点在n个时刻内分别记录下了同步分组到达的时间戳,并组成了n对时间对,这n对时间对可以用坐标的方式显示出来,可以得出这两个变量之间有一个线性关系;
步骤3.8:以t1m轴方向上的误差为,使用最小平方的线性回归方法进行线性拟合,直线关系式代表两个节点的时钟偏差,直线的斜率就是两个节点的频率偏差,在t1m轴上的交点就是两个节点的相位偏差;
步骤3.9:可以求得其结果如式(2)、(3)所示,
其中是A.1所有接收时间戳的平均值,是A.2所有接收时间戳的平均值;
这样便可采用数理统计的方法来维持两节点之间的时间同步;
步骤3.10:A.2节点收到信息后,根据式(1)校正本地时钟;A区域内其余子节点同理,从而A区域中的节点除A.0外达到同步;
步骤3.11:B.0节点为A区域中已经同步的节点广播beacon分组,同步过程同A区域,最后实现B区域同A区域的同步;
步骤:3.12:最后一个区域和前面已同步的区域同步,同时A.0作为最后一个区域的子节点和上一个区域已同步的节点同步,最终实现全网的时间同步。
本发明的有益效果:本发明在RBS环形网络拓扑下,利用广播的方式发送数据包;在误差没有变大的情况下,降低了同步开销收敛时间比较快,并且能够实现全网的时间同步;RBS环形算法具有合适的网络拓扑,适用于大多数小型网络的时间同步。
附图说明
图1为本发明多跳低开销的分布式时钟同步方法的区域划分流程图 。
图2为本发明多跳低开销的分布式时钟同步方法的网络拓扑图。
图3为本发明多跳低开销的分布式时钟同步方法的单跳同步流程图 。
具体实施方式
为了加深对本发明的理解,下面将结合实施例对本发明作进一步详述,该实施例仅用于解释本发明,并不构成对本发明保护范围的限定。
如图1、2和3所示,本实施例提供一种多跳低开销的分布式时钟同步方法:包括以下步骤:
步骤1:建立无线传感器网络区域并对无线传感器网络区域内节点进行均匀随机布置;
步骤2:对无线传感器网络区域进行区域划分,形成网络拓扑;
步骤3:对单跳区域内的节点进行同步;
步骤4:对多跳区域内的节点进行同步,最后实现全网的同步。
步骤1包括有以下步骤:
步骤1.1:首先选取一个am*am的区域;
步骤1.2:以步骤1.1的区域中心为圆心,半径为1/4am画一个圆;
步骤1.3:在am*am区域内除去圆即为无线传感器网络区域,在无线传感器网络区域内均匀随机布置网络节点。
步骤2具体为:
步骤2.1:先画出一个区域A,以区域A中的一个节点A.0为发送节点,A.0感知其直接通信的节点,也就是A区域中的节点;
步骤2.2:画出一个区域B与A区域部分重合,选择A区域中一个节点A.3作为B区域的发送节点B.0;选择A区域中的一个节点A.4作为B区域的时间基准节点B.1,以B.0为发送节点,感知其直接通信的节点,也就是B区域中的节点;
步骤2.3:以此类推,当划分最后一个区域时,它的发送节点和时间基准节点为上一个区域已同步的节点,同时将A区域中的发送节点A.0作为最后一个区域的子节点,最后形成一个环形的网络拓扑图。
对单跳区域内的节点进行同步包括:
步骤3.1:进行A.0节点广播beacon分组,所有A区域中的节点接收到beacon分组后,记录到达的时间后进入等待状态;
步骤3.2:区域A中的节点A.1将自己的到达时间发送给A.0节点后进入等待状态;
步骤3.3:A.0节点接收到A.1的时间戳通告报文,便再次使用广播的方式发送给A区域中其余的节点,这个过程重复m次;
步骤3.4:对区域A中的两节点A.1,A.2进行同步,节点A.1为时间基准节点,发送节点A.0以1μs的时间周期发送同步分组,共发送n个同步分组,发送时间分别为t01、t02、t03、…t0n;
步骤3.5:区域A中的两节点A.1,A.2分别记录下同步分组达到的时间戳;
步骤3.6:设节点A.1记录第m个同步分组到达的时间戳为t1m,对应的A.2节点为t2m;
步骤:3.7:它们的关系如式(1)所示,,a12为节点A.1相对于节点A.2的频率偏差;b12为两个节点的本地时钟初始相位偏差,就是两节点接受同一个分组时的接收时间偏差;A.1节点和A.2节点在n个时刻内分别记录下了同步分组到达的时间戳,并组成了n对时间对,这n对时间对可以用坐标的方式显示出来,可以得出这两个变量之间有一个线性关系;
步骤3.8:以t1m轴方向上的误差为,使用最小平方的线性回归方法进行线性拟合,直线关系式代表两个节点的时钟偏差,直线的斜率就是两个节点的频率偏差,在t1m轴上的交点就是两个节点的相位偏差;
步骤3.9:可以求得其结果如式(2)、(3)所示,
其中是A.1所有接收时间戳的平均值,是A.2所有接收时间戳的平均值,用数理统计的方法能够维持两节点之间的时间同步;
步骤3.10:A.2节点收到信息后,根据式(1)校正本地时钟。其余子节点同理;从而A区域中的节点除A.0外达到同步。
步骤4包括:
步骤4.1:以区域B中的节点 B.0为A区域中已经同步的节点广播beacon分组,同步过程同A区域的同步过程,实现B区域同A区域的同步;
步骤4.2:最后一个区域和前面已同步的区域同步,同时A.0作为最后一个区域的子节点和上一个区域已同步的节点同步,最终实现全网的时间同步。
在RBS算法中,完成单跳区域内x个节点同步。
接收节点在接收到同一个beacon分组后需要相互交换信息,如果彼此直接通信,时间基准节点需要发送x-1个消息,而其余节点需要发送一个消息,报文发送的次数为2(x-1)。
如果不能直接通信,则需要通过发送节点发送消息,发送的次数增大;若完成单条网络同步发送需要发送y个beacon分组,那么RBS算法需要发送的消息次数最少是2(x-1)y,其复杂度为O(xy)。
扩展到多跳范围,设其余子节点距全网时间基准节点的最大跳数为k跳。使用RBS算法实现同步,其复杂度为O(xyk)。
RBS环形算法中,完成单跳区域内x个节点同步。
发送节点发送同步分组,时间基准节点主动通知时间戳信息,并由发送节点广播出去;只需发送3次消息;若完成单条网络同步发送需要发送y个beacon分组,RBS环形算法需要发送3y次消息,复杂度为O(y)。
扩展到多跳范围, RBS环形算法发送消息次数为3yk,其复杂度为O(yk),可见RBS环形算法明显比RBS算法减少了同步开销。
综上所述,该方法能够实现系统的多跳低开销的分布式时钟同步,本发明在RBS环形网络拓扑下,利用广播的方式发送数据包,在误差没有变大的情况下,降低了同步开销收敛时间比较快,并且能够实现全网的时间同步,RBS环形算法具有合适的网络拓扑,适用于大多数小型网络的时间同步。