svpwm 的MATLAB 仿真实现 步骤1:打开matlab 主界面,然后在command window 界面中的“>>”旁边输入simulink,打开simulink 开发环境后新建一个 mdl 文件,在simulink 下拉菜单中的ports&subsystems 中找到 subsystem 模块,用其建立一个如图 1 的总的模块,这个模块有两个输入口,一个输出口(实际上包含六路 PWM 信号),接来的东西都将在这个模块中添加,输入输出模块的名称可以在双击模块后自己更改,其中Vahar,Vbetar 是需要输出的电压在两相静止坐标系下的两个分量,输出是控制逆变器六个 IGBT 的pwm 脉冲信号。 图 1 也许有人会问,输入参数不是还包括直流电压和功率开关频率吗?别急,下面接着让您看到上述模块的内部情况 步骤2:根据图 2,添加 subsystem 的内核模块,里面用到的模块有以下几种:in,out,mux,demux,repeating sequence,rational operator,logical operator和里面的主角 S-Function builder 模块。 图2 可以看到输入有四个参数Vapha,Vbeta,Tz,Vdc,输出为六路PWM 信号,这个仿真模块没考虑死区的问题; 取Tz 为1/(1e+4)这就是说开个频率是10kHz,Vdc 为500,这两个参数要根据实际情况自己设置,这里是我任意设的,repeating sequence 的设置如图3 所示,这样设的目的是想产生一个周期为Tz,峰值为Tz/2 的等腰直角三角形调制波,接下来设置两个比较模块和取反模块,比较模块是大于等于关系,各模块的其他参数,我没说的就当默认设置,细心的读者会在图4 中的第一幅图中看到仿真时间设为Ts,这是我设的系统仿真步长,这里就用默认值-1,此外比较模块和取反模块的信号属性signal atrributes 均应设为Boolean 格式。 图3 图4 步骤3:设置s-builder 模块,这个设置也很简单,但是看起来有点多,图2 中的svpwm 模块就是用simulink 中的s-function builder 建立的,只是名字改成svpwm 罢了,有图2可以看出svpwm产生的三个时间比较值与repeating sequence产生的等腰三角波进行比较,从而产生想要的六路PWM 波,svpwm 的核心算法是使用C 语言编写的,下面详细介绍该模块的设置,s-fanction builder 的界面如下图: 图5 在s-function name 中输入svpwm,如果你把我下面说的设置完后,再按一下s-function name 旁边的build,接着就会在matlab 的显示路径文件夹中(如“我的文档/matlab”)产生几个格式各异的以svpwm 开头的文件,如svpwm.c,svpwm.tlc...