EtherCAT

EtherCAT 协议详解


一、概述

1.1 什么是 EtherCAT

EtherCAT(Ethernet for Control Automation Technology,以太网控制自动化技术)是一种实时工业以太网技术,由德国 Beckhoff(倍福)2003 年推出,现由 ETG(EtherCAT Technology Group,EtherCAT 技术组织) 负责维护。

它解决了传统现场总线(如 RS-485、CAN、PROFIBUS)速率低、实时性差,以及标准以太网在硬实时控制场景下延迟/抖动过大的问题,是当前工业自动化领域应用最广的实时以太网方案之一。

它不是像普通以太网那样把帧发给一台设备,而是让一帧穿过所有设备,每台设备在帧经过时顺便读写自己的数据(Processing on the Fly,飞梭式处理),一帧就能完成整个网络的数据交换。

1.2 为什么需要 EtherCAT

痛点一:传统现场总线太慢太笨

总线 主要局限
RS-485 / Modbus RTU 半双工、主从轮询、一帧一问一答、节点少
CAN 每帧最多 8 字节数据、仲裁机制、速率低
PROFIBUS DP 主从轮询,一个周期要访问每个从站
传统现场总线通病 逐站询问:主站必须为每个从站单独发一帧,从站越多周期越长

在伺服多轴同步、高速视觉检测等场景下,要求所有设备在同一时刻采样/输出,且周期短至 100 µs 甚至更低——传统总线根本无法满足。

痛点二:标准以太网不适合硬实时

标准以太网问题 原因 对实时控制的影响
交换机转发延迟 store-and-forward(存转发) 每经过一台交换机增加几十 µs 延迟
抖动 排队、拥塞、MAC 层竞争 设备动作时间不确定
协议栈开销 TCP/IP 协议处理、CPU 参与 延迟大、占用 CPU
数据利用率低 每帧只服务一台设备 带宽浪费严重

标准以太网虽然快(100 Mbps 起步),但帧寻址 + 交换机转发的模型是为 IT 场景设计的,不保证确定性——数据到达时间不可预测,而工业控制恰恰最需要确定性。

EtherCAT 的思路:

  1. 保留以太网的物理层(网线、PHY、100BASE-TX),成本低、基础设施现成;
  2. 丢弃以太网的帧寻址 + 交换机模型,改为主站发帧、帧穿过所有从站、各从站就地处理
  3. 帧内封装多个数据报,每个数据报可对应一组设备的输入/输出数据;
  4. 分布式时钟(DC,详见第十章) 把网络内所有设备的时钟同步到 <1 µs,实现同时动作。

EtherCAT = 以太网的物理层 + 现场总线的共享总线思想 + 硬件级的处理速度。

1.3 核心特点总览

特点 说明
飞梭式处理 帧穿过从站时被硬件即时读写,延迟仅几十 ns
单帧多设备 一帧可含最多 15 个数据报,承载整个网络的数据
全双工利用 下行(发数据)+ 上行(回读数据)同时进行
拓扑灵活 线型、树型、星型、环型均可,最大 65535 个节点
同步精度高 分布式时钟同步,抖动 < 1 µs
无需交换机 从站本身就是转发器,级联无延迟累积
主站成本低 只需要一个标准以太网口,无需专用网卡
从站成本低 用专用 ESC 芯片(如 ET1100,详见第八章),几块钱即可实现

1.4 阅读地图(术语会"先用后讲")

本笔记按"帧 → 寻址 → 从站硬件 → 状态机 → 应用层"递进,部分术语会先出现、后详解。读到卡住时回来看这张表:

遇到这个词 首次出现在 详细讲解在
ESC(从站控制器芯片) 第 3 章(飞梭式处理) 第 8 章
命令(LRW / FPRD 等) 第 4 章(报文示例) 第 6 章
WKC(工作计数器) 第 4 章(数据报结构) 第 7 章
FMMU(逻辑地址映射表) 第 4 章(报文示例)/ 第 5 章(逻辑寻址) 8.7 节
SM(同步管理器) 第 5 章(启动流程) 8.8 节
状态机(INIT / OP 等) 第 4 章(报文示例) 第 9 章
DC(分布式时钟) 第 1 章(概述) 第 10 章
邮箱 Mailbox 第 4 章(数据报) 11.2 节
CoE(应用层协议) 第 9 章(启动流程) 11.3 节

二、基础知识铺垫(简要回顾)

2.1 标准以太网帧回顾

EtherCAT 直接使用标准以太网帧(IEEE 802.3),因此先回顾帧格式:

+----------------+----------------+------------+---------------------------+----------+
| 目的MAC (6B)   | 源MAC (6B)     | EtherType  | 载荷 Data (46~1500B)      | FCS (4B) |
+----------------+----------------+------------+---------------------------+----------+

目的 MAC 前面其实还有前导码(Preamble,7 字节)和帧起始定界符(SFD,1 字节)。它们属于物理层,由 PHY 芯片发送时自动添加、接收时自动剥除,不算 MAC 帧的一部分,所以帧格式图通常从目的 MAC 画起。线上完整顺序为:前导码 → SFD → 目的 MAC → … → FCS,相邻帧之间还有 12 字节帧间隙(IFG)。上面说的 64/1518 字节帧长均不含前导码和 SFD。

  • MAC 地址:6 字节,用于标识网卡。
  • EtherType:2 字节,标识上层协议类型。例如 0x0800 = IPv4,0x86DD = IPv6,0x88A4 = EtherCAT
  • 最小帧长:64 字节(不含前导码)。不足时填充 Padding。
  • 最大帧长:1518 字节(不含前导码),对应 MTU 1500 字节的 IP 载荷。
  • FCS:4 字节 CRC 校验。

EtherCAT 只把 EtherType 换成 0x88A4,把载荷区域全部用于自己的数据报,完全绕开了 IP/TCP/UDP 协议栈。

2.2 为什么标准以太网不适合硬实时

因素 说明
CSMA/CD 与交换式网络 现代以太网多为交换式,交换机采用存转发(store-and-forward),先收完整帧再转发,每跳增加延迟
排队与拥塞 多端口同时发数据时,交换机内部排队,延迟不可预测(抖动)
TCP/IP 协议栈 协议处理需要 CPU 参与,中断、调度都会引入不确定性
带宽浪费 传统工业以太网(如 Modbus TCP)仍是一帧一问一答,100 台设备就要 100 帧

确定性是工业实时通信的核心:数据必须在确定的时间内到达。标准以太网做不到,EtherCAT 通过单帧穿透 + 硬件处理做到了。


三、核心工作原理(重点)

3.1 飞梭式处理(Processing on the Fly)

EtherCAT 最核心的思想可以用一张图概括:

