• 头条嵌入式IEEE 1588精确时钟同步实现
    2021-09-01 作者:周峰 刘迎澍 等  |  来源:《电气技术》  |  点击率:
    分享到:
    导语作者针对分布式控制系统对于时钟同步的要求,设计了基于硬件辅助标记时间戳的方式实现IEEE 1588精确时钟同步协议的嵌入式以太网通信软硬件系统,重点介绍了时钟同步模块的软硬件架构。在平台测试中,系统主从时钟模块实现了高精度时钟同步,并分析比对了不同同步报文发送周期下的时钟同步测试结果。

    精确的时间同步技术在控制系统中占有重要地位,随着嵌入式控制系统应用范围的不断增长和应用规模的不断扩大,同步系统内各分散节点的时钟同步变得越来越重要。IEEE 1588协议的发展和成熟提供了一种低成本高精度的网络时钟同步解决方案。

    它利用以太网络使终端设备同步,仅靠软件实现就可达到亚微秒级精度,在硬件支持下可达到纳秒级。同时,IEEE 1588协议对资源要求非常低,易于高中低端设备之间的兼容。因此,嵌入式IEEE 1588精确时钟同步技术也成为了实时控制系统非常关心的研究课题。

    本文在IEEE 1588协议研究的基础上,通过软件和硬件相结合的途径,并采用硬件辅助实现IEEE 1588标准的精确时间同步协议(PTP)方法,设计了嵌入式IEEE 1588时钟同步软硬件系统,在平台测试中取得了高精度的时钟同步,测试结果能很好的满足工业控制、通信、电力等行业对时钟同步精度的要求。

    IEEE 1588时钟同步原理

    IEEE 1588时钟同步系统工作于主从模式,借助时钟同步报文完成时钟校准。主时钟周期性发送同步报文,从时钟根据接收到的报文的时间戳信息,计算出主从线路报文传输的时间延迟和主从时钟的时钟偏移,并相应地调整本地时间,使从时钟保持与主时钟一致的时间基准。IEEE 1588时钟同步过程由时钟偏移测量和网络延迟测量2个阶段组成。

    如图1所示,在时钟偏移测量阶段,主时钟相继发送同步报文和跟随报文给从时钟,从时钟接收报文并记录时间戳。在网络延迟测量阶段,从时钟发送延时请求报文和接收相应的响应报文,并分别记录发送和接收报文的时间戳。从时钟根据一个同步周期内所记录的四个时间戳计算出时钟偏差和网络延迟并以此修正本地时钟,系统不断重复这个过程,保持时钟同步。

    嵌入式IEEE 1588精确时钟同步实现

    图1 IEEE 1588同步原理

    IEEE 1588时钟同步协议实现

    1 时钟同步模块

    嵌入式时钟同步模块分为主控模块和网络通信模块两个部分。其硬件实物如图2所示,在该时钟同步模块中,主控模块(图2右侧)搭载了微控制器和实时时钟、串口和USB接口等;网络通信模块配置有电源模块、网口模块和必要的GPIO接口等。

    嵌入式IEEE 1588精确时钟同步实现

    图2 支持IEEE 1588协议的嵌入式控制模块

    主控模块选取提供MII接口的主控芯片STM32F107VC。以太网通信模块PHY芯片选取支持IEEE 1588精确时钟同步功能的DP83640[5,6]。该芯片内配置有高精度IEEE 1588时钟,并设有由硬件执行的时间标记功能,可在物理层为接收及发送的信息包打上时间标记。在所有的工作模式下均能确定报文收发的精确时间,将理论对时精度提高到了8ns。

    2 系统软硬件设计

    提高IEEE 1588时钟同步的精度关键在于提高时间戳的精度。如图3所示,我们可以在A、B、C三个位置标记时间戳(其中A和B处为软件标记时间戳,C处为硬件标记时间戳),而越接近物理层,时间戳的精度越高,同步系统可达到的同步精度越高。

    物理层芯片DP83640集成了能够对收发数据包并加盖时间戳的硬件(即可在C处标记时间戳),它能够准确的反映IEEE 1588报文的实际发送和接收时间,可以消除协议栈的延时和抖动,从而计算得到的报文在传输路径上的延时和主从时钟偏差也更精确。

    基于此,本实验时钟同步模块采用硬件标记时间戳的方式实现IEEE 1588协议,以GPS时钟为参考时钟源,并通过UDP/IP通信完成系统时钟同步。该时钟同步模块结构如图3所示。

    嵌入式IEEE 1588精确时钟同步实现

    图3 时钟同步模块结构

    时钟同步模块软件部分由驱动层、协议层、应用层组成,分别完成底层硬件控制、通信与同步、人机交互等功能。

    其中,驱动层分为标准驱动、以太网驱动以及PTP时钟驱动三部分;协议层分为TCP/IP协议与PTP协议两部分;应用层分为串口通信、以太网通信、实时时钟、精确时间同步等部分。

    在协议层中,嵌入式的TCP/IP协议栈采用LwIP实现,LwIP协议栈以太网信息接收采取中断响应机制,当MAC接收到网络信号之后将引发以太网中断,主控芯片进入中断函数,先跳入相关底层处理函数,再进入协议栈做相应处理;而LwIP协议栈以太网信息发送则由应用层协议通过协议栈逐层向下传递信息,至MAC层后,调用相关底层处理函数进行发送。

    在PTP实现过程中,采用本地时钟算法。时钟同步系统上电后,各模块进入主从时钟判定程序,首先确定各模块的主、从时钟工作状态,进而通过UDP收发报文,记录各报文时间戳,计算主从时钟偏差修正本地时钟。图4软件系统流程图(a、b)中列出了主从时钟模块的同步工作过程。

    嵌入式IEEE 1588精确时钟同步实现

    图4 软件系统流程图

    同步性能测试与分析

    1 基于IEEE 1588时钟同步测试平台

    基于IEEE 1588时钟同步系统测试平台如图5所示,该系统工作在主从模式,采取点对点通信,精确时钟源由GPS授时模块提供,该时间作为PTP时钟源信号提供给IEEE 1588时钟同步模块,并将该模块时钟端口配置为主时钟状态,与之相对应的时钟模块配置为从时钟状态。在平台测试中,将两个时钟同步模块的PPS输出口接至数字示波器,来比较主从时钟节点的同步误差,测量该系统时钟同步精度。

    嵌入式IEEE 1588精确时钟同步实现

    图5 基于IEEE 1588时钟同步测试平台

    2 测试结果及分析

    基于IEEE 1588时钟同步测试平台系统建立之后,需要对时钟同步系统的性能进行测试分析。本文根据同步报文发报周期取不同时间值(标准周期默认为2s),主要进行3次测试,实验同步报文发报周期分别取4s、2s、1s,对主从时钟同步模块进行IEEE 1588时钟同步测试。

    嵌入式IEEE 1588精确时钟同步实现

    图6 时钟同步测试结果

    嵌入式IEEE 1588精确时钟同步实现

    图7 测试结果对比图

    测试结果如图6所示,其中图中a、b、c分别为同步报文发报周期为4s、2s、1s时的同步误差分布图,图7为不同同步报文发送周期时的测试结果对比图,在此我们可以更直观的观测不同同步报文发送周期下的系统时钟同步误差。

    由图6、7测试结果表明:当同步报文发报周期取4s时,主从时钟节点之间IEEE 1588同步精度测试结果优于200ns;当同步报文发报周期取2s时,主从时钟节点之间IEEE 1588同步误差在100ns以内;当同步报文发报周期取1s时,主从时钟节点之间IEEE 1588同步精度能够达到50ns。

    嵌入式IEEE 1588精确时钟同步实现

    表1 不同同步报文发送周期下的时钟同步测试结果

    表1中列出了同步报文不同发送周期下的时钟同步测试结果,同步报文发送周期越短,时钟同步精度越高,但随着同步报文发送周期的减小,系统内网络流量随之增加,在实际应用中网络负担也会随之加重,在运行中可能会降低系统时钟同步性能。

    结论

    本文在对IEEE 1588精确时间同步原理进行分析的基础上,设计了嵌入式IEEE 1588时钟同步软硬件系统,并在平台测试中实现了高精度时钟同步,提高了分布式系统中各节点的同步性能,可以极好地满足了工业控制中分布式通信系统高精度同步要求,从应用成本和时钟同步精度等方面来考虑,可广泛应用于数字化变电站、智能电网、工业控制和通信等行业领域。

    (编自《电气技术》,作者为周峰、刘迎澍 等。)