2. EtherCAT协议核心机制

EtherCAT 的高实时性并非来自某一条“快指令”,而是由主从架构、过程数据对象、邮箱通信、分布式时钟和状态机共同构成的一套协同机制。理解这五者之间的关系,是后续在台达 AX/AS 系列控制器与 ASDA 系列伺服上完成网络集成的前提。本节先建立整体框架,再逐项展开关键细节。

主站/从站架构:逻辑环与“飞读飞写”

EtherCAT 采用单主站、多从站的总线结构。主站通常由控制器(如台达 AX-3 系列运动控制器)承担,从站则是伺服驱动器、远程 IO、编码器模块等设备。物理上它们可以是线型、树型或环型拓扑,但逻辑上数据始终沿一个方向依次穿过每个从站,形成一条“逻辑环”。

其核心机制是“On the fly”处理:主站发出一帧 EtherCAT 报文,报文依次经过每个从站。从站在报文经过自己的瞬间,直接从报文中读取属于本节点的输出数据,同时把本节点的输入数据写回报文对应位置,不需要完整接收整帧再转发。因此,一帧报文可以同时携带所有从站的过程数据,网络刷新周期与从站数量基本解耦。这也是 EtherCAT 能在 1 ms 甚至更短周期内同步数十个轴的根本原因。

过程数据对象(PDO):周期性实时数据通道

过程数据对象(Process Data Object,PDO)承载的是每个通信周期都要交换的实时数据,例如伺服的控制字、目标位置、状态字、实际位置、实际速度、转矩等。PDO 通信不经过协议栈的复杂解析,而是直接映射到从站内存的固定地址,因此延迟极低。

PDO 分为两类:主站发往从站的 RxPDO(从站接收),以及从站发往主站的 TxPDO(从站发送)。在工程配置中,需要把具体对象字典条目映射到 PDO 中。以台达 ASDA 伺服为例,常见映射包括:

  • RxPDO:0x6040 控制字、0x607A 目标位置、0x60FF 目标速度、0x6060 运行模式;
  • TxPDO:0x6041 状态字、0x6064 实际位置、0x606C 实际速度、0x6077 实际转矩。

映射完成后,主站每个周期只需按固定偏移读写这段数据区,即可完成对所有轴的同步控制。PDO 的映射顺序和长度必须与从站 ESI 文件描述一致,否则会出现数据错位或从站无法进入 OP 状态。

邮箱通信:非周期性参数通道

与 PDO 相对的是邮箱通信(Mailbox)。它用于传输非周期性的、对实时性要求不高的数据,例如参数读写、对象字典访问、固件升级、诊断信息等。邮箱通信基于 CoE(CANopen over EtherCAT)协议,复用 CANopen 的对象字典和 SDO 服务。

邮箱通信与 PDO 的关键区别在于:PDO 是“周期、固定映射、直接内存访问”,邮箱是“事件触发、按需传输、需要握手确认”。因此,像修改伺服增益、读取故障码、写入电子齿轮比这类操作,应通过邮箱 SDO 完成,而不是塞进 PDO。若把参数写入放在 PDO 中,会破坏实时通道的确定性,甚至导致周期抖动。

分布式时钟(DC):让所有从站“对表”

分布式时钟(Distributed Clocks,DC)解决的是多轴同步问题。EtherCAT 从站各自有本地时钟,DC 机制通过测量报文在环路上的传播延迟,计算并补偿各从站时钟偏差,使所有从站共享一个统一的系统时间基准。

其过程大致为:主站先发送带有参考时钟的报文,各从站记录报文到达和离开的时间戳;主站据此计算传播延迟和偏移量,再下发时钟补偿值。最终,各从站时钟与参考时钟对齐,同步精度可达亚微秒级。对于多轴插补、电子凸轮、飞剪等应用,DC 是必须启用的。若未启用 DC,各轴可能各自为政,导致轨迹偏差或机械冲击。

状态机与网络启动流程

