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.

工程师您好,关于HALL启动 FOC切换的问题

Other Parts Discussed in Thread: MOTORWARE

工程师,您好,参照PROJ_LAB11E HALL 启动,当切换到FOC时怎么有的时候会反转,谢谢,请指点  芯片为TMS28027F

  • 你好,方便描述一下出现反转的时候电机的各个测量参数的变化是怎样的?
    反转是持续的还是仅在切换初期出现反转,后续又正常运行?
  • 您好,尽在切换初期出现反转,然后又正常运行;您提到的“电机的各个测量参数的变化是怎样?”主要是指哪些参数?
  • 您好,可以帮忙指导下吗
  • 抱歉没有这样的操作经验,我咨询一下同事后再回复你。
  • 谢谢!麻烦您了!急切盼望得到您们的指点!

    我现在的问题就是:

         在使用了HALL (霍尔传感器时),

        1)方波阶段,带负载时有噪音,且噪音比较大,不带负载时则顺滑,噪音小;

        2)如果把切换到FOC 的速度设高,则方波切换到顺滑,正常;如果把切换到FOC的速度设低,则方波阶段的噪音避免了,但是切换的时候会出现不连贯,或者反转的现象;

      

     不知道motorware FOC内部什么情况下会反转?

      敬请指点

    附其中两相电流波形:

    下图就是切换速度低的时候,波形图,现象是切换瞬间:停顿一下,有时反转一下;

      

    下图是把切换速度加大时的波形图


  • 您好,此外还要请教一下,motorware中: "sw/modules/hallbldc/src/32b/hallbldc.h"

    这个程序中的下列代码是干什么用的?手册上好像没有这方面的说明


    //! \brief Runs the hall bldc module for hall inputs
    //! \param[in] handle The hall bldc handle
    //! \param[in] hallState The hall state 1 thru 6, A phase hall is MSB, C phase hall is LSB
    //! \param[in] pCurrentVec The pointer to the current vector
    static inline void HALLBLDC_run(HALLBLDC_Handle handle,const uint_least8_t hallState) //,MATH_vec3 *pCurrentVec)
    {
    HALLBLDC_Obj *obj = (HALLBLDC_Obj *)handle;


    switch(hallState)
    {
    case 5:
    {
    if(obj->angleSelect == 0)
    {
    obj->angle_pu = _IQ(180.0/360.0);
    }
    else if(obj->angleSelect == 1)
    {
    obj->angle_pu = _IQ(240.0/360.0);
    }

    break;
    }
    case 4:
    {
    if(obj->angleSelect == 0)
    {
    obj->angle_pu = _IQ(240.0/360.0);
    }
    else if(obj->angleSelect == 1)
    {
    obj->angle_pu = _IQ(300.0/360.0);
    }

    break;
    }
    case 6:
    {
    if(obj->angleSelect == 0)
    {
    obj->angle_pu = _IQ(300.0/360.0);
    }
    else if(obj->angleSelect == 1)
    {
    obj->angle_pu = _IQ(0.0/360.0);
    }

    break;
    }
    case 2:
    {
    if(obj->angleSelect == 0)
    {
    obj->angle_pu = _IQ(0.0/360.0);
    }
    else if(obj->angleSelect == 1)
    {
    obj->angle_pu = _IQ(60.0/360.0);
    }

    break;
    }
    case 3:
    {
    if(obj->angleSelect == 0)
    {
    obj->angle_pu = _IQ(60.0/360.0);
    }
    else if(obj->angleSelect == 1)
    {
    obj->angle_pu = _IQ(120.0/360.0);
    }

    break;
    }
    case 1:
    {
    if(obj->angleSelect == 0)
    {
    obj->angle_pu = _IQ(120.0/360.0);
    }
    else if(obj->angleSelect == 1)
    {
    obj->angle_pu = _IQ(180.0/360.0);
    }

    break;
    }
    }
    obj->prevState_bin = hallState;


    return;
    } // end of HALLBLDC_run() function
  • 您好,盼望您的回复,帮助,谢谢
  • 你好,因为之前你提供的信息较少,我咨询了相关同事后对方给出了两点建议:
    1、在gHall_PwmIndex[]中设置正确的交换表。
    2、调整gHall2Fast_Spd_Coef, gHall2Fast_Iq_coef, gHall_speed_FastToBldc_low_pu 和gHall_speed_BldcToFast_high_pu。
    鉴于目前提供的信息,我建议直接在我们E2E英文论坛上咨询,因为E2E论坛上有资深的电机控制工程师可以为您解答相关问题:
    e2e.ti.com/.../171