flowchart LR M["主站(Master)"] S1["从站1"] S2["从站2"] S3["…"] SN["从站N"] M -->|"发送一帧(内含所有从站的数据报)"| S1 S1 -->|"帧经过时读写数据"| S2 S2 -->|"帧经过时读写数据"| S3 S3 -->|"帧经过时读写数据"| SN SN -->|"末站折返,送回主站"| M

具体过程:

  1. 主站发送:主站把一帧(内含所有从站的数据报)从端口 A 发出,向下游传播。
  2. 从站就地处理:每个从站的 ESC(EtherCAT Slave Controller,从站控制器,从站的核心芯片,详见第八章)在帧经过时,以纯硬件方式:
    • 读取属于自己的数据(如输出数据);
    • 写入自己的数据(如输入数据);
    • 整个过程只有几十纳秒的硬件传播延迟,不需要 CPU 参与,不需要存储转发。
  3. 末站折返:最后一个从站检测到端口无链接/未开放,利用以太网的全双工特性把帧原路折返回主站。
  4. 主站回收:主站收到返回的帧,其中的数据已经被所有从站填好,直接 DMA 进内存即可使用。

从站处理的是帧经过时的瞬间窗口:每个从站都像一个偷看/改写帧内容的小窗口,处理延迟是纳秒级的硬件延迟,与从站数量几乎无关。

全网只有一个主站:EtherCAT 段内只有主站能主动发帧,从站只转发。这避免了总线竞争,保证了实时性。

3.2 与传统通信方式的对比

传统现场总线(逐站轮询):

主站 ──▶ 从站1 ──▶ 主站   (一问一答,1 次)
主站 ──▶ 从站2 ──▶ 主站   (一问一答,2 次)
主站 ──▶ 从站3 ──▶ 主站   (一问一答,3 次)
...(N 个从站需要 N 帧)

EtherCAT(单帧穿透):

主站 ──▶ 从站1 ──▶ 从站2 ──▶ 从站3 ──▶ ... ──▶ 从站N ──折返──▶ 主站
        (1 帧搞定所有从站,帧里同时携带了读写数据)

3.3 全双工与有效数据率

  • 以太网全双工下,发送和接收可以同时进行。
  • EtherCAT 主站发帧的同时,折返回来的上一帧正在被接收——收发并行,理论上限是 2 × 100 Mbit/s
  • 因为数据报几乎填满了整帧(无 IP/TCP 头、无逐站寻址开销),有效数据率可超过 90%,远超传统一帧一问一答的工业以太网(通常 < 50%)。

四、帧结构详解

4.1 总体布局

EtherCAT 帧直接复用标准以太网帧(从左到右为线上发送顺序):

+---------------+-------------+-----------+-----------------+---------------------------+---------+----------+
| 目的 MAC (6B) | 源 MAC (6B) | EtherType | EtherCAT 头(2B) | EtherCAT 数据报区(≤1498B) | Padding | FCS (4B) |
+---------------+-------------+-----------+-----------------+---------------------------+---------+----------+

从左往右读。前 14 字节(目的 MAC + 源 MAC + EtherType)合起来就是标准以太网头;EtherCAT 头紧跟在它后面(第 14~15 字节),所以看起来粘在一起;从第 16 字节开始才是数据报区。EtherType 填 0x88A4 表示这是 EtherCAT 帧,EtherCAT 头内部的 Length / Reserved / Type 三部分见 4.2 节。

字段 长度 说明
目的 MAC 6 B 通常为广播地址 FF:FF:FF:FF:FF:FF(主站→所有从站)
源 MAC 6 B 主站网卡 MAC
EtherType 2 B 0x88A4,以太网类型字段标识这是 EtherCAT 帧
EtherCAT 头 2 B Length + Reserved + Type(见下)
数据报区 ≤ 1498 B 1~15 个数据报
Padding 0~32 B 整帧不足 64 字节时补齐
FCS 4 B 帧校验序列(CRC-32)

一个以太网帧最多 1518 字节,其中以太网头 14 B + FCS 4 B,所以数据报区最多 1500 - 2(EtherCAT 头)= 1498 字节,最多拆成 15 个数据报

4.2 EtherCAT 头(2 字节)

 15    12 11    11 10                                  0
+--------+---------+------------------------------------+
|  Type  | Reserved|              Length               |
| (4bit) |  (1bit) |              (11bit)              |
+--------+---------+------------------------------------+
字段 说明
Length bit 0~10(11 位) 后面所有数据报的总长度(不含 FCS)
Reserved bit 11(1 位) 保留,必须为 0
Type bit 12~15(4 位) 协议类型,0x1 = EtherCAT 数据报(从站只支持此类型)

4.3 EtherCAT 数据报(Datagram)结构

数据报是 EtherCAT 通信的基本单元,包含报头 + 数据 + 工作计数器(WKC)

+----------------+----------------+----------------+-------------+-------------------+
| 数据报头 (10B)  |      Data      |   WKC (2B)     |             |                   |
+----------------+----------------+----------------+             |                   |
| Cmd(1B) Idx(1B) | 要被读/写的数据 | 工作计数器     |  ← 一个数据报 |  ← 下一个数据报 ... |
| Address(4B)     | (0~1486B)     | (Working       |             |                   |
| Len(11bit)      |               |  Counter)      |             |                   |
| R(3) C(1) M(1)  |               |                |             |                   |
| IRQ(2B)         |               |                |             |                   |
+----------------+----------------+----------------+-------------+-------------------+

数据报头逐字段详解:

字段 长度 说明
Cmd 1 B EtherCAT 命令类型(见第六章,共 15 种)
Idx 1 B 索引号,主站用来识别重复/丢失的数据报(从站不得修改)
Address 4 B 地址:位置地址 / 节点地址 / 逻辑地址(见第五章)
Len 11 bit 本数据报中 Data 的长度(0~1486 字节)
R 3 bit 保留,必须为 0
C 1 bit 循环标志:0 = 帧未循环;1 = 帧已循环一圈(用于环网冗余检测)
M 1 bit 多数据报标志:0 = 这是最后一个数据报;1 = 后面还有数据报
IRQ 2 B 事件请求寄存器,所有从站的事件请求逻辑或汇总
Data n B 实际读/写的数据
WKC 2 B Working Counter,工作计数器(见第七章)

多个数据报可以共存于一帧:例如一帧里可以同时放周期过程数据(LRW)、非周期邮箱数据(FPRW,邮箱机制见 11.2 节)、诊断数据(FPRD)(LRW/FPRW/FPRD 等命令的完整列表见第六章),主站自由组合。

4.4 实际报文示例

以下为说明性示例(构造的典型报文),字段遵循协议规则,实际抓包中的数值会不同。

