svpwm的MATLAB仿真实现

svpwm的MATLAB仿真实现步骤1:打开matlab主界面,然后在commandwindow界面中的“>>”旁边输入simulink,打开simulink开发环境后新建一个mdl文件,在simulink下拉菜单中的ports&subsystems中找到subsystem模块,用其建立一个如图1的总的模块,这个模块有两个输入口,一个输出口(实际上包含六路PWM信号),接来的东西都将在这个模块中添加,输入输出模块的名称可以在双击模块后自己更改,其中Vahar,Vbetar是需要输出的电压在两相静止坐标系下的两个分量,输出是控制逆变器六个IGBT的pwm脉冲信号。图1也许有人会问,输入参数不是还包括直流电压和功率开关频率吗?别急,下面接着让您看到上述模块的内部情况步骤2:根据图2,添加subsystem的内核模块,里面用到的模块有以下几种:in,out,mux,demux,repeatingsequence,rationaloperator,logicaloperator和里面的主角S-Functionbuilder模块。图2可以看到输入有四个参数Vapha,Vbeta,Tz,Vdc,输出为六路PWM信号,这个仿真模块没考虑死区的问题;取Tz为1/(1e+4)这就是说开个频率是10kHz,Vdc为500,这两个参数要根据实际情况自己设置,这里是我任意设的,repeatingsequence的设置如图3所示,这样设的目的是想产生一个周期为Tz,峰值为Tz/2的等腰直角三角形调制波,接下来设置两个比较模块和取反模块,比较模块是大于等于关系,各模块的其他参数,我没说的就当默认设置,细心的读者会在图4中的第一幅图中看到仿真时间设为Ts,这是我设的系统仿真步长,这里就用默认值-1,此外比较模块和取反模块的信号属性signalatrributes均应设为Boolean格式。图3图4步骤3:设置s-builder模块,这个设置也很简单,但是看起来有点多,图2中的svpwm模块就是用simulink中的s-functionbuilder建立的,只是名字改成svpwm罢了,有图2可以看出svpwm产生的三个时间比较值与repeatingsequence产生的等腰三角波进行比较,从而产生想要的六路PWM波,svpwm的核心算法是使用C语言编写的,下面详细介绍该模块的设置,s-fanctionbuilder的界面如下图:图5在s-functionname中输入svpwm,如果你把我下面说的设置完后,再按一下s-functionname旁边的build,接着就会在matlab的显示路径文件夹中(如“我的文档/matlab”)产生几个格式各异的以svpwm开头的文件,如svpwm.c,svpwm.tlc等,不过这是后话,先说说设置,在initialization中的各参数均设为0,samplemode设为inherited,如图5所示,这些都是默认值,也是说可以不用管它就可以了,在dataproperties中设:图6portname为u(默认是u0),行数row为4(因为有四个输入参数),其他选用默认值,如图6所示,设outputports的输出portname为y(原来为y0),行数rows为3(因为有三个输出),其他参数默认,剩下的两个parameters和datatypeattributes均采用默认值;在libraries中全部使用默认值;接下来要改的就是outputs中的内容,也是实现SVPWM的核心算法,必须注意要必须勾选inputsareneededintheoutputfunction(directfeedthrough),这句话的意思是:输出结果直接用到了输入数据,比如y=u+1,将下面给出的C语言程序复制到空白处,如图7所示:图7/*u[4]={vaphar,vbetar,Tz,Vdc}*/intA,B,C,N;doubleX,Y,Z,Tx,Ty,T0,Tl,Tm,Th;if(u[1]>0)A=1;elseA=0;if((1.732051*u[0]-u[1])>0)B=1;elseB=0;if((-1.732051*u[0]-u[1])>0)C=1;elseC=0;N=A+2*B+4*C;X=1.732051*u[1]*u[2]/u[3];Y=(0.8660*u[1]+1.5*u[0])*u[2]/u[3];Z=(-0.8660*u[1]+1.5*u[0])*u[2]/u[3];switch(N){case1:Tx=Y;Ty=-Z;break;case2:Tx=-X;Ty=Y;break;case3:Tx=Z;Ty=X;break;case4:Tx=-Z;Ty=-X;break;case5:Tx=X;Ty=-Y;break;default:Tx=-Y;Ty=Z;}if((Tx+Ty)>u[2]){Tx=Tx*u[2]/(Tx+Ty);Ty=Ty*u[2]/(Tx+Ty);}T0=(u[2]-(Tx+Ty))/4;Tl=(u[2]+Tx-Ty)/4;/*Tl=T0/4+Tx/2*/Tm=(u[2]-Tx+Ty)/4;/*Tm=T0/4+Ty/2*/Th=(u[2]+Tx+Ty)/4;/*Th=T0/4+Ty/2+Ty/2*/switch(N){case1:y[0]=Tm;y[1]=T0;y[2]=Th;break;case2:y[0]=T0;y[1]=Th;y[2]=Tm;break;case3:y[0]=T0;y[1]=Tl;y[2]=Th;break;case4:y[0]=Th;y[1]=Tm;y[2]=T0;break;case5:y[0]=Th;y[1]=T0;y[2]=Tl;break;default:y[0]=Tl;y...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?