IEEE1588协议在合并单元中的应用与实现

2012-04-13 11:28牟龙华
电力系统及其自动化学报 2012年3期
关键词:描述符报文时钟

韩 颖,牟龙华,周 伟

(同济大学电气工程系,上海 201804)

在数字化变电站中,过程层负载大,同步精度要求高,同步误差要求控制在1μs以内。合并单元作为变电站过程层与间隔层进行通信的接口和桥梁,是过程层的主要设备,通过向各路电子式电压电流互感器发送同步转换命令,以保证各路同时进行电压电流采样。

目前大多数变电站广泛采用的是网络时间协议NTP(network time protocol)进行同步对时,该协议是一种软件时钟同步[1],精度只能达到ms级。而IEEE1588协议则是专门针对网络测控系统等工业以太网提出的精确时钟同步协议PTP(precision time protocol),它非常适合变电站内工业以太网的应用要求,加以硬件辅助就能达到亚微秒级级的同步精度,但普通的单片机由于不具备实现IEEE1588的功能或者执行精度低而无法达到这一精度要求。

本文简要阐述了IEEE1588时钟同步系统的工作原理,给出了时间戳硬件标记的方法,介绍了合并单元中应用STM32F107微处理器实现IEEE1588协议的具体过程,为满足变电站合并单元的时钟同步精度要求提供了一种可参考的途径。

1 IEEE1588时钟同步原理

1.1 IEEE1588报文类型

IEEE1588协议定义的4种同步所必须的报文类型分别是Sync报文、Delay_Req报文、Follow-up报文、Delay_Resp报文[2]。通过对IEEE1588同步算法的分析,报文传输的具体过程以及到达节点时钟的具体方式如下:

Sync报文由主时钟采用广播方式发布到网络上。报文需要两个时间戳,即从主时钟处进入物理层的时刻TM1和在从时钟节点处由物理层进入协议栈的时刻TS1。

Delay_Req报文采用单播方式由从时钟发送向本同步域内的主时钟,在从时钟发出时刻TS2和主时钟到达时刻TM2处各标记一次。

Follow-up报文也是由主时钟采用广播方式发出;而Delay_Resp报文则采用点对点方式发出,这两类报文仅起到传递时间信息的作用,本身到达时刻不重要,因此不需要对报文的到达和离开时刻标记。

综上所述,IEEE1588同步报文时间戳只需对Sync报文和Delay_Req这两类报文进行标记。

1.2 IEEE1588同步过程

PTP系统中的从时钟通过与主时钟交换上述的4种报文,从中获取时间戳,计算出与主时钟的时间偏差,根据偏差来调整自己的时间,从而达到与主时钟的时间同步[3,4]。在PTP系统中,影响各时钟同步的因素大体上有两个:一是各时钟的性能所引起的时间偏差,二是由于各种报文在网络中传输所引起的网络延迟。因此,PTP系统的同步过程可分为两个阶段:偏差修正阶段和网络延迟测量阶段。整个同步原理如图1所示。

图1 IEEE1588时钟同步原理Fig.1 Synchronization principle of IEEE1588

第一阶段:修正主从时钟之间的时间偏差,称为偏差修正阶段。在修正过程中,主时钟按照所设定的时间间隔周期性地发出同步报文Sync,在报文中包含了报文发出的估计时间,从时钟记录收到同步报文的时间TS1,经过一定时间的延时,主时钟随后发出跟随报文Follow_up,在报文中有Sync发出的精确时间TM1。这样,从时钟使用Follow_up报文中的Sync报文实际发出时间和接收时间,可以计算出从时钟与主时钟之间的偏移T_offset,根据偏移量来修正时间偏差[5,6]。

式中,T_delay为主时钟与从时钟之间的传输延迟时间,它将在下面的延迟测量阶段测出,所以在这里是未知的。由于报文传输网络存在着一定的延迟,因此还应进行网络延迟的测量。

