EtherCAT重学之二: EtherCAT 系统硬件架构

EtherCAT 系统的硬件分为两大部分:主站(Master)从站(Slave)。主站负责发起所有通信、配置从站、周期性地交换过程数据;从站负责执行主站的命令、响应数据读写、驱动物理设备(电机、IO、传感器等)。理解每个硬件模块的归属(属于主站?ESC?从站 CPU?EEPROM?)是后续理解协议机制的基础。


2.1 主站硬件组成

EtherCAT 主站的硬件组成出人意料地简单------这是 EtherCAT 协议的一个核心设计优势。

2.1.1 主站是否需要专用硬件?

不需要。 EtherCAT 主站可以使用标准的以太网网卡(NIC),包括:

  • 台式机/工控机主板集成的千兆/百兆网卡

  • USB 转以太网适配器

  • PCIe 扩展网卡

  • 嵌入式平台的 MAC + PHY 组合

根据 Beckhoff ESC 数据手册 Section I 的描述 :

"EtherCAT uses standard IEEE 802.3 Ethernet frames, thus a standard network controller can be used and no special hardware is required on master side."

主站网卡只需要完成一个任务:在精确的时间点发送接收以太网帧。EtherCAT 协议的全部解析和处理由主站软件(协议栈)完成。

但这并不意味着主站没有任何特殊要求。主站的关键需求是实时性

需求维度 说明 典型方案
实时操作系统 需要确定性调度,避免任务被中断或高优先级任务抢占导致周期抖动 Linux RT-PREEMPT、Xenomai、VxWorks、TwinCAT/BSD
网卡驱动 需要绕过内核协议栈,直接从用户空间收发原始以太网帧 raw socket、SOEM 的 nicdrv、 TwinCAT 的专用驱动
定时精度 周期任务的唤醒精度直接影响控制抖动 TSC 时钟、HPET、RTC,精度要求 < 10 μs
CPU 性能 需要足够的算力来构造/解析 EtherCAT 帧 + 运行控制算法 根据从站数量和周期时间而定

2.1.2 主站软件模块

主站的软件架构可以分为以下几个层次:

复制代码

各模块归属说明

模块 归属 谁配置/使用 说明
标准以太网网卡 主站硬件 主站协议栈 收发原始以太网帧,不解析 EtherCAT 内容
网卡驱动 (nicdrv) 主站软件 主站协议栈 绕过 OS 协议栈,直接操作网卡 DMA
周期任务 (cyclic task) 主站软件 主站协议栈 按固定周期唤醒,触发帧发送
Process Image 主站软件 应用层 + 协议栈 主站内存中的过程数据镜像,逻辑地址空间
PDO 管理 主站协议栈 协议栈 + 应用层 负责 LRW 帧构造/解析
SDO/CoE 管理 主站协议栈 协议栈(配置阶段) 通过 Mailbox 读写从站对象字典
FMMU 配置 主站协议栈 协议栈(启动阶段) 计算并下发各从站的 FMMU 寄存器
SyncManager 配置 主站协议栈 协议栈(启动阶段) 计算并下发各从站的 SM 寄存器
DC 同步管理 主站协议栈 协议栈(启动阶段) 测量传播延迟、补偿 offset/drift
状态机控制 主站协议栈 协议栈(启动阶段) 控制从站状态转换
ENI/配置数据 配置文件 主站协议栈 描述网络拓扑和从站配置

2.1.3 主站实时线程的执行流程

一个典型的主站周期任务执行流程如下:

  1. 定时器唤醒:周期任务被硬件定时器(如 HPET)唤醒,周期时间由应用需求决定(如 1 ms、500 μs、125 μs)。

  2. 更新输出数据:应用层将控制算法计算得到的输出值写入主站的 Process Image(逻辑地址空间中的输出区)。

  3. 构造 LRW 帧:协议栈根据 Process Image 构造一个或多个 LRW Datagram,覆盖所有从站的输出区和输入区。

  4. 发送帧:通过网卡驱动将 EtherCAT 帧发送到网卡,网卡通过 PHY 发出。

  5. 等待返回:帧经过所有从站后返回,主站网卡接收返回帧。

  6. 解析输入数据:协议栈解析返回帧中的输入数据,更新 Process Image 的输入区。

  7. 检查 WKC:比较返回帧中各 Datagram 的 WKC 与预期值,判断通信是否成功。

  8. 应用层处理:将输入数据交给控制算法,进入下一个周期。

