1 引言
长期以来,异步通讯模式下不能实现精确的时间同步一直是制约现场总线方式下的全分布式控制系统全面广泛应用的一个重要因素。因而传统上在各种需要分散的控制节点之间有严格的同步时钟的应用中,如传动控制、运动控制以及分布式需要带时标的数据采集系统等,大多数都保留了各种各样的同步通讯网络接口或专用的同步时钟脉冲接口。这种方式不仅价格昂贵、性价比低,而且接口的不统一导致互连、互通困难,更重要的是很难在一个下至传感器/执行机构,上至主控制器/服务器的异构平台下全面实施,从而阻碍了现场总线控制系统的进一步推广应用。 但是,IEEE1588的提出彻底改变了这一切,它在总结之前各种各样的异步通讯模式下的同步时钟的方法的同时,开创性地解决了总线网络下的同步时钟问题以及跨网段的同步时钟问题,同时提出了在不同层次实施该协议可得到不同等级的同步时钟精度。本文拟从异步通讯模式下的同步时钟的最基本原理出发,通过阐述IEEE1588的基本设计思想,具体分析在协议具体实现过程中影响同步时钟精度的主要因素,以求对IEEE1588的实际应用有更为深刻的理解。
2 异步通讯模式下点对点的时间同步及其限制
最初,为了解决地理上分散的两个控制节点之间能够实现一定精度下的时钟同步,由于当时还没有普及GPS技术的应用,同时传统的同步通讯网络或专用同步时钟脉冲电缆方式在距离超过几公里、几十公里,甚至上百公里的应用上,受价格、电缆传输延时和信号衰减失真等因素的制约,在实践中已变得不可行或不可用,这就促成了各种借用数字通信通道的异步通讯模式下的点对点时钟同步技术的发展,其中最为成功就是所谓的“乒乓算法”技术,这也是后来互联网技术下NTP和SNTP协议的基础。 首先,它假设需同步的两个控制节点内部均独立按各自内部的晶振时钟运行,并且都具有一定时钟精度的时钟脉冲计数的功能,如1ms、1μs或1ns等,通常在1μs这个数量级上,因为大部分控制器的晶振时钟在1MHz这个频率数量级上。现在将一侧的时钟脉冲计数设为主时钟,另一侧为从时钟,即其时钟脉冲计数只要同步到与主时钟同样大小的时钟脉冲计数值就可实现两侧的时钟同步。由于两侧的晶振并不完全一样,或即使两侧的晶振的技术指标完全一样,但实际运行时的两侧的环境温度等条件的差异,都会使得两侧的时钟脉冲计数值在经过一段时间后出现差异,因此要维持两侧的时钟在一定精度上的同步,即维持两侧的时钟脉冲计数值之间的差异在一定的范围内,则需要每隔一段时间周期性地同步一次。同时由于同步指令有关的信息帧在通信通道中传输时存在预先未知的传输时延,所以同步算法中还必须考虑传输时延的影响。所谓“乒乓算法”即巧妙地利用了传输时延的对称性假设来解决以上问题,其具体方法如图1所示。