第二阶段:网络延迟测量阶段。从时钟发出延迟请求报文Delay_Req,并记录发送时间TS2,当Delay_Req到达主时钟时,主时钟记录其到达时间TM2,再用报文Delay_Resp将TM2发送给从时钟。这样,从时钟就得到了4个准确的时间点:TM1、TS1、TM2、TS2。由下列方程可以非常准确地计算出网络延时。

主时钟传输到从时钟的延时:

从时钟传输到主时钟的延时:

假设传输介质是对称均匀的:

则由上面的算式可得

根据式(2)和式(3)计算出的值,从时钟可以调整自己的时间,从而与主时钟同步[7]。

2 时间戳标记

2.1 时间戳数据帧标记位置

根据IEEE1588协议,同步报文到达或离开节点的时刻须在介质访问控制MAC(media access control)帧开始标志字节的最后一位结束,MAC目的地址第一个字节的第一位到来之时进行标记,如图2所示。MAC帧由前导码、帧开始标志、目的地址、源地址、数据长度、数据、帧填充、帧校验8个部分组成。其中帧开始标志为一个字节,其值为10101011B。同步报文检测和时间标记步骤如下所述。

步骤1 当有数据包到由物理层进入介质独立端口MII(media independent interface)层,在数据包起始标志最后一位结束时,时间戳标记模块将本地时钟时间信息进行记录[8,9]。

步骤2 若数据包MAC目的地址是广播地址,继续检测该数据包的端口UDP(user data protocol),如果端口值号为319则说明是Sync报文。

步骤3 若该数据包的MAC目的地址非广播地址,检测该数据包的MAC目的地址和IP目的地址是否为本节点地址,若是UDP并且端口号为319,则确定为Delay_Req报文。

步骤4 如果上述条件中出现不符合的情况,模块将刚才记录的时钟时刻丢弃并重置,等待下一次数据包的到来。

图2 报文中时间标记节点Fig.2 Time stamp nodes of message

2.2 具有硬件支持的标记方法

IEEE802协议标准系列中,数据链路层包括逻辑链路控制LLC(logical link control)子层和MAC子层。其中MAC单独作为一个子层,完成数据帧的封装、解封、发送和接收功能。MII称为介质独立接口,也可称为介质无关接口,它是IEEE-802.3定义的以太网行业标准[10]。它包括一个数据接口,以及一个MAC和PHY物理层的管理接口。数据接口包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。MII数据接口总共需要16个信号。管理接口是个双信号接口:一个是时钟信号MDC(management data clock),另一个是数据信号MDIO(management data I/O)。通过管理接口,上层能监视和控制PHY。

由于辨别所收到的数据包是否为需要打时标的IEEE1588时钟同步包还需要一段时间处理,如果在确认了是时钟同步包后再进行打时标,整个处理过程将会引入一些额外的延时抖动[11]。

本文选择在靠近物理层的MII层上采用硬件监听并分析MII接口上IEEE1588报文的接收和发送,并打上时间标记。这样在时钟节点处的延时主要为物理层延时,而物理层的延时抖动很小,这在很大程度上提高了同步精度[12]。在运用MII层打时标方法后,IEEE1588的时钟同步过程可以进一步用图3来描述。

图3 运用硬件打时标的时间同步过程Fig.3 Time synchronization based on hardware time stamp

采用在MII层打时间戳的方法,IEEE1588的时间标记可以完全避开操作系统和协议栈的处理延迟的影响。

从图3中,能更直观地看出在消除操作系统与协议栈延时抖动方面IEEE1588协议比NTP协议更有优势。通常NTP的时标是在应用层得出并在应用层处理的,而IEEE1588的发送或接收时标都是在MII层得到的,很显然,操作系统、夹在应用层和MII层中间的协议栈会对NTP时标的精度造成很大影响,而IEEE1588的时标则与操作系统、协议栈毫无关系[13]。

