2. EtherCAT协议基础:工作原理、帧结构、寻址方式与通信模式
EtherCAT(Ethernet for Control Automation Technology)由德国Beckhoff公司于2003年提出,是一种基于标准以太网物理层的高实时性工业现场总线协议。它并非简单地“用TCP/IP传输控制数据”,而是采用独特的“飞读飞写”(Processing on the Fly)机制,使主站发送的以太网帧在经过每个从站时,从站硬件实时提取或插入过程数据,帧的传输延迟仅为纳秒级。理解EtherCAT的帧结构、寻址方式和通信模式,是后续配置主站、调试从站、分析总线性能的基础。本章将系统拆解这些核心概念,并对比其与标准以太网的差异。
上图展示了EtherCAT的核心工作逻辑:主站发送一个标准以太网帧,帧内封装一个或多个EtherCAT报文;报文依次经过每个从站,从站硬件(ESC,EtherCAT Slave Controller)在报文经过时实时处理数据,并将处理后的报文继续向下传递;最后一个从站将报文返回给主站。这种“处理即转发”的机制,使得EtherCAT在100Mbps以太网下,处理1000个分布式I/O点的刷新时间仅为约30微秒。
2.1 EtherCAT工作原理:飞读飞写机制
核心原理:EtherCAT的“飞读飞写”机制是其高性能的根本。传统以太网通信中,数据帧需要经过完整的协议栈解析(TCP/IP、UDP等),再由CPU处理,延迟通常在毫秒级。而EtherCAT从站使用专用ESC芯片(如Beckhoff ET1100、Microchip LAN9252等),该芯片内部集成了硬件以太网MAC和PHY,以及一个现场总线内存管理单元(FMMU)。当以太网帧到达从站时,ESC硬件直接读取帧中对应报文的数据,同时将需要输出的数据写入帧的相应位置,整个过程不需要CPU参与,也不进行帧的存储转发。
判断方法:如何判断一个从站是否真正支持“飞读飞写”?可以从以下三点观察:
- 硬件层面:从站必须使用支持EtherCAT协议的ESC芯片,而非普通以太网控制器(如DM9000)。
- 延迟指标:单个从站的帧处理延迟(转发延迟)应小于1微秒,通常为纳秒级(ET1100约为0.3μs)。
- 数据路径:过程数据不经过CPU,而是通过DMA或双端口RAM直接映射到应用层。
案例拆解:假设一条生产线上有20个伺服驱动器,每个驱动器需要接收4字节位置指令并反馈4字节实际位置。在传统以太网中,主站需要依次向20个从站发送20个独立的UDP数据包,每个包都要经过从站CPU解析,总耗时可能超过5ms。而在EtherCAT中,主站只需发送一个以太网帧,帧内包含一个长度为160字节(20×8)的报文。该报文依次经过20个从站,每个从站在报文经过时,用硬件逻辑提取自己的4字节指令并写入4字节反馈,整个帧的传输时间仅为:帧长度(约200字节)×8bit/100Mbps ≈ 16μs,加上20个从站的转发延迟(约6μs),总耗时不到25μs,性能提升超过200倍。
ethercat master 命令查看每个从站的“帧处理时间”统计。如果发现某个从站的转发延迟异常增大(超过1μs),通常意味着该从站的ESC配置有误,或从站固件中进行了不必要的数据拷贝。
2.2 EtherCAT帧结构与报文格式
帧结构详解:EtherCAT直接使用标准以太网帧(IEEE 802.3),但将EtherType字段设置为0x88A4,以标识这是一个EtherCAT帧。帧结构如下:
| 字段 | 长度(字节) | 说明 |
|---|---|---|
| 目的MAC地址 | 6 | 通常为广播地址(FF:FF:FF:FF:FF:FF)或主站MAC |
| 源MAC地址 | 6 | 主站MAC地址 |
| EtherType | 2 | 固定为0x88A4 |
| EtherCAT报文头 | 2 | 长度(11位)+ 保留(1位)+ 类型(4位) |
| EtherCAT报文(一个或多个) | 可变 | 每个报文包含报文头、数据区和WKC |
| 帧校验序列(FCS) | 4 | CRC32校验 |
每个EtherCAT报文内部又分为三个部分:
- 报文头(10字节):包含命令类型(1字节)、索引(1字节)、从站地址(4字节)、数据长度(2字节)、保留位(1位)、循环位C(1位)、下一个报文标志M(1位)。其中命令类型决定了寻址方式和操作类型(读、写、读写)。
- 数据区(0-1486字节):存放过程数据或邮箱数据。由于以太网帧最大长度为1518字节,减去各层头部后,单个报文数据区最大为1486字节。若需传输更多数据,可在一个帧中封装多个报文,或使用M位标志进行报文拼接。
- 工作计数器WKC(2字节):这是EtherCAT特有的机制。每个从站在处理报文时,会根据操作类型递增WKC的值。主站通过检查WKC的返回值,可以确认有多少个从站成功执行了操作。例如,一个写操作命令,每个参与的从站会将WKC加1;一个读操作,每个从站加1;一个读写操作,每个从站加2。主站发送报文时WKC初始化为0,帧返回后,主站检查WKC是否等于预期值,若不等于则说明有从站未正确响应。
ethercat debug 命令可以查看每个报文的WKC值。例如,若配置了3个从站进行周期数据交换,但返回的WKC为2,则说明有一个从站未参与通信。此时应检查该从站的EtherCAT状态机是否处于OP状态,或FMMU配置是否正确。
2.3 寻址方式:位置寻址、节点寻址与逻辑寻址
EtherCAT支持三种寻址方式,分别用于不同的通信阶段和目的。
位置寻址(自动增量寻址):在系统启动初期,主站尚未分配从站地址时使用。主站发送一个广播报文,地址字段设置为0。第一个从站收到后,将自身地址设置为0,并将报文中的地址字段加1后转发;第二个从站收到时地址字段为1,将自身地址设置为1,再加1转发;以此类推。这样,每个从站的地址就是其在总线中的物理位置(拓扑顺序)。位置寻址的优点是无需预先配置,但缺点是如果从站数量变化,所有后续从站的地址都会改变。
节点寻址(静态寻址):在启动阶段,主站通过位置寻址为每个从站分配一个唯一的静态地址(通常为1-65535)。之后,主站使用节点寻址直接访问指定从站,不受拓扑顺序影响。节点寻址用于邮箱通信(如CoE参数配置)和诊断。
逻辑寻址(FMMU映射):这是周期过程数据通信的主要寻址方式。主站通过配置每个从站的FMMU(现场总线内存管理单元),将各从站的过程数据映射到一个连续的逻辑地址空间。例如,从站1的4字节输入数据映射到逻辑地址0x1000-0x1003,从站2的4字节输入数据映射到0x1004-0x1007。主站发送一个读命令,地址设置为0x1000,数据长度为8字节,该报文经过所有从站时,每个从站根据自身的FMMU配置,判断报文地址是否落在自己的映射范围内,若是则将自己的数据插入报文的相应位置。这样,主站一次读操作即可获取所有从站的输入数据,极大提高了总线利用率。
| 寻址方式 | 地址设置 | 使用阶段 | 典型应用 |
|---|---|---|---|
| 位置寻址 | 自动增量(0,1,2...) | 启动初始化 | 扫描从站、分配静态地址 |
| 节点寻址 | 静态地址(1-65535) | 配置与诊断 | CoE邮箱、SDO参数读写 |
| 逻辑寻址 | FMMU映射的连续地址 | 周期运行 | 过程数据I/O刷新 |
ethercat slaves 命令显示的从站编号(0,1,2...)是位置寻址的结果,而 ethercat config 中配置的地址才是节点寻址。两者不可混用。
2.4 通信模式:周期性过程数据与非周期性邮箱
周期性过程数据通信(PDO):这是EtherCAT实时控制的核心。主站以固定的周期(如1ms、0.5ms甚至更短)发送过程数据帧,帧内使用逻辑寻址,一次性读写所有从站的I/O数据。这种通信模式具有以下特点:
- 确定性:通信周期由主站控制,不受网络负载影响。
- 低延迟:数据在硬件层面处理,延迟为微秒级。
- 高同步性:配合分布式时钟(DC),所有从站可同时采样输入和更新输出,同步误差小于1微秒。
非周期性邮箱通信(CoE):用于传输偶发的、非实时的数据,如设备参数配置、诊断信息、固件升级等。邮箱通信基于节点寻址,采用请求-响应模式。在IgH主站中,使用 ethercat upload 和 ethercat download 命令进行SDO读写,就是典型的邮箱通信。邮箱通信的优先级低于过程数据,不会影响实时性。
案例拆解:伺服驱动的参数配置与实时控制
假设需要控制一个EtherCAT伺服驱动器:
- 初始化阶段:主站通过位置寻址扫描总线,发现驱动器位于位置0,分配静态地址为1001。
- 参数配置阶段:主站通过节点寻址(地址1001)发送邮箱报文,使用CoE协议(SDO)设置驱动器的运行模式(如周期同步位置模式CSP)、电机额定参数、加减速时间等。此阶段不要求实时性,允许几十毫秒的响应时间。
- 运行阶段:主站配置FMMU,将驱动器的控制字(2字节)、目标位置(4字节)映射到逻辑地址0x2000-0x2005,将状态字(2字节)、实际位置(4字节)映射到逻辑地址0x3000-0x3005。然后,主站以1ms周期发送过程数据帧,帧内包含一个读命令(读取0x3000开始的6字节)和一个写命令(写入0x2000开始的6字节)。驱动器在每个周期内自动更新数据。
- 监控阶段:主站通过邮箱通信周期性地读取驱动器的温度、报警码等非实时数据,用于状态监控。
ecrt_master_sync_io() 函数触发,而非周期性邮箱通信通过 ecrt_master_sdo_request() 函数处理。两者应使用不同的线程或任务,避免邮箱通信阻塞过程数据周期。
2.5 EtherCAT与标准以太网的区别
EtherCAT虽然基于以太网物理层,但在协议栈、实时性、数据交换方式上与标准以太网有本质区别:
| 对比维度 | 标准以太网(TCP/IP) | EtherCAT |
|---|---|---|
| 协议栈 | 完整TCP/IP协议栈,软件处理 | 硬件处理,仅使用以太网MAC/PHY |
| 数据交换方式 | 点对点,每个设备独立收发 | 飞读飞写,帧依次经过所有从站 |
| 实时性 | 非确定性,延迟毫秒级 | 确定性,延迟微秒级 |
| 同步精度 | 无硬件同步机制 | 分布式时钟,同步误差<1μs |
| 网络拓扑 | 星型为主,需交换机 | 线型、树型、星型,无需交换机 |
| 数据利用率 | TCP/IP头部开销大(>40字节/包) | 帧头开销小,可承载多个报文 |
| 从站成本 | 需CPU和完整协议栈 | 仅需ESC芯片,无需CPU |
常见误区与总结:
- 误区1:认为EtherCAT是“更快的以太网”。实际上,EtherCAT的速率仍是100Mbps,其优势在于协议机制而非物理速率。
- 误区2:认为EtherCAT从站必须使用FPGA实现。实际上,绝大多数从站使用专用ESC芯片(如LAN9252),成本低且开发简单。
- 误区3:忽略WKC的检查。WKC是判断通信是否成功的关键指标,在IgH主站中,若WKC不匹配,主站会报错并停止过程数据通信。