器件型号: AM3357
EtherCAT 主站报告说、在 EtherCAT 状态从 INIT 更改为 PRE-OP 期间、对产品代码的检查失败。 例外值为 0x00016472、但主器件接收到 值 0x0800005A。 这一问题偶尔出现(即不是每次都出现)。 EEPROM 中的产品代码和供应商 ID(我们使用 EEPROM 仿真模式)ESI 文件已检查并正确。
由于这个问题偶尔出现,我们让 AI (GitHub copilot) 分析状态变化开关 init=>pre-OP 的 Wireshark 跟踪。 Copilot 已经给了我们一些提示 — 但即使有这些提示,我们也不可能找到此问题的根本原因。
来自 copilot 的分析结果:
从器件的迹线中发现的数据
1.正在读取期间 SiI 数据翻转:
帧 356-362:SiI DATA 寄存器正确发送 0x00016472 3 次
帧 366:突然 0x0800005A
从那时起:对于所有后续 22 个读数、值保持在 0x0800005A
这意味着:当主器件仍在读取时、从器件中的某个器件会更改 SII 数据寄存器 (0x0508) 的内容。
2. PDI 看门狗触发器(帧 404):
DL 状态寄存器显示从器件 0x03EC 处的 pdiwatchdog=1
→从应用程序不及时为 ESC(EtherCAT 从站控制器)提供服务
3.错误模式指示 EEPROM 访问冲突:
值 0x0800005A 不是随机垃圾–它是一个一致、可重现的值
→可能是来自另一个 EEPROM 地址或通过冲突访问写入 SII 数据缓冲区的内部寄存器的数据