本申请涉及时钟同步技术领域,特别是涉及一种多设备间时钟基准同步方法、装置、设备和存储介质。
背景技术:
目前大部分场景,设备间时钟同步均采用ntp的同步机制,传输方式使用网络传输模式进行数据传输。由于网络传输速率的影响,无法实现高精度对视需求,大部分情况只能实现秒级精度的对时,精度较好也会存在几百毫秒左右的误差。传统时钟同步模式无法为超高时钟精度设备协作提供时钟基准,协作效果有限。
技术实现要素:
基于此,有必要针对上述技术问题,提供一种能够解决多设备见时间基准同步效果差的多设备间时钟基准同步方法、装置、设备和存储介质。
一种多设备间时钟基准同步方法,所述方法包括:
通过在硬件时间戳上叠加修正值获取本地时间戳;所述硬件时间戳为从硬件获取的时间信息;所述修正值的初值为零;
接收时钟源发送的脉冲信号,通过所述脉冲信号触发设备硬件中断,记录中断触发时刻的系统时间戳;
获取时钟源的期望时间戳,根据所述系统时间戳和所述期望时间戳的偏移值,计算得到所述修正值,
根据所述修正值,对所述本地时间戳进行调整,得到精准时间。
在其中一个实施例中,还包括:在每次所述脉冲信号的上升沿、下降沿、高电平或低电平到来时,触发设备硬件中断。
在其中一个实施例中,还包括:通过所述脉冲信号触发设备硬件中断,记录中断触发时刻的系统时间戳。
在其中一个实施例中,所述时钟源包括:北斗卫星、gps导航系统、伽利略导航或格洛纳斯系统或地面脉冲发射装置。
在其中一个实施例中,还包括:通过接收时钟源的时间信息,解析所述时间信息,得到期望时间戳。
在其中一个实施例中,还包括:预设时间戳并初始化为固定值,当接收到中断信号时,时间戳按照预定计算规则进行运算,从而得到期望时间戳。
一种多设备间时钟基准同步装置,所述装置包括:
本地时间戳获取模块,通过在硬件时间戳基础上叠加修正值获取本地时间戳;所述硬件时间戳为从硬件获取的时间信息;所述修正值的初值为零;
系统时间戳获取模块,用于接收时钟源发送的脉冲信号,通过所述脉冲信号触发设备硬件中断,记录中断触发时刻的系统时间戳;
修正值确定模块,用于获取时钟源的期望时间戳,根据所述系统时间戳和所述期望时间戳的偏移值,计算得到所述修正值,
时间同步模块,用于根据所述修正值,对所述本地时间戳进行调整,得到精准时间。
在其中一个实施例中,所述系统时间戳获取模块,还用于在每次所述脉冲信号的上升沿、下降沿、高电平或低电平到来时,触发设备硬件中断。
在其中一个实施例中,所述时钟源包括:北斗卫星、gps导航系统、伽利略导航或格洛纳斯系统或地面脉冲发射装置。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取本地时间戳,通过在硬件时间戳基础上叠加修正值获取本地时间戳;所述硬件时间戳为从硬件获取的时间信息;所述修正值的初值为零;
接收时钟源发送的脉冲信号,通过所述脉冲信号触发设备硬件中断,记录中断触发时刻的系统时间戳;
获取时钟源的期望时间戳,根据所述系统时间戳和所述期望时间戳的偏移值,计算得到所述修正值,
根据所述修正值,对所述本地时间戳进行调整,得到精准时间。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
通过在硬件时间戳上叠加修正值获取本地时间戳;所述硬件时间戳为从硬件获取的时间信息;所述修正值的初值为零;
接收时钟源发送的脉冲信号,通过所述脉冲信号触发设备硬件中断,记录中断触发时刻的系统时间戳;
获取时钟源的期望时间戳,根据所述系统时间戳和所述期望时间戳的偏移值,计算得到所述修正值,
根据所述修正值,对所述本地时间戳进行调整,得到精准时间。
上述多设备间时钟基准同步方法、装置、计算机设备和存储介质,在保证多设备间时钟基准准确同步时,一方面是通过高精度的时钟源提供期望时间戳,另一方面是各个设备运行的系统中断延时的确定性以及各个设备内部时钟源的时钟精度,因此在叠加修正值对本地时间戳进行调整时,分别使自身时间更接近于高精度时钟源的时间,间接达到各设备间的时钟基准同步。
附图说明
图1为一个实施例中多设备间时钟基准同步方法的流程示意图;
图2为一个实施例中脉冲处理方式的示意图;
图3为一个实施例中多设备间时钟基准同步装置的结构框图;
图4为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种多设备间时钟基准同步方法,包括以下步骤:
步骤102,通过在硬件时间戳上叠加修正值获取本地时间戳。
硬件时间戳为从硬件获取的时间信息。修正值的初值为零。
硬件指的是设备内的硬件,例如:晶振等。
值得说明的是,设备都是单独运行的,示例性的,每个设备的串口都连接一个单独的北斗模块,通过串口接收其所连接北斗模块的数据。但是,本发明的连接方式不限于串口,可以是其他有线连接,或者无线通讯方式连接。同时,也不限定于北斗模块,也可以是gps、伽利略、地面脉冲发射装置均可,实际上,如果一个拥有精准的时钟源并且可以发射脉冲信号的装置,均可以作为本发明中的时钟源。
步骤104,接收时钟源发送的脉冲信号,通过脉冲信号触发设备硬件中断,记录中断触发时刻的系统时间戳。
可以确定中断触发时刻的时间,从而记录得到中断触发时刻的系统时间戳。由本步骤的技术原理可以知道,本发明是利用时钟源发送脉冲信号,以此来触发设备中断,因此对于时钟源的形式不做具体限定,可以是某种专用的信号发射装置。
步骤106,获取时钟源的期望时间戳,根据系统时间戳和期望时间戳的偏移值,计算得到所述修正值。
通过解析时钟源的时钟信息,可以得到脉冲信号触发设备硬件中断时的期望时间戳,从而可以得到系统与时钟源之间的时间偏移值。
步骤108,根据修正值,对所述本地时间戳进行调整,得到精准时间。
根据修正值和本地时间戳,可以保证本地时间戳和外部时钟源的时钟保持一致。
上述多设备间时钟基准同步方法、装置、计算机设备和存储介质,在保证多设备间时钟基准准确同步时,一方面是通过高精度的时钟源提供期望时间戳,另一方面是各个设备运行的系统中断延时的确定性以及各个设备内部时钟源的时钟精度,因此在叠加修正值对本地时间戳进行调整时,分别使自身时间更接近于高精度时钟源的时间,间接达到各设备间的时钟基准同步。
在其中一个实施例中,在每次所述脉冲信号的上升沿到来时,触发设备硬件中断。具体如图2所示,图2中,所述脉冲信号在每个时间周期内传输nmea报文。
在其中一个实施例中,时钟源不通过硬件有线连接,即可在大范围区域内同步触发高时钟精度脉冲信号。时钟源包括但不限于北斗卫星、gps导航系统、伽利略导航或格洛纳斯系统。
在其中一个实施例中,通过脉冲信号触发设备硬件的gpio中断或外部中断,记录中断触发时刻的系统时间戳。不同的设备硬件触发中断的机制有差异,本实施例不对设备硬件的具体形式进行限制。
在其中一个实施例中,通过串口接收时钟源的时间信息,解析时间信息,得到期望时间戳。值得说明的是,期望时间戳为秒脉冲上升沿时的时间戳,从而,偏移值可以准确的反映系统响应中断时间。
在其中一个实施例中,预设时间戳并初始化为0,当接收到中断信号时,预设时间戳加1,从而得到期望时间戳。
在具体时间同步时,如图2所示,时钟源是gps,设备接收gps发送的nmea报文,当秒脉冲上升沿到来时,触发设备中断,到实际的gpio中断处理时,可以记录中断响应时间δt,本地时间与系统时间的关系为:系统时间戳=本地时间戳-δt,通过串口中断处理,可以得到期望时间戳,从而偏移值=期望时间戳-系统时间戳=期望时间戳-本地时间戳+δt,由于期望时间戳、本地时间戳和δt均可以准确的获取,从而可以得到准确的偏移值,通过各自叠加修正值的方式,分别使自身时间更接近于高精度时钟源的时间,间接达到各设备间的时钟基准同步。
应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图3所示,提供了一种多设备间时钟基准同步装置,包括:本地时间戳获取模块302、系统时间戳获取模块304、修正值确定模块306和时间同步模块308,其中:
本地时间戳获取模块302,用于获取本地时间戳,通过在硬件时间戳上叠加修正值方式获取;所述修正值的初值为零;
系统时间戳获取模块304,用于接收时钟源发送的脉冲信号,通过所述脉冲信号触发设备硬件中断,记录中断触发时刻的系统时间戳;
修正值确定模块306,用于获取时钟源的期望时间戳,根据所述系统时间戳和所述期望时间戳的偏移值,计算得到所述修正值,
时间同步模块308,用于根据所述修正值,对所述本地时间戳进行调整,得到精准时间。
在其中一个实施例中,系统时间戳获取模块304,还用于在每次所述脉冲信号的上升沿到来时,触发设备硬件中断。
在其中一个实施例中,时钟源不通过硬件有线连接,即可在大范围区域内同步触发高时钟精度脉冲信号。时钟源包括但不限于北斗卫星、gps导航系统、伽利略导航或格洛纳斯系统。
在其中一个实施例中,系统时间戳获取模块304还用于通过所述脉冲信号触发设备硬件的gpio中断或外部中断,记录中断触发时刻的系统时间戳。
在其中一个实施例中,修正值确定模块306还用于通过串口接收时钟源的时间信息,解析所述时间信息,得到期望时间戳。或,预设时间戳并初始化为固定值,当接收到中断信号时,按照预定计算规则进行运算,从而得到期望时间戳。
关于多设备间时钟基准同步装置的具体限定可以参见上文中对于多设备间时钟基准同步方法的限定,在此不再赘述。上述多设备间时钟基准同步装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种多设备间时钟基准同步方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现上述实施例中方法的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例中方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。