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.

[参考译文] TMS320F280037:使用 FAST 估算器时的启动问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1605155/tms320f280037-startup-issues-w-fast-estimator

器件型号: TMS320F280037

尊敬的 TI 专家:

在使用 FAST 估算器时、我遇到了表面 PMSM 的一些启动问题。 我有一些关于 FAST 的问题、希望能帮助我解决这些问题。 下面是我对它的工作原理的理解。 我的工程基于 MotorControlSDK 中的 universal_motor_control_lab。

下面是控制 forceAngle 的两个变量。

objUser->forceAngle Freq_Hz

objUser->forceAngle Accel_Hzps

这是启动期间的代码状态流。 首先、在 d 轴上的对齐电流下对齐转子:

    else if(obj->motorState == MOTOR_ALIGNMENT)
    {
        obj->angleFOC_rad = 0.0f;
        obj->enableSpeedCtrl = false;

        obj->IsRef_A = 0.0f;
        obj->Idq_out_A.value[0] = obj->alignCurrent_A;
        obj->Idq_out_A.value[1] = 0.0f;

        TRAJ_setIntValue(obj->trajHandle_spd, 0.0f);

        if((obj->stateRunTimeCnt > obj->alignTimeDelay) ||
                 (obj->flagEnableAlignment == false))
        {
            obj->stateRunTimeCnt = 0;
            obj->motorState = MOTOR_OL_START;
            obj->Idq_out_A.value[0] = obj->fluxCurrent_A;

            EST_setAngle_rad(obj->estHandle, obj->angleFOC_rad);
            PI_setUi(obj->piHandle_spd, obj->alignCurrent_A);
        }

alignTimeDelay 出现后。 将 d 轴设置为 fluxCurrent、并使用 alignCurrent 为速度控制器种子。 看起来对齐电流被转移到了这里的 Q 轴。

然后、它移动到 MOTOR_OL_START、其中 FOC 角度捕捉估算器发出的角度。 我想这是此时的强制角、因为转子刚刚对齐并且还没有旋转。

    else if(obj->motorState == MOTOR_OL_START)
    {
        obj->angleFOC_rad = obj->angleEST_rad;
        obj->motorState = MOTOR_CL_RUNNING;
    }

现在、在 MOTOR_CL_RUNNING 中、我们处于这种情况下、直到 startupTimeDelay 超过、此时 D 轴电流设置为零、我们移至 MOTOR_CTRL_RUN、这是正常的 FOC 运行。 此时、电机应该已成功启动、FOC 环路按预期工作。

                if(obj->motorState == MOTOR_CL_RUNNING)
                {
                    obj->stateRunTimeCnt++;

                    if(obj->stateRunTimeCnt == obj->startupTimeDelay)
                    {
                        obj->Idq_out_A.value[0] = 0.0f;
                        obj->motorState = MOTOR_CTRL_RUN;
                    }
                }
  1. FAST 估算器如何使用 forceAngle Freq_Hz 和 forceAngle Accel_Hzps 变量? 我假设它从 forceAngle Freq_Hz 频率开始产生一个角度、并以 forceAngle Accel_Hzps 的速度加速?
  2. 估算器如何知道何时从强制角度切换到估算角度? 是否必须实现某种类型的误差阈值? 估计器中是否有一个标志指示何时发生切换? 我没能找到这样的旗帜。
  3. 在此启动例程的哪个时间点我可以预期/估算器需要从 ForceAngle 切换到正常运行角度估算? 我是否需要定义自己的条件、然后关闭 ForceAngle?

 

此致、

Ryan

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

    您好、Ryan、

    ForceAngle 是一种电角发生器、用于使您脱离零 或说速度极低、而 FAST 可能尚未提供稳定的角度。 如果您想切换开环启动、可以通过设置/清除此标志“flagEnableForceAngle"来“来启用/禁用。  启用 ForceAngle 时、角度发生器会生成一个电角 、 该角基于 objUser->forceAngle Freq_Hz 从电气频率开始、并通过 objUser->forceAngle Accel_Hzps 使该电频率斜升、 然后进行积分以创建 Park/iPark 使用的强制角。

    “forceAngle"<xmt-block0>“ Freq_Hz 由“USER_M1_FORCE_ANGLE_FREQ_Hz"初“初始化。 此值在电机启动期间使用。  典型强制角启动速度为+–1Hz。

    如果对齐后没有看到电机旋转、则可能必须在“user_mtr1.h"文件“文件中将其增加“#define USER_MOTOR1_ALIGN_CURRENT_A (1.5f)// a“。 这应该使电机达到零基准。

    此致、

    Masoud

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

    您好,马苏德,感谢您的答复。 什么情况会导致估计器从 ForceAngle 切换到估计角度? 是否有任何标志向用户指示已发生转换? 我的问题可能是在这个过渡时期。 我可以让轴开始旋转、但有时会失去同步和失速。 这大约每 500 个初创公司就会发生一次。  

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

    Ryan、

    仅在启动期间当运行频率低于 1Hz(默认值)时使用强制角。 之后、它将使用估计器角度。 您可以在“user"头“头文件中更改设置值。

    //! \brief 定义了强制角频率 (Hz)
    #define USER_M1_FORCE_ANGLE_FREQ_Hz (1.0f)

    此致、

    Masoud

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

    您好、Masoud、这没有回答我的问题。 假设仅在运行频率小于 USER_M1_FORCE_ANGLE_FREQ_Hz 时、才在启动期间使用强制角。 如果是这种情况、那么即使使用  forceAngle Accel_Hzps 也有什么意义? 根据您上面的答案、它将立即从 forceAngle 变为估计器角度。 请帮助我理解。 我想了解的关键问题是估算器需要满足哪些标准才能从强制角切换到估算器角度。 谢谢。

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

    Ryan、

    ForceAngle 不会“立即开关“、只是因为存在 USER_M1_FORCE_ANGLE_FREQ_Hz = 1Hz、这就是 forceAngle Accel_Hzps 很重要的原因。

    如果电气频率低于 objUser->forceAngle Freq_Hz、则会在 objUser->forceAngle Accel_Hzps 加速率(1 秒)处斜升。

    用户没有面临专用切换发生标志。

    要解决失速、如果您在从 ForceAngle 切换到 FAST 期间看到失速、可以尝试降低 forceAngle Accel_Hzps 或增加 USER_M1_FORCE_ANGLE_FREQ_Hz。

    此致、

    Masoud