3. 从站ESC与EEPROM信息读取

在 EtherCAT 主从站联调中,主站能否正确驱动一个从站,取决于它是否准确掌握了从站 ESC(EtherCAT Slave Controller)内部的关键配置信息。这些信息并不需要主站逐字节猜测,而是由从站通过 EEPROM 和 ESC 寄存器主动暴露出来。本节围绕“读什么、从哪读、怎么判断”展开,帮助你在联调初期快速建立对从站的完整认知。

一、ESC 与 EEPROM 的分工

ESC 是从站通信的硬件核心,负责处理 EtherCAT 帧、SM 通道、FMMU 映射和诊断计数;EEPROM 则保存从站的“身份档案”,包括厂商 ID、产品代码、修订号、PDI 接口类型、SM 配置、FMMU 配置以及同步管理器参数。主站上电后通常先通过 ESC 寄存器读取 EEPROM 内容,再据此配置过程数据映射。

需要区分两类访问路径:一类是直接读 ESC 寄存器(如 0x0000~0x0FFF 的寄存器区),另一类是通过 ESC 的 EEPROM 接口间接读取 EEPROM 数据。前者反映实时状态,后者反映静态配置。联调时两者都要看,不能只依赖其中一方。

二、从站类型识别:厂商 ID、产品代码与修订号

识别从站类型最直接的依据是 EEPROM 中的三个字段:Vendor ID、Product Code、Revision Number。主站扫描到从站后,会读取这些值并与 ESI(EtherCAT Slave Information)文件比对,从而确定该从站应使用哪套对象字典和 PDO 映射。

例如,某伺服从站返回 Vendor ID = 0x00000002、Product Code = 0x04400002、Revision = 0x00010000。若主站加载的 ESI 文件中没有匹配项,就会报“未知从站”或“配置不匹配”。此时应优先核对 ESI 版本,而不是盲目修改 PDO 配置。下表给出常见字段的判读要点:

字段典型位置判读要点
Vendor IDEEPROM 0x0008厂商唯一标识,与 ESI 必须一致
Product CodeEEPROM 0x000A产品型号,决定 PDO 默认映射
Revision NumberEEPROM 0x000C固件版本,影响对象字典兼容性
Serial NumberEEPROM 0x000E唯一序列号,用于多从站区分

三、PDI 接口:主站与从站应用层的通道

PDI(Process Data Interface)是从站 ESC 与本地微控制器或应用层之间的接口,常见类型包括 SPI、并行总线、数字 I/O 和 EtherCAT 专用接口。EEPROM 中的 PDI 类型字段告诉主站:该从站的过程数据是通过哪种方式交给应用层的。

联调时若发现从站能进入 OP 状态但过程数据不更新,应检查 PDI 配置是否与硬件实际连接一致。例如,某从站 EEPROM 标注 PDI 为 SPI,但实际板卡使用并行接口,则 ESC 与 MCU 之间无法正确交换数据,表现为输入数据恒为 0 或输出无响应。

四、SM 配置:过程数据的通道规划

SM(SyncManager)是 ESC 内部用于管理数据缓冲和方向控制的通道。每个 SM 通道有独立的物理地址、长度、控制寄存器和状态寄存器。EEPROM 中保存了默认 SM 配置,主站在 PreOP 阶段会据此写入 SM 寄存器。

典型从站至少包含两个 SM:SM2 用于输出(主站→从站),SM3 用于输入(从站→主站)。配置时需要关注三个参数:起始地址、数据长度、控制字(方向、中断、看门狗)。若 SM 长度与 PDO 映射总长度不一致,主站会在配置阶段报错。

示例:某从站 SM 配置
SM2: 起始 0x1100, 长度 0x0040, 控制 0x00010024 (输出)
SM3: 起始 0x1180, 长度 0x0040, 控制 0x00010020 (输入)

读取 SM 状态寄存器还能判断通道是否被正确激活。若 SM2 的激活位未置位,主站写出的过程数据不会进入 ESC 缓冲区,从站自然无法响应。

五、FMMU 配置:逻辑地址到物理地址的映射

