用于工业网络设备间时间同步的时钟漂移补偿方法及电路

文档序号:30136446发布日期:2022-05-21 01:30阅读:185来源:国知局
用于工业网络设备间时间同步的时钟漂移补偿方法及电路

1.本发明涉及工业实时以太网技术领域,具体涉及适用于工业实时以太网的一种现场设备间时间同步的时钟漂移补偿方法。


背景技术:

2.工业实时以太网以其通信带宽大、融合性强、实时性高等特点,已经成为工业自动化领域现场设备间互联的主流网络。由于工业自动化领域要求现场设备之间的数据更新具有实时性,动作执行满足同步性,因而工业实时以太网的数据通信必须具备确定性,才能满足工业现场应用对实时性、同步性和可靠性的要求。目前,主流的工业实时以太网普遍采用分时复用的通信方式使网络上各设备共享通信带宽,实现通信确定性,而时间同步技术是满足分时复用可靠性的必要保障。
3.时间同步技术使得网络中的所有设备(主站和从站)共享同一个系统时间。在时间同步之前,首先选择网络中的一个设备作为主时钟设备,该设备的本地时间作为整个网络的系统时间;网络中的其他设备与主时钟设备同步,将各自的本地时间同步到系统时间上,进而实现全网时间同步。目前,工业实时以太网采用的时间同步协议包括ieee1588精确时间同步协议和一些特殊网络(如ethercat)采用的自定制时间同步协议,但无论哪种时间同步协议,其时间同步都包括3个步骤,即第一,计算网络中各个设备到主时钟设备的通信延时;第二,计算各个设备的本地时间与系统时间的初始偏差;第三,评估各个设备主时钟设备之间由于晶振之间微小差异导致的时钟漂移。由于前两个时间参数,不会随着时间变化,所以在时间同步时进行一次补偿即可;而时钟漂移参数是随温度变化而改变的,其对时间同步精度的影响是一直存在的,所以需要周期进行补偿。
4.设备的时钟漂移补偿是通过同步设备和主时钟设备之间的周期通信实现的。主时钟设备会周期性的向同步设备发送带有网络系统时间的数据帧,同步设备收到数据帧后,从中提取出系统时间,与自身的本地时间进行比较,求出时间差值并以此为基础,进行时钟漂移补偿。早期的时钟漂移补偿方法只是将时间差值均匀的补偿到本地时间中,该方法虽然简单、易于实现,但是由于没有考虑同步设备与主时钟设备之间时钟晶振的偏差,使得同步偏差会随着时间积累,在时间同步精度要求较高时,必须缩短同步周期,降低网络带宽的利用率。目前采用的时钟漂移补偿方法都会对时钟晶振偏差进行评估,使用多位数除法器或pid控制等,电路结构比较复杂,并且要求同步周期严格一致,而这在某些网络中是很难保证的。


技术实现要素:

