SVPWMmatlab仿真

上传人:沈*** 文档编号:144163898 上传时间:2022-08-26 格式:DOC 页数:9 大小:636.50KB
返回 下载 相关 举报
SVPWMmatlab仿真_第1页
第1页 / 共9页
SVPWMmatlab仿真_第2页
第2页 / 共9页
SVPWMmatlab仿真_第3页
第3页 / 共9页
点击查看更多>>
资源描述
【转】svpwm 的MATLAB仿真实现为了能让大家在已经泛滥的知识上少走弯路,本人把自己在SVPWM上的认识与看到此贴的读者们一起分享,废话少说,切入正题:在看下面内容之前,您应该至少对SVPWM的原理有大致的了解,如果不了解也没关系,你只要按照我交给你的步骤来做,也可以轻而易举的跨过SVPWM 这道坎,在仿真之前您必须安装MATLAB7.0 或以上版本,必须确保simpowersysm工具箱已被安装,如果以上要求已经达到,那么就可以执行以下步骤了:步骤1 :打开matlab 主界面,然后在comma nd wi ndow界面中的“ 旁边输入simuli nk ,打开simulink 开发环境后新建一个 mdl文件,在simulink下拉菜单中的ports&subsystems 中找到subsystem 模块,用其建立一个如图1的总的模块,这个模块有两个输入口,一个输出口(实际上包含六路PWM信号),接来的东西都将在这个模块中添加,输入输出模块的名称可以在双击模块后自己更改,其中Vahar,Vbetar是需要输出的电压在两相静止坐标系下的两个分量,输出是控制逆变器六个IGBT的pwm脉冲信号。也许有人会问,输入参数不是还包括直流电压和功率开关频率吗?别急,F面接着让您看到上述模块的内部情况步骤2 :根据图2,添加subsystem 的内核模块,里面用到的模块有以下几种:in,out,mux,demux,repeatingsequence,rationaloperator,logical operator和里面的主角S-Fu nction builder 模块。可以看到输入有四个参数Vapha,Vbeta,Tz,Vdc ,输出为六路 PWM信号,这个仿真模块没考虑死区的问题;取Tz为1/( 1e+4 )这就是说开个频率是10kHz,Vdc为500,这两个参数要根据实际情况自己设置,这里是我任意设的,repeating sequenee的设置如图3所示,这样设的目的是想产生一个周期为 Tz,峰值为Tz/2的等腰直角三角形调制波,接下来设置两个比较模块和取反模块,比较模块是大于等于关系,各模块的其他参数,我没说的就当默认设置,细心的 读者会在图4中的第一幅图中看到仿真时间设为Ts,这是我设的系统仿真步长,这里就用默认值-1,此外比较模块和取反模块的信号属性signal atrributes均应设为Boolean格式。图3步骤3 :设置s-builder模块,这个设置也很简单,但是看起来有点多,图2中的svpwm模块就是用simulink 中的s-function builder建立的,只是名字改成 svpwm 罢了,有图2可以看出svpwm 产生的三个时间比较值与 repeating sequenee 产生的等腰三角波进行 比较,从而产生想要的六路 PWM波,svpwm 的核心算法是使用 C语言编写的,下面详细介绍该模块的设置,s-fan ction builder的界面如下图:图5在s-function name 中输入svpwm,如果你把我下面说的设置完后,再按一下s-functionname旁边的build ,接着就会在 matlab的显示路径文件夹中(如我的文档/matlab ”) 产生几个格式各异的以 svpwm 开头的文件,如svpwm.c ,svpwm.tlc 等,不过这是后话,先说说设置,在 initialization中的各参数均设为0, sample mode 设为inherited ,如图5所示,这些都是默认值,也是说可以不用管它就可以了,在data properties 中设:图6port name 为u (默认是u0 ),行数row为4 (因为有四个输入参数),其他选用默认值,如图6所示,设output ports 的输出port name 为y (原来为y0 ),行数rows为3(因为有三个输出),其他参数默认,剩下的两个parameters 和data type attributes 均采用默认值;在libraries中全部使用默认值;接下来要改的就是outputs 中的内容,也是实现SVPWM 的核心算法,必须注意要必须勾选in puts are needed in the outputfun ctio n(direct feedthrough),这句话的意思是:输出结果直接用到了输入数据,比如y=u+1 ,将下面给出的 C语言程序复制到空白处,如图 7所示:图7/*u4=vaphar,vbetar,Tz,Vdc*/ int A,B,C,N;double X,Y,Z,Tx,Ty,TO,TI,Tm,Th; if (u10) A = 1;else A=0;if (1.732051*u0-u1)0) B = 1;else B=0;if (-1.732051*u0-u1)0) C = 1;else C=0;N=A+2*B+4*C;X=1.732051*u1*u2/u3;Y=(0.8660*u1+1.5*u0)*u2/u3;Z=(-0.8660*u1+1.5*u0)*u2/u3;switch (N)case 1: Tx= Y;Ty=-Z;break;case 2: Tx=-X;Ty= Y;break;case 3: Tx= Z;Ty= X;break;case 4: Tx=-Z;Ty=-X;break;case 5: Tx= X;Ty=-Y;break;default: Tx=-Y;Ty= Z;if (Tx+Ty)u2)Tx=Tx*u2/(Tx+Ty);Ty=Ty*u2/(Tx+Ty);T0=(u2-(Tx+Ty)/4;TI=(u2+Tx-Ty)/4;/*TI=T0/4+Tx/2*/Tm=(u2-Tx+Ty)/4;/*Tm=T0/4+Ty/2*/Th=(u2+Tx+Ty)/4;/*Th=T0/4+Ty/2+Ty/2*/switch (N) case 1 :y0=Tm;y1=T0;y2=Th;break;case 2 :y0=T0;y1=Th;y2=Tm;break;case 3 :y0=T0;y1=TI;y2=Th;break;case 4 :y0=Th;y1=Tm;y2=T0;break;case 5 :y0=Th;y1=T0;y2=TI;break;default :y0=TI;y1=Th;y2=T0;接下来的两个 continuous derivatives 和discrete update都不用改,使用默认值,这两个只有在有导数时才会用到,最后一个在build info 中勾选show comlile steps (在build时会显示编译过程)、 create a debugged mex-file 禾口 gen erate wrapper tlc(这个我也不知道干什么用的)。这下所有的细节设置都结束了,步骤4 :设置仿真参数,回到mdl主界面,选择菜单栏中的simulation/configurateparameters ,里面的仿真时间可以根据实际情况自己定,在 sover options 中,type建议 选fixed-step ,fixed step size应本人设为5e-6,这个参数是仿真时最小的步长,这个参数必须比开关周期 Tz小,否则无法仿真,其他参数都不用管它,要想知道这些参数是什么意思,就多看看 matlab 中的help,里面都有详细说明。步骤5是安装Icc,在 matlab 的comma nd win dow 中输入 mex -setup ,然后按照提示 将LCC安装上,安装完毕的提示是done。,接下来你就可以做跟你有用有关的事了,把SVPWM当做一个模块了使用。步骤6 :打开s-function builder,单击一下里面的build,接着您就可以看到编译过程,如果看到success,那就说明您已经成功了。编译完后关闭s-function builder,接下来做你的系统仿真吧,只要您的svpwm模块和编译出来的 svpwm.c放在一个文件夹中,以后仿真就不用再点 build 了。很简单吧,其实SVPWM的仿真没什么难的!需要提醒同志们的是,在仿真之前必须build一下s-function builder,不然无法运行模块,采用s-builder的原因是建成的模块很简洁,而且运行速度要比其他方法快的多,接下来同志们该去自己试一下了!
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!