在庞大和繁复的工业应用中,设备和系统的需要执行复杂的操作和精密的协同,这对控制系统的时间控制精准度提出了更高的要求。尤其是在分布式运动控制系统中,仅仅几毫秒的误差可能导致执行乱序,两个机械臂甚至会因为抢夺资源而“打起来”。因此,为了满足工业级大型应用设备的需求,IEEE1588 应运而生——
1、详解IEEE1588 同步原理
IEEE1588是2002年推出的一种精确时间协议,又称为Precision Time Protocol,PTP,在2008年发布IEEE1588-2008版本,同步精度从亚毫秒提升到亚微秒级别。IEEE 1588已经广泛应用于航空航天、工业控制、电力系统等领域。
在IEEE1588系统中,一般包含一个主时钟和多个从时钟。主时钟充当时间发布者的角色,有着最好的稳定性、精确性,是整个网络的时钟源。从时钟则为接收者,获取主时钟的时间信息来调节自己的时间。
IEEE1588 同步原理如图1所示,PTP主设备和从设备交互的时钟报文有四种类型:Sync、Follow_Up、Delay_Req和Delay_Resp。在t1时刻,主机发出Sync报文,从机在t2时刻收到Sync报文。由于时钟戳都是硬件自动在MII接口层加盖的,故在Sync报文上是无法携带t1时间值,这时需要主机发送Follow_Up报文将t1时间告知从机。在t3时刻,从机发出Delay_Req报文,主机在t4时间收到Delay_Req报文,随后发送Delay_Resp报文将t4时间告知从机。至此,从机可以得到t1、t2、t3、t4共4个时间点。
图1 PTP报文
假设主机到从机的报文延时等于从机到主机的延时t-ms=t-sm=delay,从机和主机的时间偏差为offset。根据时间关系,可以列出以下两条公式:
t2=t1+offset+delay
t4=t3-offset+delay
将上述两条公式进行合并,可以得到:
delay=((t2-t1)+(t4-t3))/2
offset=((t2-t1)-(t4-t3))/2
由此可见,从机可以通过PTP报文来算出与主机时间的偏差和报文传播延时。
在IEEE1588系统中,主机周期性发送Sync报文,从机根据计算结果调节自己的时钟,缩小与主时钟的偏差offset,最终可达到亚微秒级别误差。
2、匠芯创M6800系列PTP使用介绍
匠芯创M系列芯片配置一个百兆 MAC,支持IEEE1588-2002(V1)和IEEE1588-2008(V2)版本,最高可以实现达到亚微秒的同步精度,配合其丰富外设,广泛应用于工业控制、电力系统等领域。匠芯创M6800系列芯片时钟支持粗调和细调两种方式。
粗调方式:
将计算得到的offset值写入时间更新寄存器UPDT_TIME_SEC和UPDT_TIME_NANO_SEC。
将时钟戳控制寄存器TMSTMP_CLT的bit3置1,当从机时间加或者减去更新寄存器的值后该位自动清零,完成时间调节。
细调方式:
根据从时钟相对主时钟的快慢计算一个新的频率比值填入ADDEND寄存器,该值可以加快或者减慢从机时钟。
将时钟戳控制寄存器TMSTMP_CLT的bit5置1。
等待从时钟的时间达到预期值。根据第1步中对从时钟的调节,可以计算出一个目标时间。当到达目标时间时,表明从时钟的时间已经赶上或减缓到与主时钟时间一致。
根据计算值配置TRGT_TIME_SEC和TRGT_TIME_NANO_SEC。
清除TMSMP_INT中断状态并将时钟戳控制寄存器TMSTMP_CLT的bit4置1,使能目标时间到达中断。
等待目标时间中断触发后,清除中断状态。
将ADDEND寄存器配置回旧值,完成时间调节。
Q & A 重点解答
Q:可能会有同学好奇,为什么有两种调节方式,哪种更好?
A:粗调可以更快的使从机时间与主机时间同步,但会导致从机的系统时间发生一个跳变。细调是一种线性的变化过程,花费更多的时间使从机时钟加快很减缓以达到和主机时钟同步。没有最好的调节方式,根据系统选择最合适的方式即可。
3、ADDEND值的计算
在细调方式中, ADDEND值的大小是最为关键的。为了达到20纳秒的分辨率,PTP更新时钟为50MHz, SUB_SEC_INCR寄存器配置Constant value值为20。
图2 细调过程
如图2所示,假设PTP的参考时钟为100MHz,在系统时间与主机时间一致情况下(不需要调节),此时的频率比值为100/50=2,则Addend =232/2=0x7FFFFFFF。此配置下每两个参考时钟周期触发一次“Sub-second register”累加,相当于50MHz的累加速度,每次累加步长20纳秒,系统时间按正常速度增加。
如果PTP参考时钟变慢到99MHz,此时的频率比值为99/50=1.98,则Addend =232/1.98=0x814AFD69。因为参考时钟变慢,需增大Addend值,使“Sub-second register”累加变快,等效累加步长为20.2纳秒。如果PTP参考时钟变快到101MHz,此时的频率比值为101/50=2.02,则Addend =232/2.02=0x7EBB9079。因为参考时钟变快,需减小Addend值,使“Sub-second register”累加变慢,等效累加步长为19.8纳秒。
从以上举例可以发现,调节Addend值可以加快或者减慢从机的时间,使从机时间与目标时间达到一致。
4、细调实验及结果
实验环境由两块M系列评估板组成,通过一根网线连接在一起,两块板上运行PTP示例程序。当评估板上电启动后,协议栈会自动选举出最优时钟作为主时钟,其它设备则为从时钟。从下面的数据可以看出,在开始时从机相对于主机的时间是偏快的,传播延时为6819纳秒。随着时间的推移,从机根据偏差调节时钟drift,时间偏差也不断变小,如图3所示。
图3 实验数据
D 41.010906490) updateclock:observed drift:-980
D 41.225402135) updateclock: one-way delay averaged (E2E): 0 sec 6819 nsec
D 41.226762227) updateclock:offset from master: 0 sec 11920 nsec
D 41.227989864) updateclock:observed drift:-929
D 41,438319153) updateclock:one-way delay averaged (E2E): 0 sec 6819 nsec
D 41.439679164) updateclock:offset from master: 0 sec 11901 nsec
D 41,440906861) updateclock:observed drift:-878
D 41,651236110) updateclock:one-wak delay averaged (E2E): 0 sec 6819 nsec
D 41,652596162) updateclock:offset from master: 0 sec 11881 nsec
D 41.653823859) updateclock:observed drift:-827
D 41,868319383) updateclock:one-way delay averaged (E2E): 0 sec 6819 nsec
D 41.869679575) updateclock:offset from master: 0 sec 11831 nsec
D 41.870907272) updateclock:observed drift:-776
D 42,081236260) updateclock: one-way delay averaged (E2E): 0 sec 6819 nsec
D 42.082596472) updateclock:offset from master: 0 sec 11786 nsec
D 42.083824149) updateclock:observed drift:-725
D 42.294153077) updateclock: one-way delay averaged (E2E): 0 sec 6819 nsec
D 42.295513149) updateclock:offset from master: 0sec 11724 nsec
D 42.296740866) updateclock:observed drift:-675
D 42,507069935) updateclock: one-way delay averaged (E2E): 0 sec 6819 nsec
D 42,508429946) updateclock:offset from master: 0 sec 11673 nsec
D 42.509657623) updateclock:observed drift:-625
D 42,723319913) updateclock: one-way delay averaged (E2E): 0 sec 6819 nsec
D 42.724679985) updateclock:offset from master: 0 sec 11587 nsec
D 42.725907722) updateclock:observed drift:-575
D 42.936236750) updateclock: one-way delay averaged (E2E): 0 sec 6819 nsec
D 42,937596782) updateclock: offset from master: 0 sec 11494 nsec
IEEE1588精确时间协议占用带宽小,对CPU和内存没有特别的要求,很好的解决了多设备的高精度时间同步问题。匠芯创M系列高性能MCU的百兆MAC支持IEEE1588V1和V2版本,结合其丰富的外设可满足各种专业应用场景。
参考文献:
"IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems," in IEEE Std 1588-2008 (Revision of IEEE Std 1588-2002) , vol., no., pp.1-269, 24 July 2008, doi: 10.1109/IEEESTD.2008.4579760.
来源:匠芯创科技
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。