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.

[参考译文] TMS320F28027F:F28027F 上 RoverL 识别期间的低电流频率

Guru**** 2540720 points
Other Parts Discussed in Thread: MOTORWARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/612721/tms320f28027f-slow-current-frequency-during-roverl-identification-on-f28027f

器件型号:TMS320F28027F
主题中讨论的其他器件:MOTORWARE

您好!

我们正在使用 Picollo 和 Motorware 开发定制电机控制器。 F28027F 和 F28069F/M 具有相同的内核代码库、如 Motorware 示例中所示、对驱动程序和 CTRL 对象的处理进行了一些调整、大多数函数在两个处理器上都运行良好。 然而、当我们开始电机识别过程时、在 F28069上它按预期工作、但在 F28027F 上它不工作。

经过一些测试、我发现在 RoverL 识别级期间、F28027F 上注入的电流具有非常低的频率、低至0.1Hz 甚至更低、尽管幅度是正确的。 按照 Motorware 代码、我知道在此阶段 FAST 估算器应生成频率为300Hz 的电角值、同时 ID 保持恒定、但在我的情况下电角变化非常缓慢。

有趣的是、如果我手动输入电机参数、同一代码在 F28027上工作良好、在识别期间也在 F28069上工作良好。 我已经为这两种处理器尝试过定制板和 LaunchPad、并且行为是相同的、因此这不是硬件问题。 我还比较了在这两种情况下用于设置控制器的 gUserParams 值、这两种情况下的值是相同的(Motorware 示例和我们的自定义应用程序)、但我们的应用程序失败了。

我知道我必须调试我自己的代码、但我想知道对 Instaspin 内部信息有更深入了解的人是否可以向我们介绍这方面的一些可能的解释。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    两个控制器上该应用的 PWM 频率是多少? F28027F 和 F28069F 的 CPU 频率是相同的? F28027F 为60MHz、因此它支持的最大 PWM 频率低于 F28069F。 F28027F 上 CPU 带宽限制的识别期间是否存在 ISR 溢出?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    抱歉、忘记提一下、F28069以90MHz 运行、F28027以60MHz 运行、在两种情况下 PWM 都是30kHz、我已经验证 ISR 以正确的频率运行而没有任何溢出、因此 CPU 带宽不是问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    检查 USER_R_OVER L_EST_FREQ_Hz 是否设置为300、而不是 user.h 中的_IQ (300.0) 这是我一次。
    您还可以检查 pUserParams->RoverL_estFreq_Hz,这应该是相同的。
    如果可以,我将检查当前 PID ctrlHandle->pid_ID 和 pid_IQ,以查看其中是否存在 Kp 和 Ki 的 sane 值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    USER_R_over_L_EST_FREQ_Hz 和 gUserParams.RoverL_estFreq_Hz 设置为300、而不是_IQ (300.0)。

    PID IQ 和 IQ 增益确实比较小、两个 PID 控制器似乎都工作良好、IQ 调节为0.0 (PID 句柄中的 fbackValue)、ID 调节为 gUserParams 中设置的值。

    因此、误差似乎是估算器提供的电角、该电角应以300Hz 的频率振荡或振荡的速度不会非常缓慢、因此更精确。 TI 的某个人能否给我一个提示、告诉我估算器在 RoverL 估算期间使用 gUserParams 和 ctrlHandle 变量在电角产生300Hz 频率?

    我通过绘制 EST_getAngle_pu ()的返回值进行了更多的测试、并且它开始_IQ (0.0)、以恒定速率下降到_IQ (-1.0)、并且每~330秒回绕到_IQ (0.0)、即频率为0.003Hz 或1/ 100、000、我应该观察的300Hz。 我希望这一轮的数字能向那些对 FAST 估算器内部信息有了解的人敲响警钟、 我也会继续对此进行调查。

    更新了:上述测量值、其中 PWM /控制频率为30kHz/10kHz。 我尝试将其提高到40KHz / 13.3KHz、现在电机在 RoverL 期间产生高间距葡萄酒、与我通过 MotorWare 示例获得的低间距酒不同(或 F28069上针对此问题的相同代码)、 之后仍然无法识别、因为 LHF 和 RoverL 值为负值。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    正如我的同事 Pavlos Stavrou发现的、问题是由 est.h 中估算器状态枚举定义中使用的宏 F2802x 或类似宏引起的。 由于 ROM 版本不同、F2802x 和 F2806x 使用不同的 EST 状态。 F2802x 的 Motorware 项目将此宏作为预定义符号、因此它们可以正常工作、尽管我发现此解决方案相当糟糕。 我认为最好使用已在相应处理器头文件中定义的处理器宏、而不是仅使用另一个处理器头文件。

    此问题揭示的另一个缺点是 MotorWare 工程在 CCS 中的结构:所有头文件在工程中都未链接、因此 CCS 不会将它们视为属于工程的文件。 当然、只要定义了所需的包含路径、编译器就不会有问题包括它们。 但是、由于 CCS 不会将它们视为项目文件、因此当我在 Project 或 Workspace 中进行搜索(例如、查看是否在任何地方使用此宏)时、CCS 不会搜索它们。 当搜索的文本是函数、变量等的名称时、至少"查找所有引用"似乎起作用

    底线对于其他有类似问题的用户,注意项目的预定义符号,即使它们似乎不在任何地方使用。

    Giannis