IEEE1588时钟同步实现方式研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IEEE1588时钟同步实现方式研究
A Research on Implementation of IEEE 1588
王芸 杨彬
(中环天仪股份有限公司 300384 )
摘要:IEEE1588(用于网络测量和控制系统的精密时钟同步协议)在有时间同步要求的实时以太网工业应用中,以其成本低,精度高在短短几年内获得广泛应用。本文从技术开发的实用角度对此协议做了深入、直观地阐述和详解,涵盖了研发过程中的主要技术难点和重点,并对可能出现的应用误区做了分析。
关键词:IEEE1588 时钟同步时间戳
1 引言
随着工业以太网技术在自动控制领域的应用愈加广泛的应用,以太网数据传输对实时性的要求也越来越严格,在兼顾精度和低成本方面,已有的时间同步技术如NTP/SNTP、G PS等在实时以太网中不具备实用优势。正是在此背景下,IEEE1588(简称PTP, Precision Ti me Protocol)以标准形式发布出来,其低成本、高精度特点使得该技术在短短几年内便在自动化领域获得了广泛的推广和应用。。它最初由Agilent Laboratories(安捷伦实验室)开发用于测量和控制系统,后来得到IEEE的赞助,并于2002年11月得到IEEE批准,目前最新版本是2008年7月发布的PTP协议V2。
2 PTP时钟同步机理
2.1系统结构
图1 主从时钟系统拓扑结构图
PTP系统结构模型如图1所示,它由一个或多个PTP子域组成,每个子域包括一个或多个彼此通信的时钟。按工作原理可以分为:普通时钟和边界时钟。区别是普通时钟只有一个PTP端口,而边界时钟包括多个PTP端口。在网络中,每一个PTP时钟都有可能处于下面两种状态:从时钟(Slave Clock)、主时钟(Master Clock),处于主时钟状态的设备被认为是最精确时钟,它将同步从时钟的时间,但在同一个通信子域内只能存在一个主时钟。时钟的具体状态由最佳主时钟算法决定。
在系统网络中终端设备(也被称为节点)均为普通时钟,而边界时钟(具备PTP 功能的路由器,交换机等网络设备)在网络中起到将多个PTP 子域联接的作用。
2.2 PTP 时间同步方式
PTP 协议实现思路为:在PTP 网络系统中各个时钟设备通过周期性交换带有时间信息的报文来进行主从时钟间偏差(Offset)和网络时延(Delay)的计算,进而纠正偏差,补偿时延,实现时间同步。
如图2所示[1],主、从时钟之间存在四种类型的报文交换。报文交换期间产生四个发送或接收时刻值,此动作称之为打时间戳事件,这四个数值用来计算偏差和时延以同步从时钟。在测量过程中,假设传输介质是对称均匀的。
图2 PTP 报文交换
从图中可以看出t1、t2、t3、t4这四个时间戳值来自发送和接收Sync 和Delay_Req 报文的时刻。Follow_up 和Delay_Resp 报文中传输的是前一时刻主时钟打时间戳的数值,而不是发送对应报文时刻的时间值。偏差、时延和时间戳数值关系如下:
Delay+Offset=t2-t1
Delay-Offset=t4-t3
Delay=(( t2-t1)+( t4-t3))/2
Offset=(( t2-t1)-+( t4-t3))/2
3 PTP 主要开发内容概要
3.1 时钟同步实现方案选择
标准以太网
软件IEEE1588方案NTP
PTP 标准MAC
标准PHY
硬件辅助IEEE1588PTP TCP/IP/UDP
TCP/IP/UDP 标准MAC 定制FPGA或者微控制器专用PHY芯片带有硬件PTP时间戳功能的专用PHY芯片+时钟+GPIO 人工控制过程控制动作控制精密控制
100μs-10μs 100ns-50ns 100ms 5ns
图3 时钟同步实现方案的选择
网络时间协议(NTP)已是以太网时间同步的传统方式,它允许时间同步达到100毫秒。从图3可以看出,采用PTP可以实现更严格的控制。其中单纯采用软件PTP(典型特征为软件时间戳)精度为微秒级,而采用硬件辅助的PTP方案(典型特征为硬件时间戳)可以实现纳秒级的时间同步性能。
3.2精密时钟源的选择及设计
PTP时间戳数值的最小单位是纳秒,因此如何获得计时单位至少为1ns的高精度、高稳定性定时器并且在其运行时不过多消耗系统资源也成为PTP开发要考虑的主要问题之一。
定时器的选择和PTP协议实际开发所用的操作系统有关,如果操作系统本身已自带高精度系统计时功能,无需额外开发,否则就需要考虑用纯软件或软硬件结合方案的方式来获得高精度时钟源。
3.3 PTP最佳主时钟算法
最佳主时钟算法(Best Master Clock Algorithm)。它由两部分算法组成:数据集比较算法和状态定断算法[2]。前者的作用是根据同步报文不同的数据集,把合格的同步报文都进行比较以筛选出可用最佳报文,确定最佳主时钟。后者在确定所属PTP子域主时钟后,根据不同数据集的信息进一步计算出每个时钟各个PTP端口的具体推荐状态(共八种):初始化、故障、禁止、监听、主时钟、待机、从时钟、未校正等,根据这些状态本地时钟去做出对应的反应。
该算法运行在PTP子域中时钟的每个PTP端口,根据运算分析结果,动态调整各个时钟和端口的状态,所以在当前主时钟故障或性能下降时,系统能够自动选择其他更合适的时钟来代替它作为主时钟。
3.4 从时钟伺服算法
作为从时钟,它需要收集上文中提到的四个时间戳数值来进行一系列运算,进而使从时钟每隔一定时间纠正本地时钟时间,保持与主时钟时间同步。具体涉及到偏差和时延的计算,从时钟时间的纠正和更新。
3.5 PTP相关报文的传递
PTP共定义了五种类型的报文:Sync、Fowllow_up、Delay_Req、Delay_Resp和management。其中Sync和Delay_Req称为事件报文(event messages),事件报文在发送和接收时都产生了计时事件,获取了本地时钟时间戳;其余三种报文被称为普通报文(general messages),Fowllow_up和Delay_Resp用来传递事件报文传递过程中的时间戳信息,management报文只是用来传递一些管理单个时钟和系统所有时钟的信息[3]。需要注意的是事件报文和普通报文都是以多播模式传送。
PTP报文在发送时根据PTP端口具体状态来决定端口发送的报文类型或进一步执行的动作。比如:如果是主时钟,发送的是Sync、Follow_up或Delay_Resp报文中的一种而且对于其事件报文要在发送时打时间戳,从时钟发送报文只能是Delay_Req,并且也需要打时间戳动作;对于接收报文动作,本地时钟除了判断依据端口状态外,事件报文类型存在打接收时间戳事件。从从时钟角度来说,从时钟接收到来自主时钟Sync、Fowllow_up 两种后进行本地时钟偏差纠正,收到Delay_Resp报文后即进行网络时延补偿实现与主时钟时间同步。
4 PTP时钟同步精度影响因素
PTP时钟同步的同步结果受到多方面因素的影响,在实际的设计中需要在以下几方面提起注意:
时间戳位置:如图4所示,在所有时钟同步的相关协议中,时间戳标记出现在以下3个位置:应用层、驱动层或MAC与PHY之间。通过报文的传输过程分析,可以看出,时