CN117792558B - 用于集成高精度时间的方法、装置、设备和介质 - Google Patents

用于集成高精度时间的方法、装置、设备和介质 Download PDF

Info

Publication number
CN117792558B
CN117792558B CN202410199724.7A CN202410199724A CN117792558B CN 117792558 B CN117792558 B CN 117792558B CN 202410199724 A CN202410199724 A CN 202410199724A CN 117792558 B CN117792558 B CN 117792558B
Authority
CN
China
Prior art keywords
time
current
clock
network
subsequent
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202410199724.7A
Other languages
English (en)
Other versions
CN117792558A (zh
Inventor
马文献
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jika Intelligent Robot Co ltd
Original Assignee
Jika Intelligent Robot Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jika Intelligent Robot Co ltd filed Critical Jika Intelligent Robot Co ltd
Priority to CN202410199724.7A priority Critical patent/CN117792558B/zh
Publication of CN117792558A publication Critical patent/CN117792558A/zh
Application granted granted Critical
Publication of CN117792558B publication Critical patent/CN117792558B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

本公开涉及计算机技术领域,公开了用于集成高精度时间的方法、装置、设备和介质。方法包括:获取针对当前时刻的当前网络时间和针对所述当前时刻的系统时间,所述系统时间与操作系统相关联并且所述操作系统上能够运行一个或多个应用;确定所述当前网络时间和所述系统时间的偏差值;以及基于所述偏差值和针对所述当前时刻的系统时间,确定针对一个或多个所述应用中至少部分应用的共享网络时间。以此方式,能够得到应用高精度时间同步而需要的共享网络时间而无需单独更新当前网络时间。

Description

用于集成高精度时间的方法、装置、设备和介质
技术领域
本公开一般地涉及计算机领域,特别地涉及用于集成高精度时间的方法、装置、设备和介质。
背景技术
在一些操作系统或者控制系统里,系统中的多个模块需要依赖高精度的时钟源,以保证时间戳的对齐。例如,自动驾驶控制系统(ADCU)里,涉及多种不同类型的多个传感器,感知模块在融合传感器的识别对象时需要依赖高精度的时钟源。
在这样的系统里,往往会采用基于以太网的时间同步协议,例如gPTP协议。然而,这种时间同步协议硬件操作方式和系统驱动、操作系统本身强相关,而且协议本身有不同的实现,对外提供不同的时间访问方式。而且,这种时间同步协议同步的时间是系统的全局资源,调整该网络时间也会影响其他依赖该时钟的应用,因此安全的做法是只参考该网络时钟时间而不修改它。此外,系统内部软件可能来自不同供应商,适配不同的时间同步方案对软件有一定侵入,比较复杂。
因此,需要一种集成高精度时间的方案,用于系统时间同步,以至少部分地解决上述问题。
发明内容
本公开的目的是提供一种用于集成高精度时间的方法和设备,所集成的高精度时间能够用于系统时间同步,有效解决目前的技术中存在的问题。
根据本公开的第一方面,提供了一种用于集成高精度时间的方法。该方法包括:获取针对当前时刻的当前网络时间和针对当前时刻的系统时间,系统时间与操作系统相关联并且操作系统上能够运行一个或多个应用;确定当前网络时间和系统时间的偏差值;以及基于偏差值和针对当前时刻的系统时间,确定针对一个或多个应用中至少部分应用的共享网络时间。
在一些实施例中,方法还可以包括:获取针对当前时刻第一后续时刻的当前网络时间和针对第一后续时刻的系统时间;确定当前网络时间和系统时间的临时偏差值;确定针对第一后续时刻的系统时间与针对第二后续时刻的系统时间的时间间隔,其中第二后续时刻包括第一后续时刻的后续相邻时刻;以及响应于确定到时间间隔大于预定阈值,将临时偏差值确定为更新后偏差值,其中预定阈值与偏差值的精度相关联。
在一些实施例中,获取针对当前时刻的当前网络时间和针对当前时刻的系统时间,系统时间与操作系统相关联并且操作系统上能够运行一个或多个应用可以包括:从系统时钟上读取针对当前时刻的系统时间,系统时钟耦合至操作系统;以及利用gPTP同步服务获取针对当前时刻的当前网络时间。
在一些实施例中,从系统时钟上读取针对当前时刻的系统时间,系统时钟耦合至操作系统包括:配置系统时钟的时钟节拍参数,以初始化系统时钟。
在一些实施例中,预定阈值可以小于或等于偏差值的计算精度。在一些实施例中,计算精度能够基于预定阈值、时钟节拍参数以及针对操作系统的超时时间而动态调整,其中超时时间与当前网络时间和系统时间的同步相关联。
在一些实施例中,针对一个或多个应用中至少部分应用的共享网络时间隔离于当前网络时间。在一些实施例中,操作系统可以包括Linux和QNX中的至少一者。
在一些实施例中,方法还可以包括:利用ptp4l和ptpd中的至少一者以获取当前网络时间;以及利用Posix标准接口访问系统时钟以获取系统时间。
根据本公开的第二方面,提供了一种用于集成高精度时间的装置。该装置包括:时间获取模块,被配置为获取针对当前时刻的当前网络时间和针对当前时刻的系统时间,系统时间与操作系统相关联并且操作系统上能够运行一个或多个应用;偏差值确定模块,被配置为确定当前网络时间和系统时间的偏差值;以及共享网络时间确定模块,被配置为基于偏差值和针对当前时刻的系统时间,确定针对一个或多个应用中至少部分应用的共享网络时间。
根据本公开的第三方面,提供了一种电子设备,包括一个或多个处理器;以及存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现根据本公开的第一方面的方法。
根据本公开的第四方面,提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的第一方面的方法。
根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序指令,该计算机程序指令被处理器实现根据本公开的第一方面的方法。
根据本公开的各个实施例至少能够起到如下有益效果:
根据本公开示例性实施例的方案通过计算网络时钟和系统时钟的偏差,间接获取网络时间,需要使用网络时间的应用先使用系统时钟,和网络同步方法不绑定,隔离计算网络时间,在融合之前转换为网络时间,从而不需要更新网络时钟即可从节点上在不同的进程间共享网络时间。
根据本公开的实施例的网络时钟转换精度可配置,偏差的计算精度可以通过阈值、系统超时时间/最长等待时间、时钟节拍参数调整,满足系统多种场景下的精度需求,时间集成更精确。
根据本公开的实施例能够跨系统操作,计算偏差值过程中不依赖关闭中断或停止调度的系统接口,应用在数据处理阶段能够先使用广泛存在的系统时钟,因此对不同的操作系统、不同的网络时钟实现兼容性更好。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
通过参考附图阅读下文的详细描述,本公开的实施例的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例而非限制性的方式示出了本公开的若干实施例,其中:
图1示出了根据本公开的示例实施例的用于集成高精度时间的方法的示例性框图;
图2示出了根据本公开的示例实施例的用于集成高精度时间的示例性设备模块交互示意图;
图3示出了根据本公开的示例实施例的计算gPTP时间流程的示意图;
图4示出了根据本公开的示例实施例的gPTP时间和系统时间的偏差累积示意图;
图5示出了根据本公开的示例实施例的偏差值更新流程示意图;
图6示出了根据本公开的示例实施例的中断检测逻辑示意图;
图7示出了根据本公开的示例实施例的用于集成高精度时间的装置的示意性框图;以及
图8示出了能够实施本公开的多个实施例的电子设备的框图。
在各个附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。应当理解,“时间”和“时钟”结合上下文表达相近或相同的概念,因此在特定场景下能够互换。
如上文所描述,在这样的系统中,往往会采用基于以太网的时间同步协议,例如gPTP协议。然而,这种时间同步协议的硬件操作方式与系统驱动和操作系统本身密切相关,而且协议本身有不同的实现方式,提供不同的时间访问方式。此外,这种时间同步协议同步的时间是系统的全局资源,调整网络时间会影响其他依赖该时钟的应用程序。因此,安全的做法是只参考该网络时钟时间,而不修改它。此外,系统内部的软件可能来自不同的供应商,适配不同的时间同步方案对软件具有一定的侵入性,比较复杂。
针对以上问题,根据本公开实施例的方法和系统通过计算网络时钟和系统时钟之间的偏差,间接获取网络时间,需要使用网络时间的应用程序首先使用系统时钟,并且与网络同步方法不绑定,从而隔离计算网络时间,在融合之前,将其转换为网络时间,从而无需更新网络时钟即可在不同的进程之间共享网络时间;网络时钟转换精度可配置,偏差的计算精度可以通过阈值、系统超时时间/最长等待时间、时钟节拍参数进行调整,以满足系统在多种场景下的精度需求,从而实现更精确的时间集成;能够实现跨系统操作,在计算偏差值的过程中,不依赖于关闭中断或停止调度的系统接口,在数据处理阶段,应用程序能够先使用广泛存在的系统时钟,对不同的操作系统和不同的网络时钟实现具有更好的兼容性。
下文将结合图1至图8对本公开的示例性实施例进行详细介绍。
图1示出了根据本公开的实施例的用于集成高精度时间的方法100的示例性框图。在一个实施例中,方法100可以在计算设备的时间处理单元或者时间处理模块中实现。计算设备可以是任何类型的服务器设备、移动设备、固定设备或便携式设备,包括服务器、大型机、计算节点、边缘节点、移动电话、互联网节点、通信器、台式计算机、膝上型计算机、笔记本计算机、上网本计算机、平板计算机、个人通信系统(PCS)设备、多媒体计算机、多媒体平板或者其任意组合,包括这些设备的配件和外设或者其任意组合。
在一个实施例中,计算设备包括操作系统,操作系统例如可以是Linux、QNX或者其他任意合适的系统。操作系统上能够运行一个或多个应用,操作系统上的一个或多个应用或相应进程需要共享时间,从而进行后续例如融合等操作。例如,在涉及到多种不同类型的多个传感器的ADCU系统里,感知模块在融合传感器的识别对象时需要依赖高精度的时钟源,方法100则提供了集成高精度时间的方法。
在方法100的框101,获取针对当前时刻的当前网络时间和针对当前时刻的系统时间,系统时间与操作系统相关联并且操作系统上能够运行一个或多个应用。
在一个实施例中,网络时间例如可以是gPTP时间,当前网络时间可以是通过gPTP同步服务获取的时间。gPTP(Generalized Precision Time Protocol)是用于网络时间同步的协议,基于IEEE1588 Precision Time Protocol(PTP)标准的扩展版本,旨在提供更高的精度和灵活性。
在网络中,节点之间的时间同步对于许多应用至关重要,特别是在需要协调和同步分布式系统、实时数据传输和协议操作的情况下。gPTP通过在网络中传递时间戳和时钟信息,使节点能够实现高度一致的时间参考。
为了有效地使用gPTP,同步节点的网卡需要支持PHC(Percision Time ProtocolHardware Clock)硬件时钟。PHC时钟是一种高精度的硬件时钟源,能够提供更准确的时间信息,并且具备更低的时钟漂移和抖动。
通过使用PHC硬件时钟,同步节点的网卡可以更精确地与其他节点同步时间,提供更高的时间同步精度。这对于需要精确时间参考的应用非常重要,比如金融交易、工业自动化系统、音视频同步、自动驾驶域控制系统等。通过将PHC硬件时钟与gPTP协议结合使用,可以实现更高精度的时间同步,从而提升网络中节点之间的协同和性能。gPTP基于主从关系,一个局部网络中的所有节点以主节点的时钟为基准,将自己的本地时钟与主节点的时钟进行同步。它的目的是确保所有局域网里的节点的时间完全一致(ns级别误差)。IEEE 1588标准描述了用于时钟分配的分层主从体系结构,在这种体系结构下,时间分配系统由一个或多个通信媒体(网段)和一个或多个时钟组成。
在一个实施例中,网络时间同步服务可以作为slaver节点从以太网获取时间。以gPTP为例,其同步服务例如可以通过ptp4l或者ptpd中的一者或多者实现,也可以通过其他方式来实现。不同的实现通过不同的方式对外提供gPTP时间。
在一个实施例中,ptp4l工具通过网络传输时间戳信息,与其他参与网络同步的设备进行通信,并根据收到的时间戳信息来调整本地系统的时钟,以实现时钟的同步。它可以在计算机网络中的各种设备上运行,例如服务器、网络交换机和网络路由器等。使用ptp4l工具,可以将Linux系统配置为gPTP时钟的主节点(Master)或从节点(Slave)。主节点负责向网络中的从节点提供准确的时间信息,而从节点则通过与主节点同步其本地时钟。这种同步可以在局域网(LAN)或广域网(WAN)等各种网络环境中实现。ptp4l工具提供了丰富的配置选项,可以根据具体的需求进行调整和定制。ptp4l还支持多种PTP协议版本。
在一个实施例中,通过运行ptpd守护进程,可以将计算机配置为gPTP网络中的主节点(Master)或从节点(Slave)。主节点负责提供准确的时间信息,而从节点通过与主节点同步本地时钟。这种同步可以在局域网(LAN)或广域网(WAN)等各种网络环境中实现。ptpd支持多种PTP协议版本,实现PTP协议中的时钟同步、时钟源选择、网络延迟补偿等功能。ptpd还提供了丰富的配置选项,可以根据具体需求进行调整和定制。ptpd可以与各种硬件时钟设备和网络设备集成,以实现更精确的时间同步。
在其他实施例中,网络时间还是可以PTP时间或者其他网络时间,本公开对此不作限制。
在一个实施例中,系统时间例如可以是操作系统基于计算器/定时器生成的时间。系统时间可以通过系统内部的时钟所记录的时间。这个时钟例如可以由晶体振荡器驱动,以提供一个稳定的时间基准。系统时间通常用于记录文件的创建和修改时间、计划任务的执行时间、日志记录等。系统时钟在例如Linux和QNX等多个操作系统中都存在。
在一个实施例中,系统时钟可以通过Posix标准接口访问。POSIX(PortableOperating System Interface,可移植操作系统接口)是标准化的操作系统接口,旨在提供可移植性和互操作性。POSIX定义了操作系统应该提供的一组函数、命令和工具,以便应用程序可以在不同的操作系统上进行开发和移植。
POSIX标准涵盖了许多方面的操作系统接口,包括文件系统操作、进程管理、线程管理、信号处理、网络通信等。POSIX提供了一组通用的函数和数据类型,以及一些约定和规范,使开发人员能够以一种标准化的方式与操作系统进行交互。使用POSIX接口编写的应用程序可以在符合POSIX标准的操作系统上进行编译和运行,从而实现了高度的可移植性。许多操作系统都支持POSIX接口,包括各种UNIX系统(如Linux、MacOS和BSD)以及其他类UNIX系统。
在一个实施例中,可以利用“clock_gettime()”获取当前系统时间和时钟信息。clock_gettime()是POSIX标准中定义的函数,通常用于需要精确计时和时间测量的应用程序。使用“clock_gettime()”函数可以获取到纳秒级别的时间精度,提供了比其他时间函数更高精度的时间信息。“clock_gettime()”常用于需要进行时间测量、性能分析、调试和同步的应用程序,以及实现定时器、计时器等功能。
应当理解,PHC时钟和系统时钟在计算机系统中有不同的作用和功能。系统时钟是操作系统中的主时钟,是计算机硬件中的组件,用于控制和同步整个系统的操作。系统时钟产生固定的脉冲信号,用于同步CPU、内存、总线和其他系统组件的操作,其确定了计算机的基本时序,控制着指令的执行、数据的传输和系统的运行速度。PHC时钟用于网络时间同步的时钟。PHC时钟是精确的时钟源,用于在计算机网络中实现高精度的时间同步。PHC时钟使用PTP或者gPTP来提供网络时间信息,以确保网络中的各个节点具有高度一致的时间参考。因此,系统时钟主要用于内部计算机系统的运行和同步,而PHC时钟主要用于网络中的时间同步和协调。它们在功能和应用上有所不同,都在操作系统中起着重要的作用。
在一个实施例中,一个或多个应用可以是指在操作系统上运行的应用程序,通常也可以称为软件,本公开对此不做赘述。
在框103,确定当前网络时间和系统时间的偏差值,并且在框105,基于偏差值和针对当前时刻的系统时间,确定针对一个或多个应用中至少部分应用的共享网络时间。这样一来,共享网络时间可以独立于或者隔离于当前网络时间,从而允许应用程序在数据处理阶段之前使用系统时钟,然后将时间转换为共享网络时间,而无需对当前网络时间进行修改。这种灵活性和兼容性使得在不同的操作系统和网络协议实现之间更易于使用和迁移。
在一些实施例中,由于由于系统时钟和网络时钟的频率可能会有差异,随着时间的增长,两者的偏差会越来越大,偏差值也越来越偏离真实偏差,需要维持偏差值在系统允许的范围内,因此需要对偏差值进行更新。在一个实施例中,可以获取针对当前时刻第一后续时刻的当前网络时间和针对第一后续时刻的系统时间,确定当前网络时间和系统时间的临时偏差值,继而确定针对第一后续时刻的系统时间与针对第二后续时刻的系统时间的时间间隔,并且响应于确定到时间间隔大于预定阈值,将临时偏差值确定为更新后偏差值,其中预定阈值与偏差值的精度相关联,以对偏差值进行更新。其中第二后续时刻包括第一后续时刻的后续相邻时刻。
下文将以ADCU系统为例,结合图2至图6介绍集成高精度时间的设备、系统、方法以及流程。在该特定实施例中,网络时间以gPTP时间为例,系统时间则利用操作系统的系统时钟获取。图2至图6的示例实施例包括利用偏差值集成得到共享网络时间的具体实现以及对偏差值更新的原理和方案。
图2示出了根据本公开的实施例的用于集成高精度时间的示例性设备200模块交互示意图。整体地,设备200包括硬件层、操作系统层以及应用层。在一个实施例中,设备200例如可以是自动驾驶控制设备,例如ADCU系统设备。这样的设备涉及多种不同类型的多个传感器,感知模块在融合传感器的识别对象时需要依赖高精度的时钟源。
在一个实施例中,如图2所示,硬件层可以包括PHC时钟、摄像头及雷达等感知硬件以及操作系统集成硬件等。PHC时钟如前文所述用来获得gPTP时间,摄像头及雷达等多个传感器由于后续需要进行信息融合,因此时钟需尽可能保持一致,从而保证融合信息的准确性和精度。操作系统可以集成在硬件层上并且可以包括系统时钟,系统时钟如前文所述是基于计算器/定时器生成的时间,上电后从0开始。操作系统例如可以是Linux和QNX。系统时钟可以在Linux和QNX上都存在,可以如前所述通过Posix标准接口访问,比如clock_gettime()。在其他实施例中,系统时钟也可以通过设置在硬件层上的硬件直接获取,本公开对此不作限制。
在一些实施例中,继续参照图2,应用层可以包括gPTP同步服务、时间处理单元、感知应用以及融合单元。时间处理单元也可以被称为时间更新单元。gPTP同步服务从硬件层的PHC时钟读取PHC时钟,并且定时递送至时间处理单元单元。在一个实施例中,如前所述,gPTP同步服务可以作为slaver节点从以太网获取时间,开源实现有ptp4l、ptpd。不同的实现通过不同的方式对外提供gPTP时间。ptp4l实现是更新后的时间写入到硬件寄存器,其他应用通过系统调用读取硬件寄存器,获取最新的时间。
在一个实施例中,继续参照图2,时间处理单元可以读取系统时钟,例如可以通过感知应用读取系统时钟,以得到系统时间,即原始时间戳。感知应用还可以读取摄像头及雷达等感知传感器的数据。由于系统中存在多个摄像头、雷达,为了将不同传感器的数据对齐,需要使用gPTP时间。这些数据将在时间处理单元处同步后生成共享网络时间(即集成后的gPTP时间戳),并且进一步送到融合单元进行数据融合。这样一来,时间更新单元同时获取gPTP时间和系统时钟,计算两者的偏差值Offset,然后通过如下等式计算共享网络时间:gPTP时间=系统时钟+Offset。
在一个实施例中,时间处理单元可以根据精度需要,按照预先配置的间隔,如图5定时更新偏差值Offset。
应当理解,上述设备200仅仅是示例性的,还可以在本公开的范围内对其他设备和系统采用该集成网络时间的方法,本公开对此不作限制。
图3示出了根据本公开的实施例的计算gPTP时间流程300的示意图。
如图3所示,在一些实施例中,在流程300中,在框301,配置系统的时钟节拍参数CONFIG_HZ。在一个实施例中,以Linux为例,在使用传统时钟模式时,该参数会影响系统时钟的精度。例如,将时钟节拍参数CONFIG_HZ配置为1000时,精度则为1ms。而在支持高精度时钟模式的系统中,该参数对系统时钟精度的影响则不太明显。时钟节拍本身是周期性的中断,每次中断时会更新系统时钟。在传统模式下,系统时钟的更新频率越高,精度就越高,但同时也会带来更多的性能消耗。因此,出现了高精度时钟模式,在这种模式下,节拍对精度的影响较小。
继续参照图3,在框303,可以获取系统时钟T1。系统时钟T1例如可以通过图2所示的系统时钟获取。进一步,在框305,可以计算将系统时钟T1和偏差值Offset相加,得到集成后的gPTP时间,也即共享网络时间。
图4示出了根据本公开的实施例的gPTP时间和系统时间的偏差累积400示意图。由于系统时钟和gPTP时钟的频率可能会有差异,随着时间的增长,两者的偏差会越来越大,Offset也越来越偏离真实偏差。例如,如图4所示,假设gPTP时间和系统时钟的频率比值RateRatio为1.0/0.91,Offset偏差DeltaT=(RateRatio-1)*1.0s*Timeout。则在绝对时间为0秒时,gPTP同步服务获取的gPTP时间为Clock1,此时系统时钟T1=Clock1-Offset。而在绝对时间1s时,gPTP同步服务获取的gPTP时间Clock2=Clock1+1s,而系统时间T2=T1+0.9s。随着时间继续推移,在绝对时间2s处,gPTP同步服务获取的gPTP时间Clock3=Clock2+1s,系统时钟T3=T2+0.9s。此时真实的t_offset=T3-Clock3=T1+1.8s-(Clock1+2s)=T1-Clock1-0.2s=Offset-0.2s。
可以看出,随着时间推移,偏差将越来越大。因此,需要使用一定的方案更新Offset的值在系统可以接受的范围内。
图5示出了根据本公开的实施例的偏差值更新流程500示意图。参照图5,在流程500中,在框501,等待TimeOut,如果发现更新超时,则进行Offset更新,如果更新未超时,则继续等待TimeOut。TimeOut表示超时时间,指示系统等待gPTP时钟和系统时钟同步的最长允许时间。随后,在框502,读取系统时钟T1,该系统时钟读取的方式可以按照图2所示的方式进行,在此不赘述。在框503,读取gPTP时钟ClockT1,gPTP时钟的读取也可以按照图2所示的方式进行,在此不赘述。随后,在框504,计算ClockT1和T1的临时偏差值TempOffset=ClockT1-T1。
继续参照图5。在框505,再次读取系统时钟T2,并且计算执行时间runTime=T2-T1,并判断是否超过预定阈值threshold。若超过threshold,说明该更新操作可能被其他任务中断,计算有较大的误差,数值不可用;若小于threshold,则数据有效。
在一个实施例中,该threshold的最大值不能大于Offset的精度。例如,如果Offset的精度要求是1ms,那么threshold最大值则是1ms。这是因为,不打断的情况下,执行时间比较快,但被打断的可能性一直存在,在系统繁忙时被打断的时间更长。若是获取T1和获取gPTP时间之间被打断,计算的TempOffset的值会包含了一个小的时间片段DeltaT,这将结合图6进行更详细介绍。
继续参照图5。在框506,使用赋值操作TempOffset更新Offset。其中Offset=TempOffset,Offset是有符号的整型值。接下来,可以周期执行框501-506的操作,可以实现Offset的动态更新,其更新的周期可以参照图6所示的原理进行。
图6示出了根据本公开的实施例的中断检测逻辑600示意图。如图6所示,获取GPTP时间在两次获取系统时间T1和T2之间,若是获取T1和获取gPTP时间之间被打断,计算的TempOffset的值会包含了一个小的时间片段DeltaT。在一个实施例中,系统需求允许偏差DeltaT可以通过如下的方式计算:DeltaT=(RateRatio-1)*1.0s*TimeOut。其中DeltaT是系统需求允许的偏差,RateRatio是gPTP时钟频率和系统时钟频率的比值,TimeOut超时时间。
具体来说,由于RateRatio是gPTP时钟频率可能略有不同,RateRatio提供了对这种频率差异进行补偿的因子。
DeltaT表示系统要求允许的时间偏差。通过将RateRatio减去1(即gPTP时钟频率相对于系统时钟的相对偏差),乘以1.0秒(即1秒的时间间隔),再乘以Timeout(最长等待时间),可以计算出系统允许的时间偏差范围。
换句话说,DeltaT表示系统对于gPTP时钟和系统时钟之间时间偏差的容忍度。如果实际的时间偏差超过DeltaT,系统可能会认为时间同步不可靠或不准确,并可能采取相应的措施来纠正或处理这种时间偏差。因此,Timeout在这里表示的是系统等待时间的限制,即允许的最长等待时间。超过这个时间间隔,系统可能会认为时间同步不可靠。
由此,在上述实施例中,需要gPTP时间的应用可以先使用系统时钟,然后在将时间送到融合模块之前,将其转换为gPTP时间,转换精度可配置。此外,该方案不需要从设备(slaver)更新PHC硬件时钟,在计算偏移量Offset的过程中也不依赖关闭中断或停止调度的系统接口。由于感知应用在数据处理阶段可以先使用广泛存在的系统时钟,因此该方案对不同的操作系统和不同的gPTP实现具有更好的兼容性。
图7示出了根据本公开的示例实施例的用于集成高精度时间的装置700的示意性框图。装置700可以被包括在或者被实现为设备200。
如图7所示,装置700包括时间获取模块701、偏差值确定模块703以及共享网络时间确定模块705。其中,时间获取模块701被配置为获取针对当前时刻的当前网络时间和针对当前时刻的系统时间,系统时间与操作系统相关联并且操作系统上能够运行一个或多个应用;偏差值确定模块703被配置为确定当前网络时间和系统时间的偏差值;以及共享网络时间确定模块705被配置为基于偏差值和针对当前时刻的系统时间,确定针对一个或多个应用中至少部分应用的共享网络时间。
在一些实施例中,装置700还可以被配置为:获取针对当前时刻第一后续时刻的当前网络时间和针对第一后续时刻的系统时间;确定当前网络时间和系统时间的临时偏差值;确定针对第一后续时刻的系统时间与针对第二后续时刻的系统时间的时间间隔,其中第二后续时刻包括第一后续时刻的后续相邻时刻;以及响应于确定到时间间隔大于预定阈值,将临时偏差值确定为更新后偏差值,其中预定阈值与偏差值的精度相关联。
在一些实施例中,时间获取模块701还可以被配置为:从系统时钟上读取针对当前时刻的系统时间,系统时钟耦合至操作系统;以及利用gPTP同步服务获取针对当前时刻的当前网络时间。
在一些实施例中,时间获取模块701还可以被配置为:配置系统时钟的时钟节拍参数,以初始化系统时钟。
在一些实施例中,预定阈值可以小于或等于偏差值的计算精度。在一些实施例中,计算精度能够基于预定阈值、时钟节拍参数以及针对操作系统的超时时间而动态调整,其中超时时间与当前网络时间和系统时间的同步相关联。
在一些实施例中,针对一个或多个应用中至少部分应用的共享网络时间隔离于当前网络时间。在一些实施例中,操作系统可以包括Linux和QNX中的至少一者。
在一些实施例中,装置700还可以被配置为:利用ptp4l和ptpd中的至少一者以获取当前网络时间;以及利用Posix标准接口访问系统时钟以获取系统时间。
装置700中所包括的单元可以利用各种方式来实现,包括软件、硬件、固件或其任意组合。在一些实施例中,一个或多个单元可以使用软件和/或固件来实现,例如存储在存储介质上的机器可执行指令。除了机器可执行指令之外或者作为替代,装置700中的部分或者全部单元可以至少部分地由一个或多个硬件逻辑组件来实现。作为示例而非限制,可以使用的示范类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD),等等。
图8示出了能够实施本公开的多个实施例的电子设备800的框图。电子设备800例如用来实在或者被包括在设备200中,并且可以用来实现方法100中的一个或多个操作。
电子设备800旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备800还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图8所示,电子设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储电子设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
电子设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许电子设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如方法100。例如,在一些实施例中,方法100可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到电子设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的方法100的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法100。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (9)

