Thread 中讨论的其他器件:SYSBIOS
工具/软件:TI-RTOS
您好!
我一直在使用 AM335x ICEv2在机器人上运行一些低级控制环路- 通过 EtherCAT 获取命令、计算电机扭矩、通过 SPI 发送扭矩和接收编码器位置、并通过 EtherCAT 发回一组数据。 我发现、当 EtherCAT 未运行时、环路的行为符合预期、但间歇性地、当通过 EtherCAT 进行通信时、某些数据会损坏-如所示、变量意外跳转到随机值。 这种情况大约在~10Hz 的频率下发生、控制环路以5kHz 的频率运行、EtherCAT 通信以1-2 kHz 的频率进行。
我怀疑环路中的变量在后台被 EtherCAT 库覆盖、但我完全感到困惑。 例如、重新调整代码以将3个浮点值的数组替换为3个单独的浮点值似乎可以解决问题(对于该特定变量)。 除了在 EtherCAT 输入/输出映射函数中读取 EtherCAT 数据的结构外、控制函数和 EtherCAT 函数之间不共享任何变量。
我已经尝试在控制循环任务和 EtherCAT 输入/输出映射函数中使用信标来保护数据结构、但这没有什么不同。
我将使用 Beckhoff SSC 工具生成 EtherCAT 从站协议栈代码。
是否有人遇到过这样的问题? 我想这是我的最终错误、而不是 EtherCAT 或 TI RTOS 如何处理数据、但我不知道此时应从何处查看。 如果有更多信息、请告诉我、我可以分享这些信息。
谢谢!