2. EtherCAT协议帧结构与通信机制
EtherCAT 的高实时性并不来自“把每个从站单独问一遍”,而是来自一种很特别的帧处理方式:主站发出一帧标准以太网帧,帧内携带一个或多个 EtherCAT 数据报,数据报在经过每个从站时被“边读边写、边转发”。要真正理解分布式 IO 的通信行为,必须同时看清四件事:帧长什么样、地址怎么指、过程数据怎么传、时钟怎么对齐。
一、EtherCAT 帧格式:标准以太网帧里的“数据报列车”
EtherCAT 帧在链路层使用以太网 II 帧结构,以太网类型字段为 0x88A4,这是识别 EtherCAT 流量的关键标志。以太网帧头之后是 EtherCAT 数据区,数据区由一个或多个 EtherCAT 数据报(Datagram)组成,每个数据报结构固定为 10 字节头 + 数据 + 2 字节工作计数器 WKC。
数据报头中的关键字段包括:命令(Command)、索引(Index)、地址区(Address)、长度(Length)、循环标志(C)、更多标志(M)等。命令字段决定该数据报是读、写还是读写,以及使用逻辑寻址还是自动增量寻址。地址区 4 字节的含义随寻址方式变化:逻辑寻址时它是 32 位逻辑地址;自动增量寻址时它由 16 位位置地址和 16 位偏移组成。WKC 是 EtherCAT 最实用的诊断字段之一,从站每成功处理一次数据报,WKC 就加 1,主站据此判断“这一帧到底被几个从站正确读写过”。
二、逻辑寻址与自动增量寻址:两种“找从站”的方式
EtherCAT 有两种基本寻址方式,用途完全不同。
自动增量寻址用于启动阶段和寄存器访问。主站把数据报地址设为“位置地址 + 偏移”,位置地址从 0 开始,每经过一个从站自动加 1。这样主站不需要预先知道从站拓扑,就能逐个访问从站的 ESC 寄存器,完成站地址分配、EEPROM 读取、SM/FMMU 配置等初始化工作。它的特点是“边走边加”,适合枚举和配置,不适合周期性过程数据。
逻辑寻址用于周期性过程数据交换。主站把整个从站群的过程数据映射成一段 32 位逻辑地址空间,每个从站通过 FMMU(现场总线内存管理单元)把逻辑地址映射到本地物理内存。主站发一帧,所有从站同时从同一逻辑地址段中读取输出、写入输入,实现“一帧广播、全网同步”。逻辑寻址是 EtherCAT 高效率的核心,也是分布式 IO 周期通信的默认方式。
三、过程数据对象:周期通信的“数据容器”
过程数据对象(PDO)是周期性交换的实际数据单元。每个从站通过 SM(SyncManager)和 FMMU 把输入 PDO 和输出 PDO 映射到逻辑地址空间。主站在配置阶段读取从站 ESI 文件,确定每个 PDO 的偏移、长度和数据类型,然后写入 FMMU 和 SM 配置。
以一个 16 路数字量输入、16 路数字量输出的耦合器为例:输入 PDO 可能占 2 字节,输出 PDO 占 2 字节。主站把这两个 PDO 分别映射到逻辑地址 0x00001000 和 0x00001002。周期运行时,主站每 1 ms 发一帧,从站从逻辑地址 0x00001002 读取 2 字节输出并驱动端子,同时把 16 路输入状态写入 0x00001000。主站收到返回帧后,直接读取输入字节即可判断现场信号。整个过程不需要逐站轮询,延迟极低。
四、邮箱通信:非周期配置与诊断的通道
邮箱通信用于非周期性数据,如参数读写、SDO 上传下载、诊断信息、固件升级等。它通过 SM0(主站到从站)和 SM1(从站到主站)两个同步管理器实现,采用请求/响应模式。主站写入请求,从站处理后在响应邮箱中返回结果。邮箱通信不占用过程数据带宽,但优先级低于 PDO,通常用于启动配置和运行中的参数调整。
实际调试中,如果 PDO 映射正确但某个参数读不到,应优先检查邮箱 SM 是否使能、邮箱长度是否匹配、从站是否处于 PREOP 以上状态。邮箱通信正常是进入 OP 状态的前提之一。
五、分布式时钟同步:让全网“对表”
分布式时钟(DC)用于让所有从站的本地时钟与主站参考时钟对齐。原理是:主站发送带有参考时钟时间戳的帧,帧经过每个从站时,从站记录本地接收时间,并计算传播延迟和偏移。主站随后下发偏移补偿值,从站调整本地时钟,使全网时钟偏差控制在纳秒级。
DC 同步通常分两步:先测量各从站之间的传播延迟,再计算每个从站的时钟偏移。同步完成后,从站可以基于同一时间基准触发采样或输出,实现多轴同步、高速触发等应用。对于分布式 IO,如果只是普通开关量采集,DC 不是必须的;但如果涉及高速位置锁存、同步输出或运动控制,DC 必须正确配置。
理解这五个部分后,EtherCAT 分布式 IO 的通信行为就不再神秘:帧是载体,寻址是路径,PDO 是内容,邮箱是辅助通道,DC 是时间基准。五者配合,才能实现高实时、高同步的分布式 IO 控制。