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画出来,方便你理解各个时间概念之间的关系。
3.7 避坑指南
最后,分享几个我在实际项目中踩过的坑:
- 晶振质量:我曾经用了一款便宜的晶振,温漂达到±50ppm,结果DC同步精度死活上不去。后来换了±10ppm的晶振,问题解决。
- 拓扑结构:星型拓扑的传播延迟不一致,会导致DC校准困难。我建议尽量用菊花链或树形拓扑。
- SYNC周期:不要把SYNC周期设得太短。我曾经设过10微秒的SYNC周期,结果从站CPU忙不过来,反而丢包了。
- 调试工具:TwinCAT的DC诊断功能很好用。我习惯在调试时打开DC状态窗口,观察每个从站的漂移量和补偿值。
核心要点:DC同步的精髓在于「测量-补偿-再测量」的闭环。参考时钟提供基准,从站时钟维护本地时间,系统时间是全局统一的时间轴,SYNC信号是触发任务的开关。理解这五个概念,你就掌握了EtherCAT同步的命脉。
公众号:蓝海资料掘金营,微信deep3321