3. EtherCAT同步模式与工作模式

EtherCAT从站控制器(ESC)支持三种典型的同步/工作模式:FreeRun(自由运行)、SM-Synchronous(同步管理器同步)和DC-Synchronous(分布式时钟同步)。三者并非简单的“精度高低”排序,而是对应不同的触发源、不同的时间基准和不同的适用场景。理解它们的差别,是后续做DC调优的前提——因为很多“同步不上”的问题,根源其实是模式选错了,而不是DC参数没调好。

三种模式的触发机制

FreeRun是最简单的模式。从站本地有一个独立的循环定时器,按固定周期触发应用层任务(例如更新输出、采样输入),这个周期与主站发送过程数据帧的时刻没有任何硬关联。主站周期和从站本地周期各自跑,二者之间只存在“平均意义上”的匹配。因此FreeRun下从站输出抖动量级通常在几十微秒到毫秒级,且会随温度、晶振漂移缓慢变化。它适合对同步无要求的场合,例如普通开关量采集、非联动指示灯、慢速温度监控。

SM-Synchronous(也称SM-Sync)把触发源改为同步管理器事件。当主站的过程数据帧到达从站、ESC完成SM2(输出同步管理器)的写入并产生SM2事件时,从站应用层被该事件触发执行。这样从站动作与“帧到达”绑定,消除了本地定时器与主站周期之间的自由漂移,抖动主要来自帧到达时刻的波动(受网络负载、交换机转发、拓扑深度影响)。SM-Sync不需要分布式时钟,实现简单,但同步精度受限于帧到达抖动,典型在几微秒到几十微秒量级,且不同从站之间仍存在因拓扑位置不同带来的到达时间差。

DC-Synchronous在SM-Sync的基础上引入分布式时钟。所有支持DC的ESC共享一个“系统时间”,由第一个支持DC的从站(参考时钟)提供基准,其余从站通过测量端口接收时间戳并计算偏移与漂移,逐步把自己的本地时钟调整到与参考时钟一致。应用层不再由SM事件直接触发,而是由本地DC时间与设定的SYNC0周期比较后触发。这样,各从站的执行时刻由统一时间轴决定,与帧到达时刻解耦,同步精度可达亚微秒甚至百纳秒级。

三种同步模式的触发源与时间基准对比 FreeRun 本地定时器 应用任务 触发源:本地晶振 时间基准:各自独立 抖动:几十μs~ms 与主站周期无硬关联 SM-Synchronous SM2事件 应用任务 触发源:帧到达/SM2 时间基准:帧到达时刻 抖动:几μs~几十μs 从站间仍有到达时差 DC-Synchronous DC系统时间 SYNC0触发 触发源:统一时间轴 时间基准:参考时钟 抖动:亚μs~百ns 与帧到达解耦 同一主站周期内,各从站执行时刻的分布 FreeRun 分散 SM-Sync 按到达顺序 DC-Sync 对齐同一时刻 DC模式通过测量端口时间戳计算偏移与漂移,将各从站本地时钟逐步收敛到参考时钟, 使SYNC0触发时刻与帧到达时刻解耦,从而获得亚微秒级同步精度。

DC模式对拓扑与从站的要求

DC并不是“打开开关就同步”。它依赖两个硬条件:拓扑上必须存在一条可用的DC传播路径,从站上必须支持DC并正确配置。具体来说:

  • 参考时钟必须唯一且可达。通常选择主站之后第一个支持DC的从站作为参考时钟(Reference Clock)。如果该从站被移除或掉线,整个DC链会失去基准,同步崩溃。因此工程上建议把参考时钟放在拓扑稳定、不易被拔插的位置,例如耦合器之后的第一个从站。
  • 所有需要同步的从站必须支持DC。不支持DC的从站无法参与时间戳测量,也无法被SYNC0触发。如果拓扑中夹着不支持DC的从站,它后面的从站虽然可能仍能收到帧,但DC传播链在它这里断开,后续从站只能退化为SM-Sync或FreeRun。选型时必须确认ESC型号支持DC,例如ET1100、ET1200、LAN9252、AX58100等均支持,而部分早期或低成本ESC可能不支持。
  • 拓扑深度影响传播延迟补偿。DC通过测量端口接收时间戳来计算传播延迟。线型、树型拓扑中,从站到参考时钟的跳数越多,累积延迟越大,但DC会逐站补偿,因此拓扑深度本身不直接破坏同步,前提是每一站都支持DC并正确测量。真正的问题在于:如果中间某站不支持DC,补偿链断裂。
  • 环网冗余与DC的配合。在环网拓扑中,正常工作时数据走主路径,断线后切换到备用路径。DC需要重新收敛,切换瞬间可能出现同步偏差。因此环网冗余场景下,应确认主站和从站支持DC重收敛,并预留足够的收敛时间。
  • SYNC0周期与主站周期匹配。DC模式下,SYNC0信号由ESC按设定周期产生,该周期通常等于主站过程数据周期。如果SYNC0周期与主站周期不一致,从站会在错误时刻执行,导致输出抖动。配置时应确保SYNC0周期与主站任务周期一致,并留出足够的偏移量(SYNC0 Shift)让数据在触发前稳定到达。

模式选择与参数配置示例

下面以某伺服驱动从站为例,给出DC模式的关键配置片段(基于ESI/XML描述和主站配置的典型字段,参数为示例值):

<Dc>
  <OpMode>0x02</OpMode>          <!-- 0x02 = DC SYNC0 模式 -->
  <CycleTime>1000000</CycleTime>  <!-- SYNC0周期 1ms,单位ns -->
  <Shift>300000</Shift>           <!-- SYNC0偏移 300μs,单位ns -->
  <AssignActivate>0x0300</AssignActivate>
</Dc>

其中Shift的含义是:SYNC0触发时刻相对于主站周期起点的偏移。设置Shift的目的是让过程数据帧在SYNC0之前到达并完成写入,从站应用层在SYNC0时刻读取到的是稳定数据。Shift太小,数据还没到就触发,读到旧值;Shift太大,则压缩了从站计算和输出的时间窗口。工程上通常取周期的一半左右,再根据实测帧到达时刻微调。

判断DC是否真正生效,不能只看“配置成功”。应观察以下信号:从站DC状态字中的Sync0 Status位是否置位;用示波器测量两个不同从站的SYNC0引脚输出,看上升沿是否对齐;或读取从站的系统时间差寄存器,确认偏移量收敛到稳定小值。如果偏移量持续振荡或缓慢漂移,说明参考时钟选择不当或传播延迟补偿异常。

模式选择建议:对同步无要求的IO用FreeRun;对同步有要求但精度在几十微秒级、且拓扑简单时可用SM-Sync;对多轴联动、凸轮同步、高速采样等要求亚微秒级同步的场景,必须使用DC-Sync,并确保全链路从站支持DC。
常见误区:认为“主站周期设得越小,同步越好”。实际上DC同步精度取决于时钟收敛质量和Shift设置,与主站周期大小无直接关系。周期过小反而会压缩Shift可用窗口,导致数据未稳定就触发。

总结来说,FreeRun、SM-Sync、DC-Sync对应三种不同的触发源和时间基准。DC模式不是单一开关,而是一条从参考时钟出发、逐站补偿的传播链。拓扑中任何一个不支持DC的从站都会截断这条链,使后续从站无法获得统一时间轴。因此,在规划EtherCAT网络时,应把“全链路DC支持”作为选型和拓扑设计的前置条件,而不是等到调试阶段再补救。