EtherCAT协议基础:协议原理、帧结构、寻址方式与通信周期
2.1 EtherCAT的核心原理:从站硬件处理,主站“零拷贝”
EtherCAT(Ethernet for Control Automation Technology)之所以在运动控制领域占据主导地位,其根本原因在于它颠覆了传统以太网的“接收-解析-复制-发送”软件处理模式。在标准以太网中,每个节点收到帧后需由CPU解析IP地址、提取数据、再封装新帧发出,延迟随节点数线性增加。而EtherCAT采用“帧在飞行中处理”(Processing on the Fly)技术:主站发送一个以太网帧,帧依次穿过每个从站;从站控制芯片(如Beckhoff的ESC、LAN9252等)在帧经过的瞬间,直接通过硬件逻辑读取其寻址对应的数据,并将需要反馈的数据实时插入帧的相应位置,整个过程仅产生纳秒级(通常<1µs)的位延迟。
这种机制使主站CPU无需参与每个从站的数据搬运,一次帧传输即可完成所有从站的输入输出数据交换,实现了真正的“一帧到底”。从站之间通过菊花链或树形拓扑连接,数据像“列车过站”一样,每站只处理自己的“车厢”,然后原封不动地继续前行。最后一个从站将帧沿原路返回(或通过环网返回),主站收到完整帧后,即可获得所有从站的上报数据。
2.2 EtherCAT帧结构:标准以太网帧内的“子报文”编排
EtherCAT帧并未发明新的物理层,而是直接复用IEEE 802.3以太网帧,通过EtherType 0x88A4标识。整个帧结构分为两层:外层是标准以太网帧头/帧尾,内层承载一个或多个EtherCAT子报文(Datagram)。每个子报文独立寻址,可指向不同的从站或从站内不同的存储区域。
一个典型的EtherCAT帧结构如下:
以太网帧头(14字节):
- 目的MAC地址(6字节,通常为广播地址 FF:FF:FF:FF:FF:FF)
- 源MAC地址(6字节,主站MAC)
- EtherType(2字节,0x88A4)
EtherCAT报文头(2字节):
- 长度(11位):后续所有子报文的总字节数
- 保留位(1位)+ 类型(4位):通常为0x01(命令)
子报文1(至少16字节头 + 数据):
- 命令(1字节):如NOP(0x00)、APRD(0x01)、APWR(0x02)、APRW(0x03)、FPRD(0x04)等
- 索引(1字节):用于帧/报文匹配
- 地址区(4字节):从站地址 + 偏移地址
- 长度(2字节):数据区长度(单位:字节)
- R(2字节):保留 + 状态位(如中断、错误标志)
- 数据区(0~1486字节)
- WKC(2字节):工作计数器(Working Counter),从站每成功处理一次则加1
子报文2、子报文3...(可多个)
帧校验序列FCS(4字节,CRC32)
主站通过WKC(工作计数器)判断每个子报文是否被预期的从站正确执行。例如,若主站期望写入2个从站,则发送后检查WKC是否增加了2;若只增加了1,说明有一个从站未响应或地址配置错误。这是EtherCAT排障中最常用的诊断依据之一。
2.3 寻址方式:位置寻址与节点寻址的配合
EtherCAT支持两种从站寻址模式,在通信初始化阶段和运行阶段分别使用:
| 寻址模式 | 命令类型 | 地址含义 | 典型应用场景 |
|---|---|---|---|
| 位置寻址 | APRD / APWR / APRW | 从站在当前拓扑中的物理位置(第1个、第2个…) | 系统启动时,主站尚未分配节点地址,通过位置寻址扫描拓扑并配置地址 |
| 节点寻址 | FPRD / FPWR / FPRW | 从站内部配置的静态节点地址(0x0001~0xFFFF) | 正常运行阶段,主站直接访问指定地址的从站,不受拓扑变化影响 |
在位置寻址中,帧每经过一个从站,地址字段的位置计数器自动减1,直到减为0时该从站才响应。这意味着位置寻址依赖物理连接顺序,一旦拓扑改变(如增加或减少从站),位置地址就会变化。因此,EtherCAT启动流程通常为:
- 主站发送位置寻址的APWR命令,为每个从站分配唯一的节点地址(写入从站的EEPROM或寄存器)。
- 从站进入OP(Operational)状态后,主站改用节点寻址(FPRW等)进行周期通信。
- 若运行中从站掉线或新增,主站需重新扫描拓扑并可能重新分配地址。
2.4 通信周期与分布式时钟:运动控制的“心跳”
EtherCAT的通信周期(Cycle Time)决定了运动控制环路的刷新频率。典型配置为1ms、500µs甚至250µs。周期越短,位置环/速度环的响应越快,但对主站CPU性能和从站处理能力要求也越高。通信周期并非仅由主站决定,而是主站与所有从站协商的结果,受限于最慢从站的处理延迟。
为了实现多轴同步,EtherCAT引入了分布式时钟(Distributed Clock, DC)机制。主站作为参考时钟,通过周期性写入时间戳,使所有从站本地时钟与主站时钟保持同步。每个从站可配置一个SYNC事件,当本地时间到达预设的同步点时,从站硬件自动触发ADC采样、位置锁存或PWM输出,无需主站逐轴发送指令。
一个典型的位置同步控制时序如下:
周期起点 T0: 主站发送下行帧,包含各轴的目标位置/速度指令
T0 + Δt1: 从站1(伺服)在SYNC点锁存当前实际位置,并更新输出
T0 + Δt2: 从站2(伺服)同样执行,Δt1与Δt2之差 < 1µs
T0 + Δt3: 主站收到返回帧,读取各轴实际位置、状态字
T0 + Δt4: 主站运行位置规划算法,计算下一周期指令
下一周期 T0 + Tcycle: 重复上述过程
若从站之间的同步偏差过大(超过1µs),会导致多轴联动时轨迹轮廓误差增大。此时应检查分布式时钟的传播延迟补偿是否准确,以及从站是否启用了“FreeRun”模式(未同步)而非“SM-Sync”模式。
2.5 常见误区与排障复盘
排障复盘案例:某六轴机器人上电后,第4轴无法使能。排查过程:
- 使用主站诊断工具读取拓扑列表,发现第4轴节点地址为0x0004,正常。
- 发送FPRW命令读取该轴状态字,WKC返回0,说明从站未响应。
- 检查该轴驱动器供电,发现24V控制电正常,但主回路动力电未合闸,导致驱动器内部通信电路未完全初始化。
- 重新上电并等待驱动器完成启动后,再次发送FPRW,WKC变为1,故障解除。
此案例说明,EtherCAT链路正常不代表从站应用层就绪,必须结合WKC和状态字(如0x603F)综合判断。
2.6 小结与关键参数速查
EtherCAT协议的核心可概括为“一帧到底、硬件处理、分布时钟、WKC校验”。在设计运动控制系统时,应优先确定通信周期、同步模式(DC或SM)、以及每个从站所需的过程数据对象(PDO)映射。下表列出了常用参数参考:
| 参数项 | 典型值 | 说明 |
|---|---|---|
| 通信周期 | 1ms / 500µs / 250µs | 根据轴数和主站性能选择 |
| 同步模式 | DC(分布式时钟) | 多轴同步必须使用DC |
| 最小循环帧长度 | 64字节(含填充) | 以太网帧最小长度限制 |
| 最大子报文数 | 取决于帧长度 | 标准帧最多约1486字节数据区 |
| WKC校验 | 每个子报文独立计数 | 用于确认从站是否执行命令 |