控制系统中的时间同步问题早就出现,而随着系统范围的扩大和分散控制的发展,通过网络联系的分散控制节点之间的时间同步变得越来越重要。系统中时间的使用通常有两种不同的应用类型:时间标记性应用和基于频率的应用。如配电应用可代表时间标记应用,在这种系统中绝对时间很重要,因为特定事件的定时不仅需要与本系统内的其他事件的时间作比较,而且由于电力系统的连贯性,经常可能需要与外部相关系统的事件的时间作比较。哪一个事件先发生?是电网A先跳闸,还是电网B先跳闸?这些事件相隔多少时间?在实际应用中这些事件可能发生在不同的地理区域。由于这个原因需要绝对时间值的概念,并且这个时间基准需要校正为世界各地使用的常用时间。由于特定的事件和报警是被打上时间标记的,只要这些时间标记具有相同的基准,就可以在事后进行这些事件的时间顺序的分析。
另一方面,在控制系统中存在大量基于频率的应用,如通过网络连接的多个分布驱动的协调控制,它们需要精确同时执行,因为它们不能过度拉伸或损坏驱动机架之间的织物。在这些应用中当这些驱动器是同步工作时过程最佳。如果每个驱动器精确地在同时采样反馈和执行控制算法,同时执行控制命令,那么作用力的施加是协调的。在这种应用中绝对时间不是很重要,但是控制周期的同步非常重要。
解决这些问题的关键是时间同步,时间同步的目的就是要将时间基准准确地传递到各控制点,传递并不困难,难于达到的是传递的精度。在2002年出现的IEEE1588标准(网络化测量和控制系统的精确时钟同步协议,通常称为Precision Time Protocol[PTP])在这方面取得了重大进展。使用这个方法并不需要很多资源就可以达到100纳秒级的同步精度。IEEE1588标准出现后得到业界高度重视,在2002年,2004年举办专业会议,2006年将举办第三次专业会议。工业控制的领先厂商Rockwell,Siemens等立即投入产品开发,IEC已将它转化为IEC61588-2004标准,这个标准已为Ethernet/IP,Profinet,PowerLink,EtherCat等基于以太网的总线采用,成为当前普遍采用的方法。
1 IEEE1588标准
IEEE1588标准,规定了将分散在测量和控制系统内的分离节点上独立运行的时钟,同步到一个高精度和准确度的协议。这些时钟是在一个通信网络中互相通信的。按这个基本格式,这个协议要形成树形的管理,使系统内的这些时钟产生一个主从关系。在一个给定子网中包括多个节点,每一个节点都有一个时钟。时钟之间经由网络连接。IEEE1588规定了子网的划分规则,它是按时钟的级别划分子网,一个子网只有一个1级或2级时钟。在一个子网中只有一个主时钟,从时钟从主时钟得到时间,所有时钟最终都是从一个称为祖母时钟那里得到它的时间。任何时钟和它的祖母时钟之间的通信路径都是最小跨度树的一部分。
分布时钟的PTP系统由普通时钟和边界时钟组成。普通时钟是只有一个PTP端口的时钟,边界时钟是带两个或多个不同的PTP通信路径的端口的时钟。如一个可在它的端口上实现PTP协议的交换机就是一个边界时钟。很明显普通时钟只有接收时间的能力,边界时钟具有传递时间的能力。
系统中的一个时钟可选为主时钟,由主时钟向从时钟发送同步报文,通过报文传递时钟信息。图1是一个配置的例子。
另一方面,在控制系统中存在大量基于频率的应用,如通过网络连接的多个分布驱动的协调控制,它们需要精确同时执行,因为它们不能过度拉伸或损坏驱动机架之间的织物。在这些应用中当这些驱动器是同步工作时过程最佳。如果每个驱动器精确地在同时采样反馈和执行控制算法,同时执行控制命令,那么作用力的施加是协调的。在这种应用中绝对时间不是很重要,但是控制周期的同步非常重要。
解决这些问题的关键是时间同步,时间同步的目的就是要将时间基准准确地传递到各控制点,传递并不困难,难于达到的是传递的精度。在2002年出现的IEEE1588标准(网络化测量和控制系统的精确时钟同步协议,通常称为Precision Time Protocol[PTP])在这方面取得了重大进展。使用这个方法并不需要很多资源就可以达到100纳秒级的同步精度。IEEE1588标准出现后得到业界高度重视,在2002年,2004年举办专业会议,2006年将举办第三次专业会议。工业控制的领先厂商Rockwell,Siemens等立即投入产品开发,IEC已将它转化为IEC61588-2004标准,这个标准已为Ethernet/IP,Profinet,PowerLink,EtherCat等基于以太网的总线采用,成为当前普遍采用的方法。
1 IEEE1588标准
IEEE1588标准,规定了将分散在测量和控制系统内的分离节点上独立运行的时钟,同步到一个高精度和准确度的协议。这些时钟是在一个通信网络中互相通信的。按这个基本格式,这个协议要形成树形的管理,使系统内的这些时钟产生一个主从关系。在一个给定子网中包括多个节点,每一个节点都有一个时钟。时钟之间经由网络连接。IEEE1588规定了子网的划分规则,它是按时钟的级别划分子网,一个子网只有一个1级或2级时钟。在一个子网中只有一个主时钟,从时钟从主时钟得到时间,所有时钟最终都是从一个称为祖母时钟那里得到它的时间。任何时钟和它的祖母时钟之间的通信路径都是最小跨度树的一部分。
分布时钟的PTP系统由普通时钟和边界时钟组成。普通时钟是只有一个PTP端口的时钟,边界时钟是带两个或多个不同的PTP通信路径的端口的时钟。如一个可在它的端口上实现PTP协议的交换机就是一个边界时钟。很明显普通时钟只有接收时间的能力,边界时钟具有传递时间的能力。
系统中的一个时钟可选为主时钟,由主时钟向从时钟发送同步报文,通过报文传递时钟信息。图1是一个配置的例子。
图1-带祖母时钟、边界时钟和从时钟的系统例子
2 PTP时钟的协议模型
图1是PTP子域的例子,最上面的是这个子域的祖母时钟,它是一个GPS(Global Positioning Satellite System是由美国国防部维持的系统,来自GPS的时间可以达到10~100ns的精度范围)时钟,是这个子域的时间源,下面通过父子结构的时钟端口构成传递系统。这个结构的根是祖母时钟,这个结构的每一个分支点通常需要一个边界时钟,这点上从根进一步分支方向的所有时钟端口必须是主或父代端口,而有一个端口是同步到更加靠近根的时钟的从端口。分支到最后(不是根方向)的端口必定是从端口或不活动(Passive)端口(不活动端口的通信路径上,除非另外规定不应当发生报文)。
3 PTP同步机制
IEEE1588定义了四种同步报文Sync,Follow_up ,Delay_Request , Delay_Response , 和一组管理报文。为了简化问题,我们先考虑一个主时钟与一个从时钟的同步过程:
1,主节点每2秒钟(同步报文的间隔是可设置的,这里假设为2秒)向从节点发送一个“同步”(Sync)报文。这个报文是由主节点打上预计的发送时间标记的报文,但是由于预计的发送时间和实际的发送报文发送本身可能的延迟,实际时间标记不能随“同步”报文一起发送。这个“同步”报文在接收端被从节点打上接收时间标记(为了提高精度,应在物理层或接近物理层的位置检测、记录和标识发送或接收时间)。IEEE1588规范制定了可选件“硬件辅助”设计来实现这个精度的提高。
2,第二步主节点向从节点发送一个“跟随”(Follow_up)报文,这个报文包含先前的同步报文准确的发送时间的标记。从节点利用这两个时间标记可以得到它与主节点的延迟,据此可调整它的时钟的频率。
3,从节点向主节点发送“延时请求”(Delay_Request报文(延时请求报文的间隔是独立设置的,一般应较同步报文间隔长),这个报文是由从节点记录它的准确发送时间,由主节点打上准确的接收时间标记。
4,主节点向从节点返回一个“延时响应”(Delay_ Response)报文,这个报文带着先前的“延时请求”报文的准确的接收时间标记,从节点利用这个时间和由它所记录的准确的发送时间,可计算出主节点和从节点之间的传输延迟并调整它的时钟漂移误差。
图2 偏移的校正
图3 传输延时的测量
图2,图3例示主节点与从节点之间报文的交换,图中的时间也仅是为了理解假设的,不代表实际情况(IEEE1588中表示时间使用64位数,可以精确地表示绝对时间)。图2表示经过两次同步可以校正主节点与从节点之间的偏差。但无法计算传输延时。
经过延时报文的请求和应答以及同步报文的时间标记,可以计算出两个方向的平均传输延时,在以后的计算中就可使用。实际上偏移与延时值的测量是互相影响的,要经过多次测量和计算,才会逐步收敛到接近实际值。测量时间间隔的选取很重要,选择间隔短时通信负荷较重,间隔过长则不能保证同步的精度,所以同步和延时的测量间隔应根据同步要求和系统配置选择。
IEEE1588并没有规定使用的网络,但从通信的负荷和时间要求来说,以太网是比较适合的网络,当前实际的实现也差不多都是基于以太网的网络。以上四种PTP报文都是基于IP多点通信(Multicast),它不限于Ethernet,并且可用于任何支持多点通信的总线系统。多点通信提供简单化的优点,IP地址管理不需要在PTP节点上实现,这样可以进一步扩展到很大数目的PTP节点。
4 本地时钟的考虑
PTP协议可能达到很高的同步精度,组成庞大的同步系统,但实际系统可以根据需要达到的精度和功能组建。可以选用1级或2级时钟作为主时钟,也可选用3级,4级时钟,可按价格和性能需要综合考虑。但作为普通节点本地时钟的振荡器,出于成本考虑基本上只能选择石英晶体振荡器。但石英晶振的频率会随温度,机械因素和老化漂移,其中最主要的影响是温度,典型的不补偿的石英晶振的温度飘移是1PPM/C0,如果同步间隔是2秒,则温度上升1度在每个同步间隔会产生2微秒的误差。但通过对晶振的热环境的控制,可以明显降低漂移。
从上面论述也可知道如果本地时钟的振荡频率稍有偏离,就会造成时间的偏离,而且时间的偏离是累计的会越来越大,虽然通过同步报文的计算可以校正时间,但本地时间的频繁校正会打乱本地时钟的连续性,使需要定时处理的任务像PID调节,通过时间段计量脉冲的速度测量等应用陷入混乱。所以在PTP系统内使用频率可调的晶振,通过频率的校正使本地时钟的频率与主时钟同步。对这种晶振的要求是0.01%精度和0.02%的频率可调范围。同时PTP并不在接收同步报文后立即校正本地时钟的时间,而是将这个偏移作为一个数据保存在端口中,通过本地时间加偏移值得到正确时间。
同时PTP定义的外部定时信号是可选特性,支持这个特性的主时钟另外提供10MHZ频率的曼彻斯特编码的时钟信号,在每秒的边界信号跳变给出秒信号。这个定时信号可用于校正时钟频率。
5 关于边界时钟
从上面的同步原理很容易看到,在计算偏移时需要用到传输延时,这个延时是以前得到的测量值计算的结果,如果延时是稳定的,就能代表当次测量的延时,偏移的测量就准确。反之延时的起伏将直接影响同步的精度。点对点连接可提供最高的精度,带路由器会增加网络抖动,在PTP系统内通过交换机连接时,由于交换机在传送报文时需要存储和排队,不可避免出现传递的延迟,而且这个延迟随排队报文的多少,报文的大小而变。为了解决这个问题通常使用支持IEEE1588的交换机作为边界时钟,支持IEEE的交换机内部包含了一个PTP时钟,由于它是直接接收主时钟报文的,它与主时钟的传输延时不存在排队与存储的问题,所以在需要分支时通常使用带边界时钟的交换机。
6 时钟的评价和最佳时钟算法概要
最佳时钟算法是1588协议的很重要的部分,1588虽然是适用于局域网的协议,但它没有限制网络的结构,范围,设备数目和选用。对于任意结构的网络怎样确定祖母时钟,主时钟,时间基准怎样逐级传递到各节点,以取得尽可能好的时钟精度,就是最佳时钟算法要达到的目标。1588的算法是动态运行的,即在时钟同步系统运行中根据实时数据不断计算,动态调整各节点和端口的状态,也就会调整时间的传递路线。所以在当前主时钟故障或性能下降时,系统可能会选择其它更合适的节点替代它作为主时钟。由于这部分内容相对复杂,这里只介绍相关的基础概念。
*时钟的分级(clock_stratum)
时钟的级数代表时钟的质量,这个分级是有定义的,每个时钟都应标上它的级别,在最佳主时钟算法中它作为时钟质量的标志进行计算。时钟分级的定义如表1所示:
*时钟标识符(Clock identifier)
时钟标识符指示时钟内在的和可期待的绝对精度及起始时间,时钟标识符值也是表示时钟性能的参数,也是在最佳主时钟算法中要参与运算的参数。时钟标识符的定义如下表所示:(表2见书)
*时钟变量(clock_variance)
在1588协议中时钟变量是不断实时测量和计算的值,用于表征时钟当时的品质。这个值是通过Allan均方差公式得到,Allan方差式原用于振荡器频率的统计误差计算,这里用于表示时间的统计误差。(公式见书)
s2PTP是多次测量的均方差值,这里xk,xk+1,xk+2是在时间tk,tk+ t,tk+2 t 时刻所作的时间残差测量,t是测量的间隔时间,N是测量的次数。从公式可看出这是统计方差式,公式已排除任何稳定的对称的误差,时钟的漂移并不会影响方差s2PTP,时钟的不规则跳动直接影响s2PTP值。
s2PTP值再经过取对数,乘以常数和滞环处理才成为运算中使用的时钟变量clock_variance。
*最佳主时钟算法概要
最佳时钟算法(Best Master Clock Algorithm-简称BMC算法)由两部分组成:一是数据组比较算法,比较两组数据的优劣,可能一组是代表本地时钟的缺省特性的数据,一组代表从某端口接收的同步报文所包含的信息。这个比较算法一是要对各种数据组进行比较。二是根据数据组比较结果计算每个端口的推荐状态(主站、从站、待机、未校正、只听、禁止、初始化、故障状态)。
BMC算法是在每个时钟的每个端口本地运行的,它规定数据比较的顺序和判据,所使用的数据除上面提到的时钟级,时钟标识符,时钟变量外还有路径长度、是不是边界时钟等条件。通过比较可得到每个时钟的每个端口当时应取的状态。
如对一个典型的具有N个端口的时钟C0的BMC算法:
-对每一个端口r,比较从连接到这个端口通信路径上的其它时钟的端口接收的合格的Sync报文的数据组,通过数据组比较算法决定这个端口的最佳报文Erbest。
-对C0的N个端口比较各端口的Erbest,决定时钟C0的最佳报文Ebest。
-对C0的N个端口的每一个,根据Ebest,Erbest和缺省数据组D0,用BMC状态决定算法和应用端口的状态机决定端口的状态。
对于PTP子域中每个时钟,每一个端口都运行BMC算法,这个运算是连续不断的,因此能适应时钟和端口的变化。并且1588的BMC算法是分散在每个时钟,每个端口,是独立运行的,因此更容易实现。
7 结束语
在当今经济技术高度发展,系统规模空前巨大,分散控制和网络化的时代,分散时钟的同步越加重要,自2002年1588协议出现后,特别是它可能达到的高精度和较低的开销为人们实现这个要求提供了现实可行的途径。1588协议是建立在网络基础上的,但它并不需要为时钟传递建立特别的网络,实现1588协议只需在原有网络上添加时间同步报文,这些报文只占用少量网络资源,它们只是和控制数据包或其他信息包共享网络。由于以上原因高精度时间同步已成为当前工业控制领域的热点,相信国内业界也会给予足够重视。