TI中文支持网
TI专业的中文技术问题搜集分享网站

请问一下,这个svpwm的程序对吗

void  calu() {   int    i,a,b,c;     

 float    vref1,vref2,vref3,t1,t2,t3,t4,ta,tb,tc;   

  for(i=0;i<200;i++)  

   {       

      ualfa=cos(INIA+i*DETA);   

      ubeta=sin(INIA+i*DETA);      

          vref1=ubeta;           

          vref2=(-ubeta+ualfa*1.732051)/2;     

          vref3=(-ubeta-ualfa*1.732051)/2;     

                 if(vref1>0)        a=1;   

                   else    a=0;

                 if(vref2>0)        b=1;    

                  else    b=0;        

              if(vref3>0)        c=1;         

                else    c=0;             

                 a=4*c+2*b+a;

               x=ubeta*0.8;         

               y=0.8*(1.732051*ualfa+ubeta)/2;   

             z=0.8*(-1.732051*ualfa+ubeta)/2;

           switch(a)         

             {          case 1 :t1=z,  t2=y;break;   

                        case 2 :t1=y,  t2=-x;break;   

                        case 3 :t1=-z, t2=x;break;    

                        case 4 :t1=-x, t2=z;break;    

                        case 5 :t1=x,  t2=-y;break;        

                        case 6 :t1=-y, t2=-z;break;               

                       default : break;                      }           

              if((t1+t2)>0.5)                

              {t3=t1;t4=t2;       

               t1=t3/(t3+t4)*0.5;       

               t2=t4/(t3+t4)*0.5;

                       }

                ta=(0.5-t1-t2 )/4;        //占空比 

                tb=ta+t1/2;         

                tc= tb+t2/2;

               if(a==1) {pwm1[i]=(int)(tb*7500);  pwm2[i]=(int)(ta*7500);  pwm3[i]=(int)(tc*7500);}       

              if(a==2) {pwm1[i]=(int)(ta*7500);  pwm2[i]=(int)(tc*7500);  pwm3[i]=(int)(tb*7500);}

 

               if(a==3) {pwm1[i]=(int)(ta*7500);  pwm2[i]=(int)(tb*7500);  pwm3[i]=(int)(tc*7500);}     

              if(a==4) {pwm1[i]=(int)(tc*7500);  pwm2[i]=(int)(tb*7500);  pwm3[i]=(int)(ta*7500);}      

              if(a==5) {pwm1[i]=(int)(tc*7500);  pwm2[i]=(int)(ta*7500);  pwm3[i]=(int)(tb*7500);}           

             if(a==6) {pwm1[i]=(int)(tb*7500);  pwm2[i]=(int)(tc*7500);  pwm3[i]=(int)(ta*7500);}      

   } }

mangui zhang:

这个不好说对错吧      实现方法有多种

写法也不同   建议你在理解原理的基础上再看看 

是否符合你的要求

赞(0)
未经允许不得转载:TI中文支持网 » 请问一下,这个svpwm的程序对吗
分享到: 更多 (0)