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.

[参考译文] TMS320F28075:双电机 FCL:单路与双路采样 ePWM 偏移

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1031106/tms320f28075-dual-motor-fcl-single-vs-double-sampling-epwm-offsets

器件型号:TMS320F28075

您好!

我最近从使用双采样配置更改为使用 双电机 FCL 项目进行单采样。  使用双采样时、M1和 M2 ISR 偏移1/2 A 周期。  即、如果以10kHz (100us)的频率运行、则每个 ISR 之间的间隔为50us。  在我从 double -> Single 切换后、我看到 M2波形被一个周期的1/4而 不是1/2移位。  这种行为会导致系统其他部分出现一些时序问题。

我认为 HAL_setupMotorPWM 的以下代码负责同步两个电机之间的时基:

    else if(handle == &halMtr[MTR_2])
    {
        halfPeriod = M2_INV_PWM_TICKS/2;     // 100MHz EPWMCLK

        EPWM_setPhaseShift(obj->pwmHandle[0], ((halfPeriod>>1) + 0));
        EPWM_setPhaseShift(obj->pwmHandle[1], ((halfPeriod>>1) + 2));
        EPWM_setPhaseShift(obj->pwmHandle[2], ((halfPeriod>>1) + 4));

        EPWM_setTimeBasePeriod(obj->pwmHandle[0], halfPeriod);
        EPWM_setTimeBasePeriod(obj->pwmHandle[1], halfPeriod);
        EPWM_setTimeBasePeriod(obj->pwmHandle[2], halfPeriod);
    }

问题

  1. 在单采样模式下运行时、周期再次被二分频是否有任何原因?  当我移除">>1" setPhaseShift 时,电机会消耗大量电流而不旋转(就像 ID 真的很高一样)。  但是、当我在示波器上查看 ISR 时序时、它们在整个 PWM 周期中均分。
  2. 当我尝试找出导致此行为的根本原因时、我注意到双采样和单采样设置的 carrierMid 值的比例不同。  (dual_axis_serving_drive_user.c 中的 initMotorParameters 函数)是否有意这样做?
            #if(SAMPLING_METHOD == SINGLE_SAMPLING)
            pMotor->maxModIndex = (M1_TPWM_CARRIER -
                    (2 * M1_FCL_COMPUTATION_TIME)) / M1_TPWM_CARRIER;
            pMotor->FCL_params.carrierMid = pMotor->maxModIndex *
                    M1_INV_PWM_HALF_TBPRD * 0x10000L;
            #elif(SAMPLING_METHOD == DOUBLE_SAMPLING)
            pMotor->maxModIndex = (M1_TPWM_CARRIER -
                    (4 * M1_FCL_COMPUTATION_TIME)) / M1_TPWM_CARRIER;
            pMotor->FCL_params.carrierMid = M1_INV_PWM_HALF_TBPRD * 0x10000L;
            #endif

谢谢、

-科林

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

    目的是将采样分散在100us 上、如下所示:

    0us 和50us 时、ISR 将对应于 M1、25us 和75us -> M2。为此、相移值会在每个电机上移动180度。 您是否遇到了 double_sar取样 的任何性能问题?

    2.是的、通过单次采样、我们可以将共模点向下移动一点(或者、根据触发此 ISR 的 ZRO 事件或 PRD 事件向上移动)、以便获得更高的调制指数、使其保持在50%

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

    您好 Ramesh、

    我从双采样更改为单采样、因为我将 PWM 占空比从10->20kHz 增加到消除  电机上的可闻呜呜声。  通过将 ISR 速率降低一半 、同时使 PWM 加倍、我能够保持相同的 CPU 负载。 虽然我确信 FCL 环路可以在20kHz 双采样下运行、但我们还有系统需要满足的其他要求。

    对于20kHz 的单次采样、我看到 M1 ISR 为0、50us。  我看到 M2 ISR 的速度分别为37.5us 和87.5us。  这是因为 ((half Period>>>>1)实际上将 PWM 占空比移动1/4三角周期。  

    假设相移上的+2和+4是为了消除 EMI。  我意识到、我刚删除(>>1)的问题实际上会将相移更改为 half-period +2 half period +4。  在单个采样用例中、半周期+任何东西都会将 M2 PWM 移位至高于 PRD、从而导致 PRD 从未发生过比较。  即为什么一个电机卡滞。  想象一下高 ID 和0 IQ。  

    2.你能更详细地解释一下吗?  如果我们在零和 PRD 上进行采样、为什么会有所不同?  

    3.我们公司内部就抽样时间进行了辩论。  我们目前在 PWM Zero 上对电流进行采样。  在此用例中、我相信所有低侧 FET 都导通、所有高侧 FET 都关断。  即低侧零矢量。

    我们的 EES 希望将低通(RC)滤波器置于电流感应中。  它们会使截止频率高于我们预期的最大电频率。 他们的理论是、控制环路应以电机相位所见的平均电流运行、而低通滤波器将对逆变器噪声和电流纹波求平均值。  我担心相位延迟和不必要地降低 电流环路带宽。

    您是否应该在设计中加入低通滤波器以消除开关频率?

    谢谢、

    -科林

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

    我们的代码中可能会有一些错误。 目的是在相同的时间周期内拆分 ISR 实例、并且第二个电机的载波应相应地移位。 您可以尝试将第二个载波的相移与第一个载波的相移平滑、从而使 ISR 时序均匀分布、从而计算出它。

    采样后、我们会损失一段时间用于 comp。  在单次采样中、这发生在接近 ZRO 或 PRD 的位置。 这会导致不对称的时间损失。 因此、您可以相应地移动载波的中点、而不是将其保持在50%、以便充分利用可用的空间。 这将导致根据载波频率在调制指数上获得几个%的点。

     在感测到的电流上使用 LPF 时、应滤除高于开关频率的频率、而不是开关频率本身、因为电流信号嵌入在开关频率下的纹波中。 您需要恢复分流电阻器中电流脉冲的实际形状、并在 PWM 脉冲的中间对其进行采样。

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

    谢谢!