2. EtherCAT协议基础
核心原理:从站硬件处理,主站“零拷贝”
EtherCAT(Ethernet Control Automation Technology)最本质的设计思想是:主站不再像传统以太网那样发送一帧数据给一个从站并等待其回复,而是发送一帧数据“穿过”所有从站,每个从站在报文经过时,于硬件层面实时抽取其“输出数据”并插入其“输入数据”。整个过程由从站的ESC(EtherCAT Slave Controller,从站控制器)芯片完成,不经过CPU协议栈,因此延迟极低且时间确定性极强。
从站处理报文的机制称为“On-the-fly”(飞读飞写):当报文帧的对应数据段经过从站时,ESC在几个纳秒内完成数据的读取与回写,然后将报文继续向下游转发。最后一个从站将处理完毕的帧沿原路径返回主站。主站网卡收到的帧中,已经包含了所有从站实时更新的过程数据。
数据帧结构:以太网帧内的“子报文”串联
EtherCAT直接使用标准以太网帧(EtherType = 0x88A4)作为载体。帧结构分为三层:以太网帧头、EtherCAT报文头、多个子报文(Datagram)。每个子报文对应一个逻辑寻址操作或一段过程数据。
以太网帧头(14字节):
- 目的MAC地址(6字节)
- 源MAC地址(6字节)
- EtherType = 0x88A4(2字节)
EtherCAT报文头(2字节):
- 长度(11位):后续数据总长度
- 保留位(1位)
- 类型(4位):1=与从站通信
子报文(Datagram,可变长):
- 命令(1字节): NOP=0, APRD=1, APWR=2, APRW=3, FPRD=4, FPWR=5, FPRW=6, BRD=7, BWR=8, FRMW=9
- 索引(1字节): 主站用于匹配请求与响应
- 从站地址(4字节): 寻址方式相关
- 偏移地址(2字节): 从站内部寄存器/内存偏移
- 长度(2字节): 数据段长度(M位,最大128字节)
- 中断标志(2字节): 事件通知
- 数据段(0~128字节): 实际过程数据
- 工作计数器 WKC(2字节): 从站成功处理后递增
其中工作计数器(WKC)是EtherCAT最关键的诊断机制。每个从站完成一次读或写操作后,会将WKC按规则加1。主站通过检查WKC的返回值,即可确认“预期的从站是否确实执行了操作”。例如,一个APWR写命令期望2个从站各写一次,则WKC应返回2;若返回0,说明没有任何从站匹配该地址。
寻址方式:四种机制配合使用
| 寻址方式 | 命令示例 | 地址含义 | 典型用途 |
|---|---|---|---|
| 站地址寻址(位置寻址) | APRD / APWR | 从站物理位置(自动递增),主站配置时分配 | 初始化阶段访问单个从站 |
| 节点地址寻址 | FPRD / FPWR | 从站节点地址(由主站写入EEPROM) | 运行阶段访问指定从站 |
| 广播寻址 | BRD / BWR | 所有从站同时响应 | 同步操作、全局状态切换 |
| 逻辑寻址 | LRD / LWR / LWRT | 映射到FMMU(现场总线内存管理单元) | 过程数据周期性交换 |
在IgH主站的实际运行中,周期过程数据使用逻辑寻址:主站将各从站的PDO映射到一段连续的逻辑地址空间,通过FMMU将逻辑地址转换为从站内部物理地址。这样,一个子报文即可读写多个从站的数据,极大提高带宽利用率。
通信周期:DC同步与抖动控制
EtherCAT的实时性不仅体现在单帧处理速度,更体现在分布式时钟(DC, Distributed Clock)的同步机制上。主站作为参考时钟,通过周期性发送ARMW(读改写)命令来测量并补偿每个从站时钟的偏移和漂移。
- 时钟同步过程:主站广播一个同步信号(SYNC0),所有从站在接收到该信号的同一时刻锁存输入、更新输出。
- 漂移补偿:主站每个周期读取从站时钟与参考时钟的差值,通过写入“时钟控制寄存器”动态调整从站本地时钟。
- SYNC0周期:通常与通信周期一致(如1ms、500µs、250µs),也可设置为通信周期的整数倍。
cyclenano参数决定通信周期(单位ns)。例如设置为1000000即1ms周期。DC功能启用后,从站的中断和采样点将与主站时钟严格对齐,多轴运动控制中各轴的位置采样时间差可控制在±100ns以内。
案例场景:6轴机械臂的同步控制
假设使用IgH主站控制6个EtherCAT伺服驱动器,通信周期设为1ms。主站每个周期执行以下流程:
1. 构建过程数据帧(逻辑寻址,包含6个轴的目标位置/速度/力矩)
2. 发送帧,同时等待上一周期返回帧
3. 从站ESC硬件实时抽取各自输出数据,并插入实际位置/状态
4. 帧返回主站,IgH解析输入数据
5. 检查WKC是否等于6(每个轴均正确响应)
6. 将新参考位置写入共享内存,供实时控制任务使用
7. 更新DC同步信息,补偿时钟漂移
实际测试中,6轴同步抖动(各轴实际采样时刻与理论时刻的偏差)通常小于1µs,完全满足高速插补运动控制需求。
误区与复盘:常见理解偏差
实际上,EtherCAT是“集束帧广播+从站硬件直通处理”模型。主站发送一帧,所有从站同时(在帧经过时)处理,而非一问一答。这也是其性能远超PROFINET RT、Modbus TCP等传统方案的根本原因。
在IgH调试中,若从站掉线或配置错误,WKC返回值会异常。例如配置了3个从站但实际只有2个在线,WKC返回2而非3,主站即可判定通信不完整。初学者常只关注数据是否正确,而忽略WKC的“操作计数”验证。
通信周期是主站发送帧的间隔,而DC同步是各从站时钟与主站时钟的对齐精度。即使通信周期为1ms,若DC未启用或配置错误,各从站的输入采样时刻可能相差数十微秒,导致运动控制不同步。IgH中需同时配置
cyclenano和DC相关参数(如sync_ref_clock、sync0_active)。
复盘一个实际案例:某设备使用IgH控制4个伺服轴,运行中偶发“位置不同步”报警。排查发现DC同步未正确启用,从站时钟漂移导致各轴采样时刻偏差达30µs。启用DC并配置SYNC0后,抖动降至200ns以内,问题彻底解决。这提醒我们:EtherCAT的高性能是“硬件直通+精确时钟同步”共同作用的结果,缺一不可。