术语预告(避免卡住):下面的示例会用到几个后面章节才详解的术语,先给一句话提示:

  • OP:从站的运行状态(从站状态机见第九章)
  • LRW / FPRD:EtherCAT 命令,LRW=逻辑读写、FPRD=节点地址读(完整命令表见第六章)
  • FMMU:从站内部的"逻辑地址 ↔ 本地内存"映射表(见 5.4 节 / 8.7 节)
  • 节点地址:主站给从站分配的固定地址(寻址方式见 5.2 节)
  • AL Status:从站的应用层状态寄存器(见 8.3 节)
  • WKC:工作计数器,主站用它验证数据交换是否成功(见第七章)

下面的表格是一整帧的逐字节列表,偏移列 = 字节在帧里的位置(从 0 开始数)。以示例 1 为例,整帧 72 字节的结构对应关系如下:

+----------+--------+-----------+-------------+----------+-----------+-------+-------+
| 目的 MAC | 源 MAC | EtherType | EtherCAT 头 | 数据报头 | 数据 Data |  WKC  |  FCS  |
+----------+--------+-----------+-------------+----------+-----------+-------+-------+
|   (6B)   |  (6B)  |   (2B)    |    (2B)     |   (10B)   |   (40B)    | (2B)  | (4B)  |
+----------+--------+-----------+-------------+----------+-----------+-------+-------+
|  00-05   | 06-11  |   12-13   |    14-15    |  16-25   |   26-65   | 66-67 | 68-71 |
+----------+--------+-----------+-------------+----------+-----------+-------+-------+

(整帧 72 字节 = 以太网头(目的 MAC + 源 MAC + EtherType,共 14B)+ EtherCAT 头(2B)+ 一个数据报(数据报头 10B + 数据 40B + WKC 2B,共 52B)+ FCS(4B)。因为数据报头的 M=0 表示后面没有更多数据报了,所以数据报区只有一个数据报。偏移 00-15 是帧头部分,16-25 是数据报头,26 开始才是真正的数据。)

示例 1:OP 状态下的周期过程数据交换(LRW,40 字节过程数据)

偏移    十六进制字节(HEX)                                  说明
─────────────────────────────────────────────────────────────────────
00-05   FF FF FF FF FF FF                                  目的 MAC(广播)
06-11   00 01 02 03 04 05                                  源 MAC(主站)
12-13   88 A4                                              EtherType = 0x88A4 (EtherCAT)
14-15   34 10                                              EtherCAT 头: Length=0x034(52B), Type=0x1
16      0B                                                 Cmd = 0x0B (LRW 逻辑读写)
17      00                                                 Idx = 0
18-21   00 10 00 00                                        逻辑地址 0x00001000 (FMMU 映射)
22-23   28 00                                              Len=0x28(40), R=0, C=0, M=0(最后一个数据报)
24-25   00 00                                              IRQ = 0x0000
26-65   55 AA 55 AA ...(40 字节过程数据)                    输出(主站→从站) / 输入(从站→主站) 数据
66-67   00 00                                              WKC(返回后与主站预期值比对;LRW 每成功处理一个从站 +3,见第七章)
68-71   ...(FCS)                                          CRC-32 校验
  • 数据报区总长 = 10(头)+ 40(数据)+ 2(WKC)= 52 = 0x034,正好填在 EtherCAT 头的 Length 字段。
  • 逻辑地址 0x00001000 由各从站的 FMMU(逻辑地址映射表,概念见 5.4 节、寄存器细节见 8.7 节)分别映射,因此一个数据报可以同时被多个从站处理

示例 2:启动时用 FPRD 读取从站 1 的 AL Status 寄存器

偏移    十六进制字节(HEX)                                  说明
─────────────────────────────────────────────────────────────────────
12-13   88 A4                                              EtherType = 0x88A4
14-15   0E 10                                              EtherCAT 头: Length=0x00E(14B), Type=0x1
16      04                                                 Cmd = 0x04 (FPRD 节点地址读)
17      01                                                 Idx = 1
18-21   01 00 30 01                                        节点地址=0x0001, 偏移=0x0130 (AL Status)
22-23   02 00                                              Len=2, M=0
24-25   00 00                                              IRQ
26-27   [2 字节返回数据]                                     AL Status 的值
28-29   00 01                                              WKC = 1(1 个从站成功处理)
  • FPRD 用节点地址寻址单个从站,常用于启动阶段读写寄存器、配置参数。
  • 节点地址 0x0001 是主站在启动扫描后为从站分配的配置站地址。
  • 示例 2 结构与示例 1 相同,只是数据区只有 2 字节:帧头在偏移 12-15,数据报头在 16-25,返回数据在 26-27,WKC 在 28-29。

五、寻址方式

EtherCAT 提供 4 种寻址方式,分别用于不同阶段:

寻址方式 英文 用途阶段 特点
位置寻址 Position / Auto-Increment 启动时扫描拓扑 按物理位置(距离主站的远近)寻址
节点寻址 Node / Configured Station 启动后配置、单站访问 按主站分配的固定站地址寻址
广播寻址 Broadcast 启动初始化、全局操作 同时访问所有从站
逻辑寻址 Logical 运行时的周期过程数据 按 4GB 逻辑地址空间寻址,配合 FMMU

5.1 位置寻址(Position Addressing / 自动增量)

数据报 Address = [Position(2B) | Offset(2B)]
  • 发送端(主站):Position 字段填一个负值(二进制补码)。想寻址第 1 个从站就填 0xFFFF(即 -1),第 2 个填 0xFFFE(即 -2)……也就是 发送值 = 0xFFFF −(目标从站序号 − 1)
  • 接收端(从站):每个从站把 Position 加 1,加完若等于 0,说明自己就是被寻址的从站;否则只转发、不改动。
  • Offset 字段指向该从站 ESC 内部的寄存器/内存偏移
主站想寻址第 1 个从站 → 发送 Position = 0xFFFF(-1)
  从站1: 收到 0xFFFF → +1 → 0x0000 → 等于0!从站1 是目标,就地处理
  从站2: 收到 0x0000 → +1 → 0x0001 → 非零,仅转发
  从站3: 收到 0x0001 → +1 → 0x0002 → 非零,仅转发
  ...

用途:位置寻址用于启动时扫描网络拓扑——主站通过逐站 APRD 读取每个从站的类型、名称,从而知道整条链上有哪些设备、什么顺序。因为运行中热插拔后位置会变化,所以运行阶段一般不使用位置寻址

5.2 节点寻址(Node Addressing / 配置站地址)

数据报 Address = [StationAddress(2B) | Offset(2B)]
  • 主站在启动阶段为每个从站分配一个唯一的 Configured Station Address(配置站地址)(写入从站寄存器 0x0010)。
  • 该地址从站不能自行修改,由主站写入。
  • 另有 Configured Station Alias(站别名)(寄存器 0x0012,来自 ESI-EEPROM 或拨码开关),主站可启用别名寻址。

