4. EtherCAT从站设备与ESI文件解析

EtherCAT从站是主站控制逻辑真正落地的对象。主站并不直接“认识”一台伺服或一块IO模块,它认识的是从站控制器ESC、ESC外挂的EEPROM,以及由厂商提供的ESI(EtherCAT Slave Information)文件。三者关系可以概括为:ESC负责实时数据链路与过程数据处理,EEPROM保存从站身份与配置信息,ESI文件则把从站能力以XML形式描述给主站配置工具。理解这条链路,才能正确识别多轴伺服与IO从站,并完成PDO/SDO映射。

ESC与EEPROM:从站的硬件身份

ESC(EtherCAT Slave Controller)是从站通信的核心芯片或IP核,常见如ET1100、ET1200、LAN9252、AX58100等。它内部包含过程数据RAM、FMMU(现场总线内存管理单元)、同步管理器SM、分布式时钟DC单元以及ESC寄存器区。主站发出的过程数据帧经过每个从站时,ESC根据FMMU配置把报文中对应数据直接读写到本地过程数据RAM,无需CPU逐帧干预,这正是EtherCAT高实时性的来源。

ESC外接的EEPROM通常为1Kbit~4Mbit,保存两类关键信息:一是ESC寄存器配置字,如上电时FMMU/SM/DC的初始值;二是SII(Slave Information Interface)区,包含厂商ID、产品代码、修订号、序列号、邮箱协议、SM配置、FMMU使用、同步管理器、PDO与SDO描述等。主站上电扫描时读取SII,得到从站基本身份。若EEPROM为空或校验错误,从站可能无法进入OP状态,主站日志常出现“SII read failed”或“invalid EEPROM”。

ESI文件结构:从站能力的XML描述

ESI文件是厂商随从站提供的XML文档,扩展名通常为.xml,主站配置工具(如TwinCAT、CODESYS、IgH EtherCAT Master的ethercat conf)通过它生成从站描述。ESI的核心节点包括:

  • Vendor:厂商ID与名称,与EEPROM中SII一致。
  • Descriptions/Devices/Device:设备类型、产品代码、修订号、名称。
  • Sm:同步管理器配置,定义邮箱SM0/SM1与过程数据SM2/SM3的起止地址、控制字节、使能状态。
  • Fmmu:FMMU使用数量与映射方向。
  • Dc:分布式时钟能力,如支持64位时间、SYNC0/SYNC1周期。
  • Mailbox:邮箱协议,通常为AoE、CoE、EoE、FoE、SoE之一或组合。
  • RxPdo/TxPdo:过程数据对象,定义每个PDO的索引、名称、同步管理器、条目与数据类型。
  • Dictionary/Objects:对象字典,列出SDO可访问的索引、子索引、数据类型、访问权限与默认值。

ESI文件不是“可执行程序”,而是主站配置的元数据。主站工具解析ESI后,把从站加入网络拓扑,并允许用户选择PDO映射、设置DC模式、配置启动SDO。若ESI与EEPROM中的产品代码、修订号不匹配,主站可能拒绝进入OP状态,或提示“ESI mismatch”。

EtherCAT从站识别与ESI解析关系图 EtherCAT主站 扫描拓扑 / 配置PDO 读写SDO / 状态机 ESI 文件 (XML) Vendor / Device / Sm / Fmmu RxPdo / TxPdo / Dictionary Dc / Mailbox / CoE EtherCAT 从站设备 ESC FMMU/SM/DC/RAM EEPROM SII/寄存器配置 解析 匹配 过程数据帧 (PDO) 周期读写 对象字典 OD 0x1000 设备类型 0x1018 厂商/产品/修订 0x1C12 RxPDO 分配 0x1C13 TxPDO 分配 0x6040 控制字 / 0x6041 状态字 0x607A 目标位置 / 0x6064 实际位置 0x60FF 目标速度 / 0x606C 实际速度 PDO 映射 RxPDO 0x1600 0x6040:00 控制字 16bit 0x607A:00 目标位置 32bit 0x60FF:00 目标速度 32bit TxPDO 0x1A00 0x6041:00 状态字 16bit 0x6064:00 实际位置 32bit SDO 邮箱访问 SM0 邮箱输出 / SM1 邮箱输入 CoE: SDO Upload / Download 读取 0x1018 识别从站 写入 0x6060 运行模式 配置 0x1C12/0x1C13 PDO 读取 0x603F 错误码 SDO 非周期,PDO 周期 映射 访问

对象字典、PDO与SDO映射

对象字典(Object Dictionary)是从站内部按索引组织的参数集合。每个对象由16位索引和8位子索引定位,例如0x6040:00为控制字,0x607A:00为目标位置。对象字典中的对象按通信对象、制造商对象、设备子协议对象分类。CoE(CANopen over EtherCAT)协议通过SDO访问对象字典,通过PDO周期传输过程数据。

PDO映射的本质是把对象字典中的若干对象“打包”到过程数据帧的固定位置。以一台支持CSP模式的多轴伺服为例,RxPDO(主站→从站)可映射0x6040控制字、0x607A目标位置、0x60FF目标速度;TxPDO(从站→主站)可映射0x6041状态字、0x6064实际位置、0x606C实际速度。映射关系在ESI的RxPdo/TxPdo节点中声明,主站配置时通过0x1C12/0x1C13对象把PDO分配给同步管理器SM2/SM3。

SDO则用于非周期参数访问,如读取0x1018确认厂商ID与产品代码、写入0x6060设置运行模式、读取0x603F获取错误码。SDO通过邮箱SM0/SM1传输,不占用过程数据带宽,但响应时间较长,适合初始化与诊断。实际工程中,先通过SDO识别从站身份并配置参数,再通过PDO建立周期数据交换,最后启动DC同步进入OP状态。

多轴伺服与IO从站识别方法

多轴伺服从站识别通常分三步。第一步,读取EEPROM SII或通过SDO读取0x1018,获取厂商ID、产品代码、修订号,与ESI文件比对,确认从站型号与固件版本。第二步,检查SM配置与FMMU使用,确认过程数据SM2/SM3地址范围与主站分配一致。第三步,读取0x1C12/0x1C13确认PDO分配,再读取0x6060确认运行模式,最后检查0x6041状态字是否进入“Operation enabled”。

IO从站识别相对简单,但同样需要关注PDO映射。数字量输入从站通常TxPDO映射0x6000系列对象,数字量输出从站RxPDO映射0x7000系列对象。若IO从站PDO映射为空,主站可能只进入PREOP而无法进入OP。此时应检查ESI中RxPdo/TxPdo是否定义,以及0x1C12/0x1C13是否被正确写入。

识别检查要点:厂商ID与产品代码必须与ESI一致;修订号决定ESI是否兼容;SM2/SM3地址不能与邮箱SM0/SM1重叠;PDO总长度不能超过SM过程数据区容量;DC模式需与主站参考时钟一致。
常见排障:若主站扫描到从站但无法进入OP,优先查看SII读取是否成功、ESI是否匹配、PDO映射是否为空、SM看门狗是否超时。若多轴伺服中某一轴位置反馈异常,检查TxPDO中0x6064映射长度是否为32位,以及FMMU映射方向是否正确。

实际配置时,建议先建立一张从站识别表,记录每个从站的厂商ID、产品代码、修订号、SM配置、PDO映射与DC能力。这样在多轴系统中,当某一轴无法进入OP或位置数据异常时,可以快速定位是ESI不匹配、PDO映射错误还是DC同步问题。ESI文件解析不是一次性工作,而是从站识别、参数配置与故障排查的基础依据。