引言
进一步完善的IEEE1588标准第2版于2008年发布,且不兼容原来的版本。其在同步原理以及过程的优化,乃至细节过程上都进行了较大幅度的改进。IEC61850标准对智能电子设备的时钟精度功能要求划分为5个等级(T1~T5),其中用于计量的T5等级精度达到±1 μs。IEEE1588的ns级精度为实现IEC61850的时钟精度提供了很好的技术选择。
IEC61850推荐的以太网实现同步时钟的协议有SNTP和IEEEl588协议。SNTP协议纯粹基于软件实现,是运行于IP协议之上的应用层协议,受网络环境和实现限制,其同步精度只能达到ms级别。而IEEEl588精确时间协议弥补了这种不足,稍微修改了MAC环节,屏蔽了在其之上的系统与应用软件延时,大大提高同步精度。
本文提出基于MCF54418的解决方案。MCF54418片内集成了IEEE1588模块,摒弃了采用FPGA辅助与外扩昂贵专用的IEEE1588芯片的方法,实现简单,性能优越,成本低廉,能够广泛融入需要支持IEEEl588协议的设备中,为IEEE1588的普及与推广创造了条件。
1 基本同步原理
IEEE1588 PTPv2协议的基本原理是主从时钟间发送相关同步报文,对同步事件报文的发出时间和接收时间信息进行记录(硬件加盖时间戳)。在PTPv2版中,新版Pdelay_Req与Delay_Req报文的区别在于用Pdelay_Req信息包测量平均网路延迟时间时不需要与Sync信息包(即同步过程)配合使用,可以脱离Sync报文进行多次测量来求平均值,以得到更为精确的平均网路延迟时间。该方法可取代1.0版本Delay_Req,成为平均网路延迟时间测量的主要方法。计算出主从时钟偏差(OFFSET)以及网络中的传输延时(DELAY),从而进行时钟的校准同步。因此偏差(OFFSET)与传输延时(DELAY)可分别计算。PTP原理如图1所示。
图1 PTP原理
IEEE1588 PTPv2协议同步测量分2步:偏差测量(OFFSET)和延时测量(DELAY)。通过t1~t6的6个不同接收/发送时间戳,计算出当前偏差与延时。数据流如图2所示。
图2 数据流
其中Pdelay_Req报文、Pdelay_Resp报文与Pdelay_Resp_Follow_Up报文完成点对点链路延时的计算:meanPathDelay=(t6-t3)-(t5-t4)2,然后对其取平均,算出链路平均延时。
Sync报文与Follow_Up报文主要用于主从时钟偏差(OFFSET)的计算:
offsetFromMaster=
t2-t1-correctionField-meanPathDelay(A-B端)
交换机延时correctionField:帧收发延时(Lsf),交换延时(Lsw),线路传输延时(Lwl)=meanPathDelay,帧队列延时(Lq)。信息包中的时间修正域,修正报文的驻留时间和不对称延时,来自1588交换机计算出的延时时间。
总的网络延时:
同步修正域 correctionField=∑Lsf+Lsw+Lq+Lwl=t4-t4.1-meanPathDelay(C-D端)。
2 应用实例
冷火MCF54418是飞思卡尔公司2010年专门针对工业领域应用而设计的芯片,其低功耗、实时控制工业微处理器 (MPU)可以应对工业以太网迅速发展的需求。片内带有集成 L2交换机和高精度硬件时间戳(IEEE1588)的双以太网,不需要FPGA与其他外部硬件支持,这种特性为电力变电站内高精度时间同步的应用提供了经济、高效的解决方案。
图3的IEEE1588对时采用软硬结合的方式实现,软件部分包含Linux驱动的1588部分以及IEEE1588协议引擎。驱动负责将MAC硬件中时钟计数器的时标保存在报文类型时标缓存区中,并对上实现时钟调节的控制接口。对时数据应用报文的收发基于TCP/IP的UDP协议之上,IEEE1588协议引擎则用来发送和接受PTP消息,维护数据集,执行与端口关联的状态机,根据接收到的PTP时间消息和产生的时间戳计算时间。
图3 IEEE1588软硬件系统结构图
图4 时标获取原理
图4中MCF54418的MAC包含一个时间戳模块,包含发送/接收寄存器。接收时在报文的起始帧界定符后的统一位置,对所有接收数据帧打时标。网卡中断程序解析接收到的UDP事件报文(319端口报文),根据类型(Sync、Pdelay_Req等)将硬件时标保存到接收时标缓冲区中,应用解析模块收到该类型报文后,读取该时标并进行相应的处理。
报文发送时,网卡中断程序根据UDP事件报文(319端口报文)类型设置发送TX_TS标志位,待MAC标记时标后置TS_AVAIL标志位,该报文loopback返回,保存在发送时标缓冲区中,并在应用中获取时标。如应用将Sync事件报文发送出去后,底层打完时标,该报文loopback报文返回到应用,应用再获取Sync报文的发送时标后,打包在Follow_Up报文中发送出去。
硬件打上的时标,再由应用软件对获取相关类型报文的时标进行处理与校正。因此IEEE1588采用硬件和软件结合的方式提供高精确度时钟同步。
2.1 应用软件模块描述
图5的IEEE1588协议引擎主要包括:最佳主时钟算法(BMC)模块、报文解析模块、报文处理模块。
图5 IEEE1588软件原理
最佳主时钟算法(BMC)模块:计算出每个时钟端口的状态,从而确立网络中的最佳主时钟作为时钟同步源,给网络中的从时钟授时。
时钟补偿算法模块:由于晶振的偏差带来的纳秒级的误差,用于校正晶振漂移带来的误差。
报文解析模块:解析不同类型格式IEEE1588报文。
2.2 硬件部分描述
主要包括普通10/100MAC、时钟调整模块、事件产生模块,如图6所示。
2.2.1 时钟调整模块
分布式系统中各个节点上的时钟,通常是用一个晶振驱动的计数器来计量的。但如果本地时钟的振荡频率稍有偏离,就会造成时间的偏离,而且时间的偏离是累计的,会越来越大。虽然通过同步报文的计算可以校正时间,但本地时间的频繁校正会打乱本地时钟的连续性。
时钟调整模块是一个纳秒时钟微调模块,包含一个32位纳秒计数器,芯片网卡自身振荡工作频率为125 MHz,使得时间戳时钟周期寄存器(ENETn_ATINC)的INC字段固定为8 ns。在正常情况下,一个振荡周期纳秒计数器加8,当累加到1 000 000 000后回绕并置事件标志位TS_TIMER。该模块还包括一个校准计数器(ENETn_ATCOR),表示振荡多少次就用正确的INC_COR值替换INC的8,通过公式:N=8×cor+inc_cor8×cor+8计算出每秒应调节的误差值N。进而调整累加器的值,对纳秒计数器进行校正。
IEEE1588应用软件从时钟补偿算法模块每次接收到sync报文计算出的offsetFromMaster值,采用控制数字PID调节算法,修改ENETn_ATCOR与INC_COR值,增加与减少纳秒计数器的值,保证读出的纳秒的精确性。秒的计算则需通过对事件产生模块的事件标志位TS_TIMER的判断,在中断程序中自行累加得到。
图6 MCF54418的IEEE1588硬件原理
2.2.2 数字PID时钟线修正算法
以主从偏差offsetFromMaster为输入量,硬件提供的INC_COR和COR两寄存器接口进行硬件时钟快慢调整。因纳秒数值相对较大,软件上则采用粗调与微调结合的方式。程序每次调整周期为1 s,通过若干个周期实现主从时钟的同步。
ms级通过调节inc_cor快速定位,缩小调节偏差;ns级采用PID算法调整时钟的快慢,以cor作为时钟微调的接口完成对主时钟的追踪。
PI调节器可以消除静差,但却降低了响应速度。PID调节器可加快系统的动作速度,减小超调时间,克服振荡,使系统快速趋于稳定,从而改善系统的动态性能。
2.2.3 秒脉冲产生模块
MCF54418拥有4个DMA定时器,其累加计数器可以自行配置关联任一1588的MAC纳秒计数器。当纳秒计数器达到预设的边界时,DMA定时器通过硬件T0OUT引脚输出一秒脉冲,保证秒脉冲的准确度。
2.3 实验环境下性能指标测试
设备采用两块Freescale的MCF54418作为主控芯片,用光纤以太网对接,并连接主从设备MCF54418芯片的秒脉冲(PPS)T0OUT输出引脚到示波器1、2通道,实际测试结果性能指标。进入稳态过程ts调节时间平均为1.5 min,测量得到秒脉冲的上升沿平均误差在±30 ns,峰峰值误差不超过100 ns,满足数字化变电站要求的性能指标。
3 结论
随着国家电网公司智能电网的总体发展的不断深入,时间同步在其中显得尤为重要,与其他授时技术对比,IEEE1588将更好地解决电力系统授时同步的难题。该技术模块在产品中可以跟GPS对时模块、SNTP对时模块相互选择切换使用,也作为智能变电站技术用于本公司智能变电站智能防误保护系列产品中。