主题中讨论的其他器件:INA296A
您好!
我正在使用另一个 MCU 将一个已经正常工作的系统迁移到使用 TI 的 C2000 MCU。 该系统依赖于交流 FOC 电机控制。 我已经在运行稳压器、并且我正在通过一个库在两个微控制器之间共享的 Park、Clarke、逆向 Park 变换。 因此,我知道这不是问题。 FOC 控制中唯一不同的是 SVPWM 模块。 我没有自己的 SVPWM 模块,并且正在使用 MCU 供应商的 SVPWM 模块。 我本周休假、TI e2e 站点因维护而中断、因此我要让一位同事为我发布此信息、我希望在假期回来之前看到一些后续步骤! 提前感谢!
总体问题:我命令100 RPM、我获得100 RPM、但足够的电机电压、我可以获得400 RPM (40.14V、当我应该具有21.74V 时)。 我命令500RPM、我获得500RPM、但我获得了足够的电机电压以达到1500RPM (当我应该具有55.757V 时为145.17V)。
怀疑是问题的原因:我有一吨 D 电流–D 电流基准为0,因此我施加一吨 D 电压来尝试将 D 电流保持为0。 我认为 D 电流是由 TI 的 SVPWM 模块出现问题引起的。 我不了解输入/输出,或者 SVPWM 模块无法正常工作。 我怀疑 SVPWM 模块工作正常、问题在于我的理解。
请注意、工作系统/TI 之间的 Park、Clarke、逆向 Park 变换和下面使用的所有稳压器是相同的、因此这不是稳压器问题。 在这方面、工作系统/ TI 之间的代码是相同的、因为所有这些都在我们在 MCU 之间共享的库中。 这里唯一的区别是 SVPWM。 这就是我怀疑 SVPWM 存在问题的原因。
TI SVPWM 模块
输入:alpha/Beta 电压除以 DcLinkVoltage、得到 Alpha / Beta 占空比
输出:A、B、C PWM 从-0.5缩放到0.5
TI SVPWM–
有3个不同的 SVPWM 模块。 我已经尝试了3个中的2个。 我的下一步是在我休假回来后尝试第三个模块,但我希望这里的人可能会建议他们在我使用的 SVPWM 模块中看到一些内容,并提出一些我误解的内容。
我正在使用的当前 SVPWM 模块实际上是它们具有的旧模块。 他们建议不要使用它和使用新的。 我之所以使用它、是因为它计算 SVM 扇区、而其他2个扇区没有计算、我们需要使用这些扇区进行当前相位重建。
这将输出-0.5V 至0.5V 的 PWM、然后我将其设置为电机 PWM 计数器比较值。
与此相关的问题–我比较了工作系统和 TI 之间在100RPM 和500RPM 下的数据、以了解它们的比较情况。 我从这一点出发、了解工作系统和 TI 之间的主要差异、就是这样–
- Q 电流在2之间是相同的、这是有道理的、因为这是扭矩的来源
- TI 的 D 电流吨数–导致 D 电压吨数、进而导致电机电压吨数
- 示波器迹线上的占空比在500 RPM 60Nm 时明显不同–这让我认为 SVPWM 是错误的–要么我不了解它的输出或它的输入、要么算法是错误的。
- 为什么我需要对已经被2除以2的周期进行分频、这意味着我将它除以4? 这些示例也会实现这一点。 这使我很困惑。
- 为什么示例会(周期*占空比)+周期? 为-0.5至0.5。 这使我很困惑。 较新的 SVPWM 允许我们将占空比从0.0缩放到1.0、然后将其乘以周期、这对我来说更有意义。
阅读下面的数据,因为我在这里展示了 TI 较新的 SVPWM 选项。
100转/分60牛米
工作系统
示波器迹线
采样频率为10ms 时的趋势–仅适用于平均值比较
捕获采样率为250us 的缓冲器–很适合了解实际情况
占空比:-32767(-1)至32768(1)
TI
趋势–
捕获缓冲器
500转/分60牛米
工作系统
示波器捕获
趋势:
捕获缓冲器
TI
趋势
捕获缓冲器
TI 新的 SVPWM 选项1–
SVGEN_RUN
输入–Alpha / Beta (函数将它们除以 DcLink 电压以获取占空比)
输出–A、B、C 占空比从-0.5至0.5
在这里、我不确定两件事–
- 它们如何在不计算扇区的情况下成功地实现 SVPWM? 他们如何判断要打开哪些 IGBT?
- 我们采用哪种 SVM 模式? 我尝试了 SVM_COM_C、结果与计算我现在尝试的扇区的旧 SVGEN 相同。
TI 新的 SVPWM 选项2–
第二个选项将 SVGEN_RUN 与 SVGEN_CURRENT 组合在一起、SVGEN_CURRENT 为我们执行电流重构、看起来它们必须计算扇区才能实现该目的、但不能真正调用扇区并保存扇区。
要使用它、请运行 SVGEN_RunRegenCurrent 以计算要重建的相位、然后运行上面的 SVGEN_RUN、然后在它下面调用 SVGENCURRENT_COMPPWMData ()。 我还没有尝试这样做-它可能会做我们想要的事情、但它看起来就像它描述了阶段重建。 在这里、您不需要再次将已经被2除以2的 PWM 周期进行除法、只需将周期乘以占空比、就像我执行对我来说有意义的其他 ePWM 一样。 我喜欢这个。
SVGEN_RunRegenCurrent 看起来与我们使用 SVM 扇区重建电流的电流重构非常相似、但它允许重建3个相中的2个相位。
然后、在计算 PWM 之后、您决定要忽略哪个分流器、这似乎非常类似于决定您所在的 SVM 扇区:
因此、我的下一步是尝试使用此方法并查看其执行方式。
感谢您的帮助、很抱歉发帖很长! 希望数据和我的共享有助于找出问题的根本原因、并尝试一个很好的下一步!