本技术涉及时钟,特别是涉及一种时间同步方法、装置、设备及计算机可读存储介质。
背景技术:
1、以太网通信技术广泛应用于自动化控制工程中,在通信网络中,主站控制器用于向各从站控制器发送数据,为保证各从站控制器的时钟需要一致,在各从站控制器的时钟不一致时,目前通常按照设定的补偿值对从站控制器的各时钟周期逐次进行补偿,直到达到总补偿值,实现同一时刻各从站控制器的时间同步。然而依次对各时钟进行补偿的方式,可能出现在前的时钟周期被补偿后达到了总补偿值,导致在后的时钟周期无需补偿的情况,从而会存在补偿点位置分布不均匀,补偿曲线陡峭的问题。
技术实现思路
1、本技术提供一种能够实现补偿点位置分布均匀,补偿曲线平滑的时间同步方法、装置、设备及计算机可读存储介质。
2、一种时间同步方法,包括:
3、获取当前时刻的参考时钟时间和本地时钟时间;
4、根据所述参考时钟时间和所述本地时钟时间得到当前系统误差;
5、根据所述当前系统误差和前序系统误差对上一周期补偿值进行修正,获得当前周期补偿值;所述前序系统误差为上一周期的系统误差;
6、将所述当前周期补偿值平均分布于以所述当前时刻起的同步周期内进行时钟补偿,使得补偿完毕时刻所述本地时钟时间与所述参考时钟时间同步;其中,所述补偿完毕时刻为所述当前时刻经过所述同步周期后的时刻。
7、在其中一个实施例中,所述将所述当前周期补偿值平均分布于以所述当前时刻起的同步周期内进行时钟补偿包括:
8、在所述同步周期内获取均匀分布的多个所述本地时钟周期,作为目标补偿周期;其中所述目标补偿周期的数量等于所述当前周期补偿值与预设单位补偿值的商值;
9、以所述预设单位补偿值对所述目标补偿周期进行时钟补偿。
10、在其中一个实施例中,所述在所述同步周期内获取均匀分布的多个所述本地时钟周期,作为目标补偿周期包括:
11、获取在所述同步周期内平均分布的多个时钟补偿周期,以及在各所述时钟补偿周期内需要进行时钟补偿的时钟补偿次数;其中,所述时钟补偿周期的数量与所述时钟补偿次数的乘积等于所述目标补偿周期的数量;
12、获取均匀分布在各所述时钟补偿周期中的多个所述本地时钟周期,作为所述目标补偿周期,其中各所述时钟补偿周期内的所述目标补偿周期的数量等于所述时钟补偿次数的值。
13、在其中一个实施例中,所述获取在所述同步周期内平均分布的多个时钟补偿周期,以及在各所述时钟补偿周期内需要进行时钟补偿的时钟补偿次数包括:
14、获取所述预设单位补偿值与所述同步周期的第一乘积值,以及所述当前周期补偿值与所述本地时钟周期的周期值的第二乘积值,并根据所述第一乘积值和所述第二乘积值得到时钟补偿周期和时钟补偿次数,其中所述第一乘积值和所述第二乘积值的商值与所述时钟补偿次数的乘积等于所述时钟补偿周期;其中所述时钟补偿周期和所述时钟补偿次数均为整数。
15、在其中一个实施例中,所述获取均匀分布在各所述时钟补偿周期中的多个所述本地时钟周期,作为所述目标补偿周期包括:
16、对于所述时钟补偿周期中各本地时钟周期,获取上一所述本地时钟周期的参考补偿次数,将上一所述本地时钟周期的所述参考补偿次数与所述时钟补偿周期的总周期数进行商运算,获得余数值;
17、根据所述余数值与所述时钟补偿次数的和,获得所述本地时钟周期的参考补偿次数;
18、从各所述本地时钟周期中,确定所述参考补偿次数与所述时钟补偿周期的总周期数的商值为1以上的所述本地时钟周期,获得目标补偿周期。
19、在其中一个实施例中,所述方法还包括:
20、根据所述当前周期补偿值确定目标计数方向;
21、以所述目标计数方向作为所述目标补偿周期的补偿方向。
22、在其中一个实施例中,所述根据所述当前系统误差和前序系统误差对上一周期补偿值进行修正,获得当前周期补偿值包括:
23、根据所述当前系统误差和前序系统误差判断上一时刻的过补偿情况;
24、若不存在过补偿情况,则所述当前周期补偿值被表示为:
25、an=an-1+c
26、若存在过补偿情况,则所述当前周期补偿值被表示为:
27、an=an-1-x
28、其中,n表示所述当前时刻,an为所述当前周期补偿值,an-1为所述上一周期补偿值,c为与所述当前系统误差符号相反的常数,x为与dn-1正相关的函数,dn-1为上一时刻累计补偿值,若an-1与an-2的符号相同,则dn-1=dn-2+c;若an-1与an-2的符号不同,则dn-1=0,an-2为n-2时刻的周期补偿值。
29、在其中一个实施例中,所述x被表示为dn-1/2。
30、在其中一个实施例中,所述根据所述参考时钟时间和所述本地时钟时间得到当前系统误差包括:
31、计算所述参考时钟时间和所述本地时钟时间的差值,并采用前序系统误差对所述差值进行滤波,将滤波后的所述差值作为所述当前系统误差。
32、在其中一个实施例中,所述当前系统误差被表示为:
33、δt=(δtn-1+t0-t1)/2
34、其中,δt为所述当前系统误差,δtn-1为所述前序系统误差;t0为所述本地时钟时间,t1为所述参考时钟时间。
35、在其中一个实施例中,所述获取当前时刻的参考时钟时间和本地时钟时间包括:
36、获取所述当前时刻主机设备发送数据帧时所述主机设备的第一计时时间,作为所述当前时刻的所述参考时钟时间;
37、获取所述当前时刻目标计时设备接收到所述数据帧时所述目标计时设备的第二计时时间,作为所述当前时刻的所述本地时钟时间。
38、在其中一个实施例中,所述数据帧携带所述第一计时时间的信息,所述获取所述当前时刻主机设备发送数据帧时所述主机设备的第一计时时间包括:
39、获取所述目标计时设备接收到的所述数据帧,得到所述第一计时时间。
40、一种时间同步装置,所述装置包括:
41、时间获取模块,用于获取当前时刻的参考时钟时间和本地时钟时间;
42、误差获取模块,用于根据所述参考时钟时间和所述本地时钟时间得到当前系统误差;
43、修正模块,用于根据所述当前系统误差和前序系统误差对上一周期补偿值进行修正,获得当前周期补偿值;所述前序系统误差为上一周期的系统误差;
44、补偿模块,用于将所述当前周期补偿值平均分布于以所述当前时刻起的同步周期内进行时钟补偿,使得补偿完毕时刻所述本地时钟时间与所述参考时钟时间同步;其中,所述补偿完毕时刻为所述当前时刻经过所述同步周期后的时刻。
45、一种时间同步设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的方法的步骤。
46、一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
47、上述时间同步方法通过获取当前时刻的参考时钟时间和本地时钟时间,然后根据参考时钟时间和本地时钟时间得到当前系统误差,再根据当前系统误差和前序系统误差对上一周期补偿值进行修正,获得当前周期补偿值,最终将当前周期补偿值平均分布于以当前时刻起的同步周期内进行时钟补偿,使得补偿完毕时刻本地时钟时间与参考时钟时间同步,如此通过获取当前周期补偿值,从而将该当前周期补偿值平均分布于同步周期内,则可实现补偿点位置分布均匀,补偿曲线更平滑。