as27185 发表于 2013-9-4 19:16

关于renesas的矢量控制代码,请教一个问题

本帖最后由 as27185 于 2013-9-4 19:27 编辑

对于FOC,理论上计算出两相静止坐标系的电压,再进行SVPWM运算即可得到三相的占空比即可。
但是我看到的renesas的FOC代码(单片机78f1213),是将两相静止坐标系的电压变换到三相静止坐标系,然后经过一个看不懂的过程,产生了三相占空比,不知道是为什么?请高手指教,谢谢,部分代码如下,其中TDR02 、TDR04、TDR06是三个写占空比的寄存器
//Calculate Va,Vb,Vc to decide the time duration of each vector
               
        Va=U_beta_set;            //Va=U_beta_set
        Vb=temp1+temp2;                                //Vb=(sqrt(3)*U_alpha_set+U_beta)/2
        Vc=temp2-temp1;                                //Vc=(-Sqrt(3)*U_alpha_set+U_beta)/2

switch(SV_sector)
   {
       case 3:                       
          if(G_Modeflag==1)
          {
          TOE0=0x00fd;//0x00fc;
          TO0=0x0000;
          TOL0=0x0054;
          }
          else
          {
                TO0=0x0000;
                TOE0=0x0000;
                TO0=0x0000;
                TOE0=0x0001; //20121120 add
          }
          TDR02=Va-Vc;
          TDR04=Va;
          TDR06=0;
          G_PWM_Mid=TDR04;       
          G_PWM_Max=TDR02;
          break;

       case 2:                       
          if(G_Modeflag==1)
          {
                TOE0=0x00fd;;
                TO0=0x0000;
                TOL0=0x0054;
          }
       else
          {
                TO0=0x0000;
                TOE0=0x0000;
          TO0=0x0000;
                TOE0=0x0001; //20121120 add
          }
          TDR02=Vb-Va;
          TDR04=0;
          TDR06=-Va;
          G_PWM_Mid=TDR06;
          G_PWM_Max=TDR02;
          break;
                               
       

as27185 发表于 2013-9-4 19:20

代码中把其中一个占空比的寄存器写0,我知道是为了做两相调制,但其它的就看不懂了
页: [1]
查看完整版本: 关于renesas的矢量控制代码,请教一个问题