用途:节点寻址用于运行阶段对单个特定从站进行非周期访问(读寄存器、写参数、邮箱通信等)。即使拓扑变化,只要站地址不变,访问依然有效。

5.3 广播寻址(Broadcast)

  • 所有从站都处理该数据报(读时对数据做逻辑或,写时都写入)。
  • Position 字段仍会被逐站加 1,但不用于寻址。
  • 常用于初始化所有从站(如广播复位、广播写地址等)。

典型应用:启动时主站用 BRD 一次性读取所有从站的 AL Status,判断全网是否就绪。

5.4 逻辑寻址(Logical Addressing)

数据报 Address = [LogicalAddress(4B)]
  • 这是一个 4 字节(4 GB)的逻辑地址空间,不属于任何单个从站。
  • 每个从站的 FMMU(现场总线内存管理单元) 把逻辑地址的某一段映射到本从站 ESC 的物理内存。
  • 多个从站可以把不同 FMMU 配置到同一逻辑地址区间,一个数据报就能同时读写多个从站的数据,这是过程数据周期通信的基础。
逻辑地址 0x00001000~0x0000101F(32 字节的过程映像)
     │
     ├── FMMU(从站1): 0x1000~0x1003 → 从站1 的输入寄存器(4 字节)
     ├── FMMU(从站2): 0x1004~0x100B → 从站2 的输入寄存器(8 字节)
     └── FMMU(从站3): 0x100C~0x101F → 从站3 的输入/输出(20 字节)
  • FMMU 支持位级(bitwise)映射,可以精细到半个字节甚至 1 位,不浪费带宽。
  • 主站在启动时通过 FPRW 配置每个从站的 FMMU 寄存器。

FMMU 就像信箱分配表:逻辑地址空间是一整条传送带,每个从站被分配了传送带上的某几格;数据报经过时,从站只搬走/放进属于自己的那几格。

逻辑地址与 FMMU 到底是什么关系?

一句话:逻辑地址是"帧上的坐标",FMMU 是"从站内部认领坐标的映射表",二者靠区间匹配建立联系。

  • 逻辑地址(在帧里):写在数据报头的 Address 字段,是主站定义的全局虚拟坐标,不属于任何从站。它只描述"这批数据在帧的哪个位置",主站可以自由编排哪个从站的数据放哪一段。
  • FMMU(在从站里):由主站启动时写入从站的映射表,声明"逻辑地址区间 [X, X+Len) ↔ 我本地内存 [Y, Y+Len),方向读/写"。
  • 联系(区间匹配):帧经过从站时,ESC 硬件把帧里的逻辑地址与自己所有 FMMU 配置的区间比对,落在哪个区间就按对应 FMMU 的方向处理那一段字节。
主站发 LRW:逻辑地址 = 0x1000,Len = 32 字节
        │
        ▼ 帧经过
从站1  FMMU 认领 [0x1000, 0x1004) → 处理自己的 4 字节
从站2  FMMU 认领 [0x1004, 0x100C) → 处理自己的 8 字节
从站3  FMMU 认领 [0x100C, 0x1020) → 处理自己的 20 字节

为什么需要这层映射? 因为每个从站 ESC 的本地内存都是从 0x1000 开始的统一布局,而主站需要由自己自由编排的全局地址空间。没有 FMMU,主站就得硬编码"第几个从站的数据在第几段"的绑定关系,无法灵活组态。

5.5 四种寻址方式的协作流程

flowchart TD subgraph 启动阶段 S1["扫描拓扑<br/>位置寻址 APRD<br/>认出每个从站"] S2["分配站地址<br/>节点寻址 FPRD/FPWR<br/>写入寄存器 0x0010"] S3["配置从站<br/>配置 FMMU / SM"] S1 --> S2 --> S3 end subgraph 运行阶段 R1["逻辑寻址 LRW<br/>周期过程数据交换"] R2["节点寻址 FPRW<br/>非周期访问"] end S3 --> R1 S3 --> R2

图中"配置 FMMU/SM"里的 FMMU(逻辑映射,见 8.7 节)和 SM(同步管理器,见 8.8 节)是第 8 章的主题,此处先知道"它们都是启动时由主站写入从站的配置"即可。


六、EtherCAT 命令类型

EtherCAT 定义了 15 种命令(0x00 ~ 0x0E),分为三大类:自动增量(位置)、节点(配置地址)、逻辑(FMMU)

代码 名称 行为 典型用途
0x00 NOP 无操作,从站忽略 填充
0x01 APRD 自动增量读(位置为 0 的从站读) 启动扫描拓扑
0x02 APWR 自动增量写 启动时写站地址
0x03 APRW 自动增量读写(先读后写) 扫描 + 配置
0x04 FPRD 节点地址读 读单站寄存器
0x05 FPWR 节点地址写 写单站寄存器/配置
0x06 FPRW 节点地址读写 单站寄存器读写
0x07 BRD 广播读(所有从站数据逻辑或) 读所有从站的公共状态
0x08 BWR 广播写(所有从站都写) 广播配置/复位
0x09 BRW 广播读写 很少使用
0x0A LRD 逻辑读(FMMU 映射区域读) 周期读输入数据
0x0B LWR 逻辑写 周期写输出数据
0x0C LRW 逻辑读写(最常用) 周期过程数据交换
0x0D ARMW 自动增量读多写(位置 0 读,其余写) 从站间通信
0x0E FRMW 节点地址读多写 从站间通信(少见)

命令命名规律:

前缀 含义 后缀 含义
AP Auto-Increment(自动增量/位置寻址) RD Read(读)
FP Fixed Position / Configured(节点寻址) WR Write(写)
B Broadcast(广播) RW Read-Write(读写)
L Logical(逻辑寻址)
ARM / FRM ...Read Multiple Write(读多写)

读写组合命令(RW)的处理顺序:先执行读,再执行写(同一内存区域),WKC 会分别累加(见第七章)。


七、Working Counter(WKC,工作计数器)

7.1 什么是 WKC

每个数据报末尾都有一个 2 字节的 工作计数器每个成功处理了该数据报的从站都会按命令类型对 WKC 累加(读命令 +1、写命令 +2、读写命令 +3,见 7.2 节)。主站通过比对预期 WKC 与返回 WKC 来确认数据交换是否完整成功。

7.2 WKC 累加规则

命令类型 处理结果 WKC 变化
读命令(RD) 读成功 +1
读命令 失败 不变
写命令(WR) 写成功 +2
写命令 失败 不变
读写命令(RW) 读成功 +1
读写命令 写成功 +2
读写命令 读 + 写都成功 +3

为什么写命令是 +2? WKC 的 16 位中最低两位分工:bit0 记读、bit1 记写。从站读成功 → bit0 +1(数值 +1);写成功 → bit1 +1(数值 +2);读写都成功 → +3。这样主站能从 WKC 数值区分"读成功几个、写成功几个"。