1.一种用于集成高精度时间的方法,其特征在于,包括:
获取针对当前时刻的当前网络时间C1和针对所述当前时刻的系统时间T1,所述系统时间与操作系统相关联并且所述操作系统上能够运行一个或多个应用;
确定所述当前网络时间C1和所述系统时间T1的偏差值;以及
基于所述偏差值和针对所述当前时刻的系统时间T1,确定针对一个或多个所述应用中至少部分应用的共享网络时间,所述共享网络时间隔离于所述当前网络时间C1;
其中所述方法还包括:
获取针对所述当前时刻第一后续时刻的当前网络时间C2和针对所述第一后续时刻的系统时间T2;
确定所述当前网络时间C2和所述系统时间T2的临时偏差值;
确定针对所述第一后续时刻的系统时间T2与针对第二后续时刻的系统时间T3的时间间隔,其中所述第二后续时刻包括所述第一后续时刻的后续相邻时刻;以及
响应于确定到所述时间间隔大于预定阈值,将所述临时偏差值确定为更新后偏差值,其中所述预定阈值与所述偏差值的精度相关联。
2.根据权利要求1所述的方法,其特征在于,获取针对当前时刻的当前网络时间C1和针对所述当前时刻的系统时间T1,所述系统时间与操作系统相关联并且所述操作系统上能够运行一个或多个应用包括:
从系统时钟上读取针对所述当前时刻的系统时间T1,所述系统时钟耦合至所述操作系统;以及
利用gPTP同步服务获取针对当前时刻的当前网络时间C1。
3.根据权利要求2所述的方法,其特征在于,从系统时钟上读取针对所述当前时刻的系统时间T1,所述系统时钟耦合至所述操作系统包括:
配置所述系统时钟的时钟节拍参数,以初始化所述系统时钟。
4.根据权利要求3所述的方法,其特征在于,所述预定阈值小于或等于所述偏差值的计算精度,并且所述计算精度能够基于所述预定阈值、所述时钟节拍参数以及针对所述操作系统的超时时间而动态调整,其中所述超时时间与当前网络时间和系统时间的同步相关联。
5.根据权利要求1所述的方法,其特征在于,所述操作系统包括Linux和QNX中的至少一者。
6.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
利用ptp4l和ptpd中的至少一者以获取所述当前网络时间C1;以及
利用Posix标准接口访问所述系统时钟以获取所述系统时间T1。
7.一种用于集成高精度时间的装置,其特征在于,包括:
时间获取模块,被配置为获取针对当前时刻的当前网络时间和针对所述当前时刻的系统时间,所述系统时间与操作系统相关联并且所述操作系统上能够运行一个或多个应用;
偏差值确定模块,被配置为确定所述当前网络时间和所述系统时间的偏差值;以及
共享网络时间确定模块,被配置为基于所述偏差值和针对所述当前时刻的系统时间,确定针对一个或多个所述应用中至少部分应用的共享网络时间,所述共享网络时间隔离于所述当前网络时间;
其中所述装置还被配置为:
获取针对所述当前时刻第一后续时刻的当前网络时间C2和针对所述第一后续时刻的系统时间T2;
确定所述当前网络时间C2和所述系统时间T2的临时偏差值;
确定针对所述第一后续时刻的系统时间T2与针对第二后续时刻的系统时间T3的时间间隔,其中所述第二后续时刻包括所述第一后续时刻的后续相邻时刻;以及
响应于确定到所述时间间隔大于预定阈值,将所述临时偏差值确定为更新后偏差值,其中所述预定阈值与所述偏差值的精度相关联。
8.一种电子设备,所述设备包括:
一个或多个处理器;以及
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现根据权利要求1至6中任一项所述的方法。
9.一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现根据权利要求1至6中任一项所述的方法。
CN202410199724.7A 2024-02-23 2024-02-23 用于集成高精度时间的方法、装置、设备和介质 Active CN117792558B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410199724.7A CN117792558B (zh) 2024-02-23 2024-02-23 用于集成高精度时间的方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410199724.7A CN117792558B (zh) 2024-02-23 2024-02-23 用于集成高精度时间的方法、装置、设备和介质

