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:如何在双电机控制中同步相位

Guru**** 2185245 points
Other Parts Discussed in Thread: LAUNCHXL-F280049C, C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1054134/tms320f280049c-how-to-synchronize-the-phase-in-the-dual-motor-control

器件型号:TMS320F280049C
主题中讨论的其他器件:LAUNCHXL-F280049CC2000WARE

你好

我有 LAUNCHXL-F280049C 板、我使用了"IS11_DUAL_MOTOR_eabi"的演示源。

现在我可以控制两个电机、但 M1_MOTOR 和 M2_MOTOR 的相位 不同步。

如何同步相位?

我更改  HAL_setupPWM 功能中的 pwmPhaseShift 值、但相位也不同步。

------------------------------------------------------------------

   if (motorNum =HAL_MTR_1)
   {
       halfPeriod_cycles =(uint16_t)(USER_SYSTEM_FREQ_MHz *
                               USER_M1_PWM_PERIOD_USEC /(float32_t) 2.0);
       numPWMTicksPerISRTick = USER_M1_NUM_PWM_TICKS_PER_ISR_TICK;
       pwmDBRED = M1_HAL_PWM_DBRED_CNT;
       pwmDBFED = M1_HAL_PWM_DBFED_CNT;
       pwmPhaseShift = 0;
   }
   否则、如果(motorNum =HAL_MTR_2)
   {
       halfPeriod_cycles =(uint16_t)(USER_SYSTEM_FREQ_MHz *
               USER_M2_PWM_PERIOD_USEC /(float32_t) 2.0);
       numPWMTicksPerISRTick = USER_M2_NUM_PWM_TICKS_PER_ISR_TICK;
       pwmDBRED = M2_HAL_PWM_DBRED_CNT;
       pwmDBFED = M2_HAL_PWM_DBFED_CNT;
   // pwmPhaseShift = half Period_cycles >>1;

       pwmPhaseShift =0;
   }

------------------------------------------------------------------

非常感谢!

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

    您是要同步双电机的 PWM 吗? 如果是、您可以查看 F280049C TRM 的 ePWM 部分。

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

    你好!

    是的、 我要同步双电机的 PWM、我检查 TRM 的 ePWM 部分并更改 HAL_SETUPPWMS 功能。 但 PWM 也不同步。

    我更改了有关 PWM1的源、请查看以下内容:

    ------------------------------------------------------------------
    ePWM_disablePhaseShiftLoad (obj->pwmHandle[0]);
    ePWM_setSyncOutPulseMode (obj->pwmHandle[0]、ePWM_SYNC_OUT_PULSE_ON_COUNTER_ZERO);

    ------------------------------------------------------------------

    我更改 PWM2/PWM3 /PWM4/PWM5/PWM6.please 的源请查看以下内容:

    ------------------------------------------------------------------

    ePWM_enablePhaseShiftLoad (obj->pwmHandle[cnt]);
    ePWM_setSyncOutPulseMode (obj->pwmHandle[cnT]、ePWM_SYNC_OUT_PULSE_ON_SOFTWARE);

    ------------------------------------------------------------------

    我通过 CCS 检查 ePWM 寄存器、

    EPwm1Regs.TBCTL.PHSEN = 0;

    EPwm1Regs.TBCTL.syncosel = 01;

    EPwm2Regs.TBCTL.PHSEN = 1;

    EPwm2Regs.TBCTL.syncosel = 00;

    非常感谢!

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

    您可以在 MotorControlSDK 中参阅以下项目、以使用软件控制来同步 PWM。

    C:\ti\c2000Ware_MotorControl_SDK_3_03_00_00\solutions\boostxl_3phganinv \f28004x\ccs\sensored_foc