APP下载

EtherCAT分布时钟同步算法的研究与优化

2022-02-06孙亚硕

仪表技术与传感器 2022年12期
关键词:主从偏移量主站

荣 锋,孙亚硕

(1.天津工业大学电子与信息工程学院,天津 300387;2.天津市光电检测技术与系统重点实验室,天津 300387)

0 引言

随着工业的发展,工业控制领域对同步控制性能提出了更高的要求。提高主从控制系统的时钟同步精度是提高同步控制精度的基础,EtherCAT在时钟同步方面与其他工业以太网的不同之处在于其支持分布时钟同步,具有分布时钟功能的EtherCAT从站设备之间可获得ns级别的时钟同步精度。因此,EtherCAT分布时钟同步技术的研究对于进一步改善工业控制系统的同步性能具有实际意义。

为了使工业控制系统获得更好更稳定的时钟同步性能,国内外的众多研究人员对EtherCAT的分布时钟同步技术进行了研究。汪雅楠等对EtherCAT 3种基本拓扑结构的时钟同步误差进行了仿真分析[1],为实际工业现场布线规则提供了理论参考,但并未对时钟同步算法及其实现过程展开详细的研究。D.Ganz等将PTCP协议引入到了EtherCAT数据帧中[2],验证了PTCP协议对提高主从站之间的同步精度的有效性。李备备等对EtherCAT分布时钟机制的同步方法进行了分析和研究[3],但是在时钟同步的过程中忽略了主站与参考从站之间的传输延时。本文针对以上研究经验和不足,从研究时钟同步误差的主要来源出发,对EtherCAT的分布时钟同步算法进行研究和优化,并搭建EtherCAT主从系统对优化后的分布时钟同步算法进行测试。其中,EtherCAT主从系统测试平台以移植了SOEM框架并搭载Xenomai实时内核的Linux系统作为主站,采用AX58100和STM32F407搭建EtherCAT从站。

1 EtherCAT原理概述

EtherCAT的OSI模型共3层:物理层、数据链路层和应用层[4]。其中,物理层使用电缆、光纤、LVDS等多种传输介质且网络拓扑结构灵活,数据链路层的功能则需要专门的从站控制器芯片来实现。在工业控制领域,EtherCAT工业设备之间通常采用主从架构,将发送控制指令的设备作为主站,执行控制指令的设备作为从站,主站与各从站之间的数据通信流程如图1所示。

图1 主从站之间的数据通信流程

主站向下发送数据帧给各个从站,并依据逻辑寻址实现主站与各个从站之间的过程数据交换。各个从站依次对主站下发的数据进行提取和处理,并将处理完的数据上传给主站,当最后一个从站处理完主站下发的数据后,将经过所有从站处理后的数据以只转发不处理的方式返回给主站。其中,为了方便判断各个从站是否正确完成了对主站所下发的数据帧的提取和插补操作,在各个从站完成对主站下发数据的处理之后,每个数据报文中的工作计数器会增加相应的数值。

2 EtherCAT分布时钟同步原理

EtherCAT工业以太网协议定义了3种同步模式。第1种是自由运行模式,在该模式下各个从站的应用程序由本身时钟进行触发;第2种是SM同步模式,各从站的应用程序由本地接收EtherCAT帧时所产生的中断信号进行触发。无论是自由运行模式还是SM同步模式均未涉及时钟同步,仅适用于对同步精度的要求较低的工业控制场景中。本文研究的是第3种同步模式,即分布时钟同步模式,在该同步模式下,各从站的本地时钟经过同步和补偿后获得一致的系统时间[5],各从站基于该系统时间产生的同步中断信号SYNC来触发本地应用程序同步运行。因此,时钟同步是实现各从站同步执行主站下发的动作指令的基础。为了实现时钟同步首先需要确定一个参考时钟,主站时钟和各从站时钟均需要与参考时钟同步。

参考时钟的选取方案有两种:以主站时钟为参考时钟;以从站或外部时钟为参考时钟。若以主站时钟为参考时钟,主从系统的时钟同步精度易受到主站抖动的影响。因此,本文选择一个携带有分布时钟的从站作为参考从站,并将其系统时钟作为系统参考时钟。主站和其他非参考从站以系统参考时钟为标准校正本地时钟,以实现主站与各从站之间的时钟同步。