Publications (2)

Publication Number Publication Date
CN117792558A CN117792558A (zh) 2024-03-29
CN117792558B true CN117792558B (zh) 2024-05-03

Family

ID=90389153

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410199724.7A Active CN117792558B (zh) 2024-02-23 2024-02-23 用于集成高精度时间的方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN117792558B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103001721A (zh) * 2012-12-11 2013-03-27 上海市电力公司 1588网络时间同步协议在智能变电站的应用
CN107026703A (zh) * 2017-05-19 2017-08-08 北京航天自动控制研究所 一种混合网络中的级联式时间同步方法
CN114461012A (zh) * 2022-01-19 2022-05-10 许昌许继软件技术有限公司 一种嵌入式系统不同时钟域运行时戳获取方法及装置
CN115021854A (zh) * 2022-06-13 2022-09-06 零束科技有限公司 一种时间同步方法、装置、计算机存储介质及电子设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103001721A (zh) * 2012-12-11 2013-03-27 上海市电力公司 1588网络时间同步协议在智能变电站的应用
CN107026703A (zh) * 2017-05-19 2017-08-08 北京航天自动控制研究所 一种混合网络中的级联式时间同步方法
CN114461012A (zh) * 2022-01-19 2022-05-10 许昌许继软件技术有限公司 一种嵌入式系统不同时钟域运行时戳获取方法及装置
CN115021854A (zh) * 2022-06-13 2022-09-06 零束科技有限公司 一种时间同步方法、装置、计算机存储介质及电子设备

