2、EtherCAT基础概念:主站、从站、帧结构、寻址方式、通信原理
2.1 主站与从站的角色划分
EtherCAT 网络采用经典的主从式(Master/Slave)架构。主站通常运行在工业 PC、PLC 或嵌入式控制器上,通过标准以太网控制器(MAC)发送 EtherCAT 帧;从站则是由专用的 ESC(EtherCAT Slave Controller)芯片(如 Beckhoff ET1100、ET1200 或倍福 IP 核)配合微控制器构成。主站是唯一允许主动发送帧的节点,从站只能被动响应——它们无法主动发起通信,只能在帧经过时进行“读取”或“写入”操作。
从站内部,ESC 芯片负责所有 EtherCAT 通信协议处理,包括帧检测、地址匹配、数据提取/插入以及帧转发。MCU 仅需通过并行或 SPI 接口与 ESC 交换过程数据,因此从站应用软件的实时性要求大幅降低。这种硬件化设计是 EtherCAT 能够实现纳秒级同步和微秒级周期通信的根本原因。
2.2 EtherCAT 帧结构与报文格式
EtherCAT 直接使用标准以太网帧(IEEE 802.3),但 EtherType 固定为 0x88A4。一个以太网帧内可以装载多个 EtherCAT 子报文(Datagram),每个子报文对应一个从站或一组从站的逻辑地址空间。帧结构如下:
以太网帧头(14 字节)
├─ 目的 MAC 地址(6 字节):通常为广播地址 FF:FF:FF:FF:FF:FF
├─ 源 MAC 地址(6 字节):主站网卡 MAC
└─ EtherType(2 字节):0x88A4
EtherCAT 报文头(2 字节)
├─ 长度(11 位):后续所有子报文的总长度
└─ 保留位 + 类型(1 位):1 = 与从站通信
子报文 1(至少 12 字节头 + 数据)
├─ 命令(1 字节):如 NOP、APRD、APWR、APRW、FPRD、FPWR、BRD、BWR 等
├─ 索引(1 字节):用于帧/响应匹配
├─ 地址区(4 字节):从站地址 + 偏移地址
├─ 长度(2 字节):数据区长度(单位:字节)
├─ R(2 字节):保留
├─ M(1 位):是否为最后一个子报文
├─ 状态位(1 位):是否由从站写入状态
├─ 循环冗余校验 CRC(2 字节):对子报文进行校验
└─ 数据区(0~1486 字节):实际过程数据或参数
子报文 2、子报文 3 ……
帧校验序列 FCS(4 字节):由以太网控制器自动生成
每个子报文在从站间传递时,从站会检查地址区是否匹配自身位置。若匹配,则根据命令类型执行读、写或读写操作,并在子报文返回主站时更新其状态位和工作计数器(WKC, Working Counter)。WKC 是 EtherCAT 通信中最重要的诊断指标之一——每个从站成功执行一次预期操作,WKC 就会增加特定数值,主站通过比对 WKC 的期望值与实际值来判断通信是否完整。
2.3 寻址方式:位置寻址与节点寻址
EtherCAT 支持两种寻址模式,分别用于不同阶段:
| 寻址模式 | 地址构成 | 适用场景 | 特点 |
|---|---|---|---|
| 位置寻址(Auto Increment) | 从站物理位置编号(0, 1, 2…),由帧经过的从站自动累加 | 系统启动阶段、扫描拓扑、配置从站地址 | 无需预先知道从站地址;帧每经过一个从站,地址字段自动加 1 |
| 节点寻址(Configured Station Address) | 由主站在启动阶段为每个从站分配的唯一地址(0~65535) | 正常运行阶段的过程数据通信 | 地址固定,不受拓扑位置影响;便于维护和故障定位 |
在位置寻址模式下,主站发送一个地址为 0 的子报文,第一个从站看到地址为 0 即匹配自身,处理后将地址字段加 1 再转发;第二个从站看到地址为 1 时匹配……以此类推。这种方式让主站在不了解拓扑的情况下就能与任意位置的从站通信,非常适合初始扫描。而节点寻址则是在每个从站被分配了固定地址后使用的,主站直接通过该地址访问指定从站,不受物理位置变化影响。
2.4 通信原理:从站数据“飞越”式处理
EtherCAT 的核心通信原理可以概括为“处理即转发”。当主站发送的帧到达从站 1 的 ESC 时,ESC 在硬件层面完成以下操作:
- 帧检测:识别 EtherType 0x88A4,确认是 EtherCAT 帧。
- 地址匹配:将子报文中的地址与自身配置地址(或位置计数器)比较。
- 数据操作:根据命令类型,从帧中读取输出数据(如伺服使能字),或将输入数据(如编码器位置)写入帧中。
- WKC 更新:成功执行操作后,将子报文中的 WKC 加 1。
- 帧转发:将处理后的帧从物理端口 0 转发到端口 1,送往下一个从站。
整个过程完全由 ESC 硬件完成,不经过 MCU 软件处理,因此单个从站引入的延迟仅为微秒级。当帧到达最后一个从站时,该从站将帧通过其回环端口(或由主站配置为“最后一站”模式)直接送回主站。主站收到返回帧后,解析各子报文的数据和 WKC,完成一个通信周期。
2.5 典型应用场景:伺服驱动器的周期同步位置模式
以一台 6 轴工业机器人为例,其控制柜内包含 EtherCAT 主站(机器人控制器)和 6 个伺服驱动器从站,另加一个远程 IO 从站。主站以 1 kHz(周期 1 ms)的频率发送过程数据帧,每个子报文携带各轴的目标位置、速度、力矩指令,同时读取各轴的实际位置、电流反馈和报警状态。
在启动阶段,主站通过位置寻址扫描网络,识别出 7 个从站,并为每个从站分配节点地址(如 1001~1007)。随后主站发送配置帧,将各从站设置为“运行”状态。进入正常运行后,主站使用节点寻址发送周期数据帧。每个周期内,6 个伺服子报文和 1 个 IO 子报文被封装在同一个以太网帧中,帧总长度通常不超过 200 字节。从站 ESC 在硬件中完成数据提取和插入,MCU 通过 SPI 中断获得新指令并执行电流环控制。
若某个伺服驱动器发生故障(如过载),其 ESC 会在返回帧中将该子报文的状态位置位,同时 WKC 不增加。主站检测到 WKC 低于期望值后,立即触发报警并进入安全停机流程。整个过程从故障发生到主站识别,延迟不超过 2 个通信周期(2 ms),充分体现了 EtherCAT 的快速诊断能力。
2.6 常见误区与复盘
实际上,从站 ESC 不是存储转发,而是“直通式”处理——帧在物理层接收的同时就开始解析和修改,几乎不产生缓冲延迟。因此网络中的从站数量对单帧延迟影响极小。
位置寻址(Auto Increment)用于启动扫描,节点寻址用于运行通信。如果在运行阶段仍使用位置寻址,一旦从站掉线或新增,所有后续从站的地址都会偏移,导致通信错乱。正确做法是启动时扫描一次,之后始终使用节点寻址。
复盘要点:在调试 EtherCAT 网络时,若遇到通信中断,首先检查主站日志中的 WKC 值——若 WKC 为 0,说明子报文未到达任何从站(可能物理链路断开);若 WKC 小于期望值,说明部分从站未响应(可能该从站掉线或地址配置错误)。其次,使用位置寻址重新扫描拓扑,确认从站数量与顺序是否与配置一致。最后,检查每个从站的 ESC 状态寄存器,确认其是否处于“运行”状态。掌握这些排查思路,能大幅缩短故障定位时间。