+SVPWM在DSP上的程序实现步骤
时间:10-02
整理:3721RD
点击:
前面的帖子已经介绍了关于SPWM,SVPWM的理论部分,其实还想说一说关于克拉克变换和逆变换、帕克变换和逆变换的,无奈时间有限,最近忙着开题,更晴天霹雳的是,研究课题方向也有电机控制转换为太阳能光伏并网发电了,不过依然会尽量抽出时间把6748的试用完结。接下来就说下SVPWM如何实现程序的方法,大致就是如下几个步骤。
1.电压向量当前的旋转角度计算:首先设置一个开关频率(例如10kHz),当前频率(6748主频最高是456MHz)除以开关频率等于当前角度的标幺值,当前标幺值乘以2PI,既是选装角度。
- //旋转角度
- theta+=2*PI*456/10000;
- if(theta>2*PI)
- theta_=2*PI;
- else if(thta 0)sector=1;
- if(B>0)sector=2;
- if(C>0)sector=4;
5.扇区内T值:首先对X,Y,Z值计算(和Ualfa,Ubeta的值直接相关联,可直接计算得到),然后对各个扇区进行计算:
- //扇区内T值计算
- X=Ubeta;
- Y=0.5*Ubeta+0.866*Ualfa;
- Z=0.5-0.866*Ualfa;
- if(sector==1)
- {
- t1=Z;
- t2=Y;
- Tb=0.5*(1-t1-t2);
- Ta=Tb+t1;
- Tc=Ta+t2;
- }
- else if(sector==2)
- {
- t1=Y;
- t2=-X;
- V->Tb=0.5*(1-t1-t2);
- V->Ta=V->Tb+t1;
- V->Tc=V->Ta+t2;
- }
- else if(sector==3)
- {
- t1=-Z;
- t2=X;
- V->Tb=0.5*(1-t1-t2);
- V->Ta=V->Tb+t1;
- V->Tc=V->Ta+t2;
- }
- else if(sector==4)
- {
- t1=-X;
- t2=Z;
- V->Tb=0.5*(1-t1-t2);
- V->Ta=V->Tb+t1;
- V->Tc=V->Ta+t2;
- }
- else if(sector==5)
- {
- t1=X;
- t2=-Y;
- V->Tb=0.5*(1-t1-t2);
- V->Ta=V->Tb+t1;
- V->Tc=V->Ta+t2;
- }
- else if(sector==6)
- {
- t1=-Y;
- t2=-Z;
- V->Tb=0.5*(1-t1-t2);
- V->Ta=V->Tb+t1;
- V->Tc=V->Ta+t2;
- }
得出以上结果后,将Ta,Tb,Tc乘以PWM波形的计时周期,再对PWM比较器赋值(其中,计时周期=系统频率(456MHz)/2/斩波频率),程序如下:
- EPwm1Regs.CMPA.half.CMPA=2500*Ta;
- EPwm2Regs.CMPA.half.CMPA=2500*Tb;
- EPwm3Regs.CMPA.half.CMPA=2500*Tc;
- EPwm1Regs.CMPB=2500*Ta;
- EPwm2Regs.CMPB=2500*Tb;
- EPwm3Regs.CMPB=2500*Tc;
以上就是SVPWM理论部分用程序在DSP6748上用程序实现的步骤,具体的还要有很多其他配置,这个还需要继续努力学习。如有错误,请大家不吝赐教,谢谢!
源码 有没有,可以参考学习一下吗?,我邮箱1769161284@qq.com,十分感谢