背景技术
如图1所示,无线传感网通常包括传感器节点、汇聚节点和管理节点。大量传感器节点随机部署在监测区域内部或附近,能够通过自组织方式构成网络。其中主要组成部分是集成有传感器模块、处理器模块、无线通信模块和能量供应模块的传感器节点,各传感器节点通过协议自组成一个分布式网络,再将采集来的数据通过优化后经无线电波传输给信息处理中心。
传感器节点在实现各种网络协议和应用系统时,也存在一些现实约束,例如电源能量有限,传感器节点体积微小,通常携带能量十分有限的电池。由于节点分布区域广,环境复杂,靠更换电池来补充节电能源是不现实的。如何高效使用能量来最大化网络生命周期是传感器网络面临的首要挑战。
一般来说,无线传感网是不对称性的结构,即汇聚节点可以被持续供电工作,无需考虑功耗问题,而在传感器节点中,由电源模块为节点提供电量,受节点体积限制,传感器节点的能量非常有限。因此传感器节点,以低功耗、高精度为主要要求,采取一系列有效的措施来节省能量。
在传感器节点中,无线通信模块存在发送、接收、空闲和休眠四种状态。无线通信模块在空闲状态一直监听无线信道的使用情况,检查是否有数据发送给自己,而在休眠状态则关闭通信模块。而无线通信模块在发送状态的能量消耗最大,在空闲状态和接收状态的能量消耗接近,略少于发送状态的能量消耗,在休眠状态的能量消耗最少。为了降低传感器节点的功耗,尽可能让传感器节点在没有业务需求时进入休眠状态,即传感器节点关闭除实时时钟模块的所有模块单元。由于传感器节点进入了休眠状态后,只有实时时钟模块在运行,而实时时钟模块内部的晶体振荡器受温度等因素事物影响较大,造成实时时钟精度不高,进而导致传感器节点不能准确地在预设的时间被自动唤醒,无法完成与汇聚节点的通信业务。为了解决这个问题,传感器节点必须进行实时时钟校准使之与汇聚节点的时钟保持一致。
目前,传感器的实时时钟校准一般都是以实时时钟模块内部的晶体振荡器受温度的影响为前提,计算晶体振荡器受温度影响的校准参数,由校准参数进行实时时钟校准的。大体可以分为两种方式:
一种是由主控制器经过测量计算得到实时时钟的校准值。不需要另置硬件电路,只需在原有传感器的基础上,增加主控制器的测算实时时钟校准参数的功能,便可实现实时时钟在全温度范围内都具有很好的精度,但它是以增加触发CPU外部中断次数为代价的,系统功耗过大。
另一种是采用内置实时时钟校准硬件电路,通过硬件电路校准实时时钟的校准参数。通过硬件电路计算实时时钟的校准参数,从而避免触发CPU工作,减少CPU的外部中断次数,节省系统的功耗。但是,它是以增加传感器的价格和体积的为代价的。
除此之外,上述两种方法共同的缺点是,对于批量生产的传感器进行实时时钟校准过于耗费人力、物力。而且上述方法基本上只考虑了温度对实时时钟的影响,不能充分考虑传感器所处环境的各种其它因素,容易导致已校对好的实时时钟发生错误,无法进行实时时钟校准。
发明内容
针对现有技术的不足,本发明所要解决的首要技术问题在于提供一种用于无线传感网的实时时钟同步校准方法。
本发明所要解决的另一技术问题在于提供相应的传感器。
为实现上述的发明目的,本发明采用下述技术方案:
一种用于无线传感网的实时时钟同步校准方法,所述无线传感网包括多个传感器和汇聚节点,所述传感器在通信时间点开始通信,包括如下步骤:
所述传感器在所述通信时间点之前,接收所述汇聚节点的广播帧进行实时时钟校准。
其中较优地,所述传感器进行所述实时时钟校准时,分为粗校准阶段和精校准阶段,
在粗校准阶段,所述传感器以第一时间间隔进行所述实时时钟校准,
在精校准阶段,所述传感器以第二时间间隔进行所述实时时钟校准,
所述第一时间间隔大于所述第二时间间隔。
其中较优地,所述第一时间间隔为最大校准周期,是所述传感器节点的实时时钟精度以及所述广播帧的发送周期的函数。
其中较优地,所述第二时间间隔为休眠时长,是所述传感器节点的实时时钟精度的函数。
其中较优地,在粗校准阶段,所述传感器从开始时间起,以最大校准周期自动唤醒并校准所述传感器的实时时钟,直至距离所述通信时间点的时间间隔不大于所述最大校准周期。
其中较优地,在精校准阶段,所述传感器以休眠时长进行休眠,直至距离所述通信时间点的时间间隔不大于最短传输时长,
所述最短传输时长为所述汇聚节点首先向所述传感器发送的数据包的传输时长。
其中较优地,在所述精校准阶段,所述传感器在距离所述通信时间点的时间间隔不大于所述最短传输时长的情况下,等待所述通信时间点的到来。
其中较优地,所述传感器根据所述广播帧校准所述传感器的实时时钟时,选取在所述最大校准周期的范围内的值。
一种用于实现上述实时时钟同步校准方法的传感器,用在包括汇聚节点和多个传感器的无线传感网中,其中:
所述传感器在进行通信之前,接收来自所述汇聚节点的广播帧进行实时时钟校准。
与现有技术相比较,本发明在传感器节点没有业务需求的时间段内使其进入休眠状态,然后通过增加有限次的自动唤醒来实现传感器节点的实时时钟与汇聚节点的本地同步校准,在兼顾时钟同步校准的同时也实现了低功耗。
具体实施方式
下面结合附图和具体实施例对本发明的技术内容展开进一步的说明。
本发明提出了一种基于无线传感网中汇聚节点和传感器节点的实时时钟同步校准方法。该方法摒弃了以往直接对传感器节点内部实时时钟模块的晶体振荡器做温度参数补偿的方法,而是传感器节点根据汇聚节点的本地时钟来调整自己的实时时钟,以便动态地保持传感器节点和汇聚节点的时钟保持一致。
假设在T0时刻传感器节点的实时时钟和汇聚节点的时钟是同步的,且传感器节点与汇聚节点需要预设在经过时间Ts后时间点Tf进行通信。如果传感器节点一直处于工作状态,虽能保证在时间Tf与汇聚节点成功进行通信,但是传感器节点的功耗过大;由于传感器节点在T0—Tf时间段内没有业务需求,如果传感器节点在T0—Tf进入休眠状态,虽然可以节省功耗,但是由于处于休眠状态的传感器节点关闭了除了实时时钟模块外其他的模块,而实时时钟模块的时钟受温度等各种因素的影响产生了时钟偏差,致使传感器节点不能与汇聚节点的本地时钟保持一致,进而会导致传感器节点和汇聚节点不能在预设的时间点Tf进行通信。所以,传感器节点如何在保证低功耗的情况下,又能与汇聚节点在预设的时间成功进行通信是本发明要解决的问题。
假设汇聚节点与传感器节点预设以Ts周期在时间点Tf进行通信,且在初始时刻T0传感器节点的实时时钟和汇聚节点的本地时钟是同步的。假设汇聚节点和传感器节点进行通信时,汇聚节点首先向传感器节点发送的数据包的最短传输时长为L。
在本发明中,传感器节点和汇聚节点进行时钟同步校准时,是由汇聚节点向传感器节点周期发送广播帧,此广播帧的时间戳中包含此广播帧的发送时间t,以便传感器节点根据接收到的广播帧校准自己的实时时钟。
当汇聚节点向传感器节点周期发送广播帧时,为了节省数据开销,广播帧的时间戳中所包含的发送时间可能表示范围很小,例如只有时分秒,而没有年月日,以至于当传感器节点与汇聚节点预设的时间周期Ts很大时,如果传感器节点还是以Ts为周期进行实时时钟校准,很可能传感器节点的实时时钟和汇聚节点的本地时钟的偏差值已经超过了汇聚节点发送广播帧的时间戳中的时间范围。例如传感器节点收到来自汇聚节点的广播帧的发送时间是2015年2月15日12时58分39秒234毫秒,而传感器节点的实时时钟比汇聚节点的本地时钟的慢了一天整,但是汇聚节点发送的广播帧的时间戳中只有12时58分39秒234毫秒,那么传感器节点就会错误的认为此时汇聚节点的本地时钟是2015年2月14日12时58分39秒234毫秒。
所以为了避免这类问题的发生,首先要确定传感器节点的实时时钟同步校准的最大校准周期为Tm。
假设汇聚节点以Td为周期向传感器节点发送广播帧,而广播帧的时间戳只可存放nbit,传感器节点实时时钟的精度标称值为△(其中△为正数)。为了保证传感器节点可以根据汇聚节点发来的广播帧正确无误的判定出汇聚节点的本地时钟时间,需满足
m*△≤1/2[(2n-1)*Td](1)
为了尽量减少传感器节点自动唤醒的次数,Tm应取最大值。
下面结合图2说明本发明所提供的实时时钟同步校准方法。
首先进行粗校准。传感器从开始时间T0起,以最大校准周期Tm(Tm<Ts,即T0与Tf的时间间隔Ts大于Tm)为周期自动唤醒,根据接收到的广播帧进行实时时钟校准,使传感器本地的实时时钟与汇聚节点的本地时钟时间一致。
当前时间与传感器通信时间Tf的时间间隔不到Tm时,进入精校准。
在精校准阶段,在考虑精度因素和最短传输时长L的因素下,传感器以可能的最长的休眠时长Tp进行休眠,直至当前时间与传感器通信时间点Tf的时间间隔不大于最短传输时长L时唤醒,等待通信时间点Tf的到来。
粗校准和精校准这样的两级校准方法,使得传感器能够在保证实时时钟精度的前提下,唤醒次数少,休眠时间长,从而节约能耗。也可以说,本发明在增加最少能耗的前提下,以需要的精度,保证的传感器实时时钟与汇聚节点本地时钟的一致性,提高了传感器的实时时钟准确性。
下面结合图3至图5详细说明本发明所提供的实时时钟同步校准方法。
在粗校准阶段,即TS>Tm时,传感器节点首先进入休眠状态,并设置自己在每个Tm周期自动唤醒一次通过接收来自汇聚节点的广播帧,根据此广播帧中的时间戳中的时间和自己的实时时钟显示时间计算出汇聚节点此时的本地时钟时间为Tr=t,并将自己的实时时钟校准为Tr,即传感器节点进行实时时钟校准一次,并且将Ts的值减小一个Tm,直到Ts的值不大于Tm为止,即Ts≤Tm。粗校准阶段各时间点的关系如图4所示。
当Ts的值首次满足Ts≤Tm的要求时,传感器节点假设接下来需要进入休眠状态,在保证自动唤醒时的时间不超过预设时间Tf的情况下,计算出需要休眠的休眠时长为Tp=Ts(1-△),如果Tp<L,传感器节点则无需进入休眠状态,以空闲状态等待直至时间预设Tf,进而完成通信;如果Tp>L,传感器节点根据计算出的需要的休眠时长Tp预设好自动唤醒的时间点Tw,而后进入休眠。
传感器节点进入休眠状态,直到时间Tw自动唤醒。传感器节点自动唤醒后首先接收一个来自汇聚节点的广播帧,根据此广播帧中的时间戳中的时间和自己的实时时钟显示时间Tw计算出汇聚节点此时的本地时钟时间Tr,把自己的实时时钟调整为Tr。然后,传感器节点假设接下来需要进入休眠状态,在保证自动唤醒时的时间不超过预设时间Tf的情况下,计算出需要休眠的时长为Tp=(Tf-Tr)(1-△),如果Tp<L,传感器节点则无需进入休眠状态,等待直至预设时间Tf,进而完成通信;如果Tp>L,传感器节点则预设好自动唤醒的时间为Tw=Tr+Tp,而后进入休眠状态。
传感器节点在Tw时刻进入休眠状态。重复⑶直至传感器节点和汇聚节点成功完成通信。
下面以具体实施例来说明本发明的具体技术方案。
在某一远程抄表系统中,要求每个月的月末的24时整集中器对采集器进行一次电表信息的采集,即预设时间周期Ts=30day,预设通信时间点Tf=24时0分0秒。假设集中器以Td=1s为周期向采集器发送广播帧,其广播帧中的时间戳容量为4bit,集中器对采集器进行电表信息的采集时最短的数据包最短传输时长为L=1s,采集器的实时时钟精度标称值为△=100ppm。
首先根据公式(1)
Tm*△≤1/2[(2n-1)*Td](1)
由△=100ppm,n=4,Td=10s计算出出采集器最大校准周期Tm≤75000s,即Tm最大可取75000s。
⑴由于Ts>Tm,故采集器最长每75000s自动唤醒进行一次实时时钟同步校准。而Ts-34Tm=30*24*60*60s-34*75000s=42000s≤Tm,知在经过34次自动唤醒的实时时钟同步校准后,Ts=Ts-34Tm=42000s≤Tm。
⑵当Ts=Ts-34Tm=42000s≤Tm后,假设Ts-34Tm≤Tm之前最后一次传感器节点的实时时钟同步校准的时间为T0时刻。在T0时刻,采集器假设接下来需要进入休眠状态,在保证自动唤醒时的时间不超过预设时间Tf的情况下,计算出需要休眠的时长为Tp=Ts(1-△)=41995.8s>L,所以采集器在T0时刻进入休眠状态,休眠Tp=41995.8s后自动唤醒。
⑶经过Tp=41995.8s的休眠时间后,采集器将以自己的实时时钟为准,在预设时间Tf=24时0分0秒自动唤醒,唤醒后接收一个来自集中器的广播帧,根据广播帧中的时间戳和自己的实时时钟显示时间计算出集中器的本地时钟的时间,假设为23时59分50秒,并将自己的实时时钟调整为23时59分50秒,即TR=23时59分50秒。由于还没有到预设的通信时间,采集器首先计算出下次需要休眠的时长Tp=(Tf-TR)(1-△)=10s*(1-100ppm)=9.999s>L,根据需要休眠的时长Tp,预设好自动唤醒时间。然后进入休眠。
⑷经过Tp=9.999s时间后,采集器将以自己的实时时钟为准,在预设时间Tf=24时0分0秒自动唤醒,唤醒后接收一个来自集中器的广播帧,根据广播帧中的时间戳和自己的实时时钟显示时间计算出集中器的本地时钟的时间,假设为23时59分59.9997秒,并将自己的实时时钟调整为23时59分59.9997秒,即TR=23时59分59.9997秒。由于还没有到预设的通信时间,采集器首先计算出下次需要休眠的时长Tp=(Tf-TR)(1-△)=0.0003*(1-100ppm)<L,采集器无需进入休眠状态,而是以接收和发送状态等待,直到预设时间完成与集中器的通信。
对于上述远程抄表系统,在保证成功抄表的前提下,采集器的实时时钟精度△与每个抄表周期唤醒的最多次数k如下表:
△/ppm |
10 |
30 |
50 |
80 |
100 |
120 |
k/次 |
5 |
12 |
19 |
29 |
36 |
43 |
可知,传感器节点一般通过有限次的自动唤醒进行实时时钟同步校准,就可以使无线传感网络的传感器节点在低功耗状态下正常工作。
下面以实际数据说明,采集器(传感器)利用广播帧中的时间戳和自己的实时时钟显示时间,计算出集中器的本地时间的方法。为了简单起见,假设集中器周期发送的广播帧中时间戳的时间是以十进制形式存放的。
假设集中器发送广播帧的周期Td=10s,广播帧的时间戳中存放时间的是4位十进制数,由公式(1)得到最大校准周期Tm满足以下公式:
Tm*△≤(1/2)(10n-1)*Td=(1/2)(104-1)*10s=49995s
只要选取的最大校准周期Tm满足Tm*△≤(1/2)(10n-1)*Td=(1/2)(104-1)*10s=49995s,采集器的实时时钟的偏差就会在(-49995s,49995s)内,就可以通过接收到的广播帧中的时间戳,实现正确无误的同步校准。
例如,假设集中器的本地时钟时间为900000.000……,采集器的实时时钟的显示时间为892563.279……。
设置集中器只在整10秒的时间点发送广播帧,这就意味着发送广播帧时,时间0000部分之后的数字都是0,采集器接收到广播帧后直接把自己实时时钟9256部分之后的数字直接置0。
由于广播帧中的时间戳部分只能存放四位,那么只需发送0000即可,而此时采集器的实时时钟的显示时间为892563.279……,采集器收到0000后,先将自己的实时时钟的显示时间调整为892560.000……,且得到集中器的本地时钟时间三个可能值700000.000……,800000.000……,900000.000……。为了判定到底是哪个值,分别求这三个值与892560.000……的差为:-192560、-92560、7400,而只有7400在(-49995s,49995s)范围内,所以,判定集中器的本地时钟时间为900000.000……,继而把自己的实时时钟调整为900000.000……。
在本发明中,传感器节点在无业务需求时进入休眠状态;同时其实时时钟与汇聚节点的本地时钟保持一致。因此,本发明既能实现传感器节点低功耗,又能保证传感器节点与汇聚节点在预设的时间成功进行通信。
本发明中的无线传感网包括汇聚节点和多个传感器。该传感器在进行通信之前,接收来自汇聚节点的广播帧进行实时时钟校准。传感器进行实时时钟校准时,分为粗校准阶段和精校准阶段,在粗校准阶段,传感器以第一时间间隔进行实时时钟校准,在精校准阶段,传感器以第二时间间隔进行实时时钟校准,第一时间间隔大于第二时间间隔。第一时间间隔为最大校准周期,是传感器节点的实时时钟精度以及广播帧的发送周期的函数。第二时间间隔为休眠时长,是传感器节点的实时时钟精度的函数。
在粗校准阶段,传感器从开始时间起,以最大校准周期自动唤醒并校准传感器的实时时钟,直至距离通信时间点的时间间隔不大于最大校准周期。在精校准阶段,传感器以休眠时长进行休眠,直至距离通信时间点的时间间隔不大于最短传输时长,最短传输时长为汇聚节点首先向传感器发送的数据包的传输时长。
在精校准阶段,传感器在距离通信时间点的时间间隔不大于最短传输时长的情况下,等待通信时间点的到来。
传感器根据广播帧校准传感器的实时时钟时,选取在最大校准周期的范围内的值。
与现有技术相比较,本发明提供了一种基于无线传感网中汇聚节点和传感器节点的实时时钟同步校准方法。本发明摒弃了以往直接对传感器节点内部实时时钟模块的晶体振荡器做温度参数补偿的方法,而是传感器节点根据汇聚节点的本地时钟来调整自己的实时时钟,以便动态地保持传感器节点和汇聚节点的时钟保持一致。
本发明克服了传统传感器节点实时时钟自我校准时只考虑单一或是过少因素且不易批量生产的缺点,在没有增加额外硬件和软件的情况下,完成传感器节点的实时时钟和汇聚节点的本地时钟的高精度同步校准,适用于任何复杂的环境下。本发明在传感器节点没有业务需求的时间段内使其进入休眠状态,然后通过增加有限次的自动唤醒来实现传感器节点的实时时钟与汇聚节点的本地同步校准,在兼顾时钟同步校准的同时也实现了低功耗。
上面对本发明所提供的用于无线传感网的实时时钟同步校准方法及传感器进行了详细的说明。对本领域的一般技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。