This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我们在 BLDC 电机中实现 FOC 算法。 现在、我们已经开始运行算法、爆发和 ADC 采样已经开始工作了。 但我们提出了一个可能对 ADC 采样产生很大影响的问题、我们不知道应该遵循哪一个方向。 下图显示了仿真 PWM 更新、其中控制决定大幅增加或减少 PWM 的占空比。
控制过程如下:对 A、B 和 C 中的电流进行 ADC SOC 触发器采样。然后、执行 FOC、并且一旦控制完成、计数器比较 A 就会更新。 计数器比较被遮盖、因此在时基计数器达到0或周期值时将发生真正更新。 生成的波形会显示在图像中。 如您所见、由于计数器比较会在时基达到周期时更新、因此 PWM 会在高侧的下降沿更新、并产生一个渐近波形。
主要问题是、采样是在时基达到周期时产生的、因为它被认为是平均电流值(即处于高电平时下降到 PWM 中间的时间)。 由于比较值发生了变化、PWM 中间值不再与时基计数周期值同步。 我们希望让所有 PWM 仍处于同步状态、以便同时对所有 PWM 进行采样、并关注其平均值。
一种解决方案是在计时器再次开始增加之前、在计时器达到0时更新比较值。 但是、由于您可以认为控制中断持续29us、因此以前无法更新 PWM。 我们想知道哪条路是解决这种情况的最佳途径。
塔恩克斯提前,
大卫
David、您好!
谢谢你的答复。 首先、我要注意的是、通常情况下、在 ADC SOC 开始的同时更新 CMPx 值是不理想的。
第二、您考虑过 将 ADC SOC 移至 CTR=ZRO 或(正如我以前看到的那样、为了避免第一个问题而实施)一个小的非零值、例如 CTR=CMPC=5 ? 如果此事件会触发 ADC SOC、那么在您需要更新 CTR=ZRO 下的 CMPx 值时、您的 ISR 应完成其计算。
此致、
杰森·奥斯博尔恩
注意:这篇文章的要点 粗体显示。
David:
如果 ADC 触发源是硬性要求、我提出的最有效的建议是查看中断、 查看您是否可以执行任何优化或其他重构以使 ISR 执行时间低于29us 。
或者、如果将 CMPx 影子设置为活动负载发生在 CTR=ZRO 处、CMPx 值将在 ADC 计算之后更新1个 EPWM 周期、否则您的系统将是对称的。
此致、
杰森·奥斯博尔恩
注意:这篇文章的要点 粗体显示。
Jason、您好!
感谢您的建议。 我将尝试优化 ISR、因为第二种替代方法无法实现、控制必须尽快更新 PWM、从而避免在更新 CMPx 时出现任何干扰。
此致、
大卫
David、感谢您为我提供有关前进计划的最新信息! 我觉得落后一段时间的 CMPx 计算不是可行的解决方案、但出于完整性考虑、我想提及这种可能性。 关于 ISR 的优化、我们在 TI.com 上提供了一些可用的优化指南-如果需要、请告诉我是否需要跟踪任何看起来特别相关的指南。
在一般情况下、尽量减少 ISR 中花费的时间是关键。 卸载对较慢后台循环不是时间关键的任务通常对执行该任务很有帮助-这些任务包括更新物理或数字调试值(例如设置状态 LED 或数字调试显示)、某些错误检查任务等。 C2000电机控制 SDK 中的通用电机控制实验室示例解决方案 可以作为一个很好的参考、以了解通常可以安全地从 ISR 卸载。
如果您的努力成功、请在此处告诉我并将该主题标记为已解决! 如果没有、我仍将帮助您跟踪有效的解决方案。
此致、
杰森·奥斯博尔恩
Jason、您好!
感谢您的建议。 是否有可能收到您提到的参考资料? 我只知道我已经遵循的优化指南。
此外、我想指出的是、现在、一旦我们确定中断按预期运行、我们就会在宽松模式下启用优化和 FPU。 我们期望在接下来的几周内对代码进行改进、但目前我们仍有许多功能需要实施。 通过这些优化、我们能够获得相当长的中断计算时间、但我们将重新访问代码。 我希望我能再次与您联系以获得进一步的建议。
此致、
大卫
David:
我记得这两个。 很乐意为您提供帮助!
此致、
杰森·奥斯博尔恩
Jason、您好!
感谢您的建议。 不过、我已经知道该指南、还有其他有趣的应用手册吗? 我在文档门户网站导航时迷路了。
此致、
大卫
David:
我不能忘了,特别是不能看到代码本身——当我不确定需要什么建议的时候,很难知道应该提供什么建议! 我会继续寻找,如果我找到任何,我会给他们发送你的方式. 如果您不确定 ISR 中花费的时间特别长、我要做的有关优化的最后一件事是查看 ISR 的汇编输出、看看后端是否有比预期更复杂的事情。 这可能看起来更令人困惑、因此我通常不建议将其作为第一步。
如果您有兴趣自己搜索更多信息、但在我们的指南中找不到任何相关内容、我建议您搜索任意数量的第三方常规 C 代码优化指南-所有这些指南通常都告诉您尽可能减少花费在 ISR 中的时间的想法、 在可能的情况下使用常数简化计算、最大限度地减少 发生跳跃等所需的频率、但有些人可能会提供更适合您的工作的具体建议、这是我不知道的。
此致、
杰森·奥斯博尔恩