整个流程必须在周期时间内完成,否则会导致周期超时错误。


2.2 从站硬件组成

从站的硬件比主站复杂得多,因为它需要完成 EtherCAT 通信的全部从站端功能。一个典型的 EtherCAT 从站包含以下模块:

复制代码

2.2.1 Ethernet PHY

Ethernet PHY(物理层收发器)负责将数字信号与物理介质上的电信号/光信号相互转换。EtherCAT 使用 100BASE-TX(100 Mbps 全双工)作为标准物理层。

特性 说明
接口类型 MII(Media Independent Interface)或 EBUS(EtherCAT 专用 LVDS 接口)
数据速率 100 Mbps 全双工
PHY ↔ ESC 连接 MII 接口(4 位数据 x 25 MHz 时钟)或 RMII/RGMII
ESC 内置 PHY? 部分 ESC(如 LAN9252)集成 PHY;ET1100 需要外接 PHY
链路检测 ESC 通过 MII 的 LINK 信号或寄存器检测端口链路状态

帧进入从站时先经过什么硬件?

答案是:PHY → ESC。物理信号首先进入 PHY 芯片,PHY 将信号解码为 MII 接口的并行数据,送入 ESC 的对应端口。ESC 的 EPU(EtherCAT Processing Unit)解析帧内容,决定如何处理。

2.2.2 ESC(EtherCAT Slave Controller)

ESC 是 EtherCAT 从站的核心芯片,承担全部 EtherCAT 通信的硬件处理工作。不同型号的 ESC 在功能上有差异,以下是主流 ESC 的对比:

特性 ET1100 3^ ET1200 7^ LAN9252 2^
厂商 Beckhoff Beckhoff Microchip
封装 BGA128 小型封装 QFN64/QFP64
端口数 2~4 (MII/EBUS) 2~3 (MII/EBUS) 2 (内置 PHY) + 1 MII
FMMU 数量 8 3 3
SyncManager 数量 8 4 4
DPRAM 大小 8 KB 1 KB 4 KB
分布式时钟 64 位 64 位 64 位
数字 IO PDI 32 位 16 位 16 位
SPI PDI 支持 支持 支持
μController PDI 8/16 位异步 支持 8/16 位异步
FPGA IP Core

ESC 的内部功能模块包括:

EtherCAT Processing Unit (EPU)

  • 负责解析 EtherCAT 帧头和 Datagram

  • 执行命令(读/写/读写)

  • 管理端口转发和环回逻辑

  • 更新 Working Counter

DPRAM(Dual-Port RAM,双端口 RAM)

  • 地址范围:0x1000 ~ 0xFFFF(大小取决于 ESC 型号)

  • 两个独立访问端口:EtherCAT 端(EPU 访问)和 PDI 端(从站 CPU 访问)

  • 用于存储过程数据(PDO)和 Mailbox 数据

FMMU(Fieldbus Memory Management Unit)

  • 将 32 位逻辑地址映射到 16 位本地物理地址

  • 每个 FMMU 通道配置一段连续的逻辑地址空间到连续的物理地址空间

  • 支持位级映射(bit-level mapping)

SyncManager(同步管理器)

  • 管理 EtherCAT 主站和 PDI 之间的数据缓冲区

  • 两种模式:Buffered Mode(用于 PDO)和 Mailbox Mode(用于 SDO/CoE)

  • 保证数据一致性和访问安全

DC Unit(分布式时钟单元)

  • 64 位本地系统时间计数器

  • 支持 Sync0/Sync1 信号输出

  • 支持 Latch0/Latch1 信号输入时间戳

ESC 寄存器(0x0000 ~ 0x0FFF)

  • 类型/版本寄存器(0x0000~0x0003)

  • FMMU/SyncManager 配置寄存器

  • AL 控制/状态寄存器(状态机)

  • DC 配置寄存器

  • 中断和看门狗寄存器

2.2.3 PDI(Process Data Interface)

PDI 是 ESC 与从站应用处理器(MCU/DSP/FPGA)之间的数据交换接口。PDI 的类型决定了从站 CPU 如何读写 ESC 内部的 DPRAM 和寄存器。

