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.

[参考译文] TMS320F28062F:算法多次重启中的电压偏置问题

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/672949/tms320f28062f-voltage-bias-problem-in-algorithm-multi-time-restart

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

您好、InstaSPIN 冠军

我的客户在 V/F A/C 应用中使用了 F28062F、发现有时 MCU 会在多次重启后处于未知状态。

详细信息如下:

控制板始终通电、客户使用 UART 命令停止运行压缩机、这会将 gMotorVars.Flag_enableSys 和 gMotorVars.Flag_Run_Identify 设置为0。 然后使用 UART 命令重新启动压缩机、这会再次将 enableSys 和 Run_Identify 设置为1。

7~9 μ s 后、MCU 看起来会暂停、客户的定时器中断和 UART 中断也不起作用。

经过多次调试后、他们发现如果在 enableSys=0时添加默认电压偏置设置、则这种情况不会再次发生。 如下所示:

}// while 结束(gFlag_enableSys)循环


//禁用 PWM
HAL_disablePwm (halHandle);

//设置默认控制器参数(重置控件以重新识别电机)
CTRL_setParams (ctrlHandle、&gUserParams);

//设置默认电压偏置

uint_least8_t cnt;
_IQ bias =_IQ (0.0);

for (cnnt=0;<HAL_getNumVoltageSensors(handle);cnt++)

HAL_setBias (handle、HAL_SensorType_Voltage、cnt、bias);

gMotorVars.Flag_Run_Identify = false;

那么、问题是、在算法重新启动时是否需要设置默认电压偏置值、为什么?

谢谢!

Eric

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您无需设置电机每次启动时的默认电压/电流偏置、每次上电时只需执行此操作。 如果您不想再次识别电机参数、只需将 gMotorVars.Flag_Run_Identify 设置为零即可停止电机、而不会将 gMotorVars.Flag_enableSys 设置为零。

    这个问题的原因也许是控制过程不正确、或者电机控制中断和其它中断之间存在冲突。
    1.要停止电机、正确的过程是先将 gMotorVars.Flag_Run_Identify 设置为零、然后在一段时间后将 gMotorVars.Flag_enableSys 设置为零。
    2.要启动电机、正确的过程是先将 gMotorVars.Flag_enableSys 设置为1、然后在一段时间后将 gMotorVars.Flag_Run_Identify 设置为1。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Yanming

    我需要更正一些详细信息、我们只需将 gMotorVars.Flag_Run_Identify 设置为零即可停止电机、而不会将 gMotorVars.Flag_enableSys 设置为零。

    if (ctrlState = CTRL_State_OffLine)

    //启用 PWM
    HAL_enablePwm (halHandle);
    HAL_enableTZInts (halHandle);
    HAL_resetOffset (halHandle、&gUserParams);

    否则、如果(ctrlState = CTRL_State_OnLine)

    if (gMotorVars.Flag_enableOffsetcalc = true)

    //更新 ADC 偏置值
    HAL_updateAdcBias (halHandle);

    MCU 似乎在偏移过程中停止、您能帮您解决这个问题。

    在这种、下、1 μ A 复位电压偏置确实有意义、因此我认为它可能与控制过程无关、失调电压过程中是否有任何例外? 当我们优化 MCU 的 GND 层时、我们发现问题发生了大约20次。
    2、μ A MCU 似乎停止、 无法通过看门狗复位、MCU 的状态以及如何将其唤醒。

    谢谢、期待您的回复。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1.客户是否保留了以下代码以仅运行您发布的代码一次?
    //更新控制器状态
    bool flag_ctrlStateChanged = CTRL_updateState (ctrlHandle);

    if (flag_ctrlStateChanged)



    2.客户好像添加了 ePWM TZ 中断。 是否有可能导致 TZ 中断和其他中断停止、因为 HAL_disablePwm()函数在客户的项目中频繁调用?

    3.客户是否在项目中启用了看门狗? 在 motorware 的示例项目中、默认状态为禁用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1、这些代码每次 在主循环中运行。

    2、是,TZ 中断被启用、在 HAL_disabledPWM ()被调用之前 、客户将调用 HAL_disableTZInts ()来禁用 TZ 交叉存取、并在离线状态下再次启用 TZ 中断。 因此在正常过程中没有 TZ 中断、也有 SCI_TxdISR 和 SCI_rxdISR 中断、它在启动几次之前工作顺畅。 因此、在调试模式下无法重现问题的根本原因。

    3、正确、通过在客户项目,中调用 WDOG_ENABLE()函数来启用看门狗、并且 在主循环中调用 WDOG_clearCounter()函数。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不认为问题来自电压/电流偏移更新、似乎无法再次输入电机控制的 mainISR、但主运行时循环可以正常运行、因此可以成功清除看门狗。
    您可以检查主 ISR 是否存在时间溢出并与其他中断有任何冲突。 在所有中断 ISR 和主循环中添加一些 GPIO 切换、以查看无法根据需要切换哪个 GPIO。