图1 乒乓算法
从时钟侧向主时钟发送同步请求,同时记下发送这一时刻自身的计数值大小作为t1,请求信息经过通道时延td到达主时钟侧,主时钟记下接收到请求这一时刻所对应的自身计数值大小t2,然后经过一定的内部处理后,在t3时刻(主时钟对应的计数值大小)发送请求应答信息,其中包含t2和t3这两个计数值,再经过通道延时td,请求应答信息到达从时钟侧,从时钟侧立即记下接收到信息这一时刻所对应的自身计数值大小t4,然后将应答信息中的t2和t3这两个数值取出,若假设同步前两侧计数值的大小在某一时刻的差值为△t,则有以下方程成立:
t1-△t+td=t2 t3+△t+td=t4
通过解列这两个方程,可求出:
td=1/2[(t4-t1)-(t3-t2)] △t=1/2[(t1+t4) -(t2+t3)]
这样在从时钟侧计数定时器上加上这个差值△t的大小即可实现两侧时针同步,然后每隔一定时间重复以上过程即可实时消除两侧晶振信号差异所累积的误差。 其次,如上述所提到的,该算法成立的前提条件是假设数字通信通道的传输时延在两个方向上是完全对称相等的。这一假设在大多数情况下是成立的,特别是在总线网络下由于双方向信号都是经过同一物理媒介,这一条件自然得到满足。但在一些可动态进行路由选择配置的通信网络中若双方向信号的路由选择不是同一物理路径,则传输时延会出现明显差异从而破坏了以上算法的成立条件,导致同步出现明显的固有误差或同步失效。在这种情况下可以通过与通信部门沟通要求与同步两侧相关的路由选择配置为信号通道双方向对称,即经过同一物理路径,从而保证该算法的成立。 再次,为了保证两侧的同步误差维持在一定精度范围内,需要周期性地重复以上同步算法,同步周期越短,则所能达到的同步精度就越高,但同时所占用的通信通道的通信容量/带宽比例就越大,因此需要根据具体的应用所需要的精度和通信通道所能提供的通信带宽选择一个合理的同步周期。如在100ppm的晶振频率精度下,理论上,如果1s同步一次则同步偏差可控制在100μs的范围内,如1ms同步一次则同步误差可控制在微秒或微秒以下的精度。 由以上原理可以看出,该“乒乓算法”最大的优点在于可以利用各种现有的点对点异步通讯通道,在通信协议的应用层完全由软件来实现,无需为此更改或增加任何专用的硬件配置。更进一步,在软件模块化设计的控制器设计中,算法甚至可以放到控制器内部有时间同步要求的应用软件模块内,这样当作系统配置时需要该相关应用软件模块该算法一同配置,而无需该功能时则整体退出配置,可以更加优化控制器的按需配置。但其限制条件也非常明显,除以上通道延时对称性和周期性同步通信带宽的要求外,t1、t2、t3、t4四个时标的精确性也直接应用到两侧时钟同步的精度。由于大部分通信协议都是采用分层次来实现,即应用层协议的数据包发出到数据链路层将数据帧真正发送到物理层的网络媒介上之间时存在一定的延时。对于采用无阻塞的电路连接通道,该延时比较小而且比较稳定、分散性小,而对于共用网络媒介的总线类通道,该延时随机性很大,因为对于某一个控制器来说通道并不是每时每刻都可用,这就直接影响到以上算法的时间同步精度上限,所以一般来说,完全采用软件实现的以上算法其时钟同步精度几乎不可能做到微秒以下的精度。另外,对于现场总线类的应用,若将同一总线上所有的节点均按照以上点对点的方式来进行相互间的时钟同步,则网络通信量和主时钟节点控制器的负荷率将呈指数增长,使得即使要达到毫秒级的时钟同步精度都很困难。 总之,以上算法对于点对点之间的应用软件时钟同步,可以在异步通讯的模式下很好地实现。但对于要在现场总线类的应用中同步接入总线上的所有控制器,直接采用该算法在实践中不太可行。同时,要进一步提高时钟同步精度,则需要对算法作进一步的改进。
3 IEEE1588的设计思想及其应用
IEEE1588第一个出发点就是要将点对点的算法扩展到具有广播通信功能的总线通信网络上,要充分利用广播通信特点来尽量减少用于时钟同步的通信量。其具体原理如图2所示。

图2 具体原理图