主站和各从站之间产生时钟同步误差的原因主要在于以下3个方面:

(1)初始时钟偏移,由于无法保证主站和各从站可以同时上电,主站和各从站的本地初始时钟之间有一定的时间偏差;

(2)传输延时,包括主站和各从站之间的线缆传输延时、各从站内部的数据帧处理延时、数据帧转发延时[6];

(3)时钟漂移,从站时钟晶振的振动频率的微小差异导致各从站时钟速率不一致[7]。

为了获得精确的时钟同步,各从站的分布时钟同步的实现主要从上述3个方面入手,测量传输延时Tdelay(n)、计算各从站的初始时钟偏移量Toffset(n)和时钟漂移量Δt(n),最终,各从站通过图2所示的时间控制环路来完成对本地时钟漂移的补偿,以参考从站的系统时间tsys_ref为标准校正本地系统时钟tsys_local(n)。

图2 时间控制环路

在实现主从系统的时钟同步的过程中,既要实现主站系统时间和参考从站的系统时间的同步,又要实现其他从站的系统时间和参考从站的系统时间的同步[8]。如图3所示,主站与参考从站两者之间的系统时间偏差,主要来源于初始时钟偏移和两者之间的传输延时。在传统的EtherCAT分布时钟同步算法中,默认主站与参考从站之间的传输延时为0,将两者之间的系统时间偏差完全归因于初始时钟偏移,导致各从站的初始时钟偏移量的计算结果比实际值偏大,对主站与各从站之间的时间同步性能造成了影响。因此,本文对EtherCAT分布时钟同步算法进行优化,在数据报文中增加记录主站发送和接收数据帧的时间戳,测量主站与参考从站之间的传输延时,并在计算参考从站的初始时钟偏移量的过程中,考虑主站与参考从站之间的传输延时对其计算结果的影响。

图3 主站与参考从站的系统时间偏差

3 EtherCAT分布时钟同步算法

3.1 传输延时测量

本文以图4所示的一主三从的线型拓扑结构为例,通过读取主站和各从站中设置的时间戳来实现对传输延时的测量[9]。

图4 线性拓扑结构

设从站1为参考从站,主站发送数据帧的时刻为tm0、接收返回数据帧的时刻为tm1,数据帧第一个前导位到达从站n的端口0的时刻为tn0、到达从站n的端口1的时刻为tn1。则主站与参考从站之间的传输延时Tdelay(m)为

(1)

假设各从站的数据处理延时和数据转发延时一致[10],则从站2与参考从站之间的传输延时Tdelay(2)为

(2)

从站3与参考从站之间的传输延时Tdelay(3)为

(3)

根据式(2)、式(3)可推导出从站n的传输延时Tdelay(n):

Tdelay(n)=

(4)

主站根据式(4)计算出各个从站的传输延时,并将其写入各从站的传输延时寄存器0x0928~0x092B。

3.2 初始时钟偏移量计算

计算初始时钟偏移量Toffset(n)的过程,即为计算在时钟初始化阶段的主从站之间的本地时间tlocal(n)的偏差值的过程。本文为了实现主站与各从站之间的时钟同步,在初始时钟偏移量的计算过程中,以主站的当前系统时间作为参考量,并且考虑主站与参考从站之间的传输延时对计算结果的影响。其中,主站的系统时间tsys_master为主站的一个全局时间,以2000-01-01为零时刻开始计时,单位为ns。受到主站时钟抖动的影响,主站的本地时钟会产生一定的时钟偏移。因此,本文选用多次传输延时测量的平均值作为主站与参考从站之间的传输延时量。

本文通过对比数据帧到达各从站的数据处理单元的时间trec(n),来计算各从站的初始时钟偏移量。各从站中的寄存器0x0918~0x091F中记录了数据帧第一个前导位到达数据帧处理单元的本地时间,将该时间和主站与参考从站之间的传输延时均与主站发送数据帧时的系统时间作差,计算出的时间差即为参考从站的初始时钟偏移量Toffset(1):

Toffset(1)=tsys_master-trec(1)-Tdelay(m)

(5)

在式(5)中,主站每隔1 ms测量1次主站与参考从站之间的传输延时,Tdelay(m)为10 000次测量结果的平均值。非参考从站的初始时钟偏移量Toffset(n)为

