发明内容
本发明提供了一种利用对时提高守时精度的方法及装置,通过计算偏差值、存储偏差值和均匀调整实现对时提高设备守时精度,保证计时偏差正确性和稳定性。
本发明提供了一种利用对时提高守时精度的方法,具体包括:
根据初始对时信号调整时间,计算初始偏差值;
将有效初始偏差值滤波得到初始滤波偏差值,并进行存储;
根据新对时信号计算实时偏差值;
将实时偏差值滤波得到实时滤波偏差值,并进行存储;
判断是否有对时信号输入,
若是,
则通过两步法计算输出偏差值,并存储在选择器中;
根据所述输出偏差值均匀调整守时偏差值;
若否,
则根据所述实时滤波偏差值计算记忆偏差值;
根据所述记忆偏差值均匀调整守时偏差值。
可选的,
步骤所述根据初始对时信号调整时间,计算初始偏差值包括:
通过整秒对准脉冲,其中,秒以下计时清零,秒及秒以上采用对时解码;
根据对时脉冲对比时间值,并计算所述初始偏差值。
可选的,
所述脉冲信号为对时信号直接输入信号。
可选的,
所述脉冲信号为解码得到的整秒脉冲信号。
可选的,
步骤所述将有效初始偏差值滤波得到初始滤波偏差值,并进行存储包括:
判断所述初始偏差值是否在晶振的误差范围内;
若是,
则将所述初始偏差值作为有效初始偏差值进行滤波得到初始滤波偏差值,并进行存储;
若否,
则重新计算得出有效初始偏差值,进行滤波得到初始滤波偏差值,并进行存储。
可选的,
步骤所述根据所述实时滤波偏差值计算记忆偏差值的计算方法为:
通过累加平均算法计算记忆偏差值。
可选的,
所述均匀调整守时偏差值方法为:
根据所述输出偏差值或所述记忆偏差值计算对时时刻;
在所述对时时刻调整本地时钟。
本发明提供了一种利用对时提高守时精度的装置,包括:
第一计算单元,用于计算初始偏差值;
第一存储单元,用于存储初始滤波偏差值;
第二计算单元,用于计算实时偏差值;
第二存储单元,用于存储经滤波得到的实时滤波偏差值;
判断单元,用于判断是否有对时信号输入;
选择单元,用于选择均匀调整守时偏差值的方法。
可选的,
所述第一计算单元包括:
对时子单元,用于通过整秒对准脉冲,其中,秒以下计时清零,秒及秒以上采用对时解码;
第一计算子单元,用于根据对时脉冲对比时间值,并计算所述初始偏差值。
可选的,
所述第一存储单元包括:
第一判断子单元,用于判断所述初始偏差值是否在晶振的误差范围内;
第一选择子单元,用于有效初始偏差值;
第一滤波子单元,用于对所述有效初始偏差值滤波得到初始滤波偏差值;
第一存储子单元,用于存储所述初始滤波偏差值。
下面对本发明提供的一种利用对时提高守时精度的方法及装置所带来的核心有益效果进行描述:
该提高守时精度的方法包括:根据接入的初始对时信号等待整秒对准脉冲调整时间,当第二个对时脉冲输入时,进行时间值对比并计算初始偏差值ΔT(1)。先判断计算得到的初始偏差值ΔT(1)是否在晶振的误差范围内,若不在则为无效的对时信号,重新根据脉冲进行计算,若在则将该初始偏差值赋值给有效初始偏差值,直接进入滤波得到初始滤波偏差值,作为调整时间的偏差值,并进行存储。当新对时信号输入时,计算实时偏差值ΔT(n),同样需要判断该实时偏差值是否在范围内,若不在范围内则为错误的对时脉冲,对该实时偏差值重新赋值,即ΔT'(n)=ΔT(n-1),继续判断ΔT'(n)是否在范围内,若不在继续重新赋值判断,若在,则将该ΔT'(n)赋值给ΔT(n),即有ΔT(n)=ΔT'(n)。将前步骤最后得到的实时偏差值ΔT(n)经过滤波得到实时滤波偏差值ΔTf(n)并进行存储。后面对时和调时的过程需要先判断是否有对时信号输入,若是,则通过前面的两步法计算输出偏差值,并存储在选择器中,供均匀调整守时偏差值;若否,则将实时滤波偏差值代入公式ΔTr(n)=[ΔTr(n-1)+ΔTf(n)]÷2计算记忆偏差值ΔTr(n),再根据记忆偏差值均匀调整守时偏差值。其中,均匀调整守时偏差值需要先根据实时偏差值或记忆偏差值计算对时时刻,并均匀调整本地时钟。该发明在有无对时信号的情况下都能提高守时精度,均匀调整能够保证计时偏差正确性和稳定性,且不会出现时间突变的状况。
具体实施方式
本发明提供了一种利用对时提高守时精度的方法及装置,通过计算偏差值、存储偏差值和均匀调整实现对时提高设备守时精度,保证计时偏差正确性和稳定性。
下面请参阅图1,本发明提供的一种利用对时提高守时精度的方法,包括:
101、根据初始对时信号调整时间,计算初始偏差值;
本实施例中,根据接入的初始对时信号等待整秒对准脉冲调整时间,当第二个对时脉冲输入时,进行时间值对比并计算初始偏差值ΔT(1)。
102、将有效初始偏差值滤波得到初始滤波偏差值,并进行存储;
本实施例中,先判断计算得到的初始偏差值ΔT(1)是否在晶振的误差范围内,若不在则为无效的对时信号,重新根据脉冲进行计算,若在则将该初始偏差值赋值给有效初始偏差值,直接进入滤波得到初始滤波偏差值,作为调整时间的偏差值,并进行存储。
103、根据新对时信号计算实时偏差值;
本实施例中,当新对时信号输入时,根据前面得到的时间和此刻的时间值计算实时偏差值ΔT(n)。
104、将实时偏差值滤波得到实时滤波偏差值,并进行存储;
本实施例中,对上步得到的实时偏差值ΔT(n),同样需要判断该实时偏差值是否在范围内,若不在范围内则为错误的对时脉冲,对该实时偏差值重新赋值,即ΔT'(n)=ΔT(n-1),继续判断ΔT'(n)是否在范围内,若不在继续重新赋值判断,若在,则将该ΔT'(n)赋值给ΔT(n),即有ΔT(n)=ΔT'(n)。将前步骤最后得到的实时偏差值ΔT(n)经过滤波得到实时滤波偏差值ΔTf(n)并进行存储。
105、判断是否有对时信号输入,
若是,则执行106,若否,则执行108;
本实施例中,对时和调时的过程需要先判断是否有对时信号输入,若有则按照步骤101-104求出输出偏差值,若否则通过已经存储的实时滤波偏差值ΔTf(n)计算记忆偏差值ΔTr(n)。
106、通过两步法计算输出偏差值,并存储在选择器中;
107、根据所述输出偏差值均匀调整守时偏差值;
108、根据所述实时滤波偏差值计算记忆偏差值;
109、根据所述记忆偏差值均匀调整守时偏差值。
本实施例中,根据接入的初始对时信号等待整秒对准脉冲调整时间,当第二个对时脉冲输入时,进行时间值对比并计算初始偏差值ΔT(1)。先判断计算得到的初始偏差值ΔT(1)是否在晶振的误差范围内,若不在则为无效的对时信号,重新根据脉冲进行计算,若在则将该初始偏差值赋值给有效初始偏差值,直接进入滤波得到初始滤波偏差值,作为调整时间的偏差值,并进行存储。当新对时信号输入时,计算实时偏差值ΔT(n),同样需要判断该实时偏差值是否在范围内,若不在范围内则为错误的对时脉冲,对该实时偏差值重新赋值,即ΔT'(n)=ΔT(n-1),继续判断ΔT'(n)是否在范围内,若不在继续重新赋值判断,若在,则将该ΔT'(n)赋值给ΔT(n),即有ΔT(n)=ΔT'(n)。将前步骤最后得到的实时偏差值ΔT(n)经过滤波得到实时滤波偏差值ΔTf(n)并进行存储。后面对时和调时的过程需要先判断是否有对时信号输入,若是,则通过前面的两步法计算输出偏差值,并存储在选择器中,供均匀调整守时偏差值;若否,则将实时滤波偏差值代入公式ΔTr(n)=[ΔTr(n-1)+ΔTf(n)]÷2计算记忆偏差值ΔTr(n),再根据记忆偏差值均匀调整守时偏差值。其中,均匀调整守时偏差值需要先根据实时偏差值或记忆偏差值计算对时时刻,并均匀调整本地时钟。该发明在有无对时信号的情况下都能提高守时精度,均匀调整能够保证计时偏差正确性和稳定性,切且不会出现时间突变的状况。
需要说明的是,滤波过程要滤掉周期随机误差,这个周期随机误差为对时信号经过传输之后的对时脉冲不准确,主要是由于环境等因此带来的整秒时刻的周期性抖动。滤波器可根据实际传输环境的模型进行设计,简单可为滑动滤波,稍复杂的可为卡尔曼滤波。在常温环境,并且考虑硬件方案的实现,采用了简单的滑动滤波,对于离散系统特别适用,也能很好滤去周期随机误差。
下面对本发明提供的一种利用对时提高守时精度的方法做进一步说明,步骤101、根据初始对时信号调整时间,计算初始偏差值包括:
通过整秒对准脉冲,其中,秒以下计时清零,秒及秒以上采用对时解码;
根据对时脉冲对比时间值,并计算所述初始偏差值。
本实施例中,接入对时信号时等待整秒对准脉冲,使整秒对准,同时秒以下(毫秒、微妙、纳秒)计时清零,秒及秒以上(年、月、日、时、分)采用对时解码,其中,只要是有效的对时脉冲信号即可,此脉冲信号可以是对时信号直接输入的信号,如PPS,也可以是解码出来的整秒脉冲信号,如IRIG-B。当第二个对时脉冲输入时,会进行时间值对比,并计算初始偏差值ΔT(1),此时T(1)就等于计时时间值,若T(1)时间值大于0.5s则为本地时间慢,设为正向偏差;若T(1)时间值小于0.5s则为本地时间快,设为反向偏差,则:ΔT(1)=(T(1)>0)?-T(1):1-T(1),假设此时本地时间值为T(1),并且以1s作为基准。
下面对本发明提供的一种利用对时提高守时精度的方法做进一步说明,步骤所述将有效初始偏差值滤波得到初始滤波偏差值,并进行存储包括:
判断所述初始偏差值是否在晶振的误差范围内;
若是,
则将所述初始偏差值作为有效初始偏差值进行滤波得到初始滤波偏差值,并进行存储;
若否,
则重新计算得出有效初始偏差值,进行滤波得到初始滤波偏差值,并进行存储。
本实施例中,根据实际使用的晶振精度设置范围,如ΔT(1)可以为±0.0005s=±500μs。判断计算得到的初始偏差值ΔT(1)是否在晶振的误差范围内,若不在该偏差范围内则为无效的对时信号,重新根据脉冲进行计算,若在则将该初始偏差值赋值给有效初始偏差值,直接进入滤波得到初始滤波偏差值。
下面对本发明提供的一种利用对时提高守时精度的方法做进一步说明,步骤108、根据所述实时滤波偏差值计算记忆偏差值的计算方法为:
通过累加平均算法计算记忆偏差值。
本实施例中,每接收新的偏差值进行一次求平均,和前面所有的偏差进行求平均,公式为:ΔTr(n)=[ΔTr(n-1)+ΔTf(n)]÷2,ΔTr(n)为当前n次记忆的偏差值,ΔTr(n-1)为前面的n-1次记忆的偏差值,采用累加平均算法计算记忆偏差值,可以保证保存下来偏差是整个对时过程中稳定的偏差值,并且这种方法实现简易,便于硬件方案实现。
需要说明的是,如果采用记忆最后一次的偏差值也是没有大的问题,只是这种方式的得到的偏差值是瞬时,具有很大的不确定性。由于环境的不确定性,导致晶振也就有不确定性,并且对时信号也会由于环境因素发生微小的改变,这样给对时误差带来的不确定性,瞬时偏差值可能会出现不确定性,因此保存瞬时偏差值会有出现偏差值不准确的现象。
下面对本发明提供的一种利用对时提高守时精度的方法做进一步说明,所述均匀调整守时偏差值方法为:
根据所述输出偏差值或所述记忆偏差值计算对时时刻;
在所述对时时刻调整本地时钟。
本实施例中,前述实施例可知,对时和调时的过程需要先判断是否有对时信号输入,若有则按照步骤101-104求出输出偏差值,若否则通过已经存储的实时滤波偏差值ΔTf(n)计算记忆偏差值ΔTr(n),下面以根据实时滤波偏差值ΔTf(n)计算出选择信号为例,进行说明,假设一秒对时一次,偏差值也为一秒的误差值,为了便于说明,将时间转化为计时计数器的值,假设计时时钟为50ns计时一次,这样1s计时计数器值为Cs=20000000,同理偏差值ΔTf(n)转化为计数器的值为ΔCf(n)=ΔTf(n)×20000000,因此可以计算出ΔCadj(n)=20000000÷ΔCf(n),也就是每隔ΔCadj(n)计数值,进行一次调整,其他情况都是正常的加1。调整时刻采用加2和加0(不变)进行补偿,加2代表多加一次1,加0代表少加一次1,最后以总的调整个数等于ΔCf(n)结束调整。调整时刻是加2,还是加0由于偏差的正负决定,正为本地时钟慢,需要多加,因此为加2;负为本地时钟快,需要少加,因此为加0。采用计时偏差均匀调整让偏差平均到一秒内,每次调整都是按照最小调整时间进行调整,增强计时稳定度,减少了计时突变性,并且实现简易,利于硬件方案进行实现。
本发明提供了一种利用对时提高守时精度的装置实施例,包括:
第一计算单元201,用于计算初始偏差值;
第一存储单元202,用于存储初始滤波偏差值;
第二计算单元203,用于计算实时偏差值;
第二存储单元204,用于存储经滤波得到的实时滤波偏差值;
判断单元205,用于判断是否有对时信号输入;
选择单元206,用于选择均匀调整守时偏差值的方法。
本实施例中,第一计算单元201用于计算初始偏差值,第一存储单元202用于存储初始滤波偏差值,第二计算单元203用于计算实时偏差值,第二存储单元204用于存储经滤波得到的实时滤波偏差值,判断单元205,用于判断是否有对时信号输入,选择单元206用于选择均匀调整守时偏差值的方法。根据接入的初始对时信号等待整秒对准脉冲调整时间,当第二个对时脉冲输入时,进行时间值对比并计算初始偏差值ΔT(1)。先判断计算得到的初始偏差值ΔT(1)是否在晶振的误差范围内,若不在则为无效的对时信号,重新根据脉冲进行计算,若在则将该初始偏差值赋值给有效初始偏差值,直接进入滤波得到初始滤波偏差值,作为调整时间的偏差值,并进行存储。当新对时信号输入时,计算实时偏差值ΔT(n),同样需要判断该实时偏差值是否在范围内,若不在范围内则为错误的对时脉冲,对该实时偏差值重新赋值,即ΔT'(n)=ΔT(n-1),继续判断ΔT'(n)是否在范围内,若不在继续重新赋值判断,若在,则将该ΔT'(n)赋值给ΔT(n),即有ΔT(n)=ΔT'(n)。将前步骤最后得到的实时偏差值ΔT(n)经过滤波得到实时滤波偏差值ΔTf(n)并进行存储。后面对时和调时的过程需要先判断是否有对时信号输入,若是,则通过前面的两步法计算输出偏差值,并存储在选择器中,供均匀调整守时偏差值;若否,则将实时滤波偏差值代入公式ΔTr(n)=[ΔTr(n-1)+ΔTf(n)]÷2计算记忆偏差值ΔTr(n),再根据记忆偏差值均匀调整守时偏差值。其中,均匀调整守时偏差值需要先根据实时偏差值或记忆偏差值计算对时时刻,并均匀调整本地时钟。该发明在有无对时信号的情况下都能提高守时精度,均匀调整能够保证计时偏差正确性和稳定性,且不会出现时间突变的状况。
下面对本发明提供的一种利用对时提高守时精度的装置实施例做进一步说明,第一计算单元201包括:
对时子单元2011,用于通过整秒对准脉冲,其中,秒以下计时清零,秒及秒以上采用对时解码;
第一计算子单元2012,用于根据对时脉冲对比时间值,并计算所述初始偏差值。
本实施例中,对时子单元2011用于通过整秒对准脉冲,其中,秒以下计时清零,秒及秒以上采用对时解码;第一计算子单元2012用于根据对时脉冲对比时间值,并计算所述初始偏差值。接入对时信号时等待整秒对准脉冲,使整秒对准,同时秒以下(毫秒、微妙、纳秒)计时清零,秒及秒以上(年、月、日、时、分)采用对时解码,其中,只要是有效的对时脉冲信号即可,此脉冲信号可以是对时信号直接输入的信号,如PPS,也可以是解码出来的整秒脉冲信号,如IRIG-B。当第二个对时脉冲输入时,会进行时间值对比,并计算初始偏差值ΔT(1),此时T(1)就等于计时时间值,若T(1)时间值大于0.5s则为本地时间慢,设为正向偏差;若T(1)时间值小于0.5s则为本地时间快,设为反向偏差,则:ΔT(1)=(T(1)>0)?-T(1):1-T(1),假设此时本地时间值为T(1),并且以1s作为基准。
下面对本发明提供的一种利用对时提高守时精度的装置实施例做进一步说明,第一存储单元202包括:
第一判断子单元2021,用于判断所述初始偏差值是否在晶振的误差范围内;
第一选择子单元2022,用于有效初始偏差值;
第一滤波子单元2023,用于对所述有效初始偏差值滤波得到初始滤波偏差值;
第一存储子单元2024,用于存储所述初始滤波偏差值。
本实施例中,根据实际使用的晶振精度设置范围,如ΔT(1)可以为±0.0005s=±500μs。判断计算得到的初始偏差值ΔT(1)是否在晶振的误差范围内,若不在该偏差范围内则为无效的对时信号,重新根据脉冲进行计算,若在则将该初始偏差值赋值给有效初始偏差值,直接进入滤波得到初始滤波偏差值。
需要说明的是,本发明在设计上就考虑到了硬件方案的实现,因此在具体实现可采用FPGA进行实现,FPGA时钟频率一般都可大于等于100MHz,本发明FPGA采用200MHz时钟,即每5ns计数一次,根据前面所描述的方法,5ns作为基准,均匀分配到每个时刻上进行调整,对时每个时刻调整就是5ns,因此对于计时的调整,几乎不存在突变性,稳定性也非常高。
对于计时偏差记忆模块,FPGA考虑到掉电丢失的情况,在电路上增加的非易失存储器(如SPI Flash)进行存储计时偏差值,或者给系统CPU进行保存等,这样FPGA掉电之后还是有记忆的偏差值。这样利于掉电之后守时精度还是一样。采用FPGA实现之后即保证对时和没有对时的守时精度,并且FPGA灵活高,可用于任意的设备上,配合系统进行工作。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不处理。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。