3 IEEE1588对时的软硬件实现

3.1 基于STM32F107的硬件实现

由于IEEE1588的实现需要在MAC层与物理层之间的MII接口进行时间标记,而普通单片机不具备这一功能,本文选用基于高级RISC处理器ARM(advanced RISC machines)系列的STM32F107来实现同步。其小型化、低功耗、高可靠性、执行速度达纳秒级等特点,能很好地满足IEEE1588同步协议所要求的精度。合并单元内同步处理流程如图4所示。

STM32F107支持IEEE1588协议且具有以太网通信模块,执行精度能够达到纳秒级。经过同步对时,STM32F107产生的同步秒脉冲与本地晶振进行锁相倍频处理后向12路电子式电压电流互感器发送高速同步采样脉冲,采样脉冲与同步秒脉冲之间的误差只有几十个纳秒。

图4 IEEE1588同步信号处理流程Fig.4 Process of synchronized signal of IEEE1588

STM32F107的以太网模块包括一个符合802.3协议的MAC介质访问控制器、专用的直接存储器存取DMA(direct memory access)和独立于介质的接口MII,该接口作为MAC与外接PHY进行通信的桥梁。DMA具有独立的发送和接收控制器,还有1个控制和状态寄存器空间。DMA的设计是以数据包为单位传输,如以太网的帧传输。设置DMA控制器,可以在发送完一个帧、接收到一个帧或者其他正常/错误操作的时候产生中断。DMA和CPU之间的通讯通过两种数据结构实现:控制和状态寄存器、描述符列表和数据缓存。

DMA把接收到的帧数据传送到STM32F107的接收缓存,把STM32F107发送缓存里的数据发送出去。在STM32F107的存储器里,描述符是以缓存指针的形式存放。有2个描述符队列,一个用作发送,另一个用作接收。

DMA控制器通过AHB(advanced high-performance bus)主和从接口,分别访问MAC控制器和存储器。AHB主接口用于控制数据传输,AHB从接口用于访问控制和状态寄存器区域。DMA控制器与PHY物理层收发器之间进行通信如图5所示。

图5 DMA与PHY进行通信的硬件接口框图Fig.5 Hardware interfaces of communication between DMA and PHY

PTP数据帧的传输必须以前导符开始,前导符是MDIO线上连续的32个逻辑‘1’信号,和对应MDC线上的32个时钟信号,这部分信号用于和PHY设备建立同步。帧起始符SFD(start frame delimiter)定义为‘01’,也就是MDIO线从逻辑‘1’降到‘0’再回到‘1’,以标记传输的开始。

3.2 带1588时间戳的DMA描述符发送接收方式

利用PTP输入基准时钟HCLK来更新64位PTP时间和记录时间戳。当STM32F107使能了IEEE1588时间戳功能时,CPU建立好报文的帧数据后,DMA发送控制器负责把数据从系统存储器转送至发送缓冲区FIFO(first input first output),然后DMA建立发送描述符将数据发送出去。当帧的帧首符SFD从MII输出的时候,MAC控制器会记录下该帧的时间戳,然后再存放到发送描述符里返回给应用程序。而对于接收到的帧数据,MAC控制器会在MII端记录接收到帧的时间戳,DMA接收控制器把该时间戳写入接收描述符,发送到接收缓冲区FIFO。

从节点CPU经过分析确认后利用自己记录的Delay_Req报文的发送时间戳、解析的包含在Delay_Resp报文中的Delay_Req报文接收时间戳,以及最近获得的Sync报文发送时间戳和接收时间戳共4个时间戳计算网络传输延迟,并对计算结果进行滤波。DMA控制器用于发送数据的发送描述符(包含4个32位字TDES0、TDES1、TDES2、TDES3),结构如图6所示。

图6 带IEEE1588时间戳的发送DMA描述符Fig.6 Transmittal DMA descriptor with IEEE1588 timestamps