5.本发明目的是提出一种用于工业实时以太网的时钟漂移补偿方法和装置,实现时钟漂移补偿。采用时间偏差和频率偏差分离补偿的方式,在每个同步周期对频率偏差进行评估,并用分数分频器代替除法器,简化电路实现。该方法不要求同步周期严格一致,因此适用范围更广阔。
6.本发明为实现上述目的所采用的技术方案是:用于工业网络设备间时间同步的时钟漂移补偿方法,包括以下步骤:
7.第一步,主时钟设备周期发送带有系统时间的数据帧,同步设备收到该数据帧后,提取出系统时间,并记录收到数据帧时刻的本地时间和本地时钟的计数值;
8.第二步,在tn时刻,判断同步周期n-1内的时钟周期数cycle_numn的值是否大于门限值;若大于门限值,则转至第三步;否则,直接将时间偏差time_diffn补偿到本地时间内,之后转至第四步;
9.第三步,同时进行时间偏差补偿和频率偏差补偿;
10.第四步,在t
n+1
时刻,即同步周期n结束,同步周期n+1开始时,重复执行第一~三步,使时钟漂移补偿连续的周期执行。
11.第一步包括以下步骤:
12.在tn时刻,即同步周期n开始时,计算本地时间与系统时间的时间偏差time_diffn为:
13.time_diffn=localtime
n-systimen(1)
14.计算采用系统时间计时的同步周期n-1的周期时长sync_cycle_sysn为:
15.sync_cycle_sysn=systime
n-systime
n-1
(2)
16.计算采用本地时钟计时的同步周期n-1内的时钟周期数cycle_numn和周期时长sync_cycle_localn为:
17.cycle_numn=clknum
n-clknum
n-1
(3)
18.sync_cycle_localn=cycle_numn*clkcycle(4)
19.计算同步周期n-1内,系统时间和本地时钟计时的差值frq_diffn为:
20.frq_diffn=sync_cycle_local
n-sync_cycle_sysn(5)
21.其中,同步设备第n次收到带有系统时间的数据帧的时刻为tn,该时刻tn表示第n个同步周期开始,第n-1个同步周期结束;systimen表示tn时刻收到的系统时间,localtimen表示tn时刻记录的本地时间,clknumn表示tn时刻记录的本地时钟计数值,clkcycle表示本地时钟的周期。
22.所述直接将时间偏差time_diffn补偿到本地时间内,具体如下:
23.localtimen=localtime
n-time_diffn(6)
24.localtimen表示tn时刻记录的本地时间。
25.所述时间偏差补偿,包括以下步骤:
26.在同步周期n中,时间偏差补偿的值为time_diffn,每隔compensate_num个时钟周期,本地时间补偿1纳秒,直到时间偏差补偿完毕,即补偿time_diffn次;其中,compensate_num表示时间偏差补偿步长,根据本地时钟的ppm值配置。
27.所述频率偏差补偿,包括以下步骤:
28.频率补偿前评估本地时间与系统时间的时钟频率偏差,即cycle_numn个本地时钟周期计时偏差了frq_diffn,为了补偿这个偏差值,每cycle_numn/frq_diffn个周期补偿1纳秒。
29.用于工业网络设备间时间同步的时钟漂移补偿电路,包括:
30.时间参数计算模块,用于在同步周期开始时,计算时钟漂移补偿需要的所有时间
参数的值,包括本地时间与系统时间的时间偏差time_diffn、系统时间计时的上一个同步周期的时长sync_cycle_sysn、上一个同步周期内本地时钟的周期数cycle_numn、本地时钟计时的上一个同步周期的时长sync_cycle_localn以及系统时间和本地时钟对同步周期的计时差值frq_diffn;并将cycle_numn送至门限判定模块,将time_diffn、frq_diffn送至时间偏差快速补偿模块;
31.门限判定模块,用于判断上一个同步周期内本地时钟的周期数cycle_numn是否大于门限值,并根据判定结果生成快速补偿使能信号、时间差值补偿使能信号和频率补偿使能信号,分别送至时间偏差快速补偿模块、时间偏差均匀补偿模块和频率补偿模块;
32.时间偏差快速补偿模块,用于根据使能信号,将本地时间与系统时间的时间偏差值一次耦合到本地时钟,实现时间快速补偿;
33.时间偏差均匀补偿模块,用于根据使能信号,将本地时间与系统时间的时间偏差值连续均匀的补偿到本地时间,即每隔compensate_num个时钟周期补偿1纳秒;
34.频率补偿模块,用于调整本地时钟的计时偏差,即等价于调整本地时钟的频率;每个同步周期都对本地时间与系统时间的时钟频率偏差进行评估,并根据评估结果调整补偿值。
35.所述时间参数计算模块通过减法器和加法器实现。
36.所述门限判定模块通过比较器实现。
37.所述时间偏差均匀补偿模块通过计数器和递减器实现。
38.所述频率补偿模块通过分频器实现。
39.本发明提出的时钟漂移补偿方法及电路,是在充分考虑了工业实时以太网的时间同步过程的前提下提出的,采用时间偏差和频率偏差分离补偿的方式,并增加了快速补偿阶段,能够提高误差补偿的收敛速度,简化电路结构,降低对同步周期的要求,增加了该方法的适用范围。
附图说明
40.图1为工业实时以太网时间同步过程;
41.图2为时钟漂移补偿方法的具体流程图;
42.图3为时钟漂移补偿电路内部结构及各模块之间信号连接图。
具体实施方式
43.下面结合附图及实施例对本发明做进一步的详细说明。
44.本发明的时钟漂移补偿电路,包括时间参数计算模块、门限判定模块、时间偏差快速补偿模块、时间偏差均匀补偿模块和频率补偿模块。
45.时间参数计算模块,用于在同步周期开始时,计算时钟漂移补偿需要的所有时间参数的值,包括本地时间与系统时间的时间偏差、系统时间计时的上一个同步周期的时长、上一个同步周期内本地时钟的周期数、本地时钟计时的上一个同步周期的时长以及系统时间和本地时钟对同步周期的计时差值。
46.门限判定模块,用于判断上一个同步周期内本地时钟的周期数是否大于门限值,并根据判定结果生成相应的使能信号,送至时间偏差快速补偿模块、时间偏差均匀补偿模
块和频率补偿模块。
47.时间偏差快速补偿模块,将本地时间与系统时间的时间偏差值一次耦合到本地时钟,实现时间快速补偿。
48.时间偏差均匀补偿模块,将本地时间与系统时间的时间偏差值连续均匀的补偿到本地时间,即每隔compensate_num个时钟周期补偿1纳秒。
49.频率补偿模块,用于调整本地时钟的计时偏差,即等价于调整了本地时钟的频率。每个同步周期都会对本地时间与系统时间的时钟频率偏差进行评估,并根据评估结果调整补偿值。
50.时钟漂移补偿电路的输入端口包括时钟信号端、系统时间戳信号端、本地时间戳信号端、同步周期指示信号端、周期数门限信号端和时间偏差补偿步长信号端;输出端口包括快速补偿指示信号端、快速补偿值信号端、偏差补偿指示信号端、偏差补偿符号信号端、频率补偿指示信号端和频率补偿符号信号端。
51.时间参数计算模块将时钟信号端、系统时间戳信号端、本地时间戳信号端和同步周期指示信号端作为输入端口;生成时间偏差信号送至时间偏差快速补偿模块和时间偏差均匀补偿模块;生成时钟频率偏差信号送至频率补偿模块;生成时钟周期计数信号送至门限判定模块和频率补偿模块。
52.门限判定模块以周期数门限信号端和来自时间参数计算模块的时钟周期计数信号为输入端口,通过二者比较,生成快速补偿使能信号、时间差值补偿使能信号和频率补偿使能信号,分别送至时间偏差快速补偿模块、时间偏差均匀补偿模块和频率补偿模块。
53.时间偏差快速补偿模块以时钟信号端、时间偏差信号和快速补偿使能信号为输入端口,生成快速补偿指示信号和快速补偿值信号作为输出端口。
54.时间偏差均匀补偿模块以时钟信号端、时间偏差补偿步长信号端、时间偏差信号和时间差值补偿使能信号为输入端口,生成偏差补偿指示信号和偏差补偿符号信号作为输出端口。
55.频率补偿模块以时钟信号端、时钟频率偏差信号、时钟周期计数信号和频率补偿使能信号为输入端口,生成频率补偿指示信号和频率补偿符号信号作为输出端口。
56.工业实时以太网中设备会以其内部时钟为时基生成本地时间,本地时间的单位为纳秒,假设该内部时钟的周期为clkcycle,则每个时钟周期,本地时间增加clkcycle。由于该内部时钟是由晶振产生的,而晶振的振动频率在单位时间内会发生变化,变化的幅度与温度有关,这就造成网络设备的本地时间出现偏差,无法满足时间同步要求,即发生了时钟漂移。本发明就是提出了一种针对时钟漂移的补偿方法,通过对时钟漂移幅度的评估,调整某些时钟周期的本地时间增加值,若时钟频率变快,则使本地时间增加值小于clkcycle,反之,则使本地时间增加值大于clkcycle,而采用的调整策略即是本发明的核心。
57.工业实时以太网时间同步以数据通信为基础,如图1所示,为工业实时以太网时间同步过程。网络中的设备会周期性收到主时钟设备发送的同步数据帧,数据帧中包含当前时刻的系统时间,假设第n次收到同步数据帧的时刻为tn,该时刻表示同步周期n-1结束,同步周期n开始。在时刻tn,网络设备提取同步数据帧中系统时间systimen,记录本地时间localtimen和本地时钟计数值clknumn,并使用上述时间参数在时刻t
n-1
的记录值,评估同步周期n-1内,该网络设备与主时钟设备之间的时间偏差和频率漂移,在同步周期n内进行补
偿。
58.时钟漂移补偿方法的具体流程如图2所示,包括参数计算和偏差补偿两个阶段,其中偏差补偿采用频率补偿和时间偏差补偿独立并行执行的方式。
59.假设在同步周期n开始时,即时刻tn,网络设备首先计算该时刻本地时间与系统时间的时间偏差time_diffn,采用以下公式:
60.time_diffn=localtime
n-systimen61.time_diffn表示在同步周期n开始时(整个同步周期n-1内),网络设备本地时间与网络系统时间的偏差,需要在同步周期n内补偿。
62.接着,网络设备需要评估其内部时钟的时钟漂移幅度,采用的方法是同时用系统时间和设备的内部时钟对同步周期n-1的长度进行计时,两者的差值作为频率偏差补偿的依据。具体步骤为:
63.计算采用系统时间计时的同步周期n-1长度sync_cycle_sysn为:
64.sync_cycle_sysn=systime
n-systime
n-1
65.计算同步周期n-1内,设备内部时钟周期数cycle_numn为:
66.cycle_numn=clknum
n-clknum
n-1
67.计算采用设备内部时钟计时的同步周期n-1长度sync_cycle_localn为:
68.sync_cycle_localn=cycle_numn*clkcycle
69.计算系统时间和设备内部时钟对同步周期n-1的计时差值frq_diffn为:
70.frq_diffn=sync_cycle_local
n-sync_cycle_sysn71.frq_diffn表示在同步周期n开始时(整个同步周期n-1内),网络设备的内部时钟在cycle_numn个时钟周期内,计时偏差了frq_diffn,进而推算出内部时钟的频率偏差幅度,在同步周期n内补偿。
72.此时,参数计算阶段结束,进入偏差补偿阶段。在偏差补偿阶段开始时,先要比较cycle_numn的值是否大于设定的门限值,若不大于,则表示网络中时间同步操作比较频繁,同步周期很小,时间偏差time_diffn的值很小(一般小于内部时钟的周期clkcycle),不需要进行频率补偿和时间偏差快速补偿就可以满足时间同步精度的要求,因此,进入快速补偿过程。在快速补偿过程中,将时间偏差time_diffn一次补偿到本地时间内,即
73.localtimen=localtime
n-time_diffn74.之后,同步周期n内的时钟漂移补偿流程结束,等到同步周期n+1开始时,再重新开始执行上述流程。
75.若cycle_numn的值大于设定的门限值,则需要并行执行频率补偿过程和时间偏移均匀补偿过程,才能保证时间同步精度。在频率补偿过程中,根据frq_diffn的意义可知,设备内部时钟每(cycle_numn/frq_diffn)个周期偏差1纳秒,所以按此频率对本地时间进行调整即可。在时间偏差均匀补偿过程中,为了防止一次性将时间偏差time_diffn补偿到本地时间所造成的时间跳变,需要将time_diffn拆分后均匀多次的补偿到本地时间上。此处采用的策略是:根据内部时钟的ppm值设置时间偏差均匀补偿的步长compensate_num,每隔compensate_num个时钟周期给本地时间补偿1纳秒,补偿time_diffn次即可。
76.根据上述流程,提出时钟漂移补偿电路,其内部结构及各模块之间信号连接如图3所示。时钟漂移补偿电路由5个模块组成,分别是时间参数计算模块、门限判定模块、时间偏
差快速补偿模块、时间偏差均匀补偿模块和频率补偿模块。
77.时间参数计算模块接收来自外部的时钟信号clk、系统时间戳信号system_time、本地时间戳信号local_time_stamp和同步周期指示信号sync_cycle_ind,其中system_time信号和local_time_stamp信号宽度为32位。时间参数计算模块包含一个32位的计数器,用于记录两次同步周期指示信号sync_cycle_ind之间的时钟周期数,该值通过时钟周期计数信号cycle_num(32位)输出,同时用于本地同步周期长度的计时。此外,模块内部还包括一个二级缓存器,用于所存当前周期和上一周期的系统时间戳;包含3个减法器和1个加法器,用于计算时间偏差和频率偏差,并通过时间偏差信号time_diff(32位)和时钟频率偏差信号frq_diff(32位)输出。
78.门限判定模块接收来自外部配置的周期数门限信号threshold_num(16位)和时间参数计算模块输出的时钟周期计数信号cycle_num,通过内置的32位比较器比较二者大小。若cycle_num《threshold_num,则将快速补偿使能信号fast_compesate_en置为1,使能时间偏差快速补偿,并将时间差值补偿使能信号diff_compesate_en和频率补偿使能信号frq_compesate_en置为0,禁止时间偏差均匀补偿和频率补偿;否则,将快速补偿使能信号fast_compesate_en置为0,禁止时间偏差快速补偿,并将时间差值补偿使能信号diff_compesate_en和频率补偿使能信号frq_compesate_en置为1,使能时间偏差均匀补偿和频率补偿。
79.当fast_compesate_en信号有效时,时间偏差快速补偿模块使能,其将time_diff的值赋值给快速补偿值信号fast_compesate_val,并将快速补偿指示信号fast_compesate_ind置1;否则,fast_compesate_val信号和fast_compesate_ind信号均无效。
80.当diff_compesate_en信号有效时,时间偏移均匀补偿模块使能,其内部包含一个16位的计数器和一个32位的递减器。计数器对偏差补偿的步长进行计数,当计数值等于时间偏差补偿步长信号compesate_num时,计数器重新计数,并将偏差补偿指示信号diff_compesate置1,同时若time_diff值为正,则偏差补偿符号信号diff_sign置为0,表示本地时间调小1纳秒,反之,偏差补偿符号信号diff_sign置为1,表示本地时间调大1纳秒;递减器以time_diff的绝对值为初值,每进行一次补偿,都会减1,当其值减为0时,时间偏移均匀补偿结束。
81.当frq_compesate_en信号有效时,频率补偿模块使能,其内部是一个分数分频器,以cycle_num为分子,frq_diff的绝对值为分子,对时钟信号clk分频;每产生一次分频指示信号时,将频率补偿指示信号frq_compesate_ind置1,同时,若frq_diff值为正,则频率补偿符号信号frq_sign置为0,表示本地时间调小1纳秒,反之,频率补偿符号信号frq_sign置为1,表示本地时间调大1纳秒。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1