IEEE1588协议
IEEE1588协议(精选7篇)
IEEE1588协议 第1篇
关键词:IEEE1588,以太网,MCU,FPGA,精确授时协议,实现方案
众所周知,分组网主要处理异步数据,不用考虑数据同步与定时,同步与定时只有在电路交换网络中才显得格外重要。然而经过多年的发展与演进,现在人们有了一个共识,那就是虽然分组网络本身不需要时钟,但是应用层大量的业务仍然会有高精度同步要求,而上层的同步要求需要下层(承载与传送网络)的支持与实现。通常上层的应用领域不同,时间同步的精度也不同。例如,计费系统500ms、No.7信令1ms、IP网络维护100ms、CDMA移动通信3us等等。
以太网实现同步时钟的协议有NTP、SNTP以及IEEE1588协议。但NTP、SNTP协议纯粹基于软件实现,是运行于IP协议和UDP协议之上的应用层协议,受网络环境和实现限制,其同步精度只能达到毫秒级别。而IEEE1588精确时间协议(PTP=Precision Time Protocal)弥补了这种不足,该协议通过稍微修改MAC环节实现了硬件标注与技术时钟,大大提高的同步精度。
本文针对IEEE1588的实现提出基于通用MCU与FPGA解决方案。由于采用通用器件,实现具有很强的可操作性,能够广泛的融入需要支持IEEE1588协议的设备中,具有很好的应用前景。
1 IEEE1588协议基本原理
IEEE1588是一种精确时间同步协议,简称PTP。PTP是针对更稳定和更安全的网络环境设计的,所以更为简单,占用的网络和计算资源也更少。另外PTP更多面向相对本地化、网络化的系统,特别适合工业自动化和测量环境,现在也逐步在通信领域应用。
IEEE1588标准规定了将分散在测量和控制系统内的分离节点上独立运行的时钟,同步到一个高精度和标准度的协议。其网络拓扑如图1所示,网络由主参考时钟(Grandmaster Clock)、边界时钟(Boundary Clock)和普通时钟(Ordinary Clock)构成,通过主钟与从钟协议通信的方式完成时钟同步。
IEEE1588协议的同步原理如图2所示。其中,虚线表示的主钟与从钟同步的时刻;Sync(),Follow_up(t0),Delay_Reg(),Delay_Resp(t3)分别是IEEE1588规定的用于同步时间的四条协议报文。t0记录的是Sync()报文发送的时刻,并由Follow_up(t0)携带发送到从钟一侧;t1记录的是Sync()报文到达的时刻;t2记录的是Delay_Req()报文发送的时刻;t3记录的是Delay_Req()报文到达的时刻,并由Delay_Resp(t3)报文携带送回到从钟一侧,用于时钟调整。
协议中的各个时间关系如下:
传输路主钟与从钟之间的偏差:O=Offset=从钟时间-主钟时间=ClockSlave-ClockMaster
传输路径时延:D=Delay
正向时间偏移:A=t1-t0=D+O
逆向时间偏移:B=t3-t2=D-O
在从钟一侧通过A和B可以计算出路径传输时延D和主从钟的偏移量,从而修正本地时钟数值,达到调整时钟并与主钟同步的目的。
NTP和IEEE1588的相同点都是需要计算主从设备之间的报文延迟,都假设主从设备两个单向时延相同。但是软件在构造Sync报文时,并不知道报文的实际离开时间,这一部分的误差可能有几十毫秒,严重的影响时间精度。因此IEEE1588相对于NTP所进行的改进就是将Sync报文与Follow-up报文分开,记录Sync报文的实际离开时间,通过Follow-up报文通告从钟表,这样就可以大大提高时间精度。
IEEE1588相对于NTP所进行的改进还有建议利用硬件来记录报文离开和进入的时间,这主要是由于从报文进入接口,到MCU处理(打标签),延迟时间不定;在最接近接口处记录的报文入境与离境时间精度最高,而且固定;硬件不改变报文内容,只负责记录时间。
2 IEEE1588协议的实现方案
基于通用MCU与FPGA,IEEE1588协议的实现方案如图3所示。其中各个模块功能描述如下:
1)MCU部分的软件模块描述
Application模块:用户自定义的上层应用模块。
PTP Protocol Engine模块:IEEE1588协议授时引擎。该模块采用协议约定算法维护同步时钟的实现。
Port Interface模块:通信协议栈的socket部分。
TSU Interface模块:通过I2C控制总线实现对FPGA内TSU模块的控制。
CLK Interface模块:通过I2C控制总线实现对FPGA内Clock模块的控制。
TCP/UDP/IP/MAC模块:通信协议栈。IEEE1588协议采用UDP包作为通信载体。
I2C Driver模块:I2C控制总线的驱动模块。
2)FPGA部分描述
TSU模块:时间标签单元(TSU=Time Stamp Unit),用于对相关IEEE1588协议报文记录、标注时间标签。
Clock模块:IEEE1588协议实时钟模块,有外部高频稳定的晶振提供参考时钟。上层控制接口CLK Interface模块可以对该模块进行初始化时钟、偏移量调整等时钟调整操作,同时控制接口也可获取当前同步时间。此外,该模块向外提供标准的秒脉冲时间信号(PPS=Pulse per second)。
3)其他部分描述
OSC:晶体振荡器,为FPGA提供时钟参考。该时钟的频率直接影响IEEE1588协议同步时钟的同步精度与抖动等关键指标。
PHY:Ethernet的物理层控制器,一般由专用芯片实现。
3 结束语
该文提出了一种基于通用MCU和FPGA架构的IEEE1588解决方案,该方案模块性强、实现简练,在不损失性能的前提下提高了实现的通用性,降低了实现成本,是一种很具有应用前景的精确时钟协议实现架构。
参考文献
[1]IEEE Std1588-2008.IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems[S].IEEE Instrumentation and Measurement Society,IEEE3Park Avenue New York,NY10016-5997,USA,2008.
[2]Garcia A L.通信网——基本概念与主体结构[M].王海涛,译.2版.北京:清华大学出版社,2005.
IEEE1588协议 第2篇
关键词:精密时钟协议,时钟同步,虚拟局域网
0 引言
随着数字化技术的飞速发展, 越来越多的领域需要使用精确的时钟同步服务。例如:自动控制系统中多轴伺服驱动控制系统、测量与测试中的实时数据检测、变电站分布式系统中的故障录波等。然而, 某些技术却不能提供很高的精度。例如NTP (网络时钟协议) , 它主要用于大型系统的同步, 其精度一般只达到毫秒级别。GPS同步虽然能够达到精度要求, 但高度依赖于美国GPS系统, 紧急情况下网络可能因失步而瘫痪, 且维护成本较高。因此, 比较合适的是使用IEEE 1588协议。
IEEE1588 V2精密时间协议 (Precision Time Protocol, PTP) 是专门为测量和控制领域制定的一个时间同步协议, 通过使用现有的以太网提供接近NTP的成本效益, 并通过使用基于硬件的时间戳技术达到超过NTP的精度。PTP可与使用高速交换机的标准以太网上的正常网络业务共存, 同时提供纳秒级的同步精度, 而为了进一步的提高其时间精度, 在支持VLAN的二层交换机中可以通过使PTP协议数据包得到优先转发, 以降低以太交换机的转发时延和抖动, 进一步提高时间精度。
1 IEEE 1588协议分析
1.1 原理
IEEE 1588V2时钟同步过程的实现主要分为2个阶段:偏差测量阶段和延时测量阶段。
偏差测量阶段用来修正主时钟和从属时钟的时间差。在这个偏差修正过程中, 主时钟周期性发出一个确定的同步信息 (简称Sync, 一般为1s一次, 可以自行设置) , 它包含了一个时间戳, 精确地记录了数据包发出的时间。
如图1所示, 假设同步之前主时钟的时间为Tm=1 050s, 而从属时钟的时间为Ts=1 000s。主时钟于Tm1时刻发送一个Sync时间同步报文, 同时在底层记录Sync时间同步报文准确发送时间Tm1, 而从属时钟在Ts1时刻接收到Sync时间同步报文, 同时记下准确的接受时间Ts1。主时钟将准确发送时间通过Follow_Up报文发出, 从属时钟接收到Follow_Up报文时, 根据公式 (1) 就可以计算出与主时钟的偏差, 根据偏差调整本地时钟, 这样就完成了同步。
undefined
1.2 系统组成
PTP系统是分布式网络结构。在PTP系统中, 协议运行的逻辑范围称为一个域 ( Domain) , 域中设备采用主、从方式实现时间精准同步, 所有的实时时钟组成主从同步端口, 一个设备可以有多个端口, 对上它是从端口, 对下它是主端口。系统中有一个高级主时钟 ( Grandmaster) , 它决定了整个系统的时钟频率。系统中主从设备通过交换PTP协议消息, 来调整本地时钟, 从而达到时钟的同步。PTP系统一般包括下列设备:普通时钟 (OC) 、边界时钟 (BC) 、端到端透明时钟、对等透明时钟以及管理设备等。
2 IEEE1588V2精度提高解决方案
2.1影响精度因素
影响IEEE1588精确时钟同步协议精度的因素主要有以下4个方面: (1) 不同网络协议层处理时间戳引起的波动误差; (2) 用于产生时间戳的时钟频率, 影响时间戳的分辨率; (3) 时钟振荡器的稳定性, 增加了时间戳的误差; (4) 通信链路和网络设备引起的误差。
交换机由于是在链路层工作, 引入的误差在纳秒级, 通过多次平均可以减少该误差。此时误差主要由交换机当中排队数据包引起, 因为交换机会识别数据包中的MAC地址信息, 根据MAC地址进行转发, 并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。因此提高PTP精度的主要因素是控制好通信链路和网络设备引起的误差, 而这又以减少交换机中驻留的时间为主, 这就可以用到VLAN技术。
3.2提高精度的原理
引入VLAN功能的交换机, 在加入VLAN模块后, 我们可以通过设置数据包, 即VLAN tag中的Priority字段来实现使数据包在交换机获得最高优先级的转发机会, 降低以太交换机的转发时延和抖动, 从而提高主从同步精度。
由此, 我们可以得出利用VLAN来提高PTP授时精度的原理, 即在PTP数据包发送时, 给PTP数据包加上VLAN tag, 其中各个字段的取值如下:Priority:0x07 (或者111b) ;CFI:0;VID:0。
通过的测量对比可以明显得出在使用了VLAN优先转发技术后, offset_from_master可以明显的减小了, 从而提高PTP系统的授时精度, 这也从正面说明了方案的可行性。
3结束语
本文主要讲解了IEEE l588V2时间同步标准并对其原理进行深入分析, 然后深入探究影响其同步精度的因素, 对利用VLAN实现其同步精度提高作了深层次的分析并加以实现, 与没有使用这种技术的情况形成对比, 发现使用这种技术是可以提高精度的。当然, 这只是在简单的网络环境中进行测试的, 对于复杂网络结构的改进及测试需要在进一步的工作中完成。
参考文献
[1]IEEE1588 2008.Precision clock synchronization protocol for net-worked measurement and control system[J].
[2]ANDREW S.TANENBAUM.计算机网络 (4) [M].潘爱民, 译.北京:清华大学出版社, 2008.
[3]李清平.谢鹏.基于Cisco ISL和IEEE802.1Q的VLAN间通信原理及仿真分析[J].计算机与现代化, 2009 (12) .
IEEE1588协议 第3篇
目前,许多重要领域,如电力系统、通信系统、工业自动化系统等,都需要依赖同步时钟进行实时地调度和控制。这些应用对分布式系统内时钟的一致性和精确性要求不断提高。
目前,电力系统主要以GPS作为同步时钟,但由于不同种类和型号的电力自动化装置所要求的对时信号形式不尽相同,装置内部对于对时信号的处理方式和信号传输延时也不尽一致,这些因素给装置的时钟同步精度造成了影响[1]。特别是,随着大型互联电力系统规模的不断扩大,利用广域测量系统(WAMS)对互联电力系统进行有效的监测和调节,成为保障电力系统安全稳定运行的关键。而全局同步时钟是电力系统广域测量的必要前提,其对时钟同步的要求非常高。同步相量测量技术及以其为基础的广域测量系统已在电力系统的实时监测中得到了应用,相量测量要求对时精度达到1μs[2]。因此,研究满足电力系统对精度和可靠性要求的同步时钟非常重要。
针对在网络上实现高精度时钟同步这一问题,许多学者展开了大量研究,提出了许多有价值的解决方案[3,4,5]。2002年,出现了一种用于测量和自动化领域中的高精度网络时钟同步协议:IEEE-1588协议[6],该协议的主要原理是通过一个同步信号周期性地对网络中所有节点的时钟进行校正同步,可以使基于以太网的分布式系统达到精确同步。
本文基于GPS和IEEE-1588协议,利用FPGA实现了一种可靠性和精度较高、满足电力系统广域测量系统要求的时钟同步装置。该装置支持NMEA-0813标准解析GPS报文、IEEE-1588实现网络时钟同步和IRIG-B码的解析和编码;同时提供多种授时接口,其授时信号有秒脉冲、串口时间报文、IRIG_B码。该装置具有同步精度高(小于1μs)、可靠性好、适用面广的特点,可以满足电力系统中广域测量、线路行波故障测距等的要求。
1 基于GPS和IEEE-1588的时钟同步原理
GPS具有时间精度高,价格低等优点,将其作为同步时钟的公共时间基准具有突出的优越性。2008年又颁布了IEEE-1588的改进版本2.0,该版本进一步提高了精度,支持纳秒级别的同步精度[7]。该协议具有适用于采用多播技术的网络(以太网)和总线,占用网络带宽小,对系统资源要求低等优点。采用GPS和IEEE-1588协议相结合的同步原理可以满足电力系统广域测量对时钟同步的要求[8]。
基于GPS和IEEE-1588的同步原理如图1所示,分布式系统根据地理因素等分为若干子网,在子网内部选择一个节点作为主时钟,基于IEEE-1588协议,主时钟通过交换机对网络中所有从时钟进行同步,各子网之间的主时钟通过GPS实现同步。该方法减少了GPS模块的使用量,IEEE-1588协议极大地提高了网络内各节点的同步精度。同步网络中的智能电子设备(IED),如数字化变电站中的保护IED、PMU、电子式互感器的合并单元等,通过这种同步原理可以获得精确的同步时钟。
2 装置硬件设计
FPGA具有集成度高、稳定性好、设计周期短等优点,易集成到应用系统中,特别适用于复杂逻辑的设计。如图2所示,装置主要由FPGA、ARM9微处理器、高精度GPS接收器、网络控制器LAN91C111、网络驱动器LXT972A、RJ_45、恒温晶振、RS485、RS232、空接点等构成。
FPGA首先完成IRIG-B解码、GPS解析及预处理、控制1588同步过程的功能,并根据预置的优先级顺序,将优先级最高的同步信号作为同步源校正本地时钟;其次在MII处检测和标记同步报文,与ARM配合实现基于以太网的1588同步;最后提供IRIG-B码、PPS、时间报文授时信号。ARM9实现1588协议栈的高层(应用层、传输层和网络层)以及液晶显示等。数据链路层和物理层分别由LAN91C111和LXT972A实现。
2.1 GPS解析与预处理
根据NMEA-0813标准格式解析$GPZDA报文,其语法格式如下:
如图3所示,解析时、分、秒数据,对本地时钟对时,同时利用GPS_PPS脉冲将时钟的纳秒计数器清零。在使用GPS_PPS脉冲之前要进行预处理。首先判断GPS接收机锁星是否正常(大于3颗为正常),若发现锁星异常,则屏蔽GPS的秒脉冲,利用FPGA生成PPS脉冲[9];其次由于GPS秒脉冲在传递过程中可能受外部电磁干扰而夹杂着伪脉冲,需要进行抗干扰处理[10],干扰产生的伪PPS脉冲可能导致错误对时。
2.2 实现1588同步
设置LAN91C111相关寄存器可以禁用片内PHY收发器,通过MII接口与以太网收发器LXT972A相连,MII接口同时接入FPGA,从而检测和标记同步报文。MII总线以半字节方式双向传输数据。如图4所示,IEEE-1588协议规定同步报文到达或离开节点的标记时刻为在帧开始标志字节的最后一位的结束和MAC目的地址第一个字节的第一位到来之前。在主节点处标记Sync报文的离开时刻Tm1,在所有的从节点处标记该报文的到达时刻Ts1;从节点处标记Delay_req报文的离开时刻Ts2,在主节点处标记该报文的到达时刻Tm2。
检测报文的方法[11]是从帧开始标志结束后,将报文数据流中的MAC地址、报文类型和UDP端口号记录下来,并与已知的MAC地址、报文类型和UDP端口号比对,只有匹配才有可能是同步报文。
IEEE-1588的2.0版本有了较大的改进,如引入点对点延迟请求消息模式、透明时钟模型等。点对点延迟请求是一种新的专门用于测量两个端口间平均网路延迟时间的独立消息模式,这种模式可以测量同步域中任意两点之间的平均网路延迟时间,而且可以在任意时刻进行任意次的测量。作为边界时钟模型的替代方案,透明时钟模型的建立使得网络连接设备对PTP事件信息包的处理变得简单、易于实现,降低了PTP协议的实施难度。
2.3 B码的编码与解码
IRIG-B格式时间码(简称B码)为国际通用时间格式码,将脉冲对时的准时沿和串口报文对时的时间数据结合在一起,克服了不包含绝对时标信息的缺陷,得到了广泛的应用。具体编码格式见文献[12]。该装置B码的编码输出(1为IRIG-B码,2为GPS_PPS)如图5所示,可以看出IRIG_B码帧参考点PR的上升沿与GPS_PPS脉冲的上升沿对齐。
解码原理就是利用计数器1对输入信号的脉宽进行计数,根据计数值识别码元为0’或1’或标志位。具体方法是采用1 MHz时钟对码元脉宽计数,0’、1’、标志位对应的计数值分别为2 000、5 000、8 000。计数值连续出现两次8 000表示帧的开始,从而确定PR参考点。使用计数器2对100个码元计数,PR作为计数清零标志,根据计数值识别当前码元的位置。根据编码规则解析出相应码元表示的时间信息,如图6所示。
2.4 时钟计时方法和平滑修正方法
计时时钟的工作时钟CLK为100M,由外部恒温晶振经FPGA内部PLL倍频获得。32位reg_s和reg_ns寄存器分别存放计s和ns时间值。通过对CLK的上升沿计数,每计到10时,计数值清零同时reg_ns的值增加100。reg_ns计满109后reg_s的值加1,同时reg_ns清零。
为了避免时间出现跳跃或倒退现象,装置采用平滑修正方法,其流程如图7所示。
每周期的平滑修正是以en_offset信号的上升沿为起始,然后判断本地时钟的快慢状态。前面我们知道正常计时CLK的计数值为10。计时时钟处于慢情况时,将CLK的计数值改为1,即每一个CLK的上升沿时钟值增加100 ns,从而慢偏差便减少90ns。计时时钟处于快情况时,将CLK的计数值改为100,即每100个CLK周期时钟值增加100 ns,从而快偏差减少900 ns;当offset的值小于900时,将CLK的计数值再改为20,即每20个CLK周期时钟值增加100 ns,快偏差减少100 ns。平滑修正过程如图8所示。
3 测试结果
3.1 装置同步性能测试
GPS接收机主要指标如下:输出$GPZDA格式的报文,1PPS脉冲精度为50 ns,1 s更新一次数据。由于将解析后的GPS_PPS脉冲和时间数据直接对本地时钟进行对时,因此同步误差主要取决于GPS接收机的精度。装置输出的PPS与GPS_PPS误差不超过50 ns。以下主要说明1588的同步误差,如图9所示为时钟同步的测试平台。
将经过GPS对时的装置作为主时钟,另一台为从时钟,两者间经边界时钟相连。FPGA板产生100M的计时时钟,并锁存接收主从PPS上升沿的当前时间,最后将锁存的时间和来自主时钟的时间数据一起通过网络发送给PC机,PC机利用上层软件比较主从时钟PPS上升沿锁存的时间数据,绘制出如图10所示的主从时钟间同步误差曲线。
图10为大约3 h的测试结果,横坐标为主时钟时间(转化为秒),纵坐标为主从时钟PPS上升沿的误差。从曲线上可以看出,1588同步时主从时钟同步装置的同步误差稳定在500 ns以内,可以满足同步误差不超过1μs的精度要求。
IRIG_B码同步测试如下:装置分别通过约2 m(图11左)和10 m(图11右)的同轴电缆向被授时装置提供IRIG_B码同步信号,被授时装置同时接收来自高精度GPS授时模块提供的GPS_PPS信号。在被授时装置端通过示波器观测的信号如图11所示。
3.2 应用于PMU中进行同步相量测量
装置在PMU测量中的作用:一方面在PPS触发下驱动AD同时对三相电压、电流信号采样;另一方面为电网实时电压相量、电流相量、频率等参数信息打上全网统一时间标签,以观测各节点的同步状态。PMU测量平台如图12所示。
WDT-IIC为电力系统综合自动化试验台。两台PMU配有该时钟同步装置,它们之间通过1588进行同步,同时对DDZ-II中发电机输出的三相电压进行测量。比较两台PMU的相角测量值,可以得到如图13所示的两台PMU的相角测量差值。
其中横坐标为测量的统一时间标签,纵坐标为相角误差,单位为度。从曲线中我们可以看出相角误差不超过0.5°,满足了预期的精度要求。
4 结束语
本文基于GPS和IEEE-1588协议,利用FPGA实现了一种可靠性和精度较高的时钟同步装置。并设计了相应的实验对所设计的装置进行了测试。测试结果表明,可以满足电力系统广域测量系统对时钟同步的精度要求。该装置的同步精度还可以进一步提高,例如,在物理设备上使用IEEE-1588透明交换机、高精度温补晶振、高速网络等;在FPGA逻辑设计中使用晶振补偿法和Offset偏差滤波法等。
参考文献
[1]郜洪亮,刘遵义.基于GPS和FPGA的便携式高精度同步时钟的研制[J].电力系统保护与控制,2009,37(2):81-87.GAO Hong-liang,LIU Zun-yi.Development of a portable synchronous clock with high precision based on GPS and FPGA[J].Power System Protection and Control,2009,37(2):81-87.
[2]张信权,梁德胜,等.时钟同步技术及其在变电站中的应用[J].继电器,2008,36(9):69-71.ZHANG Xin-quan,LIANG De-sheng,et al.Time synchronization and its application in substation[J].Relay,2008,36(9):69-71.
[3]ZHANG Ming-hu,SHEN Sen-zu,SHI Jian,et al.Simple clock synchronization for distributed real-time systems[C].//2008IEEE International Conference on Industrial Technology,April21-24,2008,Chengdu:1-5.
[4]Han Jiho,Jeong Deog-Kyoon.Practical considerations in the design and implementation of time synchronization systems using IEEE-1588[J].IEEE Applications&Practice Magazine,2009,47(11):82-86.
[5]陈永标.IEEE-1588时间精确同步协议(PTP)在电力系统应用的可行性研究[D].上海:上海交通大学,2009.CHEN Yong-biao.Feasibility study upon the application of IEEE-1588precision time synchronization protocol(PTP)in electric power system[D].Shanghai:Shanghai Jiao Tong University,2009.
[6]IEEE.IEEE Std1588--2002IEEE standard for a precision clock synchronization protocol for networked measurement and control systems[S].New York:The Institute of Electrical and Electronics Engineers,Inc,2002.
[7]IEEE.IEEE Std1588--2008IEEE standard for a precision clock synchronization protocol for networked measurement and control systems[S].USA:IEEE Instrumentation and Measurement Society,2008.
[8]HUANG Qi,JING Shi,et al.Design and implementation of a power system sensor network for wide-area measurement[C].//2008International Symposium on Computer Science and Computational Technology,Dec20,Shanghai,2008:796-799.
[9]杨永标,杨晓渝,周捷.利用FPGA实现GPS失步下精确守时[J].电力自动化设备,2007,27(7):109-112.YANG Yong-biao,YANG Xiao-yu,ZHOU Jie.Realize accurate timing with FPGA during GPS synch failure[J].Electric Power Automation Equipment,2007,27(7):109-112.
[10]张鹏,王少荣,程时杰.电网状态监测系统GPS同步时钟的稳定性研究[J].继电器,2004,32(23):19-20.ZHANG Peng,WANG Shao-rong,CHENG Shi-jie.Stability study of GPS synchronous clock in the status monitoring system of power network[J].Relay,2004,32(23):19-20.
[11]魏丰,孙文杰.IEEE1588协议时钟同步报文的精确时间标记方法研究[J].仪器仪表学报,2009,30(1):163-169.WEI Feng,SUN Wen-jie.Precise time stamping method for IEEE1588clock synchronization message[J].Chinese Journal of Scientific Instrument,2009,30(1):163-169.
IEEE1588协议 第4篇
基于IEC61850的数字化变电站以变电站信息同步为前提条件。IEC61850根据不同应用把同步报文分成5个等级,过程层采样值要求最高,同步精度达到1μs[1],目前比较成熟的互联网网络时间协议(NTP)、简单网络时间协议(SNTP)等同步精度为毫秒级,均不能达到IEC61850所要求的时间精度。2002年发布的IEEE1588(Version 1)《网络测量和控制系统的精确时间同步协议》定义了一种精确时间协议(PTP),其利用多播技术同步终端设备,特别适合于以太网,最高同步精度可达到亚微秒级。2008年,发布了IEEE1588[2]第2版(Version 2)。
IEEE1588的基本构思是通过硬件和软件相结合的方式实现设备间的同步,而NTP、SNTP仅采用在应用层软件打时间戳的方式[3,4]。
IEEE1588的主要优点有:采用硬件打时间戳,同步精度高;特别适合于以太网;不需要单独的硬接线,降低了成本(目前变电站同步方式IRIG-B、PPS需要单独布线[3,4,5,6,7,8]);具有较强的故障容错能力;可减少对GPS的依赖。
1 IEEE1588时钟类型
IEEE1588(V1)将整个网络内的时钟分为2种,即普通时钟OC(Ordinary Clock)和边界时钟BC(Boundary Clock),只有一个PTP通信端口的时钟是普通时钟,有一个以上PTP通信端口的时钟是边界时钟,每个PTP端口提供独立的PTP通信。从通信关系上又可把时钟分为主时钟MC(Master Clock)和从时钟SC(Slave Clock),理论上任何时钟都能实现主时钟和从时钟的功能,但一个PTP通信子网内只能有一个主时钟。在V2中又提出了透明时钟[2]TC(Transparent Clock)的概念。
1.1 最高级时钟GMC
GMC(Grand Master Clock)作为整个变电站的基准时钟,可以采用北斗卫星定位系统、GPS、原子时钟或其他精确时钟。
1.2 普通时钟OC
OC只含有一个同步端口,与上一级时钟同步。数字化变电站内的IEDs都可作为OC。
1.3 边界时钟BC
BC含有一个OC属性端口和一个或多个MC属性端口,通过OC属性端口与上级时钟同步,并通过MC属性端口同步下一级时钟,也就是边界时钟的每个端口可处于主时钟状态,也可处于从时钟状态。
1.4 透明时钟TC
TC用于长距离的主从时钟之间或分层网络中,减少非对称性误差的影响。
如图1所示,TC分为2种:E2ETC和P2PTC。E2ETC可以测量时间报文在交换机中的逗留时间,添加到同步报文或跟随报文中并转发报文;P2PTC不仅可以测量时间报文在交换机中的逗留时间,还可以测量与上一级时钟之间的传输延迟,添加到同步报文或跟随报文中并转发报文。
如图1所示,同步报文在t1时刻发出,经过交换机,到达SC的时间为t4。对于E2ETC而言,其测得同步报文在交换机中的逗留时间tc,f记录在Correction Field中。
tc,f=t3-t2
而对于P2PTC,tc,f为
tc,f=(t2-t1)+(t3-t2)+(t4-t3)
OC和BC不能测量报文在交换机中的逗留时间,所以说TC能减小分层网络的对时误差。
2 同步原理
IEEE1588协议的同步过程分为2步:
a.确定网络中的主时钟;
b.通过计算主/从时钟的偏差和网络传输延迟修正从时钟。
最佳主时钟算法BMC算法(Best Master Clock Algorithm)根据各个PTP端口提供的质量信息,通过比较确定哪一个时钟成为主时钟。主时钟周期性的组播包含时间戳的信息,需要同步的从时钟向主时钟发送消息,从时钟根据收到的时间信息和自身发送消息的时间,计算出与主时钟的偏差和网络传输延迟时间[9,10,11,12],同步原理如图2所示(图中,时间均为时钟的本地时间)。
首先,主时钟发送同步报文Sync,从时钟记录Sync到达时间t2,由于同步报文中包含的是预计的发出时间而不是真实的发出时间,紧接着发送跟随报文Follow_Up通知从时钟Sync报文发送的准确时间t1;从时钟收到之后,接着在t3时刻向主时钟发出Delay_Req,主时钟记录收到报文时刻t4,接着回复Delay_Resp把t4告知从时钟。从时钟根据4个时间信息计算出从时钟与主时钟间的时间偏差和传输延迟。
假设主/从时钟间的报文往返传输延迟是对称的,则主/从时钟之间的传输延迟(Delay)tdelay为
进而可以计算出从时钟与主时钟之间的时间偏移(Offset)toffset为
将式(1)代入式(2)得:
从时钟根据计算出来的时间偏移修改本地时间,达到与主时钟同步。由于主/从时钟的漂移是相对独立的,因此同步的过程必须周期性地进行。
3 硬件支持
因为IEEE1588同步协议要求同步设备具备以太网媒体接入控制(MAC)层打时间戳的硬件支持,这在一段时间内限制了IEEE1588协议的应用[13]。近年来,硬件的研制取得了突破性进展,可以支持IEEE1588同步协议的硬件主要有以下3种。
a.2005年可编程逻辑供应商Altera与德国设计及IP供应商Morethan IP合作,推出业内首款三速MAC的IP内核,支持面向精确时钟同步化的IEEE1588标准,可应用在Altera公司的StratixⅡ或CycloneⅡ系列FPGA器件上,精确度达到亚微秒级。
b.2007年10月11日美国国家半导体公司推出业内首款具备IEEE1588 PTP硬件支持功能的以太网收发器DP83640,时钟精确性能表现非凡,可用微控制器、FPGA或ASIC进行控制,并实现高达8 ns的精确度。该芯片内配置高精度IEEE1588时钟,并设有由硬件执行的时间标记功能,可在物理层为接收及发送的信息包印上时间标记[13]。
c.2009年,罗杰康推出的加强型RSG2288交换机、RS416服务器、RX100路由器拥有IEEE1588 V2协议,还可以进行以太网IEEE1588协议与IRIG-B的转换,具备硬件打时间戳功能,同步时间精度达100 ns。
上述硬件均能满足IEC61850要求的1μs时间精度。硬件的快速发展使数字化变电站实现IEEE1588精确时间同步协议成为可能。
4 IEEE1588在数字化变电站中的应用方案
4.1 单一变电站应用方案
4.1.1 同步精度要求
IEC61850将数字化变电站从逻辑结构和物理结构上分为站控层、间隔层、过程层,信息交互实现网络化。IEC61850-5-13将数字化变电站时间同步报文精度根据不同需求分为T1~T55个等级,用于测量的过程层采样值对时间同步精度的要求最高,为±1μs,站控层同步精度要求相对较低,为±1 ms[1]。
4.1.2 配置方案
数字化变电站的类型较多,网络拓扑结构及保护测控设备的配置也不尽相同。以太网的基本结构主要有总线型、星形、环形3种,本文选取星形结构作为研究对象进行IEEE1588时钟的配置。
考虑到时间同步的重要性,本方案全站均采用IEEE1588高精度报文同步,如图3所示。
最高级时钟GMC可采用GPS、北斗或原子时钟。
本方案对全站最高级时钟GMC进行了冗余配置,可采用北斗卫星同步时钟和GPS同步时钟或北斗卫星同步时钟和原子时钟2种方案。由于卫星同步容易受战争、恶劣天气、电磁干扰等的影响,从长远考虑,优先采用卫星时钟与地面时钟互备的方式,即北斗卫星同步时钟和原子时钟作为最高级时钟冗余配置方案,把它们分别接到一个边界时钟上,然后将2个边界时钟相连,可以保证在丢失一个主时钟的情况下,与之相连的边界时钟可以作为另一个边界时钟的从时钟,这样仍能精确地同步时间。然后将与最高级时钟相连的2个边界时钟分别接到站控层网络和过程层网络的交换机上(比如采用罗杰康的加强型RSG2288交换机),其他设备在内部可扩充一片美国国家半导体公司的以太网收发器DP83640或ALTERA公司的FPGA芯片。由于交换机交换的信息量大,存在信息排队现象,进而引入了时延抖动问题,为了解决这个问题,在交换机1和交换机2上使用的是透明时钟,减小了时延抖动,提高了同步精度。
4.2 多变电站(区域)应用方案
4.2.1 区域时钟同步的必要性以及可行性
目前各个变电站主要是实行变电站内独立对时同步[14],各个变电站单独装设GPS接收器或其他精确时钟源,各变电站间同步精度不高。对于像线路纵差保护这样需要两端电气量进行故障判断的保护,要求两端电气量必须高精度同步且带有统一时标;但各变电站独立同步,时标信息不统一,而且当一端同步时钟丢失时,会造成两端电气量同步误差增大,导致保护不正确动作。
保护测控技术的不断发展,使得变电站间统一校时的重要性越来越高,虽然IEEE1588主要应用于相对本地化、网络化的系统,但是随着变电站通信网络的不断建设、完善,待条件成熟之后可以在一定区域内应用。
4.2.2 基本方案
本方案在一个区域内只设一个对时主站来同步其他变电站,对时主站的最高级时钟进行冗余配置,并且在相邻变电站之间接入P2P透明时钟,对时间报文接收、再生并转发,起到中继器的作用,减少非对称性影响,如图4所示。
但是此方案需要长距离通信网的支持,并且级联变电站较多时,对时精度能否满足要求,需要实践验证。
IEEE1588 PTP有较强的故障容错能力,允许“时间孤岛”的存在。比如相邻变电站1失去了与对时主站的时间报文交换,相邻变电站1内的IEEE1588时钟会根据最佳主时钟算法进行比较,产生一个新的子站主时钟同步站内其他时钟,可以短时间内保证与对时主站的同步精度满足要求,如果长时间收不到同步报文,就容易和UTC发生偏移,但是变电站1内的所有设备会一直保持高精度时间同步,只是这时的站内时间与标准时间不一致[15]。
5 结论
IEEE1588协议 第5篇
时间同步技术是工业自动化领域需要用到的重要技术, 在电力行业等需要测量与控制的分布式系统中应用犹为广泛。随着分布式系统日益庞大复杂, 分布式程度越来越高, 对时钟同步的要求也逐步提高。电厂、电站由于实时数据采集和控制的需要, 设备间的时钟同步精度往往都在毫秒内, 部分设备的同步精度更达到了微妙级别。
另一方面以太网的高速发展为工业自动化的时间同步带来了新的技术基础, 在这种背景下, IEEE委员会于2002年11月制定了IEEE 1588高精度时钟同步标准。并在2004年4月, 通过了IEC的投票表决, 成为IEC61588规范[1]。
时钟同步标准IEEE 1588适用于以太网、CAN网和PROFIBUS等工业总线, 但目前最主要的应用范围还是在以太网。 IEEE 1588定义了一种精确时间协议PTP (Precision Time Protocol) , 该协议将分布式网络中的设备分成了主钟和从钟两种, 基本功能是使得分布式网络内所有从钟与主钟保持同步。IEEE 1588的PTP协议同时描述了硬件和软件, 对于时间戳的获取来自于更底层的硬件。
在IEEE 1588之前, 以太网时间同步采用的是网络时间协议 (NTP) , 用的是RFC的标准 (RFC1305) , 或者是简化的网络时间协议 (SNTP) , 所依据的标准是RFCl769。NTP只对软件进行了描述[2]。
1 IEEE1588的PTP协议
IEEE1588标准提供的PTP时钟同步系统是由主时钟和从时钟构成的主从关系网络结构, 如图1。
时钟同步有两个阶段, 对于精度要求不高的领域完成第一阶段的对时即可。第一阶段是修正从钟与主钟的时间偏差。按协议一般情况下主钟每隔2秒发送一个Syn同步报文到从钟, Syn同步报文发送的准确时间T1由以太网MAC或PHY层记录, 并在下一帧报文发送之前由主钟读出该记录值, 写入到待发送的这帧报文之中。这一帧报文即被称为Follow_Up报文。从钟收到Follow_Up报文后记录下时刻T2。可以看出第一阶段的网络延时Y1=T2- (T1+X) , 当认为网络延时忽略不记的时候, Y1=0, 从而时间偏差X=T2-T1。
为了提高修正精度, 将网络报文传输延时考虑进来, 利用迭代消除往返的路径延时误差, 这时就要进行第二阶段的同步[3]。首先由从钟向主钟发送一个延迟请求报文, 记录下此时从钟端的发送时间做为T3, 主钟接收到延迟请求报文后, 记录下它收到时的本端时间做为T4, 并且在随后向从钟发送的延迟响应报文中将时间戳T4信息带上, 由从钟从报文中解析出来, 这样从钟就能获得到T3和T4的值, 这一阶段的网络延时Y2=T4+X-T3。假设网络延时对称的话, 即从钟发送到主钟和主钟发送到从钟的网络延时时间一致, 有Y1=Y2, 即X= (T3-T4+T2-T1) /2。
按IEEE1588在以太网的物理层完成报文的时间标记能有效地消除上层软件的不确定性以获得最佳的标记精度, 达到微秒级的时钟同步精度。而且, 对于带1588功能的以太网物理层芯片, 会自带基准时钟, 可以方便的进行频率调节, 从而将时间偏差分为频率。误差引起的偏差和绝对的相位偏差, 将其二者分开来调节, 避免忽略频率误差引起对时的反复波动。
2 基于PHY芯片DP83640的硬件方案
基于DP83640的MPC82XX的硬件框图如图2所示。 MPC82XX是具有协处理通信单元的POWERPC系列的CPU, 由协处理通信单元CPM来负责以太网、串口、IIC等通信接口的数据处理, 将CPU核从通信处理中解放出来。这里我们使用以太网MII接口与DP83640连接。
DP83640是带有IEEE1588功能的高精度PHY芯片, 它是在以太网物理层最下层的PHY这一级进行IEEE1588时间戳的标记。硬件框图如图3所示。
DP83640实现功能如图6所示, 来自MAC层的数据包和来自LAN的数据包都会被DP83640的IEEE1588检测模块分析并产生对应IEEE1588的事件和时间戳, 递交给上层系统软件处理。当时间需要校正的时候, 上层系统软件根据计算值进行对DP83640的内置IEEE1588时钟设置。
DP83640的内置IEEE1588时钟可以直接设置数值 (PTP_TDR和PTP_CTL的PTP_LOAD_CLK位) , 也可进行微调, 微调又分成两种, 一种是STEP调节, 即调节时间偏差绝对值 (PTP_TDR和PTP_CTL的PTP_STEP_CLK位) , 以纳秒为单位步进。另一种是RATE调节, 即调节时钟频率 (PTP_TRDH/L和PTP_RATEH/L) 。
3 基于DP83640的软件方案
3.1 IEEE 1588时钟的2种操作方式比较
获取DP83640的内置IEEE1588时钟有两种方式, 一种是使用MII接口里的MDIO、MDC pin进行读取。另一种是使用特殊类型的以太网帧报文来获取IEEE1588时钟信息, 这种特殊的以太网帧被称做PHY Control Frame (PCF) 。
MDC方式是MAC操作PHY的通用方式, 但在MPC82XX上没有集成该功能, 不能直接通过寄存器访问的方式来读取DP83640的信息, 但我们可以使用MPC82XX的并行IO口连接到MDC和MDIO, 使用软件发送时钟信号到MDC, 同时进行MDIO的移位来传输数据。MDC上时钟最小的频率是2.5 M, 最高DP83640允许以25 M的速率进行操作。
PCF方式下DP83640各个寄存器的信息可直接被填入到以太网帧中, 这种以太网帧是特殊类型的, 以太网帧类型位于偏移为12和13的字节, 0x88F7是1588的特定类型帧, 在偏移为14的字节可以通过设置DP83640第6页的0x15寄存器最低8位来表示PCF类型帧。比如这里我们设置成0xF8, 那么当收到1588数据帧后, 判断偏移为14的字节内容是否为0xF8即可将PCF与其它正常数据帧区别开来。以太网帧类型示意如图4所示。
考虑到百兆以太网数据帧的传输时间和MDC最高25 M的频率, 计算能得出两种方式下对DP83640的操作时间是同一个数量级别的。但对于后者, 硬件上可以省去MDC、MDIO接口, 软件上也可以统一到以太网数据接收发送的流程中去, 从里面多出一个分支处理即可。这两种方式我们已在MPC82XX上实现, 初期调试使用前者, 开发后期及应用时后者用得更广泛一些。
3.2 时间戳的截获方式比较
通用做法也有两种, 一种是在以太网报文接收处理中断中分析IEEE 1588类型的报文, 分析到后读取IEEE 1588时钟暂存的时间戳信息。另一种是设置IEEE 1588事件产生中断, 当DP83640收到IEEE 1588类型的数据帧的过程中会触发对应的中断, 在IEEE 1588事件中断里读取时钟暂存的时间戳信息, IEEE 1588的时间戳信息最多能缓存4个, 按照IEEE 1588的PTP协议, 接收报文的频率还不会使得4个时间戳的缓存溢出, 因此上述方法足以满足IEEE 1588的应用需求。
不过, 这里我们再介绍一种更灵活的方式, 通过修改原IEEE 1588以太网帧内容来获得以太网帧在PHY层的时间戳信息, 即如何将DP83640的IEEE 1588时钟信息塞入到实际的报文中。设置第5页的0x1C PTP Receive Configuration Register 3寄存器的TS_INSERT (Enable Timestamp Insertion) 位来打开插入时间戳功能, 至于插入的位置和插入的位数由第5页的0x1D PTP Receive Configuration Register 4寄存器来控制, 这里就不再一一阐述了。
通过修改原IEEE 1588以太网帧内容, 在末尾插入时间戳信息, 可以将对DP83640的寄存器操作从上层协议软件中剥离出来, 这样, 在协议软件对1588的帧类型进行分析处理时就能直接获得时间戳信息进行后继校时操作, 也不涉及任务与中断的切换过程, 整个软件的流程结构更清晰。另外, 如果替换DP83640芯片, 使用FPGA做PHY的功能或者自己用定时器捕获PHY的以太网帧接收时间, 上述修改原IEEE 1588以太网帧内容, 插入时间戳的方式也容易做到, 这样替换硬件电路和芯片时, 上层的IEEE 1588协议分析软件也不用修改移植。
4 基于通用PHY芯片的方案
这里, 我们将PHY芯片的数据接收有效信号RX_DV接入到了MPC82XX的定时器输入信号TIN_X (X=1, 2, 3或4) , 当以太网上有数据帧时RX_DV信号被触发, 在MPC82XX端开启定时器的捕捉功能, 定时器会将捕捉时刻计数值锁存在寄存器TCR (TIMER CAPTURE REGISTER) 中。控制好对以太网帧的截获, 得到IEEE 1588类型帧后, 将TCR的定时器计数值读出, 并修改以太网帧报文的内容加入时间信息, 然后递交给上层协议分析软件处理, 即可实现同样的1588时间戳功能。基本上CPU都带有定时器, 且使用通用PHY芯片, 所以对于原有硬件方案的变动很小, 无附加成本, 而且对于大多数工控领域的对时要求, 如百微秒内的精度, 本方法都可以达到, 具有广泛的应用。
5 结束语
本文介绍了工业自动化领域特别是电力行业的时间同步技术, 分析了IEEE 1588的时间同步原理, 然后基于POWERPC体系的CPU给出了IEEE 1588时间同步实现的方法, 其中先给出了一种使用带IEEE 1588功能的PHY芯片DP83640的硬件方案, 并详细描述了对DP83640 PHY芯片软件应用的几种方法和技巧。最后提出了一种使用通用PHY芯片来实现IEEE 1588的简单方案。这些方案都已广泛应用于实际工程, 具有较高的实用价值。
参考文献
[1]于鹏飞, 喻强, 邓辉.IEEE1588精确时间同步协议的应用方案[J].电力系统自动化, 2009, 33 (13) :99-103.
[2]赵上林, 胡敏强, 窦晓波.基于IEEEl588的数字化变电站时钟同步技术研究[J].电网技术, 2008, 32 (21) :97.102.
IEEE1588协议 第6篇
IEEE1588--网络测量和控制系统的精密时钟同步协议标准,是实现网络上的节点之间时间同步。同步系统是一种发布者和接收者组成的系统,在系统的运行过程中,每一个网络节点和设备采用协议中的一种时钟设备模型,其中主时钟担任着时间发布者的角色,每隔一段时间将本地时间发布到网络上,从时钟则根据自己的域和优先级进行时间的接收。即从状态时钟时刻保持与主状态时钟的时间同步,同时不定时地进行线路延时的计算,以保证精确地根据网络情况进行同步。称之为精密时间协议(PTP协议)。
由于时间同步是基于节点采用的时钟设备,所以如何选择更合理的时钟模型对网络的同步精度和稳定度都有重要的意义,本文对协议中的设备模型进行分析和比较,根据具体网络拓扑讨论其模型的具体应用。
1 时钟设备介绍
1.1 V1中的同步及其时钟设备
PTP协议的同步过程分为两个阶段:偏移测量阶段和延迟测量阶段。第一阶段修正主时钟与从时钟之间的时间偏差,称为偏移测量,第二阶段修正主从时钟之间的路径延时,称为延时测量。采用延时请求响应机制,如图1所示,Sync和Follow_Up报文是来完成偏移测量阶段。Delay_Req和Delay_Resp报文是完成延时测量阶段,称为延时请求响应测量机制。
其偏移(Delay)和延时(Offset)计算公式如下:
A=T2-T1=delay+offset
B=T4-T3=delay-offset
Delay=(A+B)/2
Offset=(A-B)/2
其中:T1是主时钟发送Sync报文的时间戳信息,T2是从时钟接收Sync报文的时间戳信息,T3是Delay_Req发送的时间戳信息,T4是Delay_Req接收的时间戳信息。Follow_Up包含时间信息T1,Delay_Resp中包含时间信息T3。这些时间依靠系统硬件的时间戳单元,将消息帧到达MII接口的时间,填充在帧的timestamp域中。
在V1中的时钟模型存在普通时钟(OC)和边界时钟(BC),主时钟和从时钟属于普通时钟。普通时钟通常作为单端口设备,在主从状态中选择一种。边界时钟通常对应多端口设备,其中一个端口作为从端口,其它端口作为主端口。BC是作为网络中的路由、网桥设备来完成网络中的连接组件。由于边界时钟多个端口能处于不同的主从状态,故能将网络划分为若干的单对主从端口的同步。边界时钟通过采用伺服环路系统调节从端口的时钟,然后这个时钟作为边界时钟主端口的时钟源。典型网络拓扑如图2。
1.2 V2中的时钟设备
由于链路上多个伺服系统的积累效应,多个边界时钟级联的网络的同步准确度会因为这种效应而降低。边界时钟使用的晶振质量对系统的时钟精度有很大的影响。所以,在2008年的V2版本中提出了透明时钟(TC)。
透明时钟也可以作为一个多端口的网络设备的模型。透明时钟对那些多端口设备,如网桥、交换机、路由器等作为执行边界时钟的替代。其本意是使消息能在设备上透明传输,消除设备由于对数据包的存储-转发而带来的延时,称为Residence time。透明时钟提出的同时,在消息格式中新增加了correction域,其目的就是为了记录Residence time。将消息通过透明时钟传输带来的滞留时间累加到消息中的correction域。所以在V2中,消息时间戳的存放有timestamp和correction域,即V2中新增的时间信息都存放在correction域中,目的是为了做到和V1的兼容。
透明时钟存在两种类型:end-to-end透明时钟(E2E)和peer-to-peer(P2P)透明时钟。E2E透明时钟,不标记时间戳,只转交PTP事件消息,但修改了消息从入口端传播到出口端的滞留时间。故必须对Sync和Delay_Req消息的传播做修正,将滞留时间填充到消息的correction域中。其同步过程如图3所示,对连接链路上的主从时钟同步消息只做校正,不做本地接收,可见作为E2E透明时钟的设备可作为转发设备。
P2P主要是定义peer延时测量机制。采用P2P透明时钟模型的设备,延时的测量不通过Delay_Req和Delay_Resp消息,即采用peer延时机制,定义为Pdelay_Req,Pdelay_Resp和Pdelay_Resp_Follow_Up(可选)消息组合方式。由P2P设备端口周期性地将PDelay_Req消息发到每个端口来测量到该端口的链路延迟。它适用于对等的端口,而不在乎是不是主从端口对之间的延时测量。P2P透明时钟,除了像E2E那样必须确定Sync消息的滞留时间之外,时钟设备连接链路的延时必须校正到消息中。由于在点到点透明时钟上不支持延时请求响应机制,故Delay_Req消息不需要特殊处理。请求响应机制和peer延时机制在同一通信路径上不交互。
E2E或P2P透明时钟除了作为多端口的设备模型之外,也可以与一个普通时钟共用一个物理时钟,作为一个传感器或其它设备。在这种结合使用的情况下,E2E与P2P的原理类似,区别在于他们延时测量的方式不一样。
边界时钟以及透明时钟都是物理机制,为交叉多端口网络设备,如网桥、路由器和中继器等提供了精准的PTP协议。应用范围从大规模多端口以太网交换机到两、三个端口的菊花链设备。在所有情况下,边界时钟和透明时钟都是按本地晶振的运行来提供时间。
2 时钟设备同步比较
对于普通时钟、边界时钟和透明时钟,几种时钟模型的偏移测量和延时测量中的消息组合见表1。其中边界时钟的每个端口虽然共用一个物理时钟,但各个端口状态相互独立,等同于一个普通时钟。One step模式是指Sync和Pdelay_Resp消息的时间戳信息是包含在Sync和Pdelay_Resp消息本身中,而two step是指Sync和Pdelay_Resp消息的时间戳信息是包含在随后的Follow_Up和Pdelay_Resp_Follow_up中。这两种模式是可选的,但需要硬件单元的支持。
3 测试平台
多端口的网络交换设备既可以作为边界时钟,也可以成为透明时钟。这里通过构建一个线性的同步网络,把网桥设备作为边界时钟或透明时钟,分别测试其对网络同步的精度影响状况。其同步测试网络如下:
(1)路由设备作为边界时钟,从时钟同步于临近边界时钟的主端口,如图4;
(2)理由设备作为透明时钟,从时钟同步于主时钟,如图5。
测量方法:
(1)所有设备采用的本地晶振为25MHZ;
(2)使用National Semiconductor的DP83640,这是一款集成时间戳单元的PHY芯片,提供了准确的时间戳;
(3)主时钟发送sync的时间间隔是1s;
(4)不断增加主从时钟间的网桥设备个数;
(5)通过比较主从时钟的秒脉冲信号。
4 结论
测试结果如图6所示
其结果可以发现:
(1)随着网络中交换设备的级联层数的递增,网络的时间延时都呈线性增加,这表明网络的结构设计应该避免纵深的链式级联模式
(2)多端口设备的透明时钟模型相对于边界时钟模型能获得更好的同步性能
(3)B2B和P2P能获得相当的性能,主要区别是在延时测量的机制不相同。
IEEE1588 V2中的普通时钟、边界时钟和透明时钟都有各自的适用范围。普通时钟作为单端口的设备,是各种终端节点的适用模型。由于边界时钟将PTP设备分隔为多个主从端口的同步,所以更适合于单个PTP链路的终结,多个同步链路之间的连接,使其不相互影响。而透明时钟针对于同一个域中的同步主从时钟,能更好的消除路径延时和交换设备带来的同步误差,达到更好的同步性能。
摘要:IEEE 1588标准是运行在分布式测量和控制系统上,使对系统上各个节点上的独立时钟保持同步。IEEE1588标准中定义了三种时钟设备模型,对于每一个节点,都会采用一种具体的时钟设备模型。本文就协议中的时钟模型进行分析,并对特定的网络拓扑结构采用不同的时钟模型测试,根据测试结果分析各个时钟模型在同步网络中的应用。
关键词:精密时间协议,普通时钟,边界时钟,透明时钟
参考文献
[1]IEEE.IEEE Standard for a Precision Clock SynchronizationProtocol for Networked Measurement and ControlSystems[S].IEEE,New York,2008.ANSI/IEEE Std 1588-2008.
[2]IEEE.IEEE Standard for a Precision Clock SynchronizationProtocol for Networked Measurement and Control Systems[S].IEEE,New York,2002.ANSI/IEEE Std 1588-2002.
[3]Jurgen Jaspemeite,Khaled Shehab.Enhancements to theTime Synchronization Standard IEEE-1588 for a Systemof Cascaded Bridges[C].2004 IEEE InternationalWorkshop on Factory Communication Systems-Proceedings,WFCS,2004
[4]M.Mueller and K.Weber.Impact of Switch Cascading onTune Accuracy.In Workshop on IEEE-1588,Srandard fora Precision Clock Synchronizarion Protocol forNerworked Measurements and Control Sysrems.NationalInsiNte of Standards and Technology(NIST),September 2003.
IEEE1588协议 第7篇
关键词:IEEE 1588,Linux,软件方案,时钟偏移,TSC
0 引 言
随着计算机和互联网的迅速发展,基于网络的分布式应用越来越普及,对时钟同步的精度要求也越来越高。传统的时间同步技术比如网络时间协议(network time rrotocol,NTP)已经无法满足这种精度要求,比如对时钟同步精度要求非常苛刻的TD-SCDMA网络就采用GPS卫星信号进行授时,虽然精度可以保证,但是GPS系统造价昂贵、安装复杂、兼容性差的缺点使得运营商不得不考虑其替代方案。
IEEE 1588协议的发展和成熟提供了一种低成本高精度的网络时钟同步解决方案。IEEE 1588即网络测量和控制系统的精密时钟同步协议标准(precision time protocol,PTP)。依靠IEEE 1588的同步机制,可以保证分布式网络各个节点时钟保持一致,仅靠软件实现就可达到μs级精度,硬件支持下可达ns级。但带硬件支持的同步系统由于造价昂贵、设计复杂、应用范围窄等缺点使其不是低成本、高精度网络时钟同步方案的首选。
本文在深入分析PTP同步原理和误差来源的前提下,以Linux内核时钟机制为基础,提出一种软件实现IEEE 1588的设计思想,并进行实验验证,证实方案的有效性和可行性。
1 IEEE 1588 同步原理
主从时钟首先是通过周期性的传递带有时间信息(时间戳,Time Stamp)的报文来计算节点之间的时间偏差和频率偏差,从时钟再采用适当的算法调整本身的时间和频率,从而达到主从时钟的同步[1]。一般来说,报文传递的过程可以分为两个阶段:偏移测量和延时测量。
IEEE 1588定义了5种报文:Sync,Follow_up,Delay_Req,Delay_Resp和Management。通过这几种报文的传递来计算时钟偏差和线路延时。首先主时钟周期性地向从时钟发送Sync消息,其中包含了Sync消息发送准确时间T1的估计值,在Sync消息之后主时钟又发送Follow_up消息,其中包含了T1;从时钟在收到Sync消息后立即记录收到的时间T2,并且在T3时刻向主时钟发送Delay_Req消息,主时钟收到Delay_Req消息后记录收到的时间T4,并包含在Delay_Resp消息中发送给从时钟。
T1,T2,T3,T4都是表示网络节点各自的本地时钟。定义主从时钟的偏移为Toffset,主从时钟的延时为Tdelay(假定网络链路是对称的,主时钟到从时钟和从时钟到主时钟的延时均为Tdelay)。则有:
计算可得:
这样从时钟就可以根据计算出来的Toffset和Tdelay进行调整,由于IEEE 1588是相对同步,从时钟和主时钟保持一致即认为是同步的。因此T1,T2,T3,T4时间戳的精度直接决定了整个同步过程的精度。如何获取精确的时间戳,最大程度的减小各种误差对同步精度的影响成为了IEEE 1588时钟同步系统最核心的问题。
2 误差来源分析
网络中影响同步精度的因素有很多,软件实现相对硬件支持来说受误差影响更明显,主要包括:主从时钟频率的不一致、时间戳的精度、操作系统的延时、网络链路的不对称性、网络设备转发的延时(如路由器和交换机)、网络流量和负载的影响等。下面将对主要的误差来源进行分析。
2.1 主从时钟频率的不一致
在计算机系统中,时钟往往是由晶振脉冲来衡量的,主从时钟晶振的质量、压力、温度、老化和校准误差都可以引起频率的漂移,随着时间的推移,这种频率的不一致会逐渐积累而且影响越来越严重,直到下一次同步之后误差才会得到缓解。这一点也是时钟需要同步的主要原因,调整也往往是针对从时钟的频率进行渐进的调整,并非直接修改时钟本地时间。
2.2 时间戳的精度
时间戳标记的精度直接决定了同步的精度。如图1所示,时间戳标记的网络层次决定了时间戳的精度,因为越是靠近物理层受延时抖动误差的影响越小。一般来说,物理层的延时抖动非常小,基于硬件支持的时间戳标记就是在物理层和数据链路层之间直接捕捉PTP帧,可以获得非常高的时钟精度。越往上层标记时间戳,受操作系统延时和协议栈处理延时的影响就越严重,比如在PTP应用层进行时间戳标记,实现起来最简单,但是受数据包的封装和解包、操作系统响应延时、逐层传递的延时抖动、进栈出栈的延时等因素的影响,传递给对方时钟的时间戳已经远远地偏离了真正时钟信息[2]。
2.3 网络链路的不对称性
在前文的IEEE同步原理分析中,关于Toffset和Tdelay的计算有一个假定条件:网络链路是对称的,即主时钟到从时钟的延时和从时钟到主时钟的延时是相同的,统一为Tdelay。但在实际网络中,由于网络负载和流量的变化,包括网络不确定性使得这种时延对称性很难保证,影响了计算的准确性。
3 设计思想
3.1 概述
基于前文对IEEE 1588同步原理和误差来源的分析,从低成本和高精度的考虑出发,本文提出了一种软件实现的同步方案。如果要获取较好的同步精度,必然要涉及操作系统的底层机制,这也是基于软件实现不可避免的部分,因为越靠近底层则受误差影响越小,否则仅在PTP应用层标记时间戳是没有太大意义的。
Windows系列操作系统由于其内核是封闭未开放的,能够提供给外部调用的API函数精度仅能达到毫秒级,远远达不到高精度同步的要求。本文的设计思想正是基于Linux灵活可靠的时钟机制,通过直接与操作系统内核的通信交互,配合相应的算法设计,最大化地抑制和减弱因为软件实现带来的误差影响,如操作系统响应延时、封解包处理延时等,最后实现微秒级的网络时钟同步[3]。
3.2 时钟计时和标记时间戳
网络中的主机要实现时间同步,无外乎要做两件事:“计时”和“打戳”。“计时”是保证本身的时钟走得准,在本身维持一个可靠的时钟;“打戳”则是保证传送给其他网络节点的时钟信息是精确的。这些都无法避免与操作系统的通信交互,Linux本身的时钟机制非常灵活和透明,提供了丰富的接口和函数调用,达到微秒级的精度远远优于Windows操作系统。内核提供了标准函数gettimeofday()可以获取微秒级的软时钟。进行同步所取的时刻T1,T2,T3,T4都是软时钟的时刻[4]。
按照前文关于IEEE 1588同步原理的分析,主时钟向从时钟发送Sync消息时,PTP应用程序就要记录Sync发出的准确时刻T1,然后T1被包含在后续的Follow_up消息中告知从时钟。获取T1的方法就是PTP应用程序向内核发起gettimeofday()调用,内核会返回一个指向timeval结构的指针。timeval结构如下所示:
struct timeval
{
time_t tv_sec; /*seconds*/
suseconds_t tv_usec; /*microseconds */
}
T1就是用timeval这样的结构来表示的,成员tv_sec表示当前时刻距Unix基准时间(1970年1月1日0:00:00)的秒数,成员tv_usec表示1 s内的微秒值。不可忽略的是,从发起gettimeofday()调用到PTP应用程序收到其返回值,处理函数调用也是有延时的,有公式:
T5 =T1+T6
式中:T5为gettimeofday()的返回值;T6为此内核处理gettimeofday()的延时。
只有准确测算T6,计算的T1才是可靠的。现代计算机CPU都有一个时间戳计数器(time stamp counter,TSC)的寄存器[4],它的值在主机上电以后,每一个CPU时钟信号(CLK)到来时就加1,假如CPU的主频是1 GHz,TSC的值就每ns增加1。可以利用TSC得到更为精准的时间度量,但必须确定TSC每一次计数代表多长的时间间隔,调用calibrate_tsc()可以得到μs级的时间间隔。用汇编指令rdtsc来读取当前TSC的值。时间戳标记的功能如下伪代码所示:
_declspec(naked) int GetTSCvalue()
{
_asm
{
rdtsc
ret
}
}
int TimeStampCalc ()
{
//确定TSC每一次计数代表的时间间隔
int Interval= calibrate_tsc();
//gettimevalue()开始执行时TSC的值
int Begin= GetTSCvalue();
//gettimevalue()开始执行到完毕
timeval* pTime = gettimeofday();
//gettimevalue()执行完毕时TSC的值
int End= GetTSCvalue();
//计算T6
int T6 = Interval * (End - Begin);
//计算T5
int T5 = (pTime-> tv_sec) * 1000000 + pTime-> tv_usec;
//计算T1
int T1 = T5 - T6;
return T1; //返回T1
}
其中:T1~T4都是用TimeStampCalc()计算,这里所有int类型值单位均为μs。PTP应用程序将计算得出的T1包含在Follow_up消息中即刻通过ioctl()接口进入NIC Driver(网络驱动层)向下层发送出去[5,6],这样就可以避免在传输层和网络层造成的延时和抖动。从时钟在收到Follow_up消息之前的Sync消息后马上从ioctl()接口利用TimeStampCalc ()方法来记录当前的时刻T2。T3,T4同理。由此即可计算出主从时钟之间的Toffset和Tdelay来对从时钟进行调整。
4 性能测试
为了准确测量不同条件下软件实现方案的性能,本文采用简化实验模型和真实网络相结合的办法,在基本相同的实验条件下,通过改变网络流量、主机负载、拓扑结构等条件来观察实验结果的变化[7,8]。主机的配置均为:ubuntu7.04操作系统,P4 1.6 GHz CPU,1 GB内存。所有的实验数据均由软件输出结果,Matlab绘图。
4.1 理想环境
首先通过组建单独的小型局域网来模拟理想网络条件,因为局域网未与外网相连,主机之间仅靠路由器通信,可以较好的排除网络链路不对称和网络流量、拓扑、突发随机事件等因素对实验结果的影响。实验方法是:两台主机上电启动后,指定一台作为主时钟,另一台为从时钟;调整两台主机的时间秒数为一致,原因是可以更直观和清晰的测算微秒级时钟偏移,防止初始基准时间差距过大导致实验结果难以观测。
通过图2可以看到,如果不对从时钟进行调整,主从时钟的偏移呈类似线性增长趋势,主要原因就是主从时钟的频率不一致,随着时间流逝,误差逐渐积累,这里的Toffset>0表明从时钟要快于主时钟,需要降低从时钟的频率。由于对时钟的本地时间进行直接修改会造成系统错误,时钟的调整往往是利用锁相环机制对频率进行渐进的调整[9,10],频率误差的消除会使偏移逐步的收敛,而收敛的速度也一定程度体现了同步的性能,如图3所示,收敛后的偏移保持在[-2 μs,12 μs]区间内。
4.2 高网络流量和高系统负载
在之前实验的基础上,主时钟开始向从时钟发送一个大小约为2 GB的文件,此时传输速率约为30 Mb/s,相比理想网络,主从时钟的延时略有增加,主要是路由器转发报文引入的,但网络流量的增加对偏移Toffset的影响并不大,如图4前半段所示。
当单个文件发送完后,主时钟开始向从时钟发送一个包含几千个文件的文件夹,同时加大从时钟的系统负载,利用死循环程序使CPU的负载达到100%,此时的延时急剧增加,偏移也发生剧烈抖动,原因是由于传输的文件过多,路由器的吞吐能力下降严重,从时钟的高系统负载对时间戳的标记影响严重,CPU响应软件中断的能力急剧下降,计算Toffset发生错误的概率急剧增加,同步功能已基本不可用,不过这里是短时间利用比较极端的条件,由此可见软件实现对系统负载的增加比较敏感。实验结果如图4后半段所示。
4.3 真实网络
经过由局域网模拟的理想网络,条件转至真实校园网环境下,有A,B两个从时钟同时与主时钟通信,从时钟A未进行调整,总体上偏移Toffset呈增长趋势;从时钟B在调整后偏移Toffset保持在10 μs左右,但Toffset的收敛速度要略慢于理想网络。如图5所示,即使是软件生成的时间戳,时钟同步的效果也十分明显。
在前文提到了利用CPU的TSC计时补偿函数调用产生的误差,如图6所示,同样是调整后的时钟,没有进行补偿的时钟Toffset保持在50 μs左右,而且抖动十分厉害;补偿后的时钟Toffset可以保持在10 μs左右,抖动也要小得多,由此可见计时补偿对时钟同步的精度提升十分明显,是时钟软件同步不缺忽略的。
根据以上的实验结果有结论:
相比未调整过的时钟,同步后的时钟对偏移的改善作用明显;对函数调用的误差补偿在同步精度的改善上效果明显;不同于已有的研究成果,本文对时钟同步最为关键的计时、网络驱动层时间戳标记和软件实现的误差抑制都给出了具体的解决方法。总体而言,对于距离不远、网络拓扑相对简单的以太网,同步精度可以保持在10 μs级,完全可以满足大部分的同步精度需求。
5 结 语
IEEE 1588虽然是国际标准,但目前还没有应用比较普及的解决方案。在不需要额外硬件支持下提出一种基于软件的解决方案,可以使同步精度保持在10 μs级,虽然软件实现无法完全做到实时同步,但在网络时钟同步要求越来越高的大前提下,低成本,高精度,快速部署是未来网络时钟同步的主流发展方向。本文在IEEE 1588核心原理的实现和误差的抑制上都有一定的参考意义和实用价值。
参考文献
[1]IEEE.Std 1588-2008 IEEE standard for a prescision clocksynchronization protocol for networked measurement andcontrol systems[S].USA:IEEE Instrumentation andMeasurement Society,2008.
[2]田宏安,赵建.基于IEEE 1588 LXI仪器系统时钟同步的分析和研究[J].仪表技术,2009(3):4-6,9.
[3]RIDOUX Julien,VEITCH Darry.The cost of variability[C]//2008 ISPCS.Ann Arbor,MI:[s.n.],2008:29-36.
[4]BROOMHEAD Ti mothy,RIDOUX Julien,VEITCH Dar-ry.Counter availability and characteristics for feed-forwardbased synchronization[C]//2009 ISPCS.Brescia:[s.n.],2009:1-6.
[5]CORRELL Kendall,BARENDT Nick.Design considera-tions for software only i mplementations of the IEEE 1588prescision ti me protocol[C]//Conference on IEEE 1588Standard for PCSPNMCS.[S.l.]:VXI Technology Inc.,2006:11-15.
[6]MACHIZAWA Akihiko,I WAWMA Tsukasa,TORIYA-MA Hiroshi.software-only i mplementations of slave clockswith sub-microsecond accuracy[C]//2008 ISPCS.Ann Ar-bor,MI:[s.n.],2008:17-22.
[7]于会游,周春晖,许希斌.分组通信网络时钟同步研究及性能仿真[J].计算机仿真,2009(5):173-178.
[9]郭凯.IEEE 1588在电子式互感器中的同步研究[D].北京:华北电力大学,2009.
[8]GIORGI G,NARDUZZI C.Modeling and si mulation analy-sis of PTP clock servo[C]//2007 ISPCS.Vienna:IEEE,2007:155-161.
IEEE1588协议
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。


