1. EtherCAT 帧:标准以太网帧里的"集装箱"
EtherCAT 不用 IP 包,而是把数据直接塞进标准以太网帧里,帧类型(EtherType)为 0x88A4。整体结构:
以太网头(14B) | EtherCAT头(2B) | 数据报1(头10B+数据+WKC 2B) | 数据报2 | … | FCS(4B)
一个以太网帧最多 1518 字节,一个数据报最多带 1486 字节过程数据;一帧里可装多个数据报,分别干不同的事
- EtherCAT 头(2 字节):11 位长度(后续所有数据报总长)+ 1 位保留 + 4 位类型(1=EoE、2=CoE、3=FoE、4=SoE;周期过程数据不走邮箱)
- 数据报(Datagram):EtherCAT 的基本传输单元,类似"集装箱",每个箱子上写着发给谁、干什么
2. 数据报格式:箱子上写了什么
每个数据报 = 10 字节头 + 数据 + 2 字节 WKC。头字段逐个看:
| 字段 | 长度 | 含义 |
|---|---|---|
| 命令 Command | 1 B | 14 种命令之一,决定读/写/读写及寻址方式(见下) |
| 索引 Index | 1 B | 主站生成的编号,用于匹配响应,区分多帧 |
| 地址 Address | 4 B | 32 位,内容随命令类型变化(位置/节点/逻辑地址) |
| 长度 Length | 2 B | 数据段字节数 |
| R / M / State | 2 bit / 1 bit / 3 bit | 保留位;M=后续是否还有数据报;State=从站状态回显 |
| IRQ | 2 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 递增:
- 读(如 APRD):WKC +1
- 写(如 APWR):WKC +1
- 读+写(如 LRW):WKC +2
主站发出前记录"期望 WKC",帧回来后比对"实际 WKC"。不一致就说明有从站没干活——丢站、断线、从站没准备好,第一时间从 WKC 对不上暴露出来。这是 EtherCAT 排障最重要的第一步。
多轴系统"偶尔丢一帧"往往就是 WKC 异常:某轴从站掉电/重启、看门狗超时、接线接触不良。主站日志里 WKC 期望 vs 实际不匹配,先看丢的是哪个逻辑地址段——对应的就是哪几根轴。
5. FMMU 与 SyncManager:数据怎么搬进搬出
5.1 FMMU(Fieldbus Memory Management Unit,现场总线内存管理单元)
逻辑寻址要靠 FMMU 落地。每个从站有若干 FMMU(如 ET1100 有 8 个),每个 FMMU 建立一段映射:逻辑地址范围 ↔ 从站本地物理内存。主站配置时告诉每个从站"你在逻辑空间里占哪一段"——这样 LRW 一帧扫过,每个从站自动取走/写回自己的那一段。
逻辑地址 0x1000~0x1003 → 从站2 的 输入缓存(实际位置/速度/状态)
逻辑地址 0x1200~0x1207 → 从站5 的输出缓存(目标位置/控制字)
主站视角:整个网络的输入/输出是一块连续的"虚拟内存",一个 LRW 全搞定
5.2 SyncManager(同步管理器)
SM 负责以太网侧(ESC)与本地 MCU 侧之间的数据搬运与握手,并产生中断/同步事件。典型分配:
- SM0:邮箱接收(主站→从站,CoE/Sdo 等)
- SM1:邮箱发送(从站→主站)
- SM2:过程数据输出(主站→从站,目标值/控制字)
- SM3:过程数据输入(从站→主站,实际值/状态字)
MCU 收到 SM2 中断 → 立刻取走新目标值 → 执行 FOC 控制 → 把实际值写入 SM3 缓存,等下一帧被"飞读"走。
6. 分布式时钟 DC:让所有轴"同时动作"
多轴伺服最怕"各干各的"。EtherCAT 的 DC 机制让所有从站的本地时钟同步到同一个参考时钟,再各自产生同步信号(SYNC0/SYNC1),触发 ADC 采样和 PWM 更新——所有轴在同一时刻动作。
- 参考时钟:通常选第一个支持 DC 的从站;主站再把参考时钟校准到主站时钟
- 传播延迟测量:上电时主站测量每个从站相对参考时钟的线缆/转发延迟并补偿
- 漂移补偿:每周期微调各从站本地时钟速率,抵消晶振漂移
- 效果:规范要求同步抖动 < 1 µs,工程上常做到 ±100 ns 量级;多轴插补必须开 DC
位置环周期 = Sync0 周期,通常 1 ms 或 250 µs;各从站用 ShiftTime 把中断相位错开,避免同时抢总线;DC 失锁后看门狗应在若干周期内让从站退到 SAFE-OP,保证安全。
7. 交互式演示:帧与数据报解析器
选择数据报数量,观察一个以太网帧如何容纳多个数据报,以及每个数据报头的字段占位。
观察要点:EtherCAT 头只占 2 字节,真正的开销在数据报头;多个数据报可组合完成"过程数据 + 配置 + 诊断"等不同任务,一帧多用。
8. 协议层小结
- EtherCAT 帧 = 标准以太网帧(EtherType 0x88A4)+ EtherCAT 头 + 多个数据报
- 数据报 = 10B 头 + 数据 + 2B WKC;命令共 14 种
- 三种寻址:位置寻址扫描建图、节点寻址点名配置、逻辑寻址周期运数据
- WKC 是验收小票,主站靠它发现丢站/断线
- FMMU 把逻辑地址映射到本地内存,SM 负责以太网与 MCU 的数据握手
- DC 分布式时钟让所有轴在同一时刻动作,多轴同步的灵魂
下一篇讲主站:它是怎么扫描网络、配状态机、靠 DC 把整条产线"同步"起来的。