2. EtherCAT帧结构与报文解析

EtherCAT 的高实时性并非来自某种“特殊网线”,而是来自它对标准以太网帧的巧妙利用。理解帧结构,是读懂 Wireshark 抓包、定位通信故障、回答面试报文分析题的基础。本节从以太网帧类型入手,逐层拆解 EtherCAT 数据报头、命令类型、寻址方式与工作计数器(WKC),最后给出可直接套用的报文分析思路。

一、EtherCAT 帧的“外壳”:以太网帧类型

EtherCAT 直接使用 IEEE 802.3 以太网帧格式,不依赖 IP 与 UDP/TCP。标准以太网帧由目的 MAC、源 MAC、类型/长度、数据和 FCS 组成。EtherCAT 的关键标识在“类型”字段:0x88A4。抓包时只要在 Wireshark 过滤器中输入 eth.type == 0x88A4,就能筛出所有 EtherCAT 帧。

目的 MAC 有三种典型取值,对应不同的通信场景:

  • 广播地址 FF:FF:FF:FF:FF:FF:主站首次扫描网络、尚未建立拓扑时使用。
  • 特定从站 MAC:用于直接寻址某个从站,常见于配置阶段。
  • 多播/逻辑寻址 MAC:过程数据交换阶段,主站用一个多播 MAC 让所有从站监听,从站按逻辑地址决定是否处理。

需要强调:EtherCAT 帧的以太网类型固定为 0x88A4,但帧内可以承载多个 EtherCAT 数据报(Datagram),每个数据报独立寻址、独立计数。这是 EtherCAT 高效的核心——一帧多用。

二、EtherCAT 数据报头:2 字节头 + 10 字节寻址

每个 EtherCAT 数据报由“数据报头”和“数据区”组成。数据报头共 12 字节,结构如下:

字段长度含义
命令 Cmd1 字节寻址方式与读写类型的组合编码
索引 Index1 字节帧内数据报序号,用于帧内定位
地址区4 字节由命令决定是逻辑地址还是物理地址
长度 Len2 字节数据区长度(不含头部),低位 11 位有效
保留 Reserved2 字节通常为 0
工作计数器 WKC2 字节从站处理该数据报时递增,主站据此判断是否被处理

其中“地址区”的 4 字节含义随命令变化:逻辑寻址时是 32 位逻辑地址;物理寻址时是 16 位从站地址 + 16 位偏移地址。长度字段的低 11 位表示数据长度,高 5 位保留,因此单个数据报数据区最大 2047 字节。

三、命令类型:寻址方式与读写操作的组合

命令字节的高 4 位表示寻址方式,低 4 位表示读写操作。常见命令如下:

  • APRD / APWR / APRW:Auto Increment 物理寻址,按拓扑顺序自动递增,用于启动扫描。
  • FPRD / FPWR / FPRW:Configured Station Address 物理寻址,用从站配置地址直接访问。
  • BRD / BWR / BRW:广播寻址,所有从站都处理。
  • LRD / LWR / LRW:逻辑寻址,过程数据交换的主力命令,配合 FMMU 使用。

面试常问:“过程数据用什么命令?”答案是 LRW(逻辑读写),因为它能在一帧内同时完成读输入和写输出,效率最高。而启动阶段扫描拓扑常用 BRD 或 APRD。

四、WKC 工作计数器:判断从站是否“接单”

WKC 是 EtherCAT 报文分析中最关键的字段。规则很简单:从站每成功处理一次数据报,WKC 就加 1。主站发送时把 WKC 置为期望值,从站处理后递增,主站收到后比对实际值。

举例:主站用 LRW 命令读写 3 个从站的输入输出,期望 WKC = 3。若收到 WKC = 2,说明有 1 个从站没有处理该数据报,可能原因包括:从站掉线、FMMU 配置错误、逻辑地址不匹配、从站未进入 OP 状态。若 WKC = 0,通常意味着整个逻辑寻址链路都没生效。

注意:WKC 是“处理次数”而非“从站数量”的绝对映射。一个从站可能对同一数据报处理多次(如多个 FMMU 映射),因此期望值要按实际配置计算,不能简单等于从站数。

五、面试常见报文分析题:从抓包到结论

下面给出一道典型分析题,并展示完整推理过程。

题目:主站抓到一个 EtherCAT 帧,内含 2 个数据报。数据报 1:Cmd = LRW,Index = 0,逻辑地址 0x00010000,Len = 8,WKC 发送值 2,接收值 2。数据报 2:Cmd = LRD,Index = 1,逻辑地址 0x00020000,Len = 4,WKC 发送值 1,接收值 0。请分析通信状态。

分析过程:

  1. 数据报 1 的 WKC 接收值等于发送值 2,说明该逻辑地址对应的 2 个从站都成功处理了读写操作,过程数据通道正常。
  2. 数据报 2 的 WKC 接收值为 0,期望为 1,说明没有从站处理该数据报。可能原因:该逻辑地址未映射到任何 FMMU;对应从站未进入 OP;或该从站掉线。
  3. 结合两个数据报,可判断:部分过程数据正常,但存在一个未生效的逻辑通道。应检查数据报 2 对应从站的 FMMU 配置和 AL 状态。

这道题考察的是“WKC 期望值 vs 实际值”的比对逻辑,以及从现象反推配置问题的能力。面试中只要能把 WKC 含义说清,并给出排查方向,基本就能过关。

六、可直接套用的报文分析检查表

面对任何 EtherCAT 抓包,可按以下顺序快速定位:

检查项观察点判断依据
以太网类型是否为 0x88A4不是则不是 EtherCAT 帧
命令类型LRW/LRD/BRD 等判断当前处于启动还是过程数据阶段
逻辑地址是否与 FMMU 配置一致不一致则从站不会处理
长度是否与过程数据长度匹配不匹配可能导致解析错位
WKC 期望值主站发送值由从站数量和 FMMU 映射决定
WKC 实际值主站接收值小于期望值说明有从站未处理

实际调试时,建议在 Wireshark 中同时打开“EtherCAT”解析树,逐层展开 Datagram,重点看 Cmd、Address、WKC 三个字段。若 WKC 异常,再回到主站配置工具检查 FMMU 和 SM 配置,形成“抓包—比对—回查配置”的闭环。

掌握帧结构与 WKC 逻辑后,后续学习分布时钟、状态机与过程数据映射时,就能把每个现象落到具体字段上,而不是停留在“通信不正常”的模糊判断。这正是 EtherCAT 工程师面试中区分“会用”和“懂原理”的关键分水岭。