本发明属于通信技术领域,具体涉及一种时间同步方法及装置。
背景技术:
在无线传感器网络中,节点处于无人维护、恶劣的环境中。由于传感器节点主要由电池进行供电,能耗问题成为了制约网络生存时间的重大问题。
网络中的节点要想高效地协同工作就必须进行时间同步。而传统的时间同步方法需要周期性进行全网同步会导致大量的能量消耗。由于传感器网络受到能量的限制,设计一种低功耗的时间同步方法成为了关键研究领域。
技术实现要素:
本发明旨在至少解决现有技术中存在的技术问题之一,提供一种时间同步方法及装置。
解决本发明技术问题所采用的技术方案是一种时间同步方法,包括:
接收各个源节点发送的交叉广播消息包,并记录接收到交叉广播信息包的时间;其中,所述交叉广播信息包包括:交叉广播消息包的生成时间;
根据接收到的各个源节点发送的所述交叉广播消息包的生成时间、所记录的接收到交叉广播信息包的时间,以及源节点的发送时延和自身节点的接收时延,计算自身节点与各个源节点的计时时间差;
根据自身节点的当前计时时间和所计算出的自身节点与各个源节点的计时时间差,计算出各个源节点的当前计时时间;
根据自身节点的当前计时时间所计算出的各个源节点的当前计时时间,计算得到同步时间;
根据计算的到的同步时间生成交叉广播信息包,以进行交叉广播信息包的传递。
优选的是,所述接收各个源节点发送的交叉广播消息包,并记录接收到交叉广播信息包的时间的步骤包括:
接收各个源节点的交叉广播信息包;
根据所接收到的交叉广播信息包的数据信息,判断该交叉广播信息包是否是首次被接收,若是则记录接收到该交叉广播信息的时间。
优选的是,所述根据接收到的各个源节点发送的所述交叉广播消息包的生成时间、所记录的接收到交叉广播信息包的时间,以及源节点的发送时延和自身节点的接收时延,计算自身节点与各个源节点的计时时间差的步骤包括:
根据接收到的各个源节点发送的所述交叉广播消息包的生成时间、所记录的接收到交叉广播信息包括的时间,以及源节点的发送时延和自身节点的接收时延,采用公式:
tbn=(tn+α+β)-tbn,计算出各个源节点的当前计时时间;
其中,tbn表示自身节点与第n个源节点的计时时间差;tn表示第n个源节点发送的所述交叉广播消息包的生成时间;α表示第n个源节点的发送时延;β表示自身节点的接收时延;tbn表示自身节点所记录的接收到的第n个发送节点发送的交叉广播信息包的时间,n为大于等于1的整数。
优选的是,所述根据自身节点的当前计时时间和所计算出的自身节点与各个源节点的计时时间差,计算出各个源节点的当前计时时间的步骤包括:
根据自身节点的当前计时时间和所计算出的自身节点与各个源节点的计时时间差,采用公式:
tn′=tb+tbn,计算出各个源节点的当前计时时间;
其中,tn′表示第n个源节点的当前计时时间;tb表示自身节点的当前计时时间;tbn表示自身节点与第n个源节点的计时时间差。
优选的是,所述根据自身节点的当前计时时间所计算出的各个源节点的当前计时时间,计算得到同步时间的步骤包括:
根据自身节点的当前计时时间所计算出的各个源节点的当前计时时间,采用公式:
其中,tb′表示同步时间;tn′表示第n个源节点的当前计时时间;tb表示自身节点的当前计时时间,k为源节点的个数。
解决本发明技术问题所采用的技术方案是一种时间同步装置,包括:
接收模块,用于接收各个源节点发送的交叉广播消息包,并记录接收到交叉广播信息包的时间;其中,所述交叉广播信息包包括:交叉广播消息包的生成时间;
第一计算模块,用于根据接收到的各个源节点发送的所述交叉广播消息包的生成时间、所记录的接收到交叉广播信息包的时间,以及源节点的发送时延和自身节点的接收时延,计算自身节点与各个源节点的计时时间差;
第二计算模块,用于根据自身节点的当前计时时间和所计算出的自身节点与各个源节点的计时时间差,计算出各个源节点的当前计时时间;
第三计算模块,用于根据自身节点的当前计时时间所计算出的各个源节点的当前计时时间,计算得到同步时间;
发送模块,用于根据计算的到的同步时间生成交叉广播信息包,以进行交叉广播信息包的传递。
优选的是,所述接收模块,具体用于接收各个源节点的交叉广播信息包;根据所接收到的交叉广播信息包的数据信息,判断该交叉广播信息包是否是首次被接收,若是则记录接收到该交叉广播信息的时间。
优选的是,所述第一计算模块,具体用于根据接收到的各个源节点发送的所述交叉广播消息包的生成时间、所记录的接收到交叉广播信息包括的时间,以及源节点的发送时延和自身节点的接收时延,采用公式:
tbn=(tn+α+β)-tbn,计算出各个源节点的当前计时时间;
其中,tbn表示自身节点与第n个源节点的计时时间差;tn表示第n个源节点发送的所述交叉广播消息包的生成时间;α表示第n个源节点的发送时延;β表示自身节点的接收时延;tbn表示自身节点所记录的接收到的第n个发送节点发送的交叉广播信息包的时间,n为大于等于1的整数。
优选的是,所述第二计算模块,具体用于根据自身节点的当前计时时间和所计算出的自身节点与各个源节点的计时时间差,采用公式:
tn′=tb+tbn,计算出各个源节点的当前计时时间;
其中,tn′表示第n个源节点的当前计时时间;tb表示自身节点的当前计时时间;tbn表示自身节点与第n个源节点的计时时间差。
优选的是,所述第三计算模块,具体用于根据自身节点的当前计时时间所计算出的各个源节点的当前计时时间,采用公式:
其中,tb′表示同步时间;tn′表示第n个源节点的当前计时时间;tb表示自身节点的当前计时时间,k为源节点的个数。
本发明具有如下有益效果:
本发明中的节点时间同步方法不需要参考节点和节点间逐级同步,消除了时间误差,当个别节点死亡时也不会影响网络整体的性能。
附图说明
图1为本发明的实施例1的时间同步方法的流程图;
图2为本发明的实施例2的时间同步装置的结构示意图。
具体实施方式
为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。
实施例1:
如图1所示,本实施例提供一种时间同步方法,其中本实施例中的执行主体为接收节点,源节点也即发送节点,提供一种接收节点进行时间同步的方法。本实施例中的时间同步方法具体包括如下步骤:
s1、接收各个源节点发送的交叉广播消息包,并记录接收到交叉广播信息包的时间;其中,所述交叉广播信息包包括:交叉广播消息包的生成时间。
具体的,首先各个源节点生成交叉广播消息包,该交叉广播信息包中包括源节点生成交叉广播消息包的时间;之后,各个源节点将所生成的交叉广播消息包发送给接收节点;最后,接收节点记录接收到各个源节点发送来的交叉广播消息包时间。
其中,在接收节点记录接收到各个源节点发送来的交叉广播消息包时间时,接收节点首先判断该交叉广播信息包是否是首次被接收,若是则记录接收到该交叉广播信息的时间,若不是则将该交叉广播信息包丢弃,也不会记录接收到该交叉广播信息的时间。
s2、根据接收到的各个源节点发送的所述交叉广播消息包的生成时间、所记录的接收到交叉广播信息包的时间,以及源节点的发送时延和自身节点的接收时延,计算自身节点与各个源节点的计时时间差。
具体的,在该步骤中根据接收到的各个源节点发送的所述交叉广播消息包的生成时间、所记录的接收到交叉广播信息包括的时间,以及源节点的发送时延和自身节点的接收时延,采用公式:tbn=(tn+α+β)-tbn,计算出各个源节点的当前计时时间。
其中,tbn表示自身节点与第n个源节点的计时时间差;tn表示第n个源节点发送的所述交叉广播消息包的生成时间;α表示第n个源节点的发送时延;β表示自身节点的接收时延;tbn表示自身节点所记录的接收到的第n个发送节点发送的交叉广播信息包的时间,n为大于等于1的整数。
为了更清楚步骤s2的实现,以下以源节点为两个,分别记作节点a和节点c;发送节点用节点b表示为例,对步骤s2进行说明。
节点a和节点c的生成广播数据包的计时分别为ta和tc,节点b接收到节点a的广播消息包时记录接收计时tba,接收到节点c的广播消息包时记录接收计时tbc,数据包在发送端的延时α,接收端延时β;节点b与节点a和c的计时时间差分别为:
tba=(ta+α+β)-tba;
tbc=(tc+α+β)-tbc。
s3、根据自身节点的当前计时时间和所计算出的自身节点与各个源节点的计时时间差,计算出各个源节点的当前计时时间。
具体的,在该步骤中根据自身节点的当前计时时间和所计算出的自身节点与各个源节点的计时时间差,采用公式:tn′=tb+tbn,计算出各个源节点的当前计时时间。
其中,tn′表示第n个源节点的当前计时时间;tb表示自身节点的当前计时时间;tbn表示自身节点与第n个源节点的计时时间差。
为了更清楚步骤s2的实现,以下以源节点为两个,分别记作节点a和节点c;发送节点用节点b表示为例,在步骤s2的基础上进行说明。
其中,对于节点a的当前计时时间具体可以通过公式:ta'=tb+tba计算得到;对于节点c的当前计时时间具体可以通过公式:tc'=tb+tbc计算得到。
s4、根据自身节点的当前计时时间所计算出的各个源节点的当前计时时间,计算得到同步时间。
具体的,在该步骤中根据自身节点的当前计时时间所计算出的各个源节点的当前计时时间,采用公式:
其中,tb′表示同步时间;tn′表示第n个源节点的当前计时时间;tb表示自身节点的当前计时时间,k为源节点的个数。
为了更清楚步骤s2的实现,以下以源节点为两个,分别记作节点a和节点c;发送节点用节点b表示为例,在步骤s3的基础上进行说明。
其中,可以采用该公式
s5、根据计算的到的同步时间生成交叉广播信息包,以进行交叉广播信息包的传递。
本实施例中的节点时间同步方法不需要参考节点和节点间逐级同步,消除了时间误差,当个别节点死亡时也不会影响网络整体的性能。
实施例2:
如图2所示,本实施例提供一种时间同步装置,该时间同步装置可以采用实施例1中时间同步方法。该时间同步装置包括:接收模块、第一计算模块、第二计算模块、第三计算模块、发送模块。
其中,接收模块用于接收各个源节点发送的交叉广播消息包,并记录接收到交叉广播信息包的时间;其中,所述交叉广播信息包包括:交叉广播消息包的生成时间。
具体的,接收模块具体用于接收各个源节点的交叉广播信息包;根据所接收到的交叉广播信息包的数据信息,判断该交叉广播信息包是否是首次被接收,若是则记录接收到该交叉广播信息的时间。
第一计算模块用于根据接收到的各个源节点发送的所述交叉广播消息包的生成时间、所记录的接收到交叉广播信息包的时间,以及源节点的发送时延和自身节点的接收时延,计算自身节点与各个源节点的计时时间差。
第一计算模块具体用于根据接收到的各个源节点发送的所述交叉广播消息包的生成时间、所记录的接收到交叉广播信息包括的时间,以及源节点的发送时延和自身节点的接收时延,采用公式:
tbn=(tn+α+β)-tbn,计算出各个源节点的当前计时时间;
其中,tbn表示自身节点与第n个源节点的计时时间差;tn表示第n个源节点发送的所述交叉广播消息包的生成时间;α表示第n个源节点的发送时延;β表示自身节点的接收时延;tbn表示自身节点所记录的接收到的第n个发送节点发送的交叉广播信息包的时间,n为大于等于1的整数。
第二计算模块,用于根据自身节点的当前计时时间和所计算出的自身节点与各个源节点的计时时间差,计算出各个源节点的当前计时时间。
第二计算模块具体用于根据自身节点的当前计时时间和所计算出的自身节点与各个源节点的计时时间差,采用公式:
tn′=tb+tbn,计算出各个源节点的当前计时时间;
其中,tn′表示第n个源节点的当前计时时间;tb表示自身节点的当前计时时间;tbn表示自身节点与第n个源节点的计时时间差。
第三计算模块用于根据自身节点的当前计时时间所计算出的各个源节点的当前计时时间,计算得到同步时间。
第三计算模块具体用于根据自身节点的当前计时时间所计算出的各个源节点的当前计时时间,采用公式:
其中,tb′表示同步时间;tn′表示第n个源节点的当前计时时间;tb表示自身节点的当前计时时间,k为源节点的个数。
发送模块,用于根据计算的到的同步时间生成交叉广播信息包,以进行交叉广播信息包的传递。
本实施例中的节点时间同步装置不需要参考节点和节点间逐级同步,消除了时间误差,当个别节点死亡时也不会影响网络整体的性能。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。