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 配置是否正确、从站是否报错。台达控制器一般会在软件中显示从站当前状态和错误码,可据此定位问题。
关键配置示例: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)
配置完成后,可按以下顺序检查网络启动是否正常:
- 确认所有从站 ESI 文件已导入,站点地址无冲突;
- 检查 PDO 映射总长度与从站描述一致,避免“映射长度不匹配”错误;
- 启用 DC 并设置同步周期,确认参考时钟从站选择正确;
- 观察状态迁移:Init → Pre-OP → Safe-OP → OP,若卡在某一级,读取从站错误码;
- 进入 OP 后,用示波器或控制器跟踪功能观察周期抖动和同步误差。
掌握这五项机制后,后续在台达控制器上建立 EtherCAT 网络、扫描从站、配置 PDO 和 DC、启动轴时,就能清楚每一步在协议层面发生了什么,也能在出现状态迁移失败或同步异常时,快速判断问题出在邮箱配置、PDO 映射还是时钟同步环节。