其中TDES0用于存放发送时间戳的控制和状态,当TTSE位置‘1’时,描述符对应的帧会打开IEEE1588硬件时间戳功能。而DMA会用相应时间戳的值更新TDES2和TDES3,其中TDES2为时间戳的低32位,TDES3为时间戳的高32位。接收描述符也是相同的方式,其描述符具体结构如图7,包含4个32位字RDES0、RDES1、RDES2、RDES3。

3.3 软件实现流程

主时钟每隔两秒进行一次时钟同步。首先进行系统初始化,启动发送DMA,打开IEEE1588时间戳功能。软件建立好包含报文的以太网帧数据的缓存以后,建立发送描述符;设置DMA进入运行模式,若描述符里的地址指针所指向的是PTP帧,则DMA从描述符中解析出数据缓存地址并发送出数据,否则继续读取下一个描述符。MAC控制器记录时间戳的值并写入对应的发送描述符,启动DMA发送中断,返回给应用程序,软件流程如图8所示。DMA接收流程同发送流程类似。

图7 带IEEE1588时间戳的接收DMA描述符Fig.7 Receival DMA descriptor with IEEE1588 timestamps

图8 软件流程Fig.8 Flow chart of software

返回应用程序的时间戳经软件建立好报文数据后,在PTP通讯路径中进行传输,完成同步对时。

3.4 性能测试

本文提出的方案经过仿真验证后,在实验室对其性能进行了测试,在图9所示的系统中引入一个嵌入式计算机作为测试设备,为保证网络通信的确定性,测试设备参与时钟同步但不影响测试结果。该系统的主从时钟均是基于STM32F107微处理器,采用STM32F107硬件时间戳标记的方法,直接读取硬件定时器设置时钟刻度。

图9 IEEE1588测试网络结构Fig.9 Structure of IEEE1588 test network

在系统运行周期的开始,测试设备采用广播方式发送测试请求报文:TEST_REQ_MSG,系统中包括主从时钟在内的其他设备接收到测试请求报文后,记录接收测试请求报文的当前时间,并在同一周期内向上位机发送测试响应报文:TEST_RESP_MSG,上位机通过比较主从时钟设备的接收时间戳,比较出系统时钟同步的效果。测试结果如表1所示。

表1 时钟同步测试结果Tab.1 Test results of time synchronization

本性能测试实验的测试周期为5 ms,测试进行了12 h,测试结果表明时钟同步的精度可以达到4μs以内,说明采用IEEE1588协议对时能够满足数字化变电站内对时钟同步精度的需求。

4 结语

目前数字化变电站尤其是过程层设备对时间同步的精度要求越来越高,而传统的全球定位系统GPS(global positioning system)同步以及NTP协议的对时精度只能达到ms级,无法满足μs秒级的精度要求。本文介绍了IEEE1588所定义的PTP精确网络对时协议,在分析IEEE1588同步原理的基础上,给出了硬件打时间戳的实现方式,并重点结合STM32F107微处理器的优势阐述了运用STM32F107实现时间戳标记的过程,最后在实验室对该方案进行了性能测试,为IEEE1588协议在过程层合并单元中的实现提供了一种新的应用方法。

[1] 曹团结,尹项根,张哲,等(Cao Tuanjie,Yin Xianggen,Zhang Zhe,et al).电子式互感器数据同步的研究(Discussion on data synchronization of electronic instrument transformers)[J].电力系统及其自动化学报(Proceedings of the CSU-EPSA),2007,19(2):108-113.

[2] 庄玉飞,黄琦,井实,等(Zhuang Yufei,Huang Qi,Jing Shi,et al).基于GPS和IEEE1588协议的时钟同步装置的研制(Development of a clock synchronization device based on GPS and IEEE1588 protocol)[J].电力系统保护与控制(Power System Protection and Control),2011,39(13):111-115,125.

