2. EtherCAT分布式时钟同步原理精讲

EtherCAT 的分布式时钟(Distributed Clocks,DC)机制,是它能够实现微秒级甚至亚微秒级同步精度的核心。要真正掌握 DC 调优,必须先理解系统里到底有哪些"时间"、它们之间如何对齐、误差从哪里来、又靠什么机制被持续修正。本节围绕参考时钟、从时钟、系统时间、偏移与漂移、传播延迟补偿、漂移补偿六个关键概念展开。

一、参考时钟与从时钟:谁定义"标准时间"

在一个 EtherCAT 网段中,DC 机制会指定某一个支持 DC 的从站作为参考时钟(Reference Clock),通常选择网络中第一个具备 DC 能力的从站,也可以由主站通过寄存器配置指定。参考时钟的本地时钟就是整个网段的"时间基准",它对外提供系统时间的源头。

其余支持 DC 的从站称为从时钟(Slave Clock)。每个从时钟都有自己的本地晶振和本地计时器,它们并不天然与参考时钟一致,而是通过 DC 同步过程被"拉"到参考时钟的时间轴上。不支持 DC 的从站则不参与同步,其本地时间与系统时间无关。

需要特别强调:系统时间(System Time)并不是主站 PC 的墙上时间,而是以参考时钟为基准、在整个网段内被统一维护的一条时间轴。所有从站和主站看到的系统时间应当一致,单位通常是纳秒(ns),以 64 位表示。主站通过读取参考时钟的系统时间,再结合自身处理,把系统时间分发给应用层,用于运动控制中的插补、采样和输出触发。

EtherCAT 分布式时钟同步原理 主站 Master 读取系统时间 / 下发配置 参考时钟从站 本地时钟 = 系统时间基准 从时钟 1 本地时钟 + 偏移/漂移修正 从时钟 2 本地时钟 + 偏移/漂移修正 配置/读取 ARMW/FRMW ARMW/FRMW 系统时间轴 (ns) t_ref t_local1 偏移 Offset₁ t_local2 偏移 Offset₂ 传播延迟补偿 (Propagation Delay) 主站 参考时钟 从时钟1 从时钟2 T_prop1 T_prop2 T_prop3 漂移补偿 (Drift Compensation) 晶振频率偏差 → 周期性测量 → 调整本地时钟速率,使斜率与参考时钟一致 参考时钟 从时钟 偏移 漂移修正

二、偏移与漂移:两种不同性质的误差

从时钟与参考时钟之间的时间差,可以分解为两个成分:偏移(Offset)和漂移(Drift)。

偏移是某一时刻从时钟本地时间与系统时间之间的瞬时差值,它是一个"静态"量,反映的是"现在差多少"。例如从时钟本地时间为 1000000 ns,系统时间为 999500 ns,则偏移为 +500 ns。偏移可以通过一次性写入修正值来消除。

漂移则是由晶振频率偏差引起的、随时间累积的误差。两个标称 25 MHz 的晶振,实际频率可能相差 ±50 ppm,这意味着每秒钟会产生 50 μs 的时间偏差。漂移是一个"动态"量,反映的是"时间差变化得有多快"。仅修正偏移而不处理漂移,同步会在短时间内再次失准。

因此,DC 同步必须同时解决两件事:把偏移拉回零,以及让本地时钟的速率与参考时钟一致,使偏移不再持续增长。

三、传播延迟补偿:把"线缆时间"算清楚

EtherCAT 报文在物理线缆和从站内部转发都需要时间。如果从时钟直接采用收到报文时的本地时间作为系统时间,就会把传播延迟错误地计入,导致同步偏差。传播延迟补偿的目的,就是测量并扣除这段延迟。

DC 使用往返测量法:主站或参考时钟发送一个测量报文,记录发送时刻 t1;报文经过各从站时,从站记录到达时刻;报文返回时再记录时刻。通过测量报文在从站端口间的往返时间,可以计算出每个从站到参考时钟的传播延迟。

