Other Parts Discussed in Thread: SYSCONFIG
器件型号: AM2432
主题: SysConfig 中讨论的其他器件
您好:
目前、我们会遇到 EtherCAT 子器件的三路缓冲器问题(我强烈假设 PRU 代码中实现了三路缓冲器)。
- 我们将发送嵌入正常 EtherCAT PDO 数据中的 FSoE 帧。
- 对于 FSoE 协议、不允许出现以下情况:
- 发送帧 X(例如 0x360ace080100)(从 EtherCAT 从站发送到 EtherCAT 主站)。
- 然后是帧 Y (0x360aa71b0100)。
- 然后在 Y 帧正后面的周期中、再次发送 X 帧。
- 因此顺序是:
0x360ace080100
0x360ace080100
0x360aa71b0100
0x360ace080100
0x360aa71b0100
0x360aa71b0100 - FSoE 标准不允许这种情况。
- 当我们检查日志我们的应用程序在 ARM R5 内核上写入 EtherCAT 输入缓冲区时(在函数 APPL_InputMapping () 中),它如下所示:
0x360ace080100
0x360ace080100
0x360aa71b0100
0x360aa71b0100
0x360aa71b0100
0x360aa71b0100 - 我觉得这似乎是一个典型的三缓冲器故障。 重复使用值 0x360ace080100、因为尽管新值 0x360aa71b0100 已经存在并发送到 EtherCAT 主站、该值仍然存在于三路缓冲器的旧缓冲区中。
- 除了我们在 APPL_InputMapping () 中的日志记录之外,我们在 ARM R5 上的应用程序代码不包括任何双缓冲区或三缓冲区或类似的缓冲区,因此 R5 上的应用程序甚至无法记住 0x360ace080100 是在 0x360aa71b0100 之前发送的。 因此、对我们来说、PRU 代码中的三路缓冲器很可能是罪魁祸首。
- 这种故障非常罕见。 有时我们等待了几个星期才会发生这种情况。 但是、这很严重、因为 FSoE 连接之后处于错误状态。
我们的设置如下:
- AM2432BSFFHIALXR
- ICSSG1 上的 EtherCAT 子设备具有 版本/类型:x0690、内部版本:x0542、固件版本:6.5.66
- 但是、对于其他驱动程序 、我们仍然使用 ind_comms_sdk_am243x_09_02_00_24、但我们已经在 其中放入了 ind_comms_sdk_am243x_2025_00_00_08 中最新版本的 EtherCAT 子器件代码。
- 我们使用 Beckhoff _stack。
我们希望在这里得到任何支持。 您是否意识到像我们这样的任何问题?
如果您需要更多信息、请随时提问。
此致、
Martin