常见误区:网上很多教程说"写命令 WKC +1",是把 WKC 简化为"成功处理的从站数"——这只对读命令成立

7.3 主站如何用 WKC

  1. 主站发出数据报前,把 WKC 清零(或设为已知值)。
  2. 帧返回后,主站读取 WKC。
  3. 预期值比对(例如纯读命令 FPRD 只寻址 1 个从站,则预期 WKC=1;LRW 被 3 个从站处理且读写都成功,则预期 WKC=3×3=9):
    • 相等 → 所有目标从站都成功处理,数据有效,可使用;
    • 不相等 → 有从站未成功处理(掉线/未就绪/地址错误),主站丢弃该数据报的数据,并借助从站状态寄存器定位故障。

例如 4.4 节示例 2 中,FPRD 只寻址 1 个从站,返回 WKC=1 表示读取成功;如果从站不在线,返回 WKC=0,主站就知道这个从站没响应。

WKC 是 EtherCAT 最实用的诊断手段之一:通过对比每个数据报的 WKC,主站可以精确知道哪个数据报、涉及哪些设备的数据出了问题。


八、从站控制器 ESC 与从站硬件

8.1 ESC 的角色

每个 EtherCAT 从站的核心是一颗 ESC(EtherCAT Slave Controller,EtherCAT 从站控制器)。它负责:

  • 接收、分析、转发 EtherCAT 帧(纯硬件,纳秒级延迟);
  • 在帧经过时实时读写数据(Processing on the Fly 的硬件实现);
  • 提供寄存器空间、过程数据内存、邮箱缓冲;
  • 与从站应用(MCU/IO)通过 PDI 接口交换数据。

ESC 是 EtherCAT 实时性的基石:网络性能不依赖从站 CPU 的性能,只要 ESC 硬件正确,无论从站应用多简单,实时性都有保障。简单从站甚至不需要 MCU,IO 直接接在 ESC 上。

8.2 ESC 的实现形式

实现形式 例子 特点
ASIC 专用芯片 Beckhoff ET1100 / ET1200 成本低、性能稳定、功耗低,最主流
FPGA 各厂商 IP 核 灵活、可集成、适合大批量/特殊需求
集成到 MCU/SoC TI、NXP、瑞萨等集成 ESC 减小体积、降低成本,适合驱动器等复杂设备

8.3 ESC 的内存布局

一个 ESC 的地址空间最大 64 KB(0x0000 ~ 0xFFFF)

+----------------------------+  0x0000
|    寄存器区 (Registers)     |  ← 4KB:类型、地址、状态、控制等
|    0x0000 ~ 0x0FFF         |
+----------------------------+  0x1000
|    过程数据区 (PDO 内存)    |  ← 最大 60KB:输入/输出过程数据、邮箱缓冲
|    0x1000 ~ 0xFFFF         |
+----------------------------+

内存布局里两个词先说明一下:PDO(Process Data Object,过程数据对象)是应用层协议 CoE 的术语,见 11.3 节;邮箱(Mailbox)机制见 11.2 节。目前只需理解:这块区域存放"周期交换的过程数据"和"非周期通信的邮箱数据"。

常用寄存器一览(部分):

地址 名称 说明
0x0000 Type ESC 类型
0x0002 Revision 版本号
0x0004 Build 构建号
0x0010 Station Address 配置站地址(主站写入)
0x0012 Station Alias 站别名(EEPROM/从站设置)
0x0120 AL Control 应用层控制(状态机切换命令)
0x0130 AL Status 应用层状态(当前状态 + 错误)
0x0134 AL Status Code 状态码(详细错误原因)
0x0140 PDI Control PDI 控制
0x0100~0x0103 Port 0~3 状态 端口链接/信号状态
0x0110~0x0113 Port 0~3 控制 端口环路控制

完整的寄存器定义见 ETG.1000 规范。调试从站故障时,AL Status Code 是最重要的排查入口。

这些寄存器地址是从哪来的?——ETG.1000 规范统一规定

  • 地址不是芯片厂商自定的,而是由 ETG.1000 规范在协议层面统一规定的:只要符合规范的 ESC,无论哪家芯片,0x0010 都是 Station Address、0x0130 都是 AL Status、0x0120 都是 AL Control。
  • 原因:主站软件(TwinCAT / SOEM / IgH)是针对协议编写的,不是针对某颗芯片写的。如果各家寄存器地址不同,主站就无法通用。
  • 寄存器分必须实现可选实现:核心寄存器(如 0x00100x01200x0130)每个 ESC 都必须有;扩展寄存器可以省略。
  • 芯片出厂时部分寄存器已固化(如 Type 0x0000、Revision 0x0002);而 Station Address(0x0010)出厂是空的,由主站在启动时写入。

做 EtherCAT 通信需要特别芯片吗?

  • 从站:必须。从站的实时性依赖 ESC 硬件,普通 MCU 用软件处理帧达不到纳秒级的"就地读写"。但 ESC 不一定是单独一颗芯片——可以是专用 ASIC(ET1100)、FPGA IP 核,或集成在 MCU/SoC 内部(TI、NXP、瑞萨等,通过片上 PDI 访问)。
  • 主站:不需要。主站只要一个标准以太网口 + 软件协议栈(TwinCAT/SOEM/IgH)即可,这也是主站成本低的原因。

芯片有统一标准吗?

  • 有,而且是强标准化。协议层(ETG.1000)统一了帧/数据报/命令/寄存器/内存布局;ETG 还提供一致性测试工具(CTT) 对从站做自动化测试,通过后才能宣称"兼容 EtherCAT",也可送官方测试中心(ETC)拿证书。
  • 所以不同厂商的 ESC 在协议行为上完全一致,可以互相替换,主站无需关心具体是哪家芯片——就像 USB:各家控制器芯片不同,但协议统一,主机插任何设备都能识别。

8.4 端口与物理层

  • ESC 支持 2~4 个端口(逻辑端口 0~3,TwinCAT 中记为 A~D)。
  • 物理层有两种:
    • Ethernet(MII/RMII):外接标准 PHY 芯片,网线(100BASE-TX)传输,最常用;
    • EBUS(EtherCAT Bus,倍福的专用物理层:用 LVDS 差分信号、集成在 ASIC 内部、靠专用短排线传输):直接用短排线级联(成本更低,但距离短,仅限背板级联)。
  • 帧从端口 A 进入,Auto-Forwarder(自动转发器:ESC 内部把帧从收到的端口转发到其他端口的纯硬件逻辑)自动转发到下一个有链接的端口;无链接的端口触发 Loop-back(折返),实现末站折返。

为什么需要多个端口?

根源在于 EtherCAT 的通信模型:每个从站本身就是转发器,端口数量直接决定网络能组成什么拓扑