图3 传输时延的测量
主时钟控制器节点向总线上所有节点广播带主时钟时标TM1的“同步报文”(Sync),同时为了提高发送时标的精确性,主时钟控制器还监视上述同步报文在网络接口上实际发送的时刻作为同步报文的精确时标,并在随后的“跟进报文”(Follow-up)中传送该精确时标TM1。总线上所有其他节点作为从时钟在收到上述报文后记下同步报文的收信时刻TS1,各自分别计算其时钟与主时钟的偏差(Offset),并对本地的时钟脉冲计数作相应的调整。但由于对报文的传输时延并不知道,最初只能先假设为零,然后通过与上述“乒乓算法”类似的原理进行传输时延的测量,如图3所示。 从时钟节点向主时钟节点发送一点对点“延时请求”(Delay Request)报文,同时监视自己的网络接口记下报文的实际发送时可作为精确的发送时标TS3,而主时钟接收到该报文时也记下收信时刻的精确时标TM3,并将该时标在随后的“延时响应”(Delay Response)报文中发送给相应的从时钟节点,从时钟以此计算报文的实际传输时延(Delay),然后合并到上述同步偏差的计算公式中去。如果网络传输延时双向稳定对称,该延时测量主要在控制节点接入总线的初始化过程中进行,系统进入稳定状态后可以间隔很长时间才测量一次,其周期的长短对时钟同步的精度没有直接的影响,因此可以大幅度减少该点对点的报文通信量。通过以上两阶段同步过程的划分,以及广播式“同步报文”和精确时标等措施,该方法可以在总线网络上占用很少通信带宽的情况下实现高精度的时钟同步。IEEE1588的指导性指标为,如“同步报文”的周期设定在2s时的同步精度可以在毫秒以下直至微秒数量级,这对一般的时钟同步系统应用已经能够满足要求。 IEEE1588的第二个特点就是上述已提到的精确时标的概念。由于通信协议是分层次实现的,以上同步过程中所有报文中所传送的“发送时标”和“收信时标”是取自应用层、数据链路层还是直接在物理层上采用辅助硬件电路,很大程度上决定了该协议所能达到的最高时钟同步精度。越接近物理硬件底层,时标越精确,系统可能达到的精度则越高。在采用合适的辅助硬件电路的情况下,如在周期性调整时钟脉冲计数的偏差之外,增加可调整时钟脉冲计数的速率,同时直接记录网络接口的物理层发送时标和收信时标,其同步精度甚至可以实现纳秒数量级的高精度,这比传统的同步通信系统以及同步脉冲专用系统所能达到的精度还要高。反过来,系统应用也可以根据自己的同步精度要求,来选择在哪一层次上实现协议的精确时标,从而达到最佳的技术性价比。

图4 “边界时钟”的解决方案
IEEE1588的第三个发展就是跨网段系统的全系统同步问题,即发展了“边界时钟”的概念。由于以太网技术的推广和交换式以太网技术的发展,使得以太网无论是在通信容量还是数据的实时响应性能都得到很大的提高,因此将以太网技术应用到工业控制的现场总线已成为一种必然的趋势。但以太网交换机和路由器的存储转发机制却使得以太网信息帧的传输延时在不同的通信负荷率下呈现出较大的分散性,从零点几微秒到一百甚至几百微秒,因此这无疑限制了以上同步算法在交换式以太网和多网段以太网应用系统的时钟同步精度。IEEE1588为解决这一问题提出了“边界时钟”的解决方案,如图4所示。 即在交换机或路由器的端口上增加一简单的时钟同步辅助硬件电路,使得每一端口既能作为点对点的主时钟又能作为从时钟,这样又将以太网总线式网络的工作模式可以近似回到每一端口按点对点模式工作,而且物理媒介是点对点直通模式,无中间转接点,因此其传输延时非常稳定而且小,也就是说可以将时钟同步的精度上限大大提高,甚至到纳秒数量级。 IEEE1588本身只是一个单一功能―时钟同步算法的协议规范,并不是一个独立完整的现场总线协议,因此若要将该功能推广到现场总线系统的应用中去,需要将该算法结合到具体的现场总线协议来实现。如ODVA组织就在其原有的现场总线协议―CIP协议的基础上,扩展了IEEE1588协议的功能性成了CIPSync协议,并进行了相应的原型验证试验,如图5所示。即在一典型的三轴联动的全分布式运动控制应用系统中,采用具有“边界时钟”功能的以太网交换机连接控制各运动轴的三台独立控制器,各控制器之间通过CIPSync协议进行时间同步和协同工作。试验的结果表明,该原型试验的时钟同步精度可以将各控制器之间时钟误差控制在200ns以内,从而可以满足大部分运动控制系统的应用要求。而之前实现这样的应用系统,都要配置专用的时钟脉冲同步网络,系统复杂、价格昂贵。相比而言,IEEE1588与众多现有的现场总线的有效结合,可以实现不同层次不同同步精度的时间同步系统,充分显示了IEEE1588的应用潜力。

图5 原型验证试验
4 结论
IEEE1588在总结之前的各种异步通讯模式下的时间同步算法的基础上,扩展和发展了适合在现场总线网络下的协议规范,并针对多网段情况下的交换机和路由器等系统元件所带来的新问题提出了“边界时钟”的解决方案。CIPSync的原型验证试验表明,IEEE1588协议与现有的现场总线的有效结合,在通信协议的不同层次的实现其同步算法可以得到不同的时钟同步精度,在一定的配置条件下可以提供与传统同步专用网络相当的时钟同步精度。
|