2. EtherCAT协议核心机制与伺服通信映射
EtherCAT之所以能在伺服驱动领域成为主流实时以太网方案,关键在于它把“主站—从站”的通信模型、逻辑寻址、过程数据对象、分布式时钟以及周期/邮箱两类通信通道组合成了一套可预测、可同步、可诊断的机制。理解这些机制,是后续完成PDO映射、DC配置和通信调试的前提。
主站/从站模型:只有主站发帧,从站“边读边写”
EtherCAT采用主从结构,但与传统轮询不同:整个网络中通常只有一个主站(如基于IgH EtherCAT Master、TwinCAT或CODESYS的控制器),它发送一个以太网帧沿环形拓扑依次经过每个从站。每个从站(伺服驱动器、IO模块、编码器接口等)在帧经过时,用硬件ESC(EtherCAT Slave Controller)在极短时间内读取属于自己的数据,并把要上报的数据写回同一帧。帧绕行一圈后返回主站,主站一次收发即可完成对所有从站的读写。
这种“on-the-fly”处理方式使通信效率与从站数量关系不大,而与帧长度和拓扑延迟有关。对伺服驱动而言,这意味着位置指令、速度指令、状态字、实际位置等数据可以在同一个周期帧中完成交换,而不需要为每个轴单独建立连接。
逻辑寻址与过程数据对象:把物理位置映射成可用的过程数据
EtherCAT支持多种寻址方式,其中伺服通信最常用的是逻辑寻址。主站为每个从站分配一个或多个逻辑地址,从站根据逻辑地址判断帧中哪些字节属于自己。逻辑寻址与FMMU(Fieldbus Memory Management Unit)配合,把从站物理内存中的对象映射到主站过程映像区。主站看到的是连续的过程数据区,从站看到的是自己的对象字典条目,中间由FMMU完成地址翻译。
过程数据对象(PDO)就是这些被周期性交换的对象集合。以一台典型伺服驱动器为例,常用PDO包括:
- RxPDO(主站→从站):控制字0x6040、目标位置0x607A、目标速度0x60FF、目标转矩0x6071、运行模式0x6060;
- TxPDO(从站→主站):状态字0x6041、实际位置0x6064、实际速度0x606C、实际转矩0x6077、错误码0x603F。
PDO映射的本质,是把对象字典中的条目按顺序“拼”进过程数据帧。例如把控制字(2字节)、目标位置(4字节)、目标速度(4字节)依次映射到RxPDO,主站过程映像区中就会形成一段10字节的连续区域。映射顺序、字节长度和数据类型必须与从站ESI/XML描述一致,否则会出现数据错位或从站拒绝进入OP状态。
分布式时钟:让多轴在同一时间基准下动作
分布式时钟(DC)解决的是“多个从站何时采样、何时输出”的问题。EtherCAT网络中第一个支持DC的从站通常作为参考时钟,其他从站通过测量帧到达时间与参考时钟的偏差,逐步调整本地时钟,使所有从站时钟与参考时钟对齐。对齐后,主站可以下发同步信号(SYNC0/SYNC1),从站在指定时刻同时锁存输入、更新输出。
对伺服驱动来说,DC直接影响多轴插补和同步精度。若没有DC,各轴按各自接收帧的时刻动作,轴间会存在随拓扑和帧传输波动的相位差;启用DC后,位置环和电流环的采样点被统一到同一时间网格上。典型配置中,SYNC0周期等于通信周期,例如1ms或500μs,从站在SYNC0触发后开始执行新的位置指令。
周期通信与邮箱通信:实时数据与非实时参数各走各的路
EtherCAT在同一物理链路上划分了两类逻辑通信:
- 周期通信(过程数据):使用逻辑寻址和PDO,在每个通信周期内固定交换,要求低延迟、低抖动,承载控制字、状态字、位置、速度、转矩等实时数据;
- 邮箱通信(Mailbox):使用CoE(CANopen over EtherCAT)等协议,承载对象字典读写、参数下载、故障诊断、固件升级等非周期数据,通常不占用周期帧的实时带宽,而是在周期帧中预留邮箱缓冲区。
在伺服驱动中,这两类通信分工明确:周期通信负责“让轴动起来”,邮箱通信负责“让轴按正确参数动起来”。例如,驱动器上电后先通过邮箱通信写入0x6060运行模式、0x6091齿轮比、0x6081轮廓速度等参数,确认无误后再切换到OP状态,由PDO周期交换控制字和目标位置。若把参数配置也塞进周期通信,会增大帧长、降低周期稳定性;若把实时控制交给邮箱通信,则无法满足伺服环路的确定性要求。
从站状态机:通信建立的实际顺序
EtherCAT从站遵循ESM状态机:Init → Pre-Op → Safe-Op → Op。邮箱通信在Pre-Op阶段即可使用,用于读写对象字典、配置PDO映射和DC参数;进入Safe-Op后,从站开始接收PDO输入但输出保持安全状态;只有进入Op,周期输出才真正生效。伺服调试中常见的“轴不动”问题,往往不是PDO映射错误,而是从站没有从Safe-Op进入Op,或DC同步未建立导致从站拒绝切换。
实际配置时,可以按以下顺序检查:先用邮箱通信读取0x1018(厂商ID、产品码)确认从站识别正确;再写0x1C12/0x1C13配置RxPDO/TxPDO映射;然后设置0x6060运行模式、0x6091齿轮比等参数;最后使能从站DC并等待状态字0x6041的“Operation enabled”位。每一步都应有明确的返回值或状态位可观察,而不是一次性下发后盲目等待。