具体来说,对于每个从站,DC 会测量其两个端口之间的转发延迟,以及线缆延迟。最终每个从站获得一个传播延迟补偿值,写入其 DC 相关寄存器。从站在计算系统时间时,会把本地时间加上(或减去)这个补偿值,从而得到与参考时钟对齐的时间。

实际工程中,传播延迟通常在几十纳秒到几百纳秒量级,取决于线缆长度、PHY 芯片和从站内部转发逻辑。例如 100 米标准以太网线缆的传播延迟约为 500 ns 左右,而一个从站内部转发延迟可能只有 100~200 ns。这些值在 DC 初始化阶段被自动测量,不需要人工逐站填写。

四、漂移补偿:让时间轴"斜率"一致

传播延迟补偿解决的是"起点对齐",漂移补偿解决的是"速率对齐"。

DC 的漂移补偿机制基于周期性测量。参考时钟会周期性地发送包含系统时间的报文(如 ARMW 或 FRMW 命令),从时钟在收到报文时,将自己的本地时间与报文中的系统时间进行比较,得到当前偏移。如果偏移随时间线性增大,说明本地时钟比参考时钟快;反之则慢。

从站内部有一个漂移补偿控制器,它会根据多次测量的偏移变化率,计算出一个频率修正系数,然后调整本地时钟的计数速率。这个调整不是"跳变",而是平滑地改变本地时钟的"走速",使其斜率与参考时钟一致。这样,偏移被逐步收敛到零附近,并保持在很小的范围内波动。

漂移补偿的收敛速度和稳定性取决于几个参数:测量周期、控制器增益、以及本地晶振的短期稳定性。测量周期太短,容易受抖动影响;太长,则收敛慢。工程上常见的测量周期在 1 ms 到 10 ms 量级,具体取决于同步精度要求和网络负载。

五、同步过程的时间线理解

把上述机制串起来,一个从站从"未同步"到"已同步"大致经历以下阶段:

  1. DC 初始化:主站扫描网络,识别支持 DC 的从站,指定参考时钟,并配置各从站的 DC 寄存器。
  2. 传播延迟测量:通过往返报文测量每个从站到参考时钟的传播延迟,写入补偿值。
  3. 偏移初始化:参考时钟广播系统时间,从站首次将自己的本地时间与系统时间对齐,消除初始大偏移。
  4. 漂移测量与补偿:周期性比较本地时间与系统时间,计算漂移率,调整本地时钟速率。
  5. 稳态同步:偏移和漂移都被控制在很小范围内,从站进入稳定同步状态,系统时间在整个网段内保持一致。

在稳态下,从时钟与参考时钟之间的同步误差通常可以做到几十纳秒以内,高端系统甚至可以达到 ±10 ns 量级。这个精度直接决定了多轴运动控制的插补质量和同步触发精度。

调优提示:如果发现某个从站同步误差偏大,优先检查三件事:该从站是否被正确纳入 DC 同步列表;传播延迟补偿值是否合理(异常大可能意味着线缆或 PHY 问题);漂移补偿是否收敛(观察偏移是否持续单向增长)。

六、关键参数与观察点

在实际调试中,可以通过主站工具或从站寄存器读取以下信息来判断 DC 同步状态:

观察项 含义 正常范围(示例)
System Time 参考时钟维护的系统时间 持续递增,64 位 ns
Offset 从时钟本地时间与系统时间之差 稳态下 < 100 ns
Propagation Delay 从站到参考时钟的传播延迟补偿值 几十 ns ~ 几百 ns
Drift 本地时钟相对参考时钟的频率偏差 ±50 ppm 以内,补偿后趋近 0
Sync Window 同步误差的允许窗口 根据应用设定,如 ±1 μs

理解这些量的物理意义,是后续进行 DC 调优的基础。偏移告诉你"现在差多少",漂移告诉你"差得多快",传播延迟告诉你"线缆和转发占了多少",而系统时间则是整个网段共同维护的那条时间轴。只有把这几件事分开看、分别处理,才能在调优时快速定位问题根源。