根据 Beckhoff ESC 数据手册 Section I 8^,PDI 有以下几种类型:

PDI 类型 数据宽度 典型应用场景 特点
Digital I/O 8~32 位 简单数字输入输出模块 无 MCU,直接驱动 GPIO;ESC 自动映射 DPRAM 到数字端口
SPI Slave 串行 小型 MCU(如 STM32、PIC) 4 线接口,节省引脚;速度受限于 SPI 时钟
8/16 位 μController 8/16 位并行 中等复杂度从站 异步或同步并行总线,类似 SRAM 接口
FPGA 接口 并行 FPGA-based 从站 Avalon (Altera) 或 PLB/OPB (Xilinx) 总线
通用 GPIO 位级 简单控制和状态 少量通用输入输出

2.2.4 EEPROM / SII

每个 EtherCAT 从站都包含一个 EEPROM (通常为 I²C 接口的串行 EEPROM,如 24Cxx 系列),用于存储 SII(Slave Information Interface) 数据。

EEPROM 中的关键信息包括:

信息类别 内容 用途
ESC 配置 PDI 类型、端口配置、Watchdog 设置 ESC 上电后自动加载
Vendor ID 厂商标识(如 Beckhoff = 0x00000002) 主站识别厂商
Product Code 产品代码 主站识别具体产品
Revision Number 版本号 区分不同硬件版本
Serial Number 序列号 唯一标识
Mailbox 配置 SM0/SM1 的默认配置 用于初始化 Mailbox 通信
PDO 信息 默认 PDO 映射和分配 用于配置过程数据
Bootstrap 固件升级配置 可选

ESC 上电或复位后,会自动从 EEPROM 读取前几个字节(通常是前 8 个字,即 16 字节)来配置自身的 PDI 和基本参数。这是 ESC 能够正常工作的前提条件。


2.3 ESC 与从站 CPU 的边界

这是理解 EtherCAT 从站工作原理的关键问题:EtherCAT 实时数据是否必须经过从站 CPU?

答案是:不一定。这取决于从站的复杂度和 PDI 类型。

2.3.1 场景一:无 MCU 的数字 IO 从站

最简单的 EtherCAT 从站是纯数字 IO 模块 ,它没有 MCU,ESC 通过 Digital I/O PDI 直接将 DPRAM 中的数据映射到物理 GPIO 引脚。

复制代码
主站 LRW 帧 → ESC → DPRAM[0x1000] 的 bit0 → Digital I/O PDI → 物理输出引脚
物理输入引脚 → Digital I/O PDI → DPRAM[0x1000] 的 bit8 → ESC → 返回主站

在这种场景中,从站 CPU 完全不参与 EtherCAT 通信。数据从主站直达物理引脚,延迟仅取决于 ESC 的转发延迟。

2.3.2 场景二:带 MCU 的智能从站

大多数智能从站(如伺服驱动器、温度控制器、IO-Link 主站)包含一个 MCU/DSP 来运行应用固件。此时 ESC 与 MCU 通过 PDI(通常是 SPI 或并行总线)连接。

从站 CPU 何时参与?

阶段 ESC 的角色 从站 CPU 的角色
初始化阶段 自动从 EEPROM 加载配置 运行 boot 代码,初始化外设
状态机转换 响应主站的 AL Control 请求 执行状态转换的应用层代码
Mailbox 通信 通过 SM0/SM1 缓冲数据 读取 Mailbox 数据,处理 SDO/CoE 请求
PDO 数据交换 通过 SM2/SM3 自动缓冲 可选:在 Sync0 中断中采样/更新数据
DC 同步 生成 Sync0/Sync1 信号 响应 Sync0 中断,执行控制环

从站 CPU 如何读取主站写入的 RxPDO 数据?

  1. 主站在周期通信中通过 LRW 帧将输出数据写入 ESC 的 DPRAM(具体位置由 FMMU 配置决定)。

  2. ESC 的 SyncManager(通常是 SM2,配置为 Buffered Mode)管理这个缓冲区。

  3. 从站 CPU 通过 PDI 读取 DPRAM 中 SM2 缓冲区的数据。

  4. 如果启用了 DC Sync0,从站 CPU 在 Sync0 中断中读取数据,确保采样时刻的同步性。