Also Published As

Publication number Publication date
CN117792558A (zh) 2024-03-29

Similar Documents

Publication Publication Date Title
US11609598B2 (en) Network card, time synchronization methods and devices, and computer storage media
US7346793B2 (en) Synchronization of multiple operational flight programs
US10944852B2 (en) Computer network packet transmission timing
CN106533399B (zh) 修改时钟信号的电路和方法及执行时间敏感任务的装置
US20210288736A1 (en) Method, device, and computer program for improving synchronization of clocks in devices linked according to a daisy-chain topology
US20220248353A1 (en) Synchronization method and device
US9459652B1 (en) Virtual reference clock for virtual machines
Chen et al. A clock synchronization method for EtherCAT master
CN109194432A (zh) 一种kvm下多虚拟机时间同步系统
CN117792558B (zh) 用于集成高精度时间的方法、装置、设备和介质
EP3142286B1 (en) Synchronising devices and method
US20230236624A1 (en) Clock error-bound tracker
TW202046103A (zh) 多晶片時序同步電路及方法
US11907754B2 (en) System to trigger time-dependent action
CN112637031A (zh) 从站控制周期的校准方法、校准装置和驱动控制系统
CN112583513A (zh) 云平台时钟授时方法及系统
KR20090084895A (ko) 통합형 타이밍 네트워크에서 계층-1 구성을 정의하는 방법
Li et al. A synchronization method for local applications of EtherCAT master-slave in Open CNC system
US20230153156A1 (en) Synchronization of system resources in a multi-socket data processing system
Sax et al. Towards COTS component synchronization for low SWaP-C flight control systems
US9746876B2 (en) Drift compensation for a real time clock circuit
Yongliang et al. Research on clock synchronization mechanism of distributed simulation system based on DDS
Yang et al. The Implementation of IEEE 1588-2008 Precision Time Protocol on the STM32F107
CN112019288B (zh) 时间同步方法、业务单板及网络设备
Li Clock synchronization technology research for distributed automatic test system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant