CN112636860B - 基于比例积分算法的ieee1588协议时间校准方法 - Google Patents
基于比例积分算法的ieee1588协议时间校准方法 Download PDFInfo
- Publication number
- CN112636860B CN112636860B CN202011537556.6A CN202011537556A CN112636860B CN 112636860 B CN112636860 B CN 112636860B CN 202011537556 A CN202011537556 A CN 202011537556A CN 112636860 B CN112636860 B CN 112636860B
- Authority
- CN
- China
- Prior art keywords
- time
- value
- register
- calculating
- ieee1588 protocol
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
- H04J3/0658—Clock or time synchronisation among packet nodes
- H04J3/0661—Clock or time synchronisation among packet nodes using timestamps
- H04J3/0667—Bidirectional timestamps, e.g. NTP or PTP for compensation of clock drift and for compensation of propagation delays
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
- Stabilization Of Oscillater, Synchronisation, Frequency Synthesizers (AREA)
Abstract
本发明公开了一种基于比例积分算法的IEEE1588协议时间校准方法:步骤1,计算得到时间偏差值;将系统时间戳寄存器system_time减去该值;步骤2,计算当前时间偏差值tb,并将其存入当前时间偏差值表中,计算积分值;步骤3,计算频率补偿值;步骤4,设置寄存器addend存储频率补偿值;步骤5,硬件晶振产生时间计数时,将步骤1得到的更新后的系统时间戳寄存器system_time的值,加上硬件晶振的计数周期时长,再加上步骤4中寄存器addend中的值,得到当前的系统时间戳寄存器system_time的值,即完成系统时间的校准;步骤6,系统接收新的IEEE1588协议,重复执行2‑6步。
Description
技术领域
本发明属于计算机网络通信领域,具体涉及一种基于比例积分算法的IEEE1588协议时间校准方法。
背景技术
在现代化的工业制造领域,一个大的系统往往划分为多个子系统、子节点,各个节点间协同工作,这就需要每个节点设备的时间是一致的。而硬件的时间计时大多是基于晶振的计数式的计时方法,由于每个晶振的频率不可能完全一样,这就导致了不同硬件设备的时间出现不一致。因此,这就需要有一定的机制,每隔一定的时间对网络上的硬件设备进行时间同步,给整个网络提供基础的时间同步服务。
以太网的标准IEEE1588-2008(version 2)中规定了基于以太网的时间同步方法。该方法具有实现简单、同步精度高、标准化、应用广泛的特点,在实时性的工业以太网上得到了广泛应用。通过IEEE1588协议计算出主节点和从节点的时间偏差,然后校准从节点系统时钟,使得主从时钟趋于一致。如图1所示,IEEE1588的时间同步的原理是,一个设备作为主设备(Master),一个或多个设备作为多个从设备(Slave),Slave通过计算出与Master间的时间偏差,从而修正Slave的时间,使得Slave的时间与Master一致。
但是,IEEE1588协议并没有给出具体的时间校准方法,通常是直接给系统时间减去偏差值来校准。该方法准确性差,时钟抖动较大,最终使得时间同步精度变差。
发明内容
针对上述现有技术中存在的问题,本发明的目的在于,提出一种基于比例积分算法的IEEE1588协议时间校准方法。
为了实现上述目的,本发明给出如下技术方案予以解决:
一种基于比例积分算法的IEEE1588协议时间校准方法,具体包括如下步骤:
步骤1,使用IEEE1588协议计算得到时间偏差值tb;将系统时间戳寄存器system_time减去tb,得到更新后的系统时间戳寄存器system_time;
步骤2,使用IEEE1588协议计算得到当前的时间偏差值tb,并将其存入当前时间偏差值表中,使用下式计算积分值:
ki_sum=KI*∑tb
其中,KI是积分系数;∑tb是当前时间偏差值表中所有数值的累加;
步骤3,计算频率补偿值tr,公式如下:
tr=KP*tb+ki_sum
其中,tb是由步骤2得到的当前的时间偏差值,KP是比例系数,不同的KP和不同的KI组合可适应不同的应用场景;
步骤4,设置寄存器addend,用于存储步骤3计算得到的频率补偿值tr。
步骤5,硬件晶振产生时间计数时,将步骤1得到的更新后的系统时间戳寄存器system_time的值,加上硬件晶振的计数周期时长,再加上步骤4中寄存器addend中的值,得到当前的系统时间戳寄存器system_time的值,即完成系统时间的校准;
步骤6,系统接收新的IEEE1588协议,令i=i+1,转至第2步。
进一步的,KP为0.7,KI为0.3。
进一步的,所述寄存器addend为32位的寄存器。
进一步的,所述硬件晶振的计数周期时长为1s。
进一步的,所述步骤6中,每隔100us-10s系统接收到一次IEEE1588协议,取1s。
与现有技术相比,本发明的有益效果如下:
优点:
1、同步精度高。由比例积分算法预测整体修正时间偏差,考虑到了修正时间偏差过程本身带来的影响。
2、时间偏差修正的速度快。经过采集最少二次历史偏差数据,即可用比例积分算法计算出预测偏差值。在不更改IEEE1588标准的基础上,实现高效的时间校准,与原有系统兼容。
3、时间偏差的抖动小。由于采用了频率补偿值的方式校准时钟,比传统直接修改时钟的方式产生的时钟抖动小。
附图说明
图1是IEEE1588时间同步以太网体系结构;
图2是传统的时钟校准方法中与Master的时间偏差随时间的变化情况;
图3是使用了频率补偿值、比例积分算法校准时钟时与Master的时间偏差随时间的变化情况;
图4是传统的时钟校准的示意图。
图5是本发明的方法是算法流程图。
以下结合附图和具体实施方式对本发明进一步解释说明。
具体实施方式
基于现有技术中存在的诸多技术问题,本发明的设计思路是:1)时钟频率增加补偿值,通过时钟频率补偿值,来修正时间偏差,解决常规修正导致的时间抖动过大的问题。2)每次IEEE1588同步得到的偏差值,通过比例积分的算法,计算出频率补偿值。以优化同步精度,同时加快补偿值计算速度。
本发明的具体设计过程如下:
1、使用时钟频率补偿值修正时钟
如图2所示,传统的时钟校准是直接修正系统时间,就是在IEEE1588协议计算出时间偏差后,在系统时间上减去偏差值。由于时间偏差随时间不断增大,而校准是每隔一段时间修正一次,所以时间偏差会存在比较大的抖动。
本发明使用频率补偿值来校准时钟,就是在硬件晶振产生时间计数时,加上一个补偿值,从而使得系统时间被校准。这种补偿值作用于整个计时过程,不会出现时间偏差随时间逐步增加的情况。
从图3中可以看到,整个系统的时间偏差抖动可以变得更加小,更加平缓。
2、比例积分计算频率补偿值
如图4所示,传统的时钟校准从计算出偏差值到修正时间,中间经过了多个软硬件模块的数据传输和计算,导致时间修正的延迟过大,同步精度过大。
由于整个时间修正过程经过了数据传输、计算偏差值、修正时钟等过程,所以实际的真实偏差值应该是计算偏差值+校准时间。即:
tr=tb+tc
其中tr是实际的偏差(也是频率补偿值),tb是IEEE1588协议计算出的时间偏差值,tc是校准过程消耗的时间,就是上图中的t1+t2+t3。在直接修正时钟时,tc的值被忽略掉了,因此整个校准结果就变得精度比较差。
比例积分(Proportional Integral,简称PI),是一种经典的控制策略,由于其算法简单、鲁棒性好可靠性高,被广泛应用于工业控制。此处PI算法的基本公式为:
tr=KP*tb+KI*Σtb
其中,tr是频率补偿值,KP是比例系数,KI是积分系数,tb是协议IEEE1588计算出的时间偏差值。不同的KP和不同的KI组合可以适应不同的应用场景,默认情况下KP为0.7,KI为0.3。
经过比例积分计算出频率补偿值,然后修正系统时钟,整个同步精度可以从传统方法的微秒级提高到100纳秒以内。
实施例1:
遵循上述本发明的设计思路,本实施例的基于比例积分算法的IEEE1588协议时间校准方法,具体包括如下步骤:
步骤1,使用IEEE1588协议计算得到时间偏差值tb;将系统时间戳寄存器system_time减去tb,得到更新后的系统时间戳寄存器system_time;
由于频率补偿值是针对系统1秒钟时间做出的补偿,补偿值不能大于1秒,此步骤可以把系统时间偏差降低到1ms以内。
步骤2,使用IEEE1588协议计算得到当前的时间偏差值tb,并将其存入当前时间偏差值表中,使用下式计算积分值:
ki_sum=KI*∑tb
其中,KI是积分系数;∑tb是当前时间偏差值表中所有数值的累加;
本步骤即对tb的所有历史值进行累加,然后乘以积分系数KI;经过采集二次历史偏差数据,即可用比例积分算法计算出预测偏差值。在不更改IEEE1588标准的基础上,实现高效的时间校准,与原有系统兼容。
步骤3,计算频率补偿值tr,公式如下:
tr=KP*tb+ki_sum
其中,tb是由步骤2得到的当前的时间偏差值,KP是比例系数,不同的KP和不同的KI组合可以适应不同的应用场景,默认情况下KP为0.7,KI为0.3。
上述步骤由比例积分算法预测整体修正时间偏差,考虑到了修正时间偏差过程本身带来的影响,使得同步精度相较于现有技术大大提高。
步骤4,设置一个32位的寄存器addend,用于存储步骤3计算得到的频率补偿值tr。
步骤5,硬件晶振产生时间计数时,将步骤1得到的更新后的系统时间戳寄存器system_time的值,加上硬件晶振的计数周期时长(一般为1s),再加上步骤4中寄存器addend中的值,得到当前的系统时间戳寄存器system_time的值,即完成系统时间的校准;
步骤6,系统接收新的IEEE1588协议,令i=i+1,转至第2步。
一般每隔100us-10s系统接收到一次IEEE1588协议,通常为1s;
由上述方案可知,经过步骤1对时间戳寄存器system_time减去tb得到更新后的时间戳寄存器,即对时间偏差进行去除,实现对系统时间的初步调节,再经过步骤2-5,由比例积分算法预测整体修正时间偏差过程带来的影响,在更新后的时间戳寄存器system_time加上动态更新的频率补偿值,即对系统时间去除的偏差进行修正,实现对系统时间的精细调节,克服了现有技术中同步精度不高的缺陷。进一步的,通过实时动态循环上述过程,实现对系统时间的动态精细调节。同时,本发明由于采用了频率补偿值的方式校准时钟,比传统直接修改时钟的方式产生的时钟抖动小。
经实验,在直接使用时间偏差值修正时钟时,系统的时间偏差值是323±30ns。而使用了比例积分算法修正后,系统的时间偏差值是0.19±20ns。
Claims (1)
1.一种基于比例积分算法的IEEE1588协议时间校准方法,其特征在于,具体包括如下步骤:
步骤1,使用IEEE1588协议计算得到时间偏差值tb;将系统时间戳寄存器system_time减去tb,得到更新后的系统时间戳寄存器system_time;
步骤2,使用IEEE1588协议计算得到当前的时间偏差值tb,并将其存入当前时间偏差值表中,使用下式计算积分值:
ki_sum=KI*∑tb
其中,KI是积分系数;∑tb是当前时间偏差值表中所有数值的累加;
步骤3,计算频率补偿值tr,公式如下:
tr=KP*tb+ki_sum
其中,tb是由步骤2得到的当前的时间偏差值,KP是比例系数,不同的KP和不同的KI组合可适应不同的应用场景;
步骤4,设置寄存器addend,用于存储步骤3计算得到的频率补偿值tr;
步骤5,硬件晶振产生时间计数时,将步骤1得到的更新后的系统时间戳寄存器system_time的值,加上硬件晶振的计数周期时长,再加上步骤4中寄存器addend中的值,得到当前的系统时间戳寄存器system_time的值,即完成系统时间的校准;
步骤6,系统接收新的IEEE1588协议,令i=i+1,转至第2步;
KP为0.7,KI为0.3;
所述寄存器addend为32位的寄存器;
所述硬件晶振的计数周期时长为1s;
所述步骤6中,每隔100us-10s系统接收到一次IEEE1588协议,取1s。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011537556.6A CN112636860B (zh) | 2020-12-23 | 2020-12-23 | 基于比例积分算法的ieee1588协议时间校准方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011537556.6A CN112636860B (zh) | 2020-12-23 | 2020-12-23 | 基于比例积分算法的ieee1588协议时间校准方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112636860A CN112636860A (zh) | 2021-04-09 |
CN112636860B true CN112636860B (zh) | 2023-06-02 |
Family
ID=75321725
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011537556.6A Active CN112636860B (zh) | 2020-12-23 | 2020-12-23 | 基于比例积分算法的ieee1588协议时间校准方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112636860B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113453053B (zh) * | 2021-06-25 | 2022-05-06 | 杭州海康威视数字技术股份有限公司 | 分布式视频同步显示系统及视频同步显示方法、存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009119599A1 (ja) * | 2008-03-27 | 2009-10-01 | 日本電気株式会社 | クロック同期システム、ノード、クロック同期方法及びプログラム |
CN102983927B (zh) * | 2012-12-12 | 2015-04-08 | 南京协澳智能控制系统有限公司 | 一种基于ieee 1588协议的主从时钟对时的时间补偿方法 |
CN103166730A (zh) * | 2013-03-13 | 2013-06-19 | 西北工业大学 | 基于ieee1588协议的无线自组织网络时钟同步方法 |
-
2020
- 2020-12-23 CN CN202011537556.6A patent/CN112636860B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112636860A (zh) | 2021-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2787664B1 (en) | Time synchronization method and apparatus | |
US8824511B2 (en) | Clock synchronization system, node, clock synchronization method, and program | |
US9203725B2 (en) | Update of a cumulative residence time of a packet in a packet-switched communication network | |
US8402302B2 (en) | Timer system for maintaining the accuracy of a real time clock when synchronization source is not available | |
US9813174B2 (en) | Time correction method and apparatus for slave clock device | |
US8225128B2 (en) | Electronic timer system, time control and generation of timing signals | |
WO2017063450A1 (zh) | 一种时间戳过滤的方法及装置 | |
CN102195766B (zh) | 一种时间同步的方法和时钟设备 | |
US10594424B2 (en) | Time synchronization slave apparatus capable of adjusting time synchronization period, and method of determining time synchronization period | |
CN112636860B (zh) | 基于比例积分算法的ieee1588协议时间校准方法 | |
US20130243140A1 (en) | Method for Transmitting Synchronization Messages in a Communication Network | |
US11888585B2 (en) | Method for operating a network participant in an automation communication network | |
CN114157381A (zh) | 一种面向网络时延抖动的时延估计周期动态调整方法 | |
CN114205045B (zh) | 一种tte网络时钟校准方法及系统 | |
US20160127067A1 (en) | Method for operating a node of a communications network, a node and a communications network | |
WO2013163793A1 (en) | Automatic time and frequency synchronization over an asynchronous network | |
JP2008177913A (ja) | 通信装置およびそのクロック再生方法 | |
CN112636859B (zh) | 基于线性回归算法的ieee1588协议时间校准方法 | |
CN115347965B (zh) | 带缓存机制的基于改进滑动平均滤波的时间同步优化方法 | |
CN114520703B (zh) | 用于工业网络设备间时间同步的时钟漂移补偿方法及电路 | |
CN110289929B (zh) | 一种网络同步方法 | |
CN114513273B (zh) | Ptp芯片时钟模块的实现方法和装置 | |
Ju et al. | Research on IEEE 1588 clock synchronization error correction algorithm based on Kalman filter | |
CN114598412B (zh) | 时钟同步处理方法、装置、电子设备、存储介质及产品 | |
CN115038162B (zh) | 一种蓝牙时钟快速同频同相调节方法及装置 |
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 |