端口数 能实现的拓扑 说明
≥ 2 线型(菊花链) 最基本的"一进一出":帧从上游端口进、就地读写后从下游端口出。所有 ESC 的底线
3~4 树型/星型(分支) 多端口从站当"分线器",把帧复制转发到多个下游端口,一条线变多条支路,无需交换机(见 12.1 节)
4 环型冗余 末端从站用多余端口接回主站形成环,断缆自动闭合(见 12.3 节)
多端口 热连接(Hot Connect) 支持运行中插拔子网段
  • Auto-Forwarder 与端口选择:帧进来后由 Auto-Forwarder 决定"从哪个有链接的端口出去";所有下游端口都无链接时触发 Loop-back 折返——有多个端口才有"选择出口"这回事
  • 不是每个端口都要接满:末端从站往往只用 1~2 个端口,多余的留作扩展(接支路 / 接回主站)。
  • 典型芯片:ET1100 = 4 个端口(每个可配成以太网或 EBUS);ET1200 = 3 个端口(2 个以太网 + 1 个 EBUS,成本更低)。

8.5 PDI(Process Data Interface,过程数据接口)

PDI 是 ESC 与应用处理器(MCU)之间的接口,类型取决于 ESC:

PDI 类型 特点 适用场景
数字 I/O(并行 32 位) 无需 MCU,IO 直连 ESC 简单数字量输入输出
SPI 从站 引脚少、速度快 模拟量 IO、编码器、简单驱动器
8/16 位并行微控制器接口 带宽大、带 DPRAM 复杂节点、大数据量
片上总线(On-Chip) ESC 集成在 MCU 内部 驱动器等集成设备
多用途 I/O 可配置 特殊应用

这里的"SPI 从站"就是标准 SPI 协议(Serial Peripheral Interface,串行外设接口,SCK / MOSI / MISO / CS 四线)。

  • 用法上:ESC 作为 SPI 从机应用 MCU 作为 SPI 主机,MCU 通过 SPI 读写 ESC 的寄存器/过程数据内存——所以叫"SPI 从站"(指 ESC 的 PDI 口是 SPI 从机模式)。
  • 别混淆两个"从":EtherCAT 从站是对主站而言(网络层);SPI 从机是对应用 MCU(SPI 主机)而言(本地接口),这是两个不同层面的概念。
  • 这条 SPI 链路是 MCU ↔ ESC 之间的本地通道,与 EtherCAT 网络无关:EtherCAT 帧走的是以太网口(MII/RMII/EBUS),SPI 只负责在 ESC 与 MCU 之间搬运数据。

8.6 SII / ESI-EEPROM 与 ESI 文件

  • SII(SubDevice Information Interface):从站上的非易失存储器(EEPROM),存放设备基本信息(厂商 ID、产品码、FMMU 数量等)。主站在启动时可读取 SII,即使没有设备描述文件也能识别设备。
  • ESI 文件(EtherCAT Slave Information,XML 格式):随设备提供的完整描述文件,包含过程数据及映射、邮箱协议支持、同步模式等。配置工具据此进行在线/离线组态。

8.7 FMMU(现场总线内存管理单元)

  • 每个 ESC 有若干 FMMU(如 ET1100 有 8 个),用于位级映射:把逻辑地址空间的某一段映射到 ESC 本地内存。
  • 主站在启动时用 FPRW 配置各 FMMU 的:逻辑起始地址、长度、本地起始地址、读写方向、激活标志。
  • 过程数据通信时,从站根据 FMMU 配置自动从帧中提取/插入数据,无需 CPU 参与

FMMU 寄存器在哪里?配置了什么?

  • FMMU 的配置寄存器位于 ESC 地址空间 0x0600 ~ 0x07FF(ET1100 等):每个 FMMU 占 16 字节,8 个 FMMU 共 128 字节,正好填满这段区域。
  • 主站用 FPRW(节点寻址写) 逐站写入以下配置:
字段 长度 说明
逻辑起始地址 4 B 映射的逻辑地址起点(主站编排的全局坐标)
逻辑长度 2 B 映射的字节数
逻辑起始位 1 B 逻辑地址内的起始位(支持位级映射
本地起始位 1 B 本地内存内的起始位
本地起始地址 2 B 对应 ESC 本地过程数据内存(0x1000 区)的起点
类型/方向 1 B 1 = 读(帧→本地),2 = 写(本地→帧)
激活标志 1 B 该 FMMU 是否参与匹配
  • 配置完成后,帧经过时 ESC 硬件自动比对逻辑地址区间并搬运数据,全程无 CPU 参与。

FMMU 匹配之后,数据去了哪里?——完整数据流

  • FMMU 匹配是纯硬件比较:帧经过时 ESC 用硬件比较器把帧里的逻辑地址与已激活的 FMMU 区间逐段比对(纳秒级,无 CPU)。
  • 命中后数据落在哪:落到 ESC 的本地过程数据内存(PDO 内存,0x1000 起)——FMMU 配置里的"本地起始地址"指的就是这块内存。
  • 但应用 MCU 不能直接读这块内存:还要经过 SM(SyncManager)PDI 才能到达应用。
输出数据(主站 → 从站):
主站写帧 → 帧经过时 ESC 按 FMMU 把数据存入本地过程数据内存
        → SM 校验/发事件 → 应用 MCU 通过 PDI 读走 → 驱动 IO/电机

输入数据(从站 → 主站):
应用 MCU 通过 PDI 写入 ESC 过程数据内存 → SM 管理缓冲区
        → 帧经过时 ESC 按 FMMU 把内存数据插入帧 → 主站从帧里读出

三者的分工(理解 EtherCAT 数据流的关键):

部件 管什么 比喻
FMMU 位置:数据在帧的哪一段、在 ESC 内存的哪一段 搬运工(搬哪块)
SM 时机/一致性:什么时候允许读写、缓冲区怎么管理,防止读到半新半旧的数据 仓库管理员(什么时候放行)
PDI 通道:应用 MCU 通过什么接口访问 ESC 内存 货梯(怎么运出去)

8.8 SyncManager(同步管理器)

  • 每个 ESC 有若干 SyncManager(SM,通常 4~8 个),用于一致性数据交换邮箱通信
  • 每个 SM 配置了:方向(输入/输出)、起始地址、长度、缓冲区模式(单/三缓冲)、中断使能等。
  • 典型分配:
    • SM0/SM1:邮箱收发(Mailbox);
    • SM2/SM3:过程数据收发(输入/输出)。
  • SM 保证要么读到完整的新数据、要么读到旧数据,避免主站和从站应用同时读写造成数据撕裂。

FMMU 负责逻辑地址与本地内存的映射(在哪取/放数据);SM 负责主站与从站应用之间数据交换的一致性(什么时候允许取/放、缓冲区怎么管理)。


九、从站状态机

9.1 状态机总览

每个 EtherCAT 从站都运行一个应用层状态机,主站通过写 AL Control 寄存器(0x0120)命令从站切换状态,从站在 AL Status 寄存器(0x0130)中回报当前状态:

                    ┌──────────┐
       上电复位 ──▶ │   INIT   │
                    └──────────┘
                       │   ▲
              INIT→PRE │   │ PRE→INIT
                       ▼   │
                    ┌──────────┐
                    │  PRE-OP  │
                    └──────────┘
                       │   ▲
             PRE→SAFE  │   │ SAFE→PRE
                       ▼   │
                    ┌──────────┐
                    │ SAFE-OP  │
                    └──────────┘
                       │   ▲
            SAFE→OP    │   │ OP→SAFE
                       ▼   │
                    ┌──────────┐
                    │    OP    │
                    └──────────┘

    另外还有 BOOT 状态:INIT ↔ BOOT(用于 FoE 固件升级)

这个状态机是谁规定的、谁实现的? 分三层:

  • 协议规定(ETG.1000 强制):状态、转移、AL Control/AL Status/AL Status Code 寄存器的语义都是规范统一规定的,主站(TwinCAT/SOEM/IgH)按这套流程驱动所有从站,所以每个从站都必须符合这个流程,不是自己想怎么切就怎么切。
  • ESC 硬件实现:芯片内部自带"硬件状态机",负责通信侧——收到主站写的 AL Control 请求后校验转移是否合法、维护并更新 AL Status;部分转移硬件自己就能完成(如 INIT→PRE-OP 的邮箱初始化)。
  • 用户软件实现(从站固件):应用侧的准备必须由固件配合——PRE-OP→SAFE-OP 前要准备好输入数据,SAFE-OP→OP 前要确认输出可安全使能;固件没准备好就拒绝切换,状态停在原地,AL Status Code 记录失败原因。

一句话:流程是协议定死的,通信侧由 ESC 硬件管,应用侧由用户固件配合,双方通过寄存器握手完成切换。

9.2 各状态含义

状态 名称 允许的通信 说明
INIT 初始化 仅寄存器访问 上电后的初始状态,只能读写 ESC 寄存器
PRE-OP 预运行 寄存器 + 邮箱 邮箱(Mailbox)可用,可配置参数、下载固件,但无过程数据
SAFE-OP 安全运行 寄存器 + 邮箱 + 过程数据(输入) 过程数据开始交换,输入数据有效,输出仍被屏蔽(安全考虑)
OP 运行 全部 输入输出全部有效,正常运行状态
BOOT 引导 邮箱(仅 FoE) 供引导程序进行固件更新

9.3 状态切换流程(从 INIT 到 OP 的完整启动)

主站                                                      从站
─────────────────────────────────────────────────────────────────
1. 扫描拓扑(位置寻址 APRD 读每站类型)        →  返回设备信息
2. 分配节点地址(APWR 写 0x0010)             →  记录站地址
3. 读 SII/EEPROM,核对设备                  →  返回厂商/产品信息
4. 配置 FMMU / SyncManager(FPRW)          →  写入映射配置
5. 请求 PRE-OP(写 AL Control)              →  初始化邮箱,进入 PRE-OP
6. 邮箱通信:下载配置、参数、CoE 对象          →  确认配置完成
7. 请求 SAFE-OP(写 AL Control)            →  输入数据开始刷新
8. 请求 OP(写 AL Control)                 →  输出使能,进入正常周期运行

流程第 6 步的 CoE(CANopen over EtherCAT)是应用层协议,其对象字典 / SDO / PDO 机制见 11.3 节;邮箱(Mailbox)机制见 11.2 节。

  • 每次请求切换后,主站需轮询 AL Status 确认从站确实到达目标状态;
  • 若切换失败,读取 AL Status Code(0x0134) 获得失败原因(如无效请求、邮箱未就绪)。

9.4 错误与看门狗

  • 从站在 SAFE-OP/OP 下依靠 Watchdog(看门狗) 监控通信:若主站停止发送帧超过设定时间(如 100 ms),从站认为通信故障,自动退回 SAFE-OP 或 PRE-OP(输出被安全屏蔽)。
  • 这保证了主站崩溃时,执行器不会保持危险状态。
  • 常见调试:从站突然掉回 SAFE-OP → 检查主站是否停止发帧、看门狗时间、AL Status Code。

十、分布式时钟(Distributed Clocks,DC)

10.1 为什么需要分布式时钟

多轴同步控制的难点:所有轴必须在同一时刻采样位置、输出指令。如果靠帧到达时刻触发,离主站近的从站先收到帧,离得远的后收到,动作有先后(传播延迟差),主站发帧的抖动也会影响所有设备。

EtherCAT 不给设备发时间,而是给每个设备装一个精确的本地时钟,再把所有时钟同步起来——设备由本地时钟触发动作,与帧何时到达无关。

10.2 同步原理

参考时钟(通常选第一个 DC 从站)
      │  在每次周期帧中携带系统时间(System Time)
      ▼
从站2 ── 测量传播延迟,校准本地时钟
从站3 ── 测量传播延迟,校准本地时钟
...
      (所有从站时钟同步到参考时钟,误差 < 1 µs)
  1. 参考时钟:选择网络中的第一个 DC 从站作为参考,其时钟作为全网系统时间。
  2. 传播延迟测量:由于系统时间到达各从站有延迟,启动时(或运行中)测量每个从站的传播延迟并补偿
  3. 时钟校准:主站周期性把参考时钟的时间写入各从站,从站据此微调本地时钟(硬件锁相)。
  4. 本地触发:同步后,各从站在本地时钟到达设定点(SYNC 时刻)时同时采样输入/刷新输出。

DC 同步的是"本地时钟"本身,不是"帧到达的时刻"。

系统时间从哪来? 取自参考时钟(第一个 DC 从站):主站每个周期用 FPRD 读参考时钟的 0x0910(系统时间寄存器),再用 FPRW 把该值写进帧、广播给所有从站(写入各从站 0x0910)。注意:没有单独的"时间帧"——系统时间是顺带放在普通周期帧的一个数据报里捎过去的。

例子(主站 — 从1[参考] — 从2,从1→从2 延迟 5 µs):

物理时刻 从1 时钟 发生什么
t=0 1000 主站抓取从1 时间 = 1000,写进帧发出
t=5 µs 1005(它一直在走) 帧到从2,收到快照 1000,算出 1000+5 = 1005,把本地钟对准 1005

1000 是"取快照那一刻"从1 的读数,1005 是"收到快照那一刻"从1 的读数——两个时刻从1 分别显示这两个值。从2 要做的,就是让自己在"收到那一刻"的读数和从1 一样(1005)。所以同一物理时刻,从1 和从2 显示相同时间 = 同步。

采样靠什么触发? 不是"收到帧后延时 x",而是本地时钟走到设定点(SYNC 时刻)时触发。因为所有从站本地时钟一致,所以同一物理时刻一起采样/输出

主站的任务:只负责"对表"(周期发时间快照校准从站时钟),不负责"吹哨"(精确卡点发帧)——只要帧在 SYNC 触发前到达即可,所以对主站发帧抖动不敏感

10.3 SYNC 信号

  • 同步后的从站由本地时钟产生 SYNC0 / SYNC1 脉冲信号,触发应用层:
    • SYNC0:通常用于触发过程数据更新(输出刷新、输入采样);
    • SYNC1:可用于双触发(如高速采样+输出)。
  • 应用 MCU 通过 PDI 的中断/事件接收 SYNC,实现硬实时动作。

10.4 分布式时钟的精度与优势

指标 数值
同步抖动 < 1 µs(实际工程中常远小于,可到几十 ns)
300 节点 + 120m 电缆的典型系统 同步误差远小于 1 µs

DC 的优势:

  • 对主站发帧抖动不敏感:只要帧在 SYNC 触发前到达即可,主站是软件实现也能保证微秒级同步;
  • 采样更准确:位置采样由本地时钟触发,采样间隔严格等距,速度/加速度计算更精确;
  • 主站负载降低:主站无需精确控制发帧时刻,降低了实时要求。

同步与同时性的区别:同步指所有时钟显示同一时间;同时性指所有设备在同一时刻动作。DC 两者都实现了。


十一、应用层协议

11.1 通信通道总览

EtherCAT 的数据交换分两条通道:

┌─────────────────────────────────────────────────────────────┐
│                     EtherCAT 帧                              │
│  ┌───────────────────────────────┐  ┌──────────────────────┐ │
│  │  过程数据通道(周期)           │  │  邮箱通道(非周期)    │ │
│  │  Process Data  (LRW/LRD/LWR)  │  │  Mailbox (FPRW...)   │ │
│  │  每个周期自动交换              │  │  按需通信,可靠传输    │ │
│  └───────────────────────────────┘  └──────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
通道 周期 特点 承载协议
过程数据 每个周期 快、量小、实时 CoE PDO、SoE 数据
邮箱 非周期/事件驱动 可靠(带确认和重传)、可传大块数据 CoE SDO、EoE、FoE、AoE

通道是什么意思? 它是 EtherCAT 抽象出的两种通信服务方式(逻辑概念),不是把"帧"分类——两种通道的数据可以并存于同一帧:一帧里的 1~15 个数据报中,可以同时有 LRW 数据报(过程数据)和 FPRW 数据报(邮箱),主站自由组合,从站看到哪个命令就按哪种方式处理。

一句话:通道 = 两种投递方式(普通快递不保价 vs 挂号信可靠签收),两种货物可以装在同一辆火车(帧)里一起走。

怎么选?要持续、实时、每个周期都用的数据 → 过程数据;要偶发、按需、可靠的操作(配置/诊断/偶尔读一次)→ 邮箱。 两者不冲突——比如温度传感器可过程数据周期上报实时温度,同时用邮箱改报警阈值。

11.2 邮箱(Mailbox)机制

  • 邮箱提供可靠的非周期通信:帧带序号、接收方确认、错误自动重发(auto-recover)。
  • 支持多种应用协议共存于同一邮箱通道,通过邮箱头中的协议类型区分。
  • 典型应用:参数读写、固件升级、设备诊断、TCP/IP 隧道。

11.3 CoE(CANopen over EtherCAT)——最常用

CoE 把 CANopen 的机制移植到 EtherCAT,是伺服、IO 等设备最常用的应用层协议

CANopen 机制 EtherCAT 中的角色
对象字典(Object Dictionary) 每个设备一个对象字典,编号 0x1000~0x9FFF
SDO(Service Data Object) 邮箱通信,非周期读写对象(配置参数)
PDO(Process Data Object) 过程数据通道,周期交换实时数据
PDO 映射(PDO Mapping) 把对象字典条目映射到过程数据(启动时配置)
紧急消息(Emergency) 邮箱传输的故障/警告报文
网络管理(NMT) 类似,配合从站状态机

为什么 CoE 重要:

  • 伺服驱动标准 CiA 402(IEC 61800-7) 直接复用在 EtherCAT 上,电机控制(模式、使能、位置/速度/转矩指令)全部通过 CoE 完成;
  • 设备厂商可复用大量 CANopen 固件,迁移成本低;
  • 打破了 CANopen 的 8 字节 PDO 限制,可传输更大的数据块,甚至支持整本对象字典上传。

启动时主站通过邮箱(SDO)把要周期性交换的参数配置成 PDO 映射;运行后,这些参数通过过程数据通道(LRW)每周期自动刷新;参数修改、诊断再走邮箱。

11.4 其他应用层协议

协议 全称 作用 特点
SoE Servo Drive over EtherCAT 伺服驱动器参数与功能(基于 SERCOS 行规) 采用 IEC 61800-7 的伺服行规
EoE Ethernet over EtherCAT 在 EtherCAT 段内透明传输 TCP/IP 从站可当普通以太网节点用,主站相当于二层交换机
FoE File over EtherCAT 文件传输(类似 TFTP) 用于固件升级,无需 TCP/IP 栈,引导程序即可支持
AoE ADS over EtherCAT ADS 协议(倍福自动化设备协议) 路由/跨网段访问、远程诊断

协议如何共存:从站在 ESI 文件中声明支持的协议,主站据此使用。

11.5 Safety over EtherCAT(FSoE)

  • 同一根电缆、同一个 EtherCAT 网络中传输安全数据(急停、安全门、安全速度等)与普通数据。
  • 原理:黑通道(Black Channel)——底层 EtherCAT 不被视为安全相关,安全数据封装在安全容器(Safety Container)中,自带 CRC、序号、看门狗等安全机制。
  • 标准:IEC 61784-3,安全等级最高 SIL 3(经 TÜV 认证)。
  • 优势:省去单独的安全总线,架构更简单、诊断更强。

11.6 EtherCAT P(数据 + 供电单线)

  • EtherCAT P(P = Power):在同一根 4 芯网线上同时传输 EtherCAT 数据和 24V 电源
  • 两路独立电源:US(系统/传感器供电)、UP(外设/执行器供电),电气隔离、可单独关断。
  • 协议与标准 EtherCAT 完全一致(只是物理层不同),无需新的 ESC。
  • 典型场景:传感器、小型执行机构、移动部件——一根 M8 连接器搞定数据和供电,大幅简化布线。

其他扩展:EtherCAT G(千兆版) 将速率提升到 1 Gbit/s,用于数据量更大的场景;EtherCAT 也与 TSN(时间敏感网络)协同演进,用于控制器间通信。


posted @ 2026-08-09 17:04  Javenwww  阅读(35)  评论(0)    收藏  举报