2. EtherCAT协议栈与OSI模型映射
EtherCAT 并不遵循传统以太网“每站收包—解析—再转发”的工作方式,它的核心思想是:主站发出一帧以太网报文,这帧报文像一列高速列车一样依次穿过所有从站,每个从站在报文经过自己的瞬间,用硬件读取或写入属于自己的那一段数据,然后立刻把报文交给下一个从站。整帧绕行一圈后返回主站,主站一次收发就完成了对所有从站的读写。理解这一机制,最有效的切入方式是把 EtherCAT 协议栈与 OSI 七层模型做一次映射,看清每一层到底承担了什么、哪些层被“压缩”甚至省略了。
一、协议栈与 OSI 模型的映射关系
标准以太网使用完整的七层模型,而 EtherCAT 只显式使用其中三层:物理层、数据链路层和应用层。网络层与传输层被省略,会话层、表示层也被合并进应用层。这种“瘦身”不是功能缺失,而是把原本由软件逐层处理的工作,下沉到从站控制器的硬件中完成。
物理层对应 OSI 第 1 层,负责电气信号、编码、介质与拓扑。EtherCAT 使用标准以太网物理层,100BASE-TX 双绞线、100BASE-FX 光纤都可以直接使用,因此布线、连接器、线缆测试工具与普通工业以太网完全兼容。数据链路层对应 OSI 第 2 层,是 EtherCAT 真正的“主战场”:它定义了 EtherCAT 帧格式、寻址方式、过程数据读写和邮箱通信,并由 ESC(EtherCAT Slave Controller,从站控制器)硬件实现。应用层对应 OSI 第 5~7 层,承载 CoE(CANopen over EtherCAT)、SoE(Servo over EtherCAT)、FoE(File over EtherCAT)等协议,负责对象字典、参数访问、固件下载等语义。
二、EtherCAT 帧结构与以太网类型字段
EtherCAT 直接封装在标准以太网帧中,关键标识是 EtherType 字段取值 0x88A4。网卡或交换机看到这个值,就知道载荷是 EtherCAT 数据,而不是 IP、ARP 或普通 VLAN 报文。一个 EtherCAT 帧的典型结构如下:
以太网帧
├─ 目的 MAC 地址(6 字节)
├─ 源 MAC 地址(6 字节)
├─ 以太网类型 = 0x88A4(2 字节)
├─ EtherCAT 帧头(2 字节:长度 + 类型)
├─ 子报文 1(Datagram)
│ ├─ 命令(1 字节)
│ ├─ 索引(1 字节)
│ ├─ 地址区(4 字节)
│ ├─ 长度(2 字节)
│ ├─ 保留(2 字节)
│ ├─ 数据(N 字节)
│ └─ 工作计数器 WKC(2 字节)
├─ 子报文 2 … 子报文 n
└─ FCS 帧校验序列(4 字节)
一帧中可以串联多个子报文,每个子报文独立寻址、独立读写、独立维护自己的工作计数器。子报文的命令字段决定了访问方式,常见命令包括:APRD(自动增量物理读)、APWR(自动增量物理写)、FPRD(配置地址读)、FPWR(配置地址写)、LRD(逻辑读)、LWR(逻辑写)、LRW(逻辑读写)。其中 LRW 最常用,因为它一次就能完成“读输入、写输出”两件事。
工作计数器 WKC 是 EtherCAT 数据链路层非常巧妙的设计。每个从站在处理子报文时,如果成功执行了读或写,就把该子报文的 WKC 加 1。主站收到返回帧后,检查每个子报文的 WKC 是否等于预期值,就能判断哪些从站参与了本次通信、是否有从站掉线或地址配置错误。例如主站预期某个 LRW 子报文应被 8 个从站处理,返回 WKC 只有 6,说明有 2 个从站没有响应,需要检查线缆、供电或从站配置。
三、过程数据对象与邮箱通信
EtherCAT 数据链路层提供两类通信服务:过程数据通信和邮箱通信。它们共用同一条物理链路,但用途、周期性和寻址方式完全不同。
过程数据对象(PDO)用于周期性实时数据交换。主站把所有从站的输入、输出映射到一段逻辑地址空间,通过 FMMU(Fieldbus Memory Management Unit,现场总线内存管理单元)把逻辑地址翻译成从站本地物理地址。每个从站只“认领”属于自己的那一段。例如一台伺服驱动器的 PDO 可能包含:控制字(2 字节)、目标位置(4 字节)、状态字(2 字节)、实际位置(4 字节)。主站每个周期用 LRW 命令读写这段逻辑地址,从站硬件在帧经过时直接完成数据搬运,不经过 CPU 中断和协议栈软件处理,因此循环周期可以做到 100 μs 甚至更短。
邮箱通信用于非周期性、可靠性要求高的数据交换,典型场景包括:SDO 读写对象字典参数、FoE 下载固件、EoE 传输 IP 报文。邮箱通信采用“握手 + 确认”机制,数据被分成多个报文传输,接收方确认后才继续下一段。它不占用周期性过程数据带宽,但延迟高于 PDO。工程上常见的做法是:设备上电初始化阶段用 SDO 配置参数,进入运行后用 PDO 周期交换实时数据。
四、映射关系带来的工程意义
理解协议栈映射,对实际部署有直接帮助。第一,物理层兼容标准以太网,意味着可以使用普通工业交换机、标准网线和光纤,但 EtherCAT 从站之间的“穿越”特性要求网络拓扑以线型或环型为主,普通交换机会打断这种穿越机制,因此从站之间不应插入普通交换机。第二,数据链路层由 ESC 硬件实现,所以从站响应时间与从站 CPU 性能基本无关,选型时更应关注 ESC 型号、端口数量和 FMMU/同步管理器资源。第三,应用层协议(CoE、SoE、FoE)决定了设备能否被主站识别和配置,调试时如果扫描不到从站,先查物理层链路和 EtherType 过滤,再查邮箱通信是否正常,最后才查应用层对象字典。
下表给出三层映射的关键对照,便于快速查阅:
| OSI 层 | EtherCAT 对应 | 关键机制 | 工程关注点 |
|---|---|---|---|
| L1 物理层 | 标准以太网 PHY | 100BASE-TX/FX、MII | 线缆、拓扑、端口 |
| L2 数据链路层 | ESC 硬件 | 0x88A4、子报文、WKC、FMMU | 从站响应、地址映射 |
| L5~L7 应用层 | CoE / SoE / FoE / EoE | 对象字典、SDO、PDO | 参数配置、固件升级 |
把这三层串起来看:物理层保证信号能到达每一个从站,数据链路层保证帧能高效穿越并完成读写,应用层保证数据有明确的语义。三者各司其职,才使 EtherCAT 在保持以太网兼容性的同时,获得硬实时性能。