EtherCAT 从站必须按照标准状态机依次迁移,不能跳级。状态包括:Init(初始化)、Pre-Operational(预运行)、Safe-Operational(安全运行)、Operational(运行)。

启动流程通常为:上电后从站进入 Init;主站配置站点地址和邮箱参数后,请求进入 Pre-OP,此时邮箱通信可用,可进行 SDO 参数配置和 PDO 映射;随后请求进入 Safe-OP,此时从站开始接收 PDO 数据,但输出保持安全状态(如伺服使能关闭);最后请求进入 OP,PDO 输入输出全部生效,伺服使能,轴开始按主站指令运动。

如果状态迁移失败,通常需要检查:ESI 文件是否匹配、PDO 映射长度是否一致、DC 配置是否正确、从站是否报错。台达控制器一般会在软件中显示从站当前状态和错误码,可据此定位问题。

EtherCAT 核心机制与网络启动状态迁移 EtherCAT 主站 台达 AX / AS 控制器 周期任务 + 帧调度 从站 1 ASDA 伺服 ESC + 本地时钟 从站 2 远程 IO 模块 ESC + 本地时钟 从站 n 编码器 / 阀岛 ESC + 本地时钟 逻辑环:报文依次穿过各从站,On the fly 读写 过程数据对象 PDO(周期实时) RxPDO:0x6040 控制字 / 0x607A 目标位置 / 0x60FF 目标速度 TxPDO:0x6041 状态字 / 0x6064 实际位置 / 0x606C 实际速度 特点:固定映射、直接内存访问、每周期刷新 邮箱通信 Mailbox(非周期) CoE / SDO:参数读写、对象字典访问、诊断 示例:修改增益、写电子齿轮比、读故障码 特点:事件触发、握手确认、不占用实时通道 从站状态机迁移(不可跳级) Init Pre-Operational Safe-Operational Operational 配置站点/邮箱 PDO 映射 输出使能 分布式时钟 DC:测量传播延迟 → 补偿偏移 → 统一时间基准 同步精度可达亚微秒级,多轴插补/凸轮必须启用

关键配置示例:PDO 映射与状态迁移检查

下面给出一段典型的 PDO 映射配置片段(以台达 ASDA 伺服为例,参数为示例值,实际应以 ESI 文件为准):

RxPDO 映射(主站 → 从站):
  0x1600 : 0x6040:00 控制字        (16 bit)
           0x607A:00 目标位置      (32 bit)
           0x60FF:00 目标速度      (32 bit)
           0x6060:00 运行模式      (8 bit)

TxPDO 映射(从站 → 主站):
  0x1A00 : 0x6041:00 状态字        (16 bit)
           0x6064:00 实际位置      (32 bit)
           0x606C:00 实际速度      (32 bit)
           0x6077:00 实际转矩      (16 bit)

配置完成后,可按以下顺序检查网络启动是否正常:

  1. 确认所有从站 ESI 文件已导入,站点地址无冲突;
  2. 检查 PDO 映射总长度与从站描述一致,避免“映射长度不匹配”错误;
  3. 启用 DC 并设置同步周期,确认参考时钟从站选择正确;
  4. 观察状态迁移:Init → Pre-OP → Safe-OP → OP,若卡在某一级,读取从站错误码;
  5. 进入 OP 后,用示波器或控制器跟踪功能观察周期抖动和同步误差。
PDO 负责“每周期都要传的实时数据”,邮箱负责“偶尔改一次的参数”。两者分工明确,不要把参数写入塞进 PDO,否则会破坏实时性。
若从站无法进入 OP 状态,优先排查:PDO 映射长度、DC 配置、ESI 文件版本、站点地址冲突。台达控制器通常会在从站列表中显示当前状态和错误码,可据此快速定位。

掌握这五项机制后,后续在台达控制器上建立 EtherCAT 网络、扫描从站、配置 PDO 和 DC、启动轴时,就能清楚每一步在协议层面发生了什么,也能在出现状态迁移失败或同步异常时,快速判断问题出在邮箱配置、PDO 映射还是时钟同步环节。