3、DC同步机制详解:参考时钟、从站时钟、系统时间、本地时间、同步信号

分布式时钟(DC)是EtherCAT最核心的机制之一。说白了,它就是让所有从站设备共享同一个时间基准。我刚开始接触EtherCAT时,觉得DC就是个简单的对时功能。后来在产线上调试一台高速贴片机,才真正领教了它的精妙之处。

嗯,咱们今天就把DC同步机制的五个关键概念掰开揉碎讲清楚。你想想看,如果每个设备都按自己的时钟跑,那整个系统就乱套了。DC要解决的,正是这个问题。

3.1 参考时钟:谁说了算?

在一个EtherCAT网段里,必须有一个设备充当时间基准。这个设备就是参考时钟。我个人习惯把参考时钟放在从站中,而不是主站。为什么?

  • 主站抖动大:主站通常是通用PC或嵌入式控制器,操作系统调度、中断响应都会引入不确定性
  • 从站更稳定:从站硬件逻辑直接处理报文,延迟可预测
  • 热插拔友好:参考时钟在从站上,更换主站不影响时钟拓扑

重要原则:参考时钟通常选择网段中第一个支持DC的从站。如果第一个从站不支持DC,则向后顺延。

我在项目中遇到过这样的情况:客户把参考时钟设在了最后一个从站上,结果整个系统的同步精度从亚微秒级掉到了几十微秒。后来我建议他们把参考时钟移到第二个从站(第一个从站是简单的IO模块,不支持DC),问题立刻解决了。

3.2 从站时钟:每个设备都有自己的时间

每个支持DC的从站都有一个本地时钟。这个时钟基于从站内部的晶振,频率可能不完全准确。你想想看,晶振有温漂、有老化,不同从站的时钟频率不可能完全一致。

从站时钟的结构是这样的:

从站时钟寄存器(ESC内部):
  - 系统时间(64位):纳秒级时间戳
  - 本地时间(64位):从站本地维护的时间
  - 系统时间偏移(32位):本地时间与系统时间的差值
  - 系统时间延迟(32位):报文从参考时钟到本从站的传播延迟

每个从站时钟都会持续运行,即使没有网络通信。这就是为什么DC需要不断校准——从站时钟会漂移,必须定期修正。

3.3 系统时间:全局统一的基准

系统时间就是参考时钟维护的那个时间。所有从站都要把自己的本地时间同步到系统时间上。系统时间是一个64位的纳秒计数器,从EtherCAT系统启动时开始累加。

我习惯把系统时间想象成「标准时间」,就像北京的北京时间。每个从站都有自己的「手表」,但都需要校准到北京时间。

时间类型 位数 精度 作用
系统时间 64位 1纳秒 全局基准,由参考时钟维护
本地时间 64位 1纳秒 从站本地维护,需同步到系统时间
同步信号 取决于SYNC周期 触发从站执行任务

3.4 本地时间:每个从站的「手表」

本地时间是从站自己维护的时间。它和系统时间之间有两个关键参数:

  • 时间偏移:本地时间与系统时间的固定差值。这个值在DC初始化时确定,之后基本不变
  • 时钟漂移:由于晶振频率差异,本地时间会逐渐偏离系统时间。DC协议会持续测量并补偿这个漂移

小技巧:调试时可以用Wireshark抓取DC报文,查看每个从站的System Time Offset和System Time Delay值。如果这些值在稳定后还在剧烈波动,说明网络拓扑或从站硬件有问题。

我曾经调试过一个系统,某个从站的本地时间总是比系统时间慢。查了半天,发现是那个从站的晶振频率偏低了0.01%。虽然DC协议能补偿,但补偿量太大反而引入了新的抖动。最后换了晶振,问题才彻底解决。

3.5 同步信号:什么时候干活?

同步信号(SYNC)是从站根据本地时间产生的硬件中断。它告诉从站:「到点了,该干活了!」

SYNC信号的产生逻辑是这样的:

SYNC周期 = 用户配置的同步周期
SYNC脉冲宽度 = 通常为几个微秒

产生条件:
  (本地时间 - 起始时间) % SYNC周期 == 0

每个从站可以配置多个SYNC信号。比如:

  • SYNC0:主同步信号,用于触发数据采集或输出更新
  • SYNC1:辅助同步信号,可用于触发ADC采样或PWM更新

注意:SYNC信号的精度取决于本地时间与系统时间的同步精度。如果同步没做好,SYNC信号就会抖动。我曾经见过一个案例,SYNC抖动达到5微秒,导致伺服电机在高速运行时出现明显的速度波动。

3.6 核心逻辑:一张图看懂DC同步

下面这张图展示了DC同步的核心流程。我特意用SVG画出来,方便你理解各个时间概念之间的关系。

EtherCAT DC同步机制核心逻辑 参考时钟 系统时间(64位纳秒计数器) 传播延迟 从站1 本地时间 = 系统时间 + 偏移 + 延迟 传播延迟 从站2 本地时间 持续运行,需校准 DC校准机制 测量漂移 → 计算补偿 → 写入寄存器 SYNC信号 硬件中断,触发任务执行 应用任务 数据采集 / 输出更新 / 控制计算 图例: 参考时钟 从站时钟 本地时间 SYNC信号 应用任务 校准环路

3.7 避坑指南

最后,分享几个我在实际项目中踩过的坑:

  • 晶振质量:我曾经用了一款便宜的晶振,温漂达到±50ppm,结果DC同步精度死活上不去。后来换了±10ppm的晶振,问题解决。
  • 拓扑结构:星型拓扑的传播延迟不一致,会导致DC校准困难。我建议尽量用菊花链或树形拓扑。
  • SYNC周期:不要把SYNC周期设得太短。我曾经设过10微秒的SYNC周期,结果从站CPU忙不过来,反而丢包了。
  • 调试工具:TwinCAT的DC诊断功能很好用。我习惯在调试时打开DC状态窗口,观察每个从站的漂移量和补偿值。

核心要点:DC同步的精髓在于「测量-补偿-再测量」的闭环。参考时钟提供基准,从站时钟维护本地时间,系统时间是全局统一的时间轴,SYNC信号是触发任务的开关。理解这五个概念,你就掌握了EtherCAT同步的命脉。


公众号:蓝海资料掘金营,微信deep3321