2. EtherCAT帧结构与寻址机制

EtherCAT 的高实时性并非来自某种“特殊以太网”,而是来自对标准以太网帧的巧妙利用。它仍然使用 IEEE 802.3 以太网帧格式,但通过一个专用 EtherType 值 0x88A4 来标识 EtherCAT 报文,从而与普通 IP 流量、ARP、VLAN 标签帧区分开。理解帧结构与寻址机制,是理解 EtherCAT 为什么能在微秒级完成数百个从站数据交换的关键。

一、EtherCAT 帧的基本结构

一个 EtherCAT 帧由以太网头、EtherCAT 头、一个或多个 EtherCAT 数据报(Datagram)以及帧校验序列(FCS)组成。以太网头中的目的 MAC 可以是广播地址、多播地址或某个从站的单播地址;源 MAC 为主站网卡地址;EtherType 固定为 0x88A4。EtherCAT 头长度为 2 字节,其中 11 位表示后续数据报的总长度,1 位表示类型(通常为 1,表示与以太网帧共存),其余位保留。

每个 EtherCAT 数据报包含 10 字节的数据报头、最多 1486 字节的数据区和 2 字节工作计数器(WKC)。数据报头中的命令字段(Cmd)决定了寻址方式,例如 APRD、APWR、FPRD、FPWR、BRD、BWR、LRD、LWR 等。地址字段根据命令不同,可能是 16 位自动增量地址、32 位逻辑地址或 16 位从站偏移地址。数据区承载过程数据或邮箱数据。WKC 是 EtherCAT 诊断与可靠性机制的核心:从站每正确处理一次数据报,WKC 就加 1,主站通过比较期望值与实际值即可判断该数据报是否被所有目标从站正确处理。

EtherCAT 帧结构与寻址方式示意 以太网头 目的MAC(6B) | 源MAC(6B) | EtherType=0x88A4(2B) EtherCAT 头 (2B) 长度(11bit) | 类型(1bit) | 保留 EtherCAT 数据报(可多个) 数据报头 (10B) Cmd | 地址 | 长度 | 中断 数据区 (0~1486B) 过程数据 / 邮箱数据 WKC (2B) 工作计数器 FCS 帧校验序列 (4B)

二、三种寻址机制及其适用场景

EtherCAT 定义了多种寻址方式,最常用的是自动增量寻址、逻辑寻址和广播寻址。它们并非互相替代,而是分别服务于不同的通信阶段和数据类型。

自动增量寻址(Auto Increment Addressing)使用 16 位地址字段。主站在初始化阶段为每个从站分配一个临时地址:第一个从站地址为 0,第二个为 -1,第三个为 -2,依此类推。数据报每经过一个从站,地址字段自动加 1。当某个从站的地址变为 0 时,该从站即认为数据报是发给自己的,从而执行读写操作。这种方式主要用于启动阶段的从站配置、EEPROM 读取和状态机切换,因为此时逻辑地址尚未建立。它的优点是简单、无需预先知道网络拓扑;缺点是每帧只能访问一个从站,效率较低。

逻辑寻址(Logical Addressing)使用 32 位逻辑地址,配合 FMMU(现场总线内存管理单元)完成。主站为每个从站的过程数据分配一段逻辑地址空间,从站通过 FMMU 将逻辑地址映射到本地物理内存。一个数据报可以携带多个从站的数据,所有从站同时监听同一逻辑地址,各自根据 FMMU 配置决定是否读写。逻辑寻址是周期性过程数据交换的主要方式,支持多播和广播,效率极高。例如,一个 LRD 命令可以读取所有从站的输入数据,一个 LWR 命令可以写入所有从站的输出数据。

广播寻址(Broadcast Addressing)使用地址 0xFFFF,所有从站都会处理该数据报。它常用于主站发送全局命令,如读取所有从站的 AL 状态、设置全局寄存器或进行拓扑检测。广播寻址的 WKC 值等于网络中从站的总数,主站可以通过 WKC 判断网络是否完整。