Toffset(n)=trec(1)+Toffset(1)-trec(n)
=tsys_master-Tdelay(m)-trec(n)

(6)

式中n>1。

主站依据式(5)、式(6)计算各个从站的初始时钟偏移量,并将其写入各个从站的初始时钟偏移寄存器0x0920~0x0927。各从站使用本地时间tlocal(n)和Toffset(n)根据式(7)可以计算出本地系统时间tsys_local(n)。

tsys_local(n)=tlocal(n)-Toffset(n)

(7)

3.3 时钟漂移量补偿

为了实现对各从站的时钟漂移量的计算和补偿,主站发送ARMW或FRMW命令给各个从站,对各从站的本地系统时间寄存器执行读写操作[11]。参考从站执行读操作命令,将当前系统时间tsys_ref插补到数据帧中,各个非参考从站执行写操作命令,提取数据帧中存放的参考从站的系统时间tsys_ref,并将其与本地系统时间tsys_local(n)作比较,并将比较结果作为时间控制环路的输入值来计算各从站的时钟漂移量Δt(n),计算过程如公式(8)所示。

Δt(n)=tsys_local(n)-Tdelay(n)-tsys_ref(n)
=tlocal(n)-Toffset(n)-Tdelay(n)-tsys_ref(n)

(8)

支持分布时钟同步功能的从站中一般内嵌本地时钟,时钟周期为10ns。各从站的时间控制环路根据式(8)计算出的Δt(n)的正负来实现对时钟漂移的补偿,若Δt(n)=0,各从站的本地时钟每10 ns增加10个时间单位;若Δt(n)<0,说明该从站的时钟运行速率小于参考从站,则各从站的本地时钟每10 ns增加11个时间单位;若Δt(n)>0,说明该从站的时钟运行速率大于参考从站,则各从站的本地时钟每10 ns增加9个时间单位。

3.4 分布时钟同步的实现

分布时钟同步的实现过程主要通过主站读写从站寄存器来实现,在时钟初始化阶段EtherCAT主从系统的时钟同步实现的整体流程如图5所示。

首先,主站发送FPRD命令读所有从站的特征信息寄存器0x0008~0x0009和数据链路状态寄存器0x0110~0x0111,获取主站连接的所有支持分布时钟功能的从站设备及其各端口的通信状态,并根据各从站设备端口的通信状态获得网络拓扑结构。其次,主站调用依据图6的流程图创建的ec_masterpdelay()函数获得主站与参考从站之间的传输延时,并读取各从站记录数据处理单元接收数据时间的寄存器0x0918~0x091F[12],依据式(5)、式(6)分别计算参考从站和其他从站的初始时钟偏移量。之后,主站通过FPRD命令获得主站发送的数据帧到达各从站端口的时间,并依据式(4)计算各非参考从站与参考从站的传输延时[13]。最后,各从站将主站计算出的传输延时分量、初始时钟偏移分量以及各从站的本地系统时间、参考从站的系统时间作为各从站的时钟控制环路的输入值,通过内部的时钟控制环路实现对时钟漂移量的初步补偿。为了实现时钟的精确同步,可以在每个通信周期多次发送ARMW或FRMW命令,以实现对时钟漂移的动态补偿。

图6 ec_masterpdelay()函数模块流程图

4 时钟同步性能测试

4.1 测试平台的搭建

依据经过优化的EtherCAT分布时钟同步算法修改EtherCAT主站程序,搭建如图7所示的EtherCAT主从控制系统测试平台,采用线性网络拓扑结构,1个PC主站连接3个IO从站,对EtherCAT主从控制系统的时钟同步性能进行测试。

图7 测试平台

其中,选用搭载Linux系统的PC机作为EtherCAT主站,AX58100作为EtherCAT从站控制器,STM32F405RGT6芯片和外围电路作为从站微处理器[14]。在Linux系统中,需要设置任务调度机制才能强制实时性的高优先级任务优先运行,大大降低了Linux系统的实时性[15]。因此,为了达到EtherCAT主站的实时性要求,在Linux系统中移植了Xenomai实时内核对Linux系统进行实时性改造,在Xenomai/Linux系统中移植SOEM主站协议来实现EtherCAT主站的功能。

