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.

28069进行FOC控制



请问:   
1、有没有FOC控制中关于svgen.h的说明?sv中的Vabc是以Udc/sqrt(3)为基准值么?(用的TI其它的sv调制程序(如VF调制程序)中的电压标幺值都是以此为基准值的)
2 、 如果FOC控制中use.h中的USER_IQ_FULL_SCALE_VOLTAGE_V修改后,送入sv调制的电压值用不用坐以下变换:
                Valpha*USER_IQ_FULL_SCALE_VOLTAGE_V/(Udc/sqrt(3))
                Vbeta*USER_IQ_FULL_SCALE_VOLTAGE_V/(Udc/sqrt(3))
意思就是将原本以USER_IQ_FULL_SCALE_VOLTAGE_V为基准值的电压标幺值换算成以Udc/sqrt(3)为基准值的标幺值然后送进SV调制?
3、另外FOC中的svgen输出的Ta、b、c范围是(-1,1)么?谢谢回答
FOC中svgen程序如下:
 Va_tmp = -(pVab->value[0]>>1);
 Vb_tmp = _IQmpy(SVGEN_SQRT3_OVER_2,pVab->value[1]);
 Va = pVab->value[0];  //alpha
 Vb = Va_tmp + Vb_tmp; //-0.5*alpha + sqrt(3)/2 * beta;
 Vc = Va_tmp - Vb_tmp; //-0.5*alpha - sqrt(3)/2 * beta;
 if (Va > Vb)
  {
    Vmax = Va;
    Vmin = Vb;
  }
  else
  {
    Vmax = Vb;
    Vmin = Va;
  }

  if (Vc > Vmax)
  {
   Vmax = Vc;
  }
  else if (Vc < Vmin)
  {
    Vmin = Vc;
  }

  Vcom = _IQmpy(Vmax+Vmin, _IQ(0.5));

  // Subtract common-mode term to achieve SV modulation
  pT->value[0] = (Va - Vcom);
  pT->value[1] = (Vb - Vcom);
  pT->value[2] = (Vc - Vcom);
  • Ziyi Lee 说:
    请问:   
    1、有没有FOC控制中关于svgen.h的说明?sv中的Vabc是以Udc/sqrt(3)为基准值么?(用的TI其它的sv调制程序(如VF调制程序)中的电压标幺值都是以此为基准值的)
    2 、 如果FOC控制中use.h中的USER_IQ_FULL_SCALE_VOLTAGE_V修改后,送入sv调制的电压值用不用坐以下变换:
                    Valpha*USER_IQ_FULL_SCALE_VOLTAGE_V/(Udc/sqrt(3))
                    Vbeta*USER_IQ_FULL_SCALE_VOLTAGE_V/(Udc/sqrt(3))
    意思就是将原本以USER_IQ_FULL_SCALE_VOLTAGE_V为基准值的电压标幺值换算成以Udc/sqrt(3)为基准值的标幺值然后送进SV调制?
    3、另外FOC中的svgen输出的Ta、b、c范围是(-1,1)么?谢谢回答
    FOC中svgen程序如下:
     Va_tmp = -(pVab->value[0]>>1);
     Vb_tmp = _IQmpy(SVGEN_SQRT3_OVER_2,pVab->value[1]);
     Va = pVab->value[0];  //alpha
     Vb = Va_tmp + Vb_tmp; //-0.5*alpha + sqrt(3)/2 * beta;
     Vc = Va_tmp - Vb_tmp; //-0.5*alpha - sqrt(3)/2 * beta;
     if (Va > Vb)
      {
        Vmax = Va;
        Vmin = Vb;
      }
      else
      {
        Vmax = Vb;
        Vmin = Va;
      }

      if (Vc > Vmax)
      {
       Vmax = Vc;
      }
      else if (Vc < Vmin)
      {
        Vmin = Vc;
      }

      Vcom = _IQmpy(Vmax+Vmin, _IQ(0.5));

      // Subtract common-mode term to achieve SV modulation
      pT->value[0] = (Va - Vcom);
      pT->value[1] = (Vb - Vcom);
      pT->value[2] = (Vc - Vcom);

    官方配套的文档应该是最好的资料了。

    这里只是个应用算法,不涉及归一化的问题,不管使用标幺非标幺,算法是一定的,至于是否使用取决于你,只要保证运算过程不溢出

  • 你好:

          现在还有另外的问题,

    1、这个参数设置不太清楚。USER_MOTOR_MAGNETIZING_CURRENT  这个参数说明文档说可以设为空载电流的幅值,这里的空载电流是电机的空载线电流么?我的电机空载实验电流为5A,由于是三角形连接,换算成绕组上空载电流幅值后是4.2A左右,然后把这个值设置为4.2,电机不转。减小到1.1-1.5左右才可以正常旋转。请问这个值到底应该怎么设置?

    2、我带电机到额定转速1500r后,我想升速,于是将弱磁选项设置为1,但是设置完后电机立马停转,这是为何?

    3、针对所带电机为三角形连接,具体程序中需要修改的地方有哪些?要怎么修改呢?说个大概的点吧,指明一条道路。谢谢