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.

[参考译文] TMS320F280049C:InstaSPIN-FOC 实验:is12_variable_pwm_frequency

Guru**** 2540720 points
Other Parts Discussed in Thread: TMS320F28069F, MOTORWARE, TMS320F280049C

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/990694/tms320f280049c-instaspin-foc-lab-is12_variable_pwm_frequency

器件型号:TMS320F280049C
主题中讨论的其他器件:TMS320F28069FMOTORWARE

您好!

我对 InstaSPIN 项目和实验室用户指南:用于 F28004xC 的 InstaSPIN-FOC 有疑问。

具体而言、它位于 is12_variable_pwm_frequency 上。

我们的电机逆变器是使用 TMS320F28069F 器件构建的。

我们希望在电机逆变器中实现在线可变开关频率的功能。

无论如何,这是否可行?

如果没有,请详细解释原因。

例如、我注意到  MotorControl SDK 中 FAST 估算器的库名称是 f28004x_FAST_ROM_symbols_fpu32.lib。

此库是否无法用于 TMS320F28069F 器件?

感谢您的指导。

此致、

JS Yoo

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

    是的、您可以将此技术实施到与 instaspin foc快速 库无关的 F28069中。 您只需要使用两个 ISR、一个是执行 FAST 算法以估算转子位置和速度控制器的固定周期、一个是获取电流控制器的电流采样值的可变周期。

    不可以、  f28004x_fast_rom_symbols_fpu32.lib 不能用于 TMS320F28069F 器件。  器件的每个系列都有其专用库、以匹配 存储在 ROM 中的快速代码。  

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

    尊敬的罗燕明:

    感谢您的评论。

    遗憾的是、我们的电机逆变器使用 TMS320F28069F 器件、该器件与 motorware_1_01_00_18中包含的 instaspin focTM 快速库相关。

    我的问题是、我们的电机逆变器是否可以 使用使用 使用 motorware_1_01_00_18中包含的 instaspin foc快速 库的 TMS320F28069F 器件实现在线可变开关频率的功能。

    如果我们当前的电机逆变器无法实现该函数、并且我们必须使用 instaspin focc 快速库 来实现该函数、那么我们是否必须使用 TMS320F280049C 器件重新设计电机逆变器?

    感谢您的指导。

    此致、

    JS Yoo

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

    如上所述、可变 PWM 频率技术与器件和 FAST 库无关。 是的、您可以  使用  motorware_1_01_00_18中的 instaspin focc FAST 库在 F28069F 上实现可变 PWM 频率技术。

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

    罗 燕明、您好!

    感谢您的评论。

    不幸的是,我不能跟上你的步伐。

    我发现 is12_variable_pwm_frequise.c 文件中的 C 代码调用大量 EST 函数、  这些函数在 motorware_1_01_00_18的 instaspin foc快速 库中不可用。

    例如,EST_initEst()和 EST_setParams()函数在 main()函数中被调用;但  它们在 motorware_1_01_00_18的 instaspin foc快速 库中不可用。 它们 似乎 仅在 F28004xC 的 MotorControl SDK_3_01的 instaspin 快速库中提供。

    此外,在 estISR()的中断函数中调用一些 EST 函数。

    例如、EST_getIdq_a ()、EST_getIdRated_a ()、EST_updateId_ref_a ()和 EST_setIdq_ref_a ()函数在 estISR ()中调用;但是  它们在 motorware_1_01_00_18的 instaspin focfast 库中不可用。 它们 似乎 仅在 F28004xC 的 MotorControl SDK_3_01的 instaspin 快速库中提供。

    此外,EST_run ()函数具有与  motorware_1_01_00_18中 instaspin focus 快速库不同的参数。

    因此、我可能无法  通过  motorware_1_01_00_18中的 instaspin focc FAST 库在 F28069F 上实现可变 PWM 频率技术。

    请解决我的问题。

    感谢您的指导。

    此致、

    JS Yoo

     

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

    您仍然可以在 MotorWare 中使用 FAST 函数、只需在两个 ISR 中单独调用这些函数、如上所述。 您可以在 motorWare 中使用 lab11a 来执行此操作。

    一个 ISR 是执行 FAST 算法以估算转子位置和速度控制器的固定周期。

    一个 ISR 是使用 PWM 频率获取电流控制器的电流采样值的可变周期。

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

    罗燕明、您好!

    感谢您的评论。

    我现在正在尝试从 Motorware 的 Lab11a 中的 mainISR()中构建 estISR()和 mainISR()的两个 ISR 函数,如 MotorControl SDK 的 is12实验中所示。

    但是,我对 motorware 的 Lab11a 中的 mainISR()有一个问题。  Lab11a 中的 mainISR() 调用 TRAJ_run (trajHandle_ID)。

    我应该从 estISR()调用 TRAJ_run (trajHandle_ID)还是仍在 mainISR()中调用?

    此外、对于  MotorControl SDK 的 is12实验、不会从 estISR()或 mainISR()调用 TRAJ_run (trajHandle_ID)。

    请向我解释一下为什么从 MotorWare 的 Lab11a 中的 mainISR()调用 TRAJ_run (trajHandle_ID)、但 在 MotorControl SDK 的 is12实验中不从 estISR()或 mainISR()调用它。

    感谢您的指导。

    此致、

    JS Yoo

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

    您无需调用与 motorControlSDK 中 lab12相同的函数、只需将 lab11a 中的一个 ISR 中的这些函数拆分为两个 ISR 即可。

    您可能只读取 ADC 结果并在 mainISR 中更新 PWM、并在 estISR 中调用所有其他函数。

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

    罗燕明、您好!

    感谢您的评论。

    我很难将 lab11a 中的 mainISR()拆分为两个 estISR()和 mainISR()。

    您是否会将 lab11a 中的 mainISR()拆分为两个 ISR,并为我将源文件附加到此帖子?

     我将非常感谢你的工作。

    此致、

    JS Yoo

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

    我认为自己不是很难做到这一点、您可以参考电机控制 SDK 中的实验、将代码拆分为两个 ISR、如我在前面所述。 如果您有任何疑问、请告知我们。

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

    罗燕明、您好!

    感谢您的评论。

    以下代码片段位于 proj_lab11a.c 文件的 mainISR()中

         //从轨迹模块获取参考值
         refValue = TRAJ_getIntValue (trajHandle_ID)+ EST_getRsOnLineId_pu (estHandle);

    我应该将这行代码放在 estISR()或 mainISR()中吗?

    感谢您的指导。

    此致、

    JS Yoo

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

    您可以在可变频率 ISR 中调用以下代码、并在固定频率 ISR 中调用其他代码。

    //确认 ADC 中断
    HAL_acqAdcInt (halHandle、ADC_IntNumber_1);

    //转换 ADC 数据
    HAL_readAdcDataWithOffsets (halHandle、&gAdcData);

    //删除偏移
    gAdcData.I.value[0]= gAdcData.I.value[0]- gOffsets_I_PU.value[0];
    gAdcData.I.value[1]= gAdcData.I.value[1]- gOffsets_I_PU.value[1];
    gAdcData.I.value[2]= gAdcData.I.value[2]- gOffsets_I_PU.value[2];
    gAdcData.V.value[0]= gAdcData.V.value[0]- gOffsets_V_PU.value[0];
    gAdcData.V.value[1]= gAdcData.V.value[1]- gOffsets_V_pu.value[1];
    gAdcData.V.value[2]= gAdcData.V.value[2]- gOffsets_V_pu.value[2];

    //运行当前重建算法
    runCurrentReconstruction();

    //对电流运行 Clarke 变换
    Clarke_run (clarkeHandle_I、&gAdcData.I、&IAB_pu);

    //对电压运行 Clarke 变换
    Clarke_run (clarkeHandle_V、&gAdcData.V、&VAB_pu);

    //写入 PWM 比较值
    HAL_writePwmData (halHandle、&gPwmData);

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

    罗燕明、您好!

    感谢您的评论。

    让我尽快返回给您。

    此致、

    JS Yoo