4. EtherCAT从站EEPROM结构

EtherCAT从站上电后,主站首先通过ESC(EtherCAT Slave Controller)读取EEPROM中的信息,以识别设备身份、能力与配置。EEPROM并不是一段随意存放的字节,而是按照EtherCAT规范严格划分的地址映射结构。理解这套结构,是排查“从站识别失败”“PDO配置不匹配”“固件升级后设备不认”等问题的关键基础。

一、EEPROM地址映射总览

EtherCAT从站EEPROM通常为1 Kbit至4 Kbit(部分支持更大容量),采用字地址(Word Address)寻址,每个字为16位。ESC通过I²C或内部接口访问EEPROM,主站则通过寄存器0x0502:0x0503发起读取,并借助0x0500:0x0501获取状态。整个EEPROM空间按功能划分为若干区域:

  • 配置区(Configuration Area):字地址0x0000~0x0007,共8个字,定义基本硬件配置。
  • 厂商与产品标识区:字地址0x0008~0x0011,包含Vendor ID、Product Code、Revision Number、Serial Number。
  • 引导状态与邮箱配置区:字地址0x0012~0x0013,定义Bootstrap与标准邮箱配置。
  • 类别与版本区:字地址0x0014~0x0015,包含Category、Revision等扩展信息。
  • SM与FMMU配置区:字地址0x0018起,描述同步管理器与FMMU通道配置。
  • PDO与对象字典区:字地址0x0040起,存放PDO映射、对象字典及CoE信息。
  • 字符串与注释区:字地址0x0080起,存放设备名称、硬件版本、注释等文本。

这些区域并非全部必须使用,但配置区、厂商ID、产品码、修订号、序列号是主站识别从站的最小必要集合。若这些字段缺失或错误,主站可能拒绝进入OP状态。

EtherCAT从站EEPROM地址映射结构 字地址 配置区 Configuration Area 0x0000–0x0007:PDI类型、设备类型、FMMU/SM数量、ESC版本 0x0000 厂商与产品标识区 0x0008–0x0009:Vendor ID(厂商ID) 0x000A–0x000B:Product Code(产品码) 0x0008 修订号与序列号 0x000C–0x000D:Revision Number;0x000E–0x0011:Serial Number 0x000C 引导与邮箱配置区 0x0012–0x0013:Bootstrap配置、标准邮箱配置 0x0012 SM与FMMU配置区 0x0018起:同步管理器配置、FMMU通道配置 0x0018 PDO与对象字典区 0x0040起:PDO映射、对象字典、CoE信息 0x0040 字符串与注释区 0x0080起:设备名称、硬件版本、注释 0x0080

二、配置区字段详解

配置区位于EEPROM最前端,共8个字,是ESC初始化时最先读取的内容。其字段定义如下:

字地址 字段名称 位宽 说明
0x0000 PDI类型 8位 0x00=无PDI,0x01=数字I/O,0x04=SPI,0x05=OSSP,0x08=以太网
0x0001 设备类型 8位 0x00=未定义,0x01=数字I/O,0x02=模拟I/O,0x03=运动控制,0x04=编码器
0x0002 FMMU数量 8位 从站支持的FMMU通道数,通常为0~8
0x0003 SM数量 8位 从站支持的同步管理器数量,通常为0~8
0x0004–0x0005 ESC版本 16位 高字节主版本,低字节次版本,如0x0301表示ESC 3.1
0x0006–0x0007 保留/端口配置 16位 端口描述、保留位,部分ESC用于指示端口数量

配置区一旦写入错误,ESC可能无法正确初始化。例如PDI类型与实际硬件不符,会导致主站无法建立通信;FMMU或SM数量虚报,则会在配置阶段报错。

三、厂商ID、产品码、修订号与序列号

这四个字段构成从站的“身份指纹”,主站通过它们匹配ESI(EtherCAT Slave Information)文件,决定加载哪套对象字典与PDO配置。

  • Vendor ID(0x0008–0x0009):由ETG分配给厂商的唯一标识,16位。例如Beckhoff为0x00000002,汇川为0x00000A3C。主站据此判断设备来源。
  • Product Code(0x000A–0x000B):厂商自定义的产品型号编码,32位。同一厂商下不同产品必须不同,用于区分具体设备。
  • Revision Number(0x000C–0x000D):产品修订版本,32位。固件升级或硬件改版时应递增,主站可据此判断是否兼容。
  • Serial Number(0x000E–0x0011):设备序列号,32位。用于唯一标识单台设备,支持热插拔与资产追踪。

匹配逻辑:主站扫描到从站后,读取Vendor ID与Product Code,在ESI库中查找对应条目;再比对Revision Number,若主站ESI版本低于从站实际修订号,可能提示“设备版本不匹配”,此时需更新ESI文件或降级固件。

四、实操:读取与解析EEPROM

在调试阶段,可通过TwinCAT或IgH EtherCAT Master读取EEPROM内容。以下为IgH主站下使用ethercat命令读取从站EEPROM的示例:

# 查看从站0的EEPROM基本信息
ethercat eeprom 0 --dump

# 输出示例(节选)
0x0000: 05 01 04 04 03 01 00 00
0x0008: 02 00 00 00 3C 0A 00 00
0x0010: 01 00 00 00 00 00 00 00

# 解析:
# 0x0000: PDI=0x05(OSSP), 设备类型=0x01, FMMU=4, SM=4
# 0x0004: ESC版本=0x0301 (3.1)
# 0x0008: Vendor ID=0x0002 (Beckhoff)
# 0x000A: Product Code=0x00000A3C
# 0x000C: Revision=0x00000001
# 0x000E: Serial=0x00000000

若读取到全0xFF或全0x00,通常说明EEPROM未正确烧录、I²C通信失败或ESC未使能EEPROM访问。此时应检查EEPROM供电、上拉电阻及ESC的0x0500寄存器状态。

五、常见误区与复盘

误区一:只改Product Code不改Revision。固件功能变更后若修订号不变,主站仍按旧ESI加载PDO,可能导致过程数据长度不匹配,进入OP失败。

误区二:Vendor ID与ESI文件不一致。部分厂商使用测试ID量产,导致主站无法匹配官方ESI,设备只能停留在PREOP。

误区三:忽略配置区PDI类型。PDI类型错误会使ESC无法与本地应用层通信,表现为“从站可见但无法读写过程数据”。

复盘建议:每次修改EEPROM后,使用ethercat eeprom --dump核对配置区、Vendor ID、Product Code、Revision、Serial五个关键字段;同时确认ESI文件中的对应条目已同步更新。对于批量生产,建议在产线工装中自动写入并回读校验,避免人工烧录遗漏。

掌握EEPROM地址映射与字段定义,不仅能快速定位从站识别问题,还能在设备定制、固件升级和产线测试中建立标准化的配置流程。下一阶段将结合ESI文件,进一步分析对象字典与PDO映射的对应关系。