4.2 测试及结果分析

主从控制系统的时钟同步性能测试内容主要包括其他非参考从站与参考从站之间的时钟同步测试和时钟同步算法优化前后的主站与参考从站之间的时钟同步测试2个部分。本文将本地和参考从站两者之间的系统时间偏差的绝对值大小作为主从系统的时钟同步精度的衡量指标,系统时间偏差的绝对值越小,则主从系统的时钟同步精度越高,系统时间偏差等于0为时钟同步的理想状态。

支持分布时钟的从站具有记录系统时间偏差值的寄存器0x092C,该寄存器共占用4个字节,bit31为符号位。若本地系统时间大于或等于参考从站的系统时间,则符号位为0;若本地系统时间小于参考从站的系统时间,则符号位为1。因此,主站可通过发送FPRD命令读从站的寄存器0x092C,获得指定从站的系统时间偏差值。

考虑到从站之间的距离对时钟同步性能的影响,本文选择距离参考从站最远的从站3为例进行时钟同步性能测试。以1 ms为时间周期,循环发送FPRD命令读从站3的寄存器0x092C,共循环发送10 000次来测量从站3与参考从站之间的系统时间偏差,图8为从站3的时钟同步性能测试结果。

图8 从站3的系统时间偏差

由图8的测试结果可以看出,从站3的系统时间偏差值在经过500次的时钟漂移补偿后可以稳定在100 ns左右,在经过5 000次的时钟漂移补偿后,从站3的系统时间偏差甚至可以降低到50 ns以下,几乎接近于0,已经远远超过了IEEE 1588协议可以达到的时钟同步效果。

本文选择搭载Linux系统的PC机作为主站,其中没有用来记录系统时间偏差值的寄存器,因此需要编写计算主站的系统时间偏差值的函数模块,在主函数中可通过循环调用该函数实现对主站的时钟同步性能的检测。首先主站发送FPRD命令读取参考从站的本地系统时间副本,之后将其与主站当前的系统时间作差,将该时间差作为主站的系统时间偏差值。图9(a)、图9(b)分别为时钟同步算法优化前后的主站的系统时间偏差的散点分布图。

(a)传统的时钟同步算法

(b)优化后的时钟同步算法图9 主站的系统时间偏差

由测试结果可以看出,若使用传统的分布时钟同步算法,不考虑主站的传输延时,主站的系统时间偏差的绝对值一直保持在18 μs以内,10 000次测量结果的平均值为11.159 μs;若使用本文提出的经过优化的时钟同步算法,考虑主站与参考从站之间的传输延时,对各从站的初始时钟偏移量进行补偿,主站的系统时间偏差的绝对值可以降低到8 μs以内,10 000次测量结果的平均值为3.112 μs,与传统的时钟同步算法相比,主站的系统时间偏差降低了72%左右,主站与从站之间的时钟同步精度有了明显提高。

5 结束语

本文对EtherCAT的分布时钟同步原理和影响时钟同步效果的主要因素进行了研究和分析,提出了一种分布时钟同步算法的优化方法,在计算各从站初始时钟偏移量的过程中,考虑主站与参考从站之间的传输延时对各从站的初始时钟偏移量计算结果的影响,并分别从传输延时、初始时钟偏移量、时钟漂移3个方面对各从站进行了时钟补偿。基于Xenomai/Linux系统和STM32搭建了主从系统测试平台,对优化后的分布时钟同步算法进行了效果测试。测试结果说明了主站和各从站之间达到了更好的时钟同步效果,可以达到工业控制领域高精度的时钟同步需求。

猜你喜欢

主从偏移量主站
基于格网坐标转换法的矢量数据脱密方法研究
基于S7-1200 PLC的DP总线通信技术在马里古伊那水电站泄洪冲沙孔门机上的应用
变电站综合自动化系统调试新方法研究
基于AutoLISP的有轨起重机非圆轨道动态仿真
DEM辅助偏移量跟踪技术的山地冰川运动监测研究
FANUC系统PROFIBUS主从功能应用
搅拌针不同偏移量对6082-T6铝合金接头劳性能的影响
EtherCAT主站与主站通信协议的研究与实现*
多表远程集抄主站系统
基于飞行试验数据的仿真模型主从一体化检验