[3] 汪祺航,吴在军,赵上林,等(Wang Qihang,Wu Zaijun,Zhao Shanglin,et al).IEEE1588时钟同步技术在数字化变电站中的应用(Application of IEEE1588 time synchronization in digital substation)[J].电力系统保护与控制(Power System Protection and Control),2010,38(19):137-141,169.

[4] 徐焜耀,范昭勇,赵蔚娟,等(Xu Kunyao,Fan Zhaoyong,Zhao Weijuan,et al).IEC61850标准下采样值传输的应用(Application of sampled value transmission based on IEC61850)[J].电力系统及其自动化学报(Proceedings of the CSU-EPSA),2009,21(6):107-111.

[5] 赵上林,胡敏强,窦晓波,等(Zhao Shanglin,Hu Minqiang,Dou Xiaobo,et al).基于IEEE1588的数字化变电站时钟同步技术研究(Research of time synchronization in digital substation based on IEEE 1588)[J].电网技术(Power System Technology),2008,32(21):97-102.

[6] 王永辉,姬希军,张宝灿,等(Wang Yonghui,Ji Xijun,Zhang Baocan,et al).变电站自动化系统GPS对时技术及应用(Technology and application of GPS time synchronization in substation automation system)[J].自动化应用(Automation Application),2010,(3):46-47,51.

[7] 刘孝先,曾清,邹晓莉,等(Liu Xiaoxian,Zeng Qing,Zou Xiaoli,et al).电子式互感器的应用(Application of electronic transformer)[J].电力系统及其自动化学报(Proceedings of the CSU-EPSA),2010,22(1):133-137.

[8] 王立辉,许扬,陆于平,等(Wang Lihui,Xu Yang,Lu Yuping,et al).数字化变电站过程层采样值时间同步性分析及应用(Synchronized sampling of process layer in digital substation)[J].电力自动化设备(E-lectric Power Automation Equipment),2010,30(8):37-40,44.

[9] 鄢志平,聂一雄,邓忠华(Yan Zhiping,Nie Yixiong,Deng Zhonghua).基于IEC 61850的合并单元与二次设备通信研究(Research on communication between merging unit and secondary devices based on standard IEC 61850)[J].高压电器(High Voltage Apparatus),2009,45(2):27-30.

[10]殷志良,刘万顺,杨奇逊,等(Yin Zhiliang,Liu Wanshun,Yang Qixun,et al).基于IEEE 1588实现变电站过程总线采样值同步新技术(A new IEEE1588 based technology for realization the sampled values synchronization on the substation process bus)[J].电力系统自动化(Automation of Electric Powern Systems),2005,29(13):60-63.

[11]张洪源(Zhang Hongyuan).基于IEEE1588的数字化变电站时钟同步技术的应用研究(Application Research on the Technology of Clock Synchronization in Digital Substation Based on IEEE1588)[D].成都:西南交通大学电气工程(Chengdu:School of Electrical Engineering,Southwest Jiaotong University),2010.

[12]张振,许扬,陆于平,等(Zhang Zhen,Xu Yang,Lu Yuping,et al).IEEE1588协议在分布式系统保护信息传输中应用(Application of IEEE1588 protocol in information transmission of distributed protection system)[J].电力自动化设备(Electric Power Automation Equipment),2009,29(12):83-87,97.

[13]David Rosselot.IEEE1588 boundary clock and transparent clock implementation using the DP83640[EB/OL].http://www.ti.com/lit/an/snla104/snla104.pdf,2008.

猜你喜欢
描述符报文时钟
基于J1939 协议多包报文的时序研究及应用
基于结构信息的异源遥感图像局部特征描述符研究
别样的“时钟”
古代的时钟
CTCS-2级报文数据管理需求分析和实现
基于AKAZE的BOLD掩码描述符的匹配算法的研究
浅析反驳类报文要点
Linux单线程并发服务器探索
利用CNN的无人机遥感影像特征描述符学习
有趣的时钟