
第1章 EtherCAT 简介EtherCAT 的本质它是一种利用标准以太网物理层、通过专用从站硬件ESC实现帧在传输过程中即被处理on-the-fly processing的工业实时通信协议。主站发出的一帧数据在依次经过每个从站时各从站的 ESC 芯片在帧流经自身的纳秒级时间内完成数据的读取和写入帧返回主站时携带所有从站的输入数据整个过程仅需一个以太网帧的往返时间。1.1 核心思想为什么不是普通 TCP/IP要理解 EtherCAT 的特殊性首先需要明确它刻意避开了普通以太网通信中的哪些机制。标准 TCP/IP 以太网通信的典型特征是每一帧都有明确的源 MAC 地址和目的 MAC 地址网络中的交换机会根据目的 MAC 地址将帧转发到对应的端口。这种机制在办公网络中非常高效但在工业控制场景中会产生三个致命问题第一交换机延迟不可控。工业以太网交换机即使是管理型的其转发延迟通常在10~50 μs量级且受网络负载影响而抖动。对于需要1 ms 甚至 125 μs控制周期的伺服系统来说这种延迟是不可接受的。第二每个从站需要独立回复。在标准以太网中如果主站要读取 10 个从站的数据需要发送 10 个请求帧并接收 10 个响应帧。即使每个通信耗时 100 μs总时间也达到了 1 ms无法满足实时控制需求。第三TCP/IP 协议栈开销过大。操作系统内核中的 TCP/IP 协议栈处理涉及到多层封装/解封装、缓冲区管理、中断处理等延迟在毫秒级且抖动极大。EtherCAT 的解决方案从根本上重构了通信模型对比维度标准 TCP/IP 以太网EtherCAT帧的目的地单个节点单播或广播域顺序经过所有从站逻辑环网从站回复方式每个从站独立回复一帧去一帧回所有数据集中交换机需求需要不需要物理层直连即可从站处理位置CPU 软件协议栈ESC 硬件芯片级延迟量级ms 级μs 级 1 μs / 从站抖动大软件依赖极小硬件确定性EtherCAT 保留了标准以太网的物理层PHY和MAC 层帧格式Destination MAC Source MAC EtherType Data FCS因此可以使用标准以太网网线、RJ45 接口和物理层芯片。但 EtherCAT 的 EtherType 固定为0x88A4这是区分 EtherCAT 帧与普通以太网帧的唯一标识。关键认知EtherCAT 不是在以太网上跑的一种应用层协议不像 Modbus/TCP 或 PROFINET而是替代了以太网数据链路层及以上的通信机制。EtherCAT 帧中的数据区完全由 EtherCAT 自己定义不包含 IP 头、UDP 头或 TCP 头除非使用可选的 UDP/IP 封装模式。1.2 On-the-Fly Processing 的物理含义On-the-fly processing飞行中处理是 EtherCAT 能够实现微秒级延迟的核心机制。这个术语描述的并非某种软件优化技巧而是ESC 芯片硬件层面的数据流处理架构。在标准网络设备如交换机或普通以太网卡中一个帧的完整处理流程是接收端先通过 PHY 接收串行比特流在 MAC 层将比特流组装成完整的帧并存入内部 FIFO先进先出缓冲区然后 CPU 或交换芯片读取完整帧进行解析决定如何处理最后再通过发送端 PHY 转发出去。这种存储-转发Store-and-Forward模式的延迟取决于帧长度——一个 1500 字节的帧在 100 Mbps 链路上传输就需要120 μs。EtherCAT ESC 的处理方式完全不同。根据 Beckhoff ESC 数据手册 Section I 的描述 The frames are processed by the ESC on the fly, i.e., they are not stored inside the ESC. Data is read and written as the bits are passing the ESC. The forwarding delay is minimized to achieve fast cycle times. The forwarding delay is defined by the receive FIFO size and the EtherCAT Processing Unit delay. A transmit FIFO is omitted to reduce delay times.这句话包含几个关键工程事实第一ESC 内部没有完整的帧缓冲区。帧不会先被完整地接收再处理而是比特流在穿过 ESC 的同时就被解析和处理。ESC 内部只有一个极小的接收 FIFO用于时钟域转换和比特对齐转发延迟主要由这个 FIFO 深度决定。第二ESC 的发送端没有 FIFO。这是为了进一步降低延迟——数据从接收端进入后经过极短的处理延迟就直接从发送端流出。第三处理在硬件层面完成不依赖从站 CPU。ESC 芯片内部包含专门的 EtherCAT Processing UnitEPU它负责解析 EtherCAT 命令、执行地址匹配、读写本地寄存器或 DPRAM、更新 WKC 等所有操作。这些操作完全由硬件状态机完成不需要从站 MCU/DSP/FPGA 介入。类比想象一条高速公路上的收费站。标准以太网的存储-转发模式类似于收费站必须等整辆车完全停稳、读取全部信息后再抬杆放行。而 EtherCAT 的 on-the-fly 处理类似于 ETC 车道——车辆在减速的同时就被识别和扣费不需要完全停车。ETC 的延迟是毫秒级的而 ESC 的 on-the-fly 处理延迟是纳秒级ET1100 的典型转发延迟约为300~500 ns。1.3 一帧多站帧如何在链路中流动EtherCAT 的拓扑在物理上是线型或树型的但在逻辑上是一个环。这个环是由 ESC 芯片内部的端口转发逻辑自动形成的。帧在每个从站的 ESC 内部经历的处理流程如下PHY 接收PHY 芯片将物理层信号电平/光脉冲转换为 MII 接口的并行数据4 位 x 25 MHz 100 Mbps送入 ESC。帧解析ESC 的 EPU 解析以太网帧头确认 EtherType 为 0x88A4。Datagram 遍历ESC 依次处理帧内的每个 Datagram根据 Command 和 Address 字段判断是否需要响应。数据读写如果地址匹配ESC 从内部 DPRAM 读取数据填入 Datagram 的数据区读操作或将 Datagram 数据写入 DPRAM写操作。WKC 更新如果操作成功ESC 硬件自动递增该 Datagram 末尾的 Working Counter。帧转发处理后的比特流从 ESC 的下一个端口流出经过 PHY 发送到下一跳。主站发出一帧这一帧依次经过所有从站每个从站在帧经过时读写自己的数据帧返回主站时主站一次性获得所有从站的输入数据。整个过程的通信开销是其中 T_forward(i) 是第 i 个从站的转发延迟~300 nsT_propagation 是线缆传播延迟~5 ns/mT_frame 是帧传输时间与帧长度成正比。对于 100 个从站、100 字节过程数据的系统总周期时间可低至 100 μs。1.4 单主站架构的设计逻辑EtherCAT 网络在正常运行时只有一个主站Single Master所有从站都是被动的。这种设计不是技术上的限制而是协议架构的必然选择主站拥有全网配置的唯一控制权。从站的 ESC 寄存器、FMMU、SyncManager、DC 等所有关键配置都只能由主站写入。从站不能主动发起通信只能响应主站发出的 Datagram。这种主-从模型消除了多主站之间的仲裁延迟和冲突确保了通信的确定性。过程数据的逻辑地址空间由主站统一分配。主站在启动阶段为每个从站配置 FMMU将各从站的物理地址映射到主站逻辑地址空间中的特定位置。周期通信时主站使用逻辑寻址LRW 命令一次性读写所有从站的数据这一机制要求主站必须掌握全网配置信息。DC 同步需要主站作为时钟源。分布式时钟的初始化传播延迟测量、offset 补偿、drift 补偿完全由主站驱动。Reference Clock 的 System Time 也由主站初始化。例外情况EtherCAT 支持分布式时钟交叉同步DC Cross Synchronization允许通过背板总线将多个 EtherCAT 网段连接起来每个网段有自己的主站。但这是多网段架构每个网段内部仍然是单主站。1.5 与普通以太网和现场总线的简要对比以下对比仅服务于理解 EtherCAT 的设计选择不做全面的协议优劣评判特性标准以太网 (TCP/IP)CANopenPROFINET IRTEtherCAT物理层100M/1G 以太网CAN 总线100M 以太网100M 以太网拓扑星型交换机总线型星型/线型线型/树型/环型从站处理CPU 软件协议栈MCU 软件专用 ASIC/FPGAESC 硬件周期时间ms 级10 ms 级250 μs ~ 1 ms125 μs ~ 1 ms抖动大软件依赖中小极小硬件确定一帧多站不支持不支持有限支持核心机制过程数据带宽低协议开销大低 1 Mbps中高~90% 效率同步精度无无~1 μs 100 ns(DC)主站硬件要求标准 PC专用 CAN 卡专用控制器标准网卡从站芯片成本低普通 MCU低普通 MCU CAN中高中ESC 芯片EtherCAT 的独特优势在于它用标准以太网网卡作为主站硬件不需要专用 ASIC同时用专用 ESC 芯片实现从站的硬件级实时处理在成本和性能之间取得了极佳的平衡。1.6 小结与常见误区小结EtherCAT 的核心创新是on-the-fly 处理ESC 硬件在帧流经时完成数据读写无需存储完整帧。主站发出一帧经过所有从站后返回携带所有从站的输入数据。这是 EtherCAT 高效率的根本原因。EtherCAT 使用标准以太网物理层PHY、网线、RJ45但不使用标准以太网的数据链路层以上协议。EtherCAT 的 EtherType 是0x88A4这是识别 EtherCAT 帧的唯一标志。从站通信完全由ESC 硬件处理不需要从站 CPU 介入实时数据交换。网络拓扑在逻辑上是一个环由 ESC 端口自动管理。常见误区误区正确理解EtherCAT 是一种以太网应用层协议错误。EtherCAT 替换的是数据链路层不是运行在 TCP/IP 之上的应用层。EtherCAT 从站需要运行 Linux/RTOS 来处理通信错误。EtherCAT 通信由 ESC 硬件处理从站 CPU 只参与应用层可选。数字 IO 从站甚至不需要 MCU。EtherCAT 需要专用主站硬件错误。主站可以使用标准以太网网卡配合实时操作系统如 Linux RT-PREEMPT即可。EtherCAT 是共享总线会有冲突错误。EtherCAT 没有总线冲突问题——主站是唯一的通信发起者从站只响应。EtherCAT 帧里的数据是 TCP/IP 包错误。EtherCAT 帧的数据区是 EtherCAT Datagram没有 IP 头、UDP 头或 TCP 头。EtherCAT 从站地址是 MAC 地址错误。ESC 不评估目的 MAC 地址除 Source MAC 的 bit1 修改外从站寻址使用 Auto Increment Address、Configured Station Address 或 Logical Address。