当前位置: 首页 > news >正文

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^
厂商BeckhoffBeckhoffMicrochip
封装BGA128小型封装QFN64/QFP64
端口数2~4 (MII/EBUS)2~3 (MII/EBUS)2 (内置 PHY) + 1 MII
FMMU 数量833
SyncManager 数量844
DPRAM 大小8 KB1 KB4 KB
分布式时钟64 位64 位64 位
数字 IO PDI32 位16 位16 位
SPI PDI支持支持支持
μController PDI8/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/O8~32 位简单数字输入输出模块无 MCU,直接驱动 GPIO;ESC 自动映射 DPRAM 到数字端口
SPI Slave串行小型 MCU(如 STM32、PIC)4 线接口,节省引脚;速度受限于 SPI 时钟
8/16 位 μController8/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。
http://www.cnnetsun.cn/news/3054293.html

相关文章:

  • 从零到一:如何用免费开源Verilog工具链打造专业数字电路
  • 从让AI写代码,到让AI管流程
  • Burp Suite实战:验证码场景下的自动化渗透测试与绕过技术
  • 权威测评:2026年实力出众的专业AI论文工具
  • 关于我的第十次web作业
  • 3步搞定Navicat无限试用:Mac用户的终极解决方案 [特殊字符]
  • DICOM图像核心参数实战指南:从像素到诊断的精准度量
  • 无需编程,快速打造专属物联网APP——ThingsCloud平台实战指南
  • 煤矿通信 “侦察兵”:光缆普查仪 CM-K60 助力井下光缆快速识别
  • MATLAB双目相机标定:从工具箱实战到参数解析
  • 企业AI化转型核心:打造分工协作的多Agent团队,小白也能看懂!
  • League Akari终极指南:8个秘诀掌握英雄联盟自动秒选黑科技
  • 【独家首发】ChatGPT API调用诊断工具包(含12个自检函数+实时token追踪+异常归因热力图)
  • 深入解析TL16C552:双串一并通信控制器的硬件设计与软件驱动
  • 【R语言实战】解锁Wind与iFinD金融数据:从零到一的API调用与避坑指南
  • 如何用League Akari实现英雄联盟自动秒选:终极配置指南
  • 计算机毕业设计之基于SSM礼服租赁系统的设计与实现
  • RePKG使用指南:轻松提取Wallpaper Engine资源包和转换TEX图片格式
  • 评测:国内主流S2B2C系统服务商全方位横评(2026版)
  • 如何在1分钟内为Windows安装苹果USB网络共享驱动:完整解决方案
  • 突然报 “关键字 WITH 附近有语法错误“?一篇避坑指南
  • Feign 远程调用:调用的是对方项目的 Controller,不是 Service
  • Windows风扇控制终极指南:用Fan Control彻底告别噪音烦恼
  • 从FIR与IIR的群延迟差异,看滤波器如何塑造信号
  • nlohmann/json:现代C++ JSON处理的终极完整指南
  • RSA非对称加密在登录模块的实战应用:从原理到前后端完整实现
  • TPIC7710EVM评估板实战:从硬件解析到GUI软件驱动的电机控制芯片验证
  • 为什么同样叫海参,有的卖5000,有的卖1500?
  • 2026手机抠图工具实操指南:免费无水印APP与轻量工具使用教程
  • 渗透测试工具实战指南:从信息收集到报告撰写的全流程解析