从站 CPU 如何把采样数据放入 TxPDO?

  1. 从站 CPU 将输入数据写入 ESC DPRAM 中 SM3 缓冲区的位置。

  2. ESC 的 SyncManager(SM3,Buffered Mode)管理这个缓冲区。

  3. 主站的 LRW 帧经过时,ESC 自动将 SM3 缓冲区的数据填入返回帧。

  4. 如果启用了 DC Sync0,从站 CPU 在 Sync0 中断中写入数据。

2.3.3 关键结论

问题 答案
EtherCAT 通信是否必须经过从站 CPU? 。ESC 独立完成所有 EtherCAT 通信。
从站 CPU 是否必须参与 PDO 交换? 。数字 IO 从站无需 CPU。智能从站在 Free Run 模式下也无需 CPU 参与 PDO 交换。
从站 CPU 何时必须参与? 处理 Mailbox(SDO/CoE)、执行 DC Sync0 中断、运行应用控制算法。
从站 CPU 不参与会怎样? 如果只需要 PDO 交换且工作在 Free Run 模式,从站 CPU 可以不参与。但无法处理 Mailbox 请求,也无法实现 DC 同步控制。

2.4 数据流向全景

为了将主站和从站的硬件模块串联起来,下图展示了 EtherCAT 系统中完整的数据流向:

复制代码

数据流向说明

  1. 输出方向(主站 → 从站)

    • 应用层将输出值写入主站 Process Image(逻辑地址空间)

    • 主站协议栈构造 LRW 帧,将输出数据填入 Datagram 的数据区

    • 帧依次经过每个从站的 ESC

    • 每个 ESC 根据 FMMU 配置,将属于本站的数据写入 DPRAM(RxPDO 区)

    • SyncManager(SM2)缓冲数据,等待从站 CPU 读取

  2. 输入方向(从站 → 主站)

    • 从站 CPU 将输入值写入 DPRAM(TxPDO 区)

    • SyncManager(SM3)缓冲数据

    • 主站的 LRW 帧经过时,ESC 根据 FMMU 配置从 DPRAM 读取数据填入返回帧

    • 帧返回主站,协议栈解析输入数据更新 Process Image

    • 应用层读取输入值


2.5 小结与常见误区

小结

  • 主站只需要标准以太网网卡 + 实时操作系统 + EtherCAT 主站协议栈软件。

  • 从站 的核心是 ESC 芯片,它独立完成所有 EtherCAT 通信处理。

  • PHY 负责物理层信号转换,ESC 负责 EtherCAT 协议处理,两者通过 MII/EBUS 连接。

  • DPRAM 是 ESC 内部的双端口 RAM,EtherCAT 端和 PDI 端可同时访问。

  • PDI 是 ESC 与从站 CPU 的接口,类型包括 Digital I/O、SPI、并行总线、FPGA 总线等。

  • EEPROM/SII 存储从站配置信息,ESC 上电后自动加载。

  • 从站 CPU 不参与 EtherCAT 帧的实时处理,只在 Mailbox 通信、DC 同步中断、应用算法时介入。

常见误区

误区 正确理解
"EtherCAT 主站需要专用 ASIC" 错误。标准网卡即可,软件协议栈完成全部主站功能。
"EtherCAT 从站必须用高端 MCU" 错误。简单数字 IO 从站不需要 MCU;复杂从站用普通 MCU 通过 SPI 即可。
"从站 CPU 必须处理每个 EtherCAT 帧" 错误。ESC 硬件独立处理帧,CPU 只在需要时通过 PDI 访问 DPRAM。
"ESC 的 DPRAM 只有 ESC 能访问" 错误。DPRAM 是双端口的,ESC(EtherCAT 端)和从站 CPU(PDI 端)可同时访问。
"EEPROM 只是存储配置,不重要" 错误。ESC 上电后必须从 EEPROM 加载配置才能正常工作。EEPROM 损坏会导致从站无法识别。
"所有 ESC 的 FMMU/SM 数量相同" 错误。不同型号差异很大:ET1100 有 8 个 FMMU + 8 个 SM;LAN9252 只有 3 个 FMMU + 4 个 SM。