本申请涉及时钟同步应用技术领域,尤其涉及一种利用ntp辅助作源提高守时精度的方法及装置。
背景技术:
时间同步装置的守时能力主要取决于标准频率源的频率稳定度,时间同步装置的晶振频率准确度,受温度、电压、芯片老化等因素影响,随着时间变化,温度,电压变化,或芯片老化会造成晶振频率会发生小幅度波动,而长时间的频率偏差会导致时间同步装置的精度漂移越来越大,在现有技术中,为了改善时间同步装置精度漂移问题,通常采用补偿算法,对产生的偏差进行补偿,例如,需要时测本地时钟晶振温度、时钟时长和晶振频率建立本地时钟晶振温度、时钟晶振工作时长与时钟晶振的频率偏差的对应关系的老化预测模型,根据所述本地时钟晶振的频率偏差调整本地时钟。并且,基于这些预测模型或补偿算法对产生的偏差进行相应的补偿虽然可以减缓守时精度漂移,但长时间后,守时精度漂移累积越来越大,最终会导致时间同步装置守时精度漂移过大。
技术实现要素:
本申请实施例提供了一种维护守时状态的方法及装置,用于解决现有技术中时间同步装置外部时间源失效,长时间后时间同步装置守时精度漂移过大的问题。
第一方面,提供一种利用ntp辅助作源提高守时精度的方法,包括:
利用ntp报文确定第一守时偏差值;其中,所述第一守时偏差值为实时获取的所述守时状态下时间同步装置的实际守时偏差值;
基于守时偏差基准值及与预设的守时偏差波动幅度确定守时偏差波动范围;其中,所述守时偏差基准值为守时偏差调整的基准;
基于所述守时偏差波动范围与所述第一守时偏差值确定标志时间同步装置是否对守时精度进行调整的第一参数值、调整方向的及调整步数。
通过本申请提供的维护守时状态的方法可以实现当时间同步装置的外部时间源失效长时间时,确定出标志守时精度是否利用ntp辅助做源来调节的参数、调整方向及调整步数,使得时间同步装置基于确定的参数调节守时精度,守时精度保持在预设范围内,保证时间同步装置守时精度不会漂移过大。
可选的,所述利用ntp报文确定第一守时偏差值包括:
利用ntp报文中记录数据包收发的时间戳获取守时偏差的初始值,所述初始值在所述外部时间源有效,所述时间同步装置为锁定状态时获取;
实时获取守时偏差的测量值,所述测量值在所述时间同步装置为所述守时状态时获取;
将所述测量值与所述初始值的差值确定为所述第一守时偏差。
可选的,所述基于所述守时偏差波动范围与所述第一守时偏差值确定标志时间同步装置是否对守时精度进行调整的第一参数值包括:
基于所述守时偏差基准值及所述守时偏差波动幅度确定所述守时偏差波动的最大值与最小值;并在每单位时间都将所述第一守时偏差与所述最大值与所述最小值进行比较;
当所述第一守时偏差连续大于所述最大值的次数超过预设次数或所述第一守时偏差连续小于所述最小值的次数超过所述预设次数时,确定所述第一参数值为标志对守时精度进行调整的值。
基于此方法确定出是否对守时偏差进行调整的标志性数值,可以保证在守时偏差超过预设范围时,确定第一参数值为标志守时偏差需要调整的数值,使守时偏差可及时得到调整并且处于预设的范围内。
可选的,确定所述调整方向包括:
当所述第一守时偏差连续大于所述最大值的次数超过预设次数时,确定调整方向为向下;
当所述第一守时偏差连续小于所述最小值的次数超过所述预设次数时,确定调整方向为向上。
可选的,确定所述守时偏差基准值包括:当所述第一守时偏差值为正且大于所述预设的守时偏差中间值时,确定所述守时偏差基准值为第一守时偏差基准值;
当所述第一守时偏差值为负且绝对值大于所述预设的守时偏差中间值时,确定所述守时偏差基准值为第二守时偏差基准值;
其中,所述第一守时偏差基准值与所述第二守时偏差基准值的绝对值均等于所述预设的守时偏差中间值,并且,所述第一守时偏差基准值为正,所述第二守时偏差基准值为负。
可选的,所述确定所述第一参数值为标志对守时精度进行调整的值后包括:
确定所述第一守时偏差值与所述守时偏差基准值之间的差值;
基于所述差值与预设的调整步长确定所述调整步数。
第二方面,提供一种利用ntp辅助作源提高守时精度的装置,所述装置包括:
确定差值模块:用于利用ntp报文确定第一守时偏差值;其中,所述第一守时偏差值为实时获取的所述守时状态下时间同步装置的实际守时偏差值;
确定范围模块:用于基于守时偏差基准值及与预设的守时偏差波动幅度确定守时偏差波动范围;其中,所述守时偏差基准值为守时偏差调整的基准;
确定参数模块:用于基于所述守时偏差波动范围与所述第一守时偏差值确定标志时间同步装置是否对守时精度进行调整的第一参数值、调整方向的及调整步数。
可选的,所述确定差值模块具体用于:
利用ntp报文中记录数据包收发的时间戳获取守时偏差的初始值,所述初始值在所述外部时间源有效所述时间同步装置为锁定状态时获取;
实时获取守时偏差的测量值,所述测量值在所述时间同步装置为所述守时状态时获取;
将所述测量值与所述初始值的差值确定为所述第一守时偏差。
可选的,所述确定参数模块具体用于:
基于所述守时偏差基准值及所述守时偏差波动幅度确定所述守时偏差波动的最大值与最小值;并在每单位时间都将所述第一守时偏差与所述最大值与所述最小值进行比较;
当所述第一守时偏差连续大于所述最大值的次数超过预设次数或所述第一守时偏差连续小于所述最小值的次数超过所述预设次数时,确定所述第一参数值为标志对守时精度进行调整的值。
可选的,所述确定参数模块还用于:
当所述第一守时偏差连续大于所述最大值的次数超过预设次数时,确定调整方向为向下;
当所述第一守时偏差连续小于所述最小值的次数超过所述预设次数时,确定调整方向为向上。
可选的,所述装置还包括:
确定基准模块:用于当所述第一守时偏差值为正且大于所述预设的守时偏差中间值时,确定所述守时偏差基准值为第一守时偏差基准值;
当所述第一守时偏差值为负且绝对值大于所述预设的守时偏差中间值时,确定所述守时偏差基准值为第二守时偏差基准值;
其中,所述第一守时偏差基准值与所述第二守时偏差基准值的绝对值均等于所述预设的守时偏差中间值,并且,所述第一守时偏差基准值为正,所述第二守时偏差基准值为负。
可选的,所述确定所述第一参数值为标志对守时精度进行调整的值后包括:
确定所述第一守时偏差值与所述守时偏差基准值之间的差值;
基于所述差值与预设的调整步长确定所述调整步数。
第三方面,本申请实施例还提供了一种计算机存储介质,包括:
所述计算机可读存储介质包括计算机程序,当计算机程序在计算机上运行时,使得所述计算机执行上述方法中第一方面所述的方法。
第四方面,本申请实施例还提供了一种包含指令的计算机程序产品,包括:
当所述指令在计算机上运行时,使得所述计算机执行上述方法中第一方面所述的方法。
附图说明
图1为申请实施例所提供的一种利用ntp辅助作源提高守时精度方法应用系统的整体结构原理框图;
图2为申请实施例所提供的一种利用ntp辅助作源提高守时精度的方法流程示意图;
图3为申请实施例所提供的一种守时偏差初始值获取方法示意图;
图4a为申请实施例所提供的修改驱动程序前守时偏差精度示意图;
图4b为申请实施例所提供的修改驱动程序后守时偏差精度示意图;
图5为申请实施例所提供的守时方法启动禁用守时精度对比示意图;
图6为申请实施例所提供一种利用ntp辅助作源提高守时精度装置示意图。
具体实施方式
鉴于现有技术中时间同步装置外部时间源失效长时间后,导致时间同步装置守时精度漂移过大的问题。本申请实施例提供以下解决方案。
本发明实施例为解决上述问题,总体思路如下:
首先,利用ntp报文确定出守时状态下,时间同步装置实时的守时偏差,再确定出守时偏差可波动的范围,最后,基于确定出的守时偏差波动范围及守时偏差的实时值,确定出标志是否对守时精度进行调整的第一参数值,进而确定出调整方向及调整步数。
通过本申请提供的维护守时状态的方法可以实现当时间同步装置的外部时间源失效长时间时,确定出标志守时精度是否利用ntp辅助做源调节的参数、调整方向及调整步数,使得时间同步装置基于确定的参数调节守时精度,守时精度保持在预设范围内,保证时间同步装置守时精度不会漂移过大。
首先,在本申请实施例中,提供的利用ntp辅助作源提高守时精度应用于如附图1提供的系统,该系统包括核心处理模块、卫星接收模块、irig-b输入解码模块、电源模块、系统配置维护模块、网络接口模块、输出模块(脉冲信号输出、irig-b时间输出、时间报文输出三种输出形式)、ntp辅助做源模块,其中卫星接收模块和irig-b输入解码模块相当于外部时间源,当外部时间源有效时,基于外部时间源确定基准参考时间;当外部时间源无效时,利用ntp辅助作源,确定基准参考时间。
当ntp辅助作源模块确定守时精度需要调整时,标志时间同步装置是否对守时精度进行调整的第一参数值g设置为1,需要说明的是,在本申请实施例中g为1标志对守时精度进行调整,g为0标志对守时精度进行调整;也就是说,当ntp辅助作源模块将调整标志位第一参数值为1时,基准时间确定单元就会对守时精度进行调整。
接着,对本申请实施例的时间同步装置进行介绍,时间同步装置包括内部状态机和ntp辅助源两部分;内部状态机有两种状态,一种叫锁定状态,内部状态机在外部时间源有效的情况下,建立内部基准参考时间源,处于锁定状态;一种叫守时状态,在外部时间源失效的情况下,在无有效时间源时,通过装置内部的ntp辅助源对守时精度进行校正。
如下对本申请实施例提供的利用ntp辅助作源提高守时精度调整的方法进行具体介绍。
如附图2所示,本申请实施例提供的一种利用ntp辅助作源提高守时精度的方法具体实施步骤如下:
步骤201:利用ntp报文确定第一守时偏差值;其中,所述第一守时偏差值为实时获取的所述守时状态下时间同步装置的实际守时偏差值;
获取时间同步装置的实际守时偏差值,首先需要测出时间同步装置的守时偏差初始值,当外部时间源有效时间同步装置为锁定状态时,利用记录数据包收发的时间戳确定守时偏差的初始值;
需要说明的是,本申请实施例所提供的维护守时状态的方法均是在外部时间源无效,ntp辅助做源的情况下进行的,确定守时偏差初始值的方式是利用ntp辅助作源下client/server方式。如附图3所示,client代表时间同步装置,server代表服务器,则确定守时偏差初始值的具体方法流程为:时间同步装置首先向服务器发送一个数据包,t1为该数据包离开时间同步装置的时间戳,t2为服务器接收到该数据包时的时间戳;t3为数据包离开服务器返回给时间同步的时间戳,时间同步装置在接收到响应包时,记录包返回的时间戳t4。其中,上述4个时间参数是基于ntp的报文获取的,时间同步装置用上述4个时间参数就能够计算出时间同步装置守时偏差值。
守时偏差计算方法如下:守时偏差值offset=((t2-t1)+(t3-t4))/2。
通常,这些时间戳的处理时间是在用户层来实现的,所以计算偏差时就会受到操作系统内核进程调度或时间片轮转的延时不确定的影响,测量出的守时偏差值误差较大。从附图4a中可以看出守时偏差超过了100微秒。
为了减少操作系统内核进程调度或时间片轮转的延时不确定影响,可以采用将发/收ntp包的时间戳应尽量接近主机真实发/收包时刻。在不改变硬件的条件下,一个可行的办法是在网络驱动接口层修改网卡驱动程序,将记录ntp数据包发/收时间戳从应用程序移至网卡驱动程序处,可消除操作系统内核处理延时不确定而引入的误差。采用相同的获取守时偏差值的方法,如附图4b所示,为修改驱动程序后,时间戳获取及守时偏差的精确度,从图中数据中可以看出,这种方法可大幅提高获取守时精度至微秒级。
使用这种方式实时测量时间同步装置的守时偏差,实时获取的守时偏差测量与守时偏差初始值的差值则为实际的守时偏差值。
确定实际的守时偏差值后,进行如下步骤202。
步骤202:基于守时偏差基准值及与预设的守时偏差波动幅度确定守时偏差波动范围;其中,所述守时偏差基准值为守时偏差调整的基准;
一般的,根据时间同步装置的应用场景及对其守时精度的要求,会对时间同步装置预设有守时偏差中间值,也就是预设标准的守时精度。
确定守时偏差波动范围时,首先需要基于实际的守时偏差值确定守时偏差基准值,具体方法包括:
当所述第一守时偏差值为正且大于所述预设的守时偏差中间值时,确定所述守时偏差基准值为第一守时偏差基准值;
当所述第一守时偏差值为负且绝对值大于所述预设的守时偏差中间值时,确定所述守时偏差基准值为第二守时偏差基准值;
其中,所述第一守时偏差基准值与所述第二守时偏差基准值的绝对值均等于所述预设的守时偏差中间值,并且,所述第一守时偏差基准值为正,所述第二守时偏差基准值为负。
当实际的守时偏差值为正且大于预设的守时偏差中间值时,确定守时偏差基准值为第一守时偏差基准值;当实际的守时偏差值为负且绝对值大于所述预设的守时偏差中间值时,确定守时偏差基准值为第二守时偏差基准值;并且,第一守时偏差基准值与第二守时偏差基准值的绝对值均等于预设的守时偏差中间值,第一守时偏差基准值为正,第二守时偏差基准值为负。
确定守时偏差基准后,结合预设的守时偏差波动幅度则可确定守时偏差波动范围,具体在守时偏差基准值的基础上分别加上守时偏差波动幅度和减去守时偏差波动幅度则确定出守时偏差波动范围。
举例来说,例如预设的守时偏差中间值为10us,获取时间守时装置的实际守时偏差,若实际守时偏差为11us,则确定守时偏差基准值为10us,若实际守时偏差为-11us,则确定守时偏差基准值为-10us。若守时偏差基准值为10us,另外,预设的守时偏差波动幅度为5us,则守时偏差允许的最大值为15us,最小值为5us,则守时偏差波动范围为5us~15us。
确定了守时偏差波动范围后,进行如下步骤203。
步骤203:基于所述守时偏差波动范围与所述第一守时偏差值确定标志时间同步装置是否对守时精度进行调整的第一参数值、调整方向及调整步数。
首先,基于所述守时偏差波动范围与第一守时偏差值确定标志时间同步装置是否对守时精度进行调整的第一参数值,具体的,基于所述守时偏差基准值及所述守时偏差波动幅度确定所述守时偏差波动的最大值与最小值;并在每单位时间都将所述第一守时偏差与所述最大值与所述最小值进行比较;当所述第一守时偏差连续大于所述最大值的次数超过预设次数或所述第一守时偏差连续小于所述最小值的次数超过所述预设次数时,确定所述第一参数值为标志对守时精度进行调整的值。
基于守时偏差基准值及守时偏差波动范围确定守时偏差波动的最大值与最小值,并在每单位时间都将第一守时偏差与最大值与最小值进行比较;若守时偏差可允许的最大值为15us,最小值为5us,则当实时的守时偏差连续大于最大值超过预设次数时,确定第一参数值为1,在本申请实施例中,预设的次数可以是5次,也就是说,则当实时的守时偏差值连续大于15us超过5次时,确定第一参数值为1;同理,当实时守时偏差值连续小于5us超过5次时,确定第一参数值为1,也就是标志需要对守时偏差值进行调整。若实时守时偏差值在确定的波动范围内,则确定第一参数值为0,即不需要对守时偏差进行调整。
在本申请实施例中,预设的次数可以是5次,设置连续预设次数大于才开始调整是为了避免时间同步装置守时精度的偶然变化。确定第一参数为1,需要对守时偏差进行调整,进而确定调整方向,具体的,当所述第一守时偏差连续大于所述最大值的次数超过预设次数时,确定调整方向为向下;当所述第一守时偏差连续小于所述最小值的次数超过所述预设次数时,确定调整方向为向上。
当第一守时偏差连续大于最大值的次数超过预设次数时,确定调整方向为向下,调整方向可用参数e表示,具体的,调整方向为向下,则e=2;当第一守时偏差连续小于最小值的次数超过预设次数时,确定调整方向为向上,则e=1。
接着确定调整步数,第一步确定所述第一守时偏差值与守时偏差基准值之间的差值;第二步基于所述差值与预设的调整步长确定调整步数。
在本申请实施例中,具体对守时精度进行调整时,是以预设的调整步长进行调整,在本申请实施例中以步长为200ns为例,但本申请实施例对调整步长的大小不做限制。确定出第一守时偏差值与守时偏差基准值之间的差值后,确定出的差值与调整步长200ns的比值即调整步数。
实施例一:
假定某时间守时装置的守时偏差波动的中间值x为20us,幅度y为10us,调整步长为200ns,此时实际的守时偏差值为40us;
则基于上述参数可以得知:
守时偏差波动的限制区间的最大值z1=x+y=30us;
守时偏差波动的限制区间的最小值z2=x-y=10us;
实际的守时偏差值为40us,即实际守时偏差的绝对值大于最大值30us,且连续5次大于30us,则首先确定调整的第一参数值为1;
其次,40us大于30us,则确定调整方向为向下,即e=2;
最后,以调整步长为200ns为例,调整步数=10us/200ns=10/0.2=50;
应当理解的是,当无有效的外部时间源时,时间同步装置内部状态机进入守时状态以后,时间同步装置处于守时状态,守时精度漂移会越来越大。
如附图5所示,为守时4小时的pps输出精度曲线图,基于本申请提供的相关参数进行调整方法启用与禁止的对比,其中上方平直线条代表调整方法未开启。
如附图6所示,基于上述方法,本申请实施例还提供一种利用ntp辅助作源提高守时精度的装置,所述装置包括:
确定差值模块601:用于利用ntp报文确定第一守时偏差值;其中,所述第一守时偏差值为实时获取的所述守时状态下时间同步装置的实际守时偏差值;
确定范围模块602:用于基于守时偏差基准值及与预设的守时偏差波动幅度确定守时偏差波动范围;其中,所述守时偏差基准值为守时偏差调整的基准;
确定参数模块603:用于基于所述守时偏差波动范围与所述第一守时偏差值确定标志时间同步装置是否对守时精度进行调整的第一参数值、调整方向的及调整步数。
可选的,所述确定差值模块601具体用于:
利用ntp报文中记录数据包收发的时间戳获取守时偏差的初始值,所述初始值在所述外部时间源有效所述时间同步装置为锁定状态时获取;
实时获取守时偏差的测量值,所述测量值在所述时间同步装置为所述守时状态时获取;
将所述测量值与所述初始值的差值确定为所述第一守时偏差。
可选的,所述确定参数模块603具体用于:
基于所述守时偏差基准值及所述守时偏差波动幅度确定所述守时偏差波动的最大值与最小值;并在每单位时间都将所述第一守时偏差与所述最大值与所述最小值进行比较;
当所述第一守时偏差连续大于所述最大值的次数超过预设次数或所述第一守时偏差连续小于所述最小值的次数超过所述预设次数时,确定所述第一参数值为标志对守时精度进行调整的值。
可选的,所述确定参数模块603还用于:
当所述第一守时偏差连续大于所述最大值的次数超过预设次数时,确定调整方向为向下;
当所述第一守时偏差连续小于所述最小值的次数超过所述预设次数时,确定调整方向为向上。
可选的,所述装置还包括:
确定基准模块604:用于当所述第一守时偏差值为正且大于所述预设的守时偏差中间值时,确定所述守时偏差基准值为第一守时偏差基准值;
当所述第一守时偏差值为负且绝对值大于所述预设的守时偏差中间值时,确定所述守时偏差基准值为第二守时偏差基准值;
其中,所述第一守时偏差基准值与所述第二守时偏差基准值的绝对值均等于所述预设的守时偏差中间值,并且,所述第一守时偏差基准值为正,所述第二守时偏差基准值为负。
可选的,所述确定参数模块603还用于:
确定所述第一守时偏差值与所述守时偏差基准值之间的差值;
基于所述差值与预设的调整步长确定所述调整步数。
本申请实施例还提供了一种计算机存储介质,包括:
所述计算机可读存储介质包括计算机程序,当计算机程序在计算机上运行时,使得所述计算机执行附图2所描述的方法。
本申请实施例还提供了一种包含指令的计算机程序产品,包括:
当所述指令在计算机上运行时,使得所述计算机执行附图2所描述的方法。本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。