三、寻址机制对实时性能的影响

EtherCAT 的实时性能与寻址方式直接相关。自动增量寻址每帧只能访问一个从站,若网络中有 100 个从站,完成一轮配置需要 100 个数据报,延迟显著增加。逻辑寻址则允许一个数据报同时访问多个从站,数据在从站间“飞过”时被实时处理,无需存储转发。以 100 个从站、每个从站 2 字节输入和 2 字节输出为例,使用逻辑寻址时,一个 LRD 数据报可读取全部 200 字节输入,一个 LWR 数据报可写入全部 200 字节输出,整个周期仅需 2 个数据报,帧长度约 200 字节,在 100 Mbps 链路上的传输时间约为 20 微秒,加上从站处理延迟,总周期可控制在 50 微秒以内。

WKC 的期望值计算也依赖寻址方式。对于逻辑寻址,主站需要预先知道有多少从站映射到该逻辑地址,期望 WKC 等于映射的从站数量。如果实际 WKC 小于期望值,说明有从站未正确处理,可能原因包括从站掉线、FMMU 配置错误、数据报长度不匹配或 CRC 错误。主站应据此触发诊断,而不是简单重发。

实践提示:在调试阶段,可以先用广播寻址读取所有从站的 AL Status,确认网络拓扑完整;再用自动增量寻址逐个配置从站;最后切换到逻辑寻址进行周期性过程数据交换。这种“先广播、再增量、后逻辑”的顺序,是 EtherCAT 启动的典型流程。

四、帧类型与 EtherType 的工程意义

EtherCAT 使用 EtherType 0x88A4,这意味着它可以直接封装在标准以太网帧中,无需 IP 层。主站网卡发送的帧目的 MAC 可以是广播地址 FF:FF:FF:FF:FF:FF,也可以是多播地址或从站单播地址。在环形拓扑中,主站通常使用广播 MAC,帧沿环传播,每个从站处理后再转发,最终返回主站。在分支拓扑中,主站可能使用多播 MAC,由第一个分支从站复制并转发到多个端口。

由于 EtherType 不同,EtherCAT 流量可以与普通 IP 流量在同一物理链路上共存,但交换机必须支持 EtherType 透传。普通交换机通常可以转发 0x88A4 帧,但会引入存储转发延迟,破坏实时性。因此,EtherCAT 网络应使用专用从站控制器(ESC)或支持 EtherCAT 的交换机,避免普通交换机的排队延迟。

五、WKC 与诊断的联动

WKC 是 EtherCAT 可靠性工程中最直接的诊断信号。主站为每个数据报设置期望 WKC,从站每正确处理一次就加 1。如果实际 WKC 与期望值不符,主站可以立即知道该数据报未被所有目标从站处理。常见异常与 WKC 表现如下:从站掉线时,WKC 减少;FMMU 配置错误时,WKC 可能为 0;数据报长度错误时,从站可能拒绝处理,WKC 不增加。主站应记录每个数据报的 WKC 偏差,并结合 AL Status 寄存器定位故障从站。

注意:WKC 只反映“从站是否处理了数据报”,不反映数据内容是否正确。如果从站处理了数据报但数据本身有误,WKC 仍然正常。因此,WKC 必须与过程数据校验、CRC 校验和从站状态监控结合使用,才能构成完整的可靠性诊断体系。

总结来说,EtherCAT 帧结构以标准以太网为基底,通过 EtherType 0x88A4 标识,利用数据报头中的命令字段实现自动增量、逻辑和广播三种寻址方式。自动增量寻址适合启动配置,逻辑寻址适合周期性过程数据,广播寻址适合全局命令。逻辑寻址通过 FMMU 实现多从站并行访问,是 EtherCAT 高实时性的核心。WKC 则提供了轻量级但有效的处理确认机制,是诊断与可靠性工程的重要抓手。理解这些机制,才能在配置、调试和排障中做出正确判断。