3. EtherCAT协议原理

EtherCAT(Ethernet for Control Automation Technology)之所以能在工业控制中实现微秒级同步与高带宽利用率,核心在于它并非把每个从站当作独立以太网设备来收发报文,而是让一帧以太网数据在环形拓扑中“穿过”所有从站,从站在帧经过时实时读写属于自己的数据区。理解这一机制,需要同时掌握数据帧结构、过程数据对象、邮箱通信、分布式时钟、状态机与通信周期六个相互咬合的要素。

一、数据帧结构:一帧穿越所有从站

EtherCAT 使用标准以太网帧,类型字段为 0x88A4。帧内不再为每个从站封装独立报文,而是由多个 EtherCAT 子报文(Datagram)组成,每个子报文包含命令、索引、地址区、数据区和工作计数器 WKC。主站发出的一帧依次经过各从站,从站根据子报文中的地址判断是否属于自己:若匹配,则在数据区对应偏移处读取输出数据、写入输入数据,并递增 WKC。帧绕行一圈回到主站后,主站通过比较 WKC 与预期值即可判断该子报文是否被正确访问。

这种“飞行中读写”(processing on the fly)的方式避免了存储转发带来的延迟,使有效载荷利用率远高于传统轮询式以太网。子报文可寻址逻辑地址、自动增量地址或广播地址,分别用于过程数据交换、启动阶段寻址和全局命令。

EtherCAT 数据帧穿越从站与 WKC 递增示意 主站 发送/回收帧 从站1 WKC +1 从站2 WKC +1 从站3 WKC +1 返回主站:WKC 汇总校验 以太网帧头 | 类型 0x88A4 | 子报文1 | 子报文2 | … | FCS 子报文 = 命令 + 索引 + 地址 + 数据区 + WKC 下行:主站写入输出数据 上行:从站回写输入数据 WKC:工作计数器,验证访问是否成功

二、过程数据对象与邮箱通信

EtherCAT 的通信分为两类:过程数据(Process Data)和邮箱数据(Mailbox)。过程数据是周期性实时交换的输入/输出量,如伺服的目标位置、实际速度、IO 状态,直接映射到主站 PLC 的过程映像区,采用逻辑寻址,周期固定、延迟确定。邮箱通信则是非周期性的参数读写、诊断、固件升级等,采用握手式可靠传输,速度较慢但不影响实时性。

在 CODESYS 中,过程数据通过 EtherCAT 从站设备的“过程数据”选项卡配置,输入和输出变量自动映射到 PLC 的 %I / %Q 地址或结构体变量;邮箱通信则通过 SDO(服务数据对象)读写对象字典,例如修改 PDO 映射、设置电机额定电流等。两者共用同一物理链路,但优先级和调度方式不同。

对比项 过程数据 PDO 邮箱通信 SDO
通信类型 周期性、实时 非周期、按需
寻址方式 逻辑地址,飞行中读写 邮箱通道,握手确认
典型用途 位置、速度、IO 状态 参数配置、诊断、固件升级
对周期影响 直接占用通信周期 后台传输,不阻塞过程数据
CODESYS 入口 过程数据映射、PDO 配置 SDO 读写、启动参数

三、分布式时钟与状态机

分布式时钟(Distributed Clocks,DC)是 EtherCAT 实现高精度同步的关键。主站选择一个从站作为参考时钟,其余从站通过测量帧到达和离开的时间差,计算自身时钟与参考时钟的偏移和漂移,并动态调整本地时钟,使所有从站时钟同步到亚微秒级。这样,多个伺服轴可以在同一时刻采样和输出,避免因时钟偏差导致的轨迹抖动。

状态机则定义了从站从初始化到正常运行的迁移路径:INIT → PRE-OP → SAFE-OP → OP。INIT 阶段配置地址和邮箱;PRE-OP 阶段邮箱可用,过程数据不可用;SAFE-OP 阶段过程数据可读但输出保持安全状态;OP 阶段输入输出均正常交换。任何配置错误或通信中断都会使状态回退,主站通过状态码定位问题。

实操提示:在 CODESYS 中扫描 EtherCAT 从站后,先确认从站状态能否从 PRE-OP 进入 SAFE-OP,再进入 OP。若卡在 SAFE-OP,常见原因是 PDO 映射不匹配、DC 模式未启用或从站参数未下载。

四、通信周期与案例场景

通信周期由主站循环发送 EtherCAT 帧的间隔决定,典型值为 1 ms、500 μs 甚至 250 μs。周期越短,控制响应越快,但对主站 CPU、网络带宽和从站处理能力要求越高。一个完整的周期包括:主站组帧、帧穿越所有从站、返回主站、主站解析并更新过程映像、执行 PLC 任务、准备下一帧。

以三轴伺服同步为例:主站设置 1 ms 周期,启用 DC 同步模式,三个伺服从站分别映射目标位置和实际位置。每个周期内,主站把三轴目标位置写入帧,帧依次经过三个从站,从站读取目标值并回写实际值;同时 DC 使三个从站的采样时刻对齐。若某轴 WKC 异常,主站立即报错并触发安全停止。

CODESYS EtherCAT 周期配置示例(伪代码):
EtherCAT_Master.CycleTime := T#1ms;
EtherCAT_Master.DCEnabled := TRUE;
Axis1.PDO_Output := TargetPos1;
Axis1.PDO_Input  := ActualPos1;
Axis2.PDO_Output := TargetPos2;
Axis2.PDO_Input  := ActualPos2;
Axis3.PDO_Output := TargetPos3;
Axis3.PDO_Input  := ActualPos3;
IF EtherCAT_Master.WKC_Error THEN
    SafetyStop();
END_IF

五、常见误区与复盘

  • 误区一:把 EtherCAT 当成普通以太网 TCP/IP 通信。实际上它使用专用帧类型和飞行中读写,不经过 TCP/IP 协议栈。
  • 误区二:忽略 WKC 校验。WKC 不匹配说明从站未正确访问,必须排查地址、拓扑或从站状态。
  • 误区三:在 OP 状态下频繁写 SDO。邮箱通信虽不阻塞过程数据,但大量 SDO 会占用主站资源,建议在 PRE-OP 阶段完成参数配置。
  • 误区四:DC 未启用却要求多轴同步。没有分布式时钟,各从站时钟独立漂移,长时间运行后同步误差会累积。

复盘要点:EtherCAT 的实时性来自“一帧穿越、飞行读写、WKC 校验、DC 同步、状态机管控、周期调度”六者协同。调试时按“物理连接 → 状态机迁移 → PDO 映射 → DC 同步 → 周期优化”的顺序逐层排查,能快速定位绝大多数通信问题。