首页 / 驱动算法 / EtherCAT专题

协议层:EtherCAT 帧、数据报与寻址机制

物理层解决"线怎么连",协议层解决"帧里装什么、怎么找到每个从站"。本文拆解 EtherCAT 帧结构、14 种命令、三种寻址方式,再讲清 FMMU、SyncManager、WKC 和分布式时钟 DC 这四大数据交换基石。

1. EtherCAT 帧:标准以太网帧里的"集装箱"

EtherCAT 不用 IP 包,而是把数据直接塞进标准以太网帧里,帧类型(EtherType)为 0x88A4。整体结构:

EtherCAT 帧 = 标准以太网头 + EtherCAT 头 + 若干数据报 + FCS

以太网头(14B) | EtherCAT头(2B) | 数据报1(头10B+数据+WKC 2B) | 数据报2 | … | FCS(4B)

一个以太网帧最多 1518 字节,一个数据报最多带 1486 字节过程数据;一帧里可装多个数据报,分别干不同的事

2. 数据报格式:箱子上写了什么

每个数据报 = 10 字节头 + 数据 + 2 字节 WKC。头字段逐个看:

字段长度含义
命令 Command1 B14 种命令之一,决定读/写/读写及寻址方式(见下)
索引 Index1 B主站生成的编号,用于匹配响应,区分多帧
地址 Address4 B32 位,内容随命令类型变化(位置/节点/逻辑地址)
长度 Length2 B数据段字节数
R / M / State2 bit / 1 bit / 3 bit保留位;M=后续是否还有数据报;State=从站状态回显
IRQ2 B中断请求位(事件通知主站)
数据 Data可变真正的过程数据/邮箱数据
WKC 工作计数器2 B每个从站执行一次操作就 +1/2/3,主站用它校验"该干的活都干了"

3. 命令与寻址:三种找从站的方式

EtherCAT 共有 14 种命令(0x00~0x0D),按寻址方式分三类:

寻址方式命令原理用途
位置寻址(自动增量)APRD / APWR / APRW / ARMW帧每过一个从站,地址自动 +1;地址为 0 的那个从站被命中——即"第一个从站是 0 号"上电扫描、初始配置(不依赖 SII 地址)
节点寻址(配置地址)FPRD / FPWR / FPRW / FRMW用从站 SII 里配置的 16 位站地址直接点名配置完成后的定向读写
逻辑寻址LRD / LWR / LRW主站把全网过程数据编排成一个"逻辑地址空间",从站用 FMMU 把自己的一段逻辑地址映射到本地内存周期过程数据(PDO)——同步多轴的核心
广播BRD / BWR不寻址,所有从站同时执行全局配置、同步命令
✅ 记牢这个分工

位置寻址负责"认人"(扫描建拓扑),节点寻址负责"点名"(读写寄存器),逻辑寻址负责"运货"(周期交换过程数据)。伺服控制跑起来后,主站几乎只发 LRW——一条命令同时"读所有轴的实际值 + 写所有轴的目标值"。

4. WKC:工作计数器,验收的"小票"

从站执行完数据报中的操作后,会把 WKC 递增:

主站发出前记录"期望 WKC",帧回来后比对"实际 WKC"。不一致就说明有从站没干活——丢站、断线、从站没准备好,第一时间从 WKC 对不上暴露出来。这是 EtherCAT 排障最重要的第一步。

⚠️ 现场排障第一课

多轴系统"偶尔丢一帧"往往就是 WKC 异常:某轴从站掉电/重启、看门狗超时、接线接触不良。主站日志里 WKC 期望 vs 实际不匹配,先看丢的是哪个逻辑地址段——对应的就是哪几根轴。

5. FMMU 与 SyncManager:数据怎么搬进搬出

5.1 FMMU(Fieldbus Memory Management Unit,现场总线内存管理单元)

逻辑寻址要靠 FMMU 落地。每个从站有若干 FMMU(如 ET1100 有 8 个),每个 FMMU 建立一段映射:逻辑地址范围 ↔ 从站本地物理内存。主站配置时告诉每个从站"你在逻辑空间里占哪一段"——这样 LRW 一帧扫过,每个从站自动取走/写回自己的那一段。

FMMU 映射示意

逻辑地址 0x1000~0x1003 → 从站2 的 输入缓存(实际位置/速度/状态)

逻辑地址 0x1200~0x1207 → 从站5 的输出缓存(目标位置/控制字)

主站视角:整个网络的输入/输出是一块连续的"虚拟内存",一个 LRW 全搞定

5.2 SyncManager(同步管理器)

SM 负责以太网侧(ESC)与本地 MCU 侧之间的数据搬运与握手,并产生中断/同步事件。典型分配:

MCU 收到 SM2 中断 → 立刻取走新目标值 → 执行 FOC 控制 → 把实际值写入 SM3 缓存,等下一帧被"飞读"走。

6. 分布式时钟 DC:让所有轴"同时动作"

多轴伺服最怕"各干各的"。EtherCAT 的 DC 机制让所有从站的本地时钟同步到同一个参考时钟,再各自产生同步信号(SYNC0/SYNC1),触发 ADC 采样和 PWM 更新——所有轴在同一时刻动作。

✅ 伺服常用配置

位置环周期 = Sync0 周期,通常 1 ms 或 250 µs;各从站用 ShiftTime 把中断相位错开,避免同时抢总线;DC 失锁后看门狗应在若干周期内让从站退到 SAFE-OP,保证安全。

7. 交互式演示:帧与数据报解析器

选择数据报数量,观察一个以太网帧如何容纳多个数据报,以及每个数据报头的字段占位。

EtherCAT 帧结构解析演示
以太网头 14B + EtherCAT头 2B + 每个数据报 10B头+数据+2B WKC;一帧可容纳多个数据报。

观察要点:EtherCAT 头只占 2 字节,真正的开销在数据报头;多个数据报可组合完成"过程数据 + 配置 + 诊断"等不同任务,一帧多用。

8. 协议层小结

  1. EtherCAT 帧 = 标准以太网帧(EtherType 0x88A4)+ EtherCAT 头 + 多个数据报
  2. 数据报 = 10B 头 + 数据 + 2B WKC;命令共 14 种
  3. 三种寻址:位置寻址扫描建图、节点寻址点名配置、逻辑寻址周期运数据
  4. WKC 是验收小票,主站靠它发现丢站/断线
  5. FMMU 把逻辑地址映射到本地内存,SM 负责以太网与 MCU 的数据握手
  6. DC 分布式时钟让所有轴在同一时刻动作,多轴同步的灵魂

下一篇讲主站:它是怎么扫描网络、配状态机、靠 DC 把整条产线"同步"起来的。