资源描述:
《基于ti公司dsp例程算法的svpwm技术的研究及其实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、SVPWM算法技术的研究及其实现-------By左文全2011年3月06日星期日SVPWM的输入为αβ两相旋转坐标系下的变量Uα,Uβ,对于为什么选择αβ两相旋转坐标系下的变量Uα,Uβ作为输入变量,其原因在于后面的所有中间变量的计算都是基于αβ两相旋转坐标系下的变量Uα,Uβ计算的,所有的算法都是这样的,也是最简单的,在矢量控制应用中,整个系统的输入为ID,IQ,经过PID调节器调节和IPARK逆变换后得到Uα,Uβ,这就是SVPWM的输入,SVPWM输出为6路PWM波。从输入到输出的算法实现即为本文的重点。PMSM矢量控制系统如下图0所示:
2、(1)由,扇区确定电压矢量所在扇区:先计算三个中间变量B0,B1,B2:在使用符号函数计算扇区中间变量P值:P值与扇区号之间的对应关系为:P123456扇区号261435图1扇区分布图2扇区变量P与扇区SECTOR之间对应关系图3扇区变量P与扇区SECTOR之间关系(1)确定单位矢量切换时间t1,t2:先计算三个中间变量X,Y,Z:根据电压矢量所在扇区确定切换时间t1,t2:扇区号123456t1-ZZX-X-YYt2XY-YZ-Z-X如果t1+t2>1,则;如果t1+t2<1,则t1,t2保持不变。(这里用到的UALFA,UBETA都是标幺值,
3、计算出的t1,t2都是占空比)图4T1,T2的波形图5T1,T2的波形(1)利用t1,t2计算切换点Ta,Tb,Tc:先计算中间变量Taon,Tbon,Tcon:,则不同扇区内切换点Ta,Tb,Tc可有下表得到:范围改变设PWM周期为Tpwm,则T1PRD=Tpwm/2:EvaRegs.CMPR1=(int16)(T1Period/2+T1Period*Ta/2);EvaRegs.CMPR2=(int16)(T1Period/2+T1Period*Tb/2);EvaRegs.CMPR3=(int16)(T1Period/2+T1Period*Tc
4、/2);图5Taon,Tbon,Tcon的波形图6Ta,Tb,Tc的波形图7Ta,Tb,Tc的波形图8仿真中输出相电压Ua,Ub与线电压Uab的波形(1)接负载仿真:图4负载相电流波形图5负载相电压,线电压波形图6示波器上滤波后负载相电压,线电压波形图7总体仿真模型SVPWM实现的核心程序://================================================================================//IPark变换UD,UQ-->UALFA,UBETA获得给定信号//============
5、====================================================================Ualfa=_IQmpy(Ud,Cosine)-_IQmpy(Uq,Sine);Ubeta=_IQmpy(Uq,Cosine)+_IQmpy(Ud,Sine);//================================================================================//通过UALFA,UBETA确定扇区变量P//======================
6、==========================================================B0=Ubeta;B1=_IQmpy(_IQ(0.8660254),Ualfa)-_IQmpy(_IQ(0.5),Ubeta);//0.8660254=sqrt(3)/2B2=_IQmpy(_IQ(-0.8660254),Ualfa)-_IQmpy(_IQ(0.5),Ubeta);//0.8660254=sqrt(3)/2if(B0>_IQ(0))P0=1;elseP0=0;if(B1>_IQ(0))P1=1;elseP1=0;if
7、(B2>_IQ(0))P2=1;elseP2=0;P=P0+2*P1+4*P2;//================================================================================//通过扇区变量P确定扇区Sector//================================================================================if(P==1)Sector=2;elseif(P==2)Sector=6;elseif(P==3)Sec
8、tor=1;elseif(P==4)Sector=4;elseif(P==5)Sector=3;elseif(P==6)Sector=5