FMMU(Fieldbus Memory Management Unit)负责把主站使用的逻辑地址映射到从站 ESC 内部的物理地址。每个 FMMU 单元包含逻辑起始地址、物理起始地址、长度、方向等字段。主站在配置阶段根据 EEPROM 中的 FMMU 默认值和实际 PDO 映射写入 FMMU 寄存器。

联调中常见的“数据错位”问题,往往源于 FMMU 映射长度或方向配置错误。例如,输入 PDO 映射了 8 字节,但 FMMU 只配置了 4 字节,则后 4 字节数据不会被主站读取。此时应同时核对 PDO 映射、SM 长度和 FMMU 长度三者是否一致。

六、诊断寄存器:定位问题的第一手线索

ESC 提供了一组诊断寄存器,用于记录通信错误和状态异常。联调时最常关注以下几类:

  • AL Status Code:从站当前状态码,如 0x0011 表示无效请求,0x0016 表示 SM 看门狗超时。
  • CRC 错误计数:反映物理链路质量,持续增长说明线缆或接口有问题。
  • 看门狗计数器:判断从站是否因主站停止发送而进入安全状态。
  • SM 状态寄存器:查看各通道是否激活、是否有数据溢出。

读取诊断寄存器时,建议先读 AL Status Code 确定大方向,再结合 CRC 和看门狗计数判断是链路问题还是配置问题。例如,AL Status Code = 0x0016 且看门狗计数持续增加,说明主站发送周期不稳定或从站未收到有效帧,应优先检查主站任务周期和网络负载。

ESC / EEPROM 信息读取与联调判读关系图 EtherCAT 主站 扫描 / 配置 / 诊断 寄存器访问 从站 ESC EEPROM(静态配置) • Vendor ID / Product Code / Rev • PDI 接口类型 • SM 默认配置(地址/长度/控制) • FMMU 默认配置 SM 通道 SM2 输出 SM3 输入 状态/激活位 FMMU 单元 逻辑→物理映射 方向 / 长度 映射一致性 诊断寄存器 AL Status Code | CRC 错误计数 看门狗计数 | SM 状态寄存器 从站类型识别 Vendor/Product/Rev 匹配 ESI 文件加载正确 PDI 类型与硬件一致 → 决定对象字典与 PDO 配置一致性检查 SM 长度 = PDO 总长 FMMU 长度 = SM 长度 → 决定过程数据是否正常 异常定位 AL Code → 方向 CRC/看门狗 → 链路或周期 联调顺序建议:先读 EEPROM 确认身份与 PDI → 再核对 SM/FMMU 长度一致性 → 最后读诊断寄存器定位异常

七、联调实操:一次完整的读取与判读流程

假设你使用 TwinCAT 或 SOEM 作为主站,连接一个未知从站。第一步,扫描网络并读取 EEPROM 基本信息,确认 Vendor ID 和 Product Code 是否与手头 ESI 匹配。第二步,读取 PDI 类型,核对从站板卡的实际接口。第三步,读取 SM 和 FMMU 默认配置,与 ESI 中的 PDO 映射长度做比对。第四步,进入 PreOP 后读取 SM 状态寄存器,确认通道已激活。第五步,若无法进入 OP,读取 AL Status Code 和 CRC 计数,判断是配置问题还是链路问题。

实用提示:很多主站工具提供“从站信息”面板,可直接显示 EEPROM 解析结果。但面板显示的是主站解析后的值,若解析失败,仍应回到原始寄存器读取,避免被工具的错误提示误导。
注意:修改 EEPROM 中的 SM 或 FMMU 配置属于从站固件级操作,通常需要厂商工具和专用授权。联调阶段应优先通过主站配置和 ESI 文件解决映射问题,不要随意改写从站 EEPROM。

掌握 ESC 与 EEPROM 信息的读取方法后,你就能在从站无法进入 OP、过程数据不更新或映射错位时,快速判断问题出在身份识别、PDI 接口、SM 通道还是 FMMU 映射,而不是盲目更换线缆或重启设备。这是 EtherCAT 联调从“试错”走向“定位”的关键一步。