svpwm的matlab模型,SVPWM的matlab仿真实现

article/2025/10/18 20:53:44

在仿真之前您必须安装MATLAB7.0或以上版本,必须确保simpowersysm工具箱已被安装,如果以上要求已经达到,那么就可以执行以下步骤了:

步骤1:打开matlab主界面,然后在command

window界面中的“>>”旁边输入simulink,打开simulink开发环境后新建一个mdl文件,在simulink下拉菜单中的ports&subsystems中找到subsystem模块,用其建立一个如图1的总的模块,这个模块有两个输入口,一个输出口(实际上包含六路PWM信号),接来的东西都将在这个模块中添加,输入输出模块的名称可以在双击模块后自己更改,其中Vahar,Vbetar是需要输出的电压在两相静止坐标系下的两个分量,输出是控制逆变器六个IGBT的pwm脉冲信号。

a4c26d1e5885305701be709a3d33442f.png

图1

也许有人会问,输入参数不是还包括直流电压和功率开关频率吗?别急,下面接着让您看到上述模块的内部情况

步骤2:根据图2,添加subsystem的内核模块,里面用到的模块有以下几种:in,out,mux,demux,repeating

sequence,rational operator,logical operator和里面的主角S-Function

builder模块。

a4c26d1e5885305701be709a3d33442f.png

图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格式。

a4c26d1e5885305701be709a3d33442f.png

图3

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

图4

步骤3:设置s-builder模块,这个设置也很简单,但是看起来有点多,图2中的svpwm模块就是用simulink中的s-function

builder建立的,只是名字改成svpwm罢了,有图2可以看出svpwm产生的三个时间比较值与repeating

sequence产生的等腰三角波进行比较,从而产生想要的六路PWM波,svpwm的核心算法是使用C语言编写的,下面详细介绍该模块的设置,s-fanction

builder的界面如下图:

a4c26d1e5885305701be709a3d33442f.png

图5

在s-function name 中输入svpwm,如果你把我下面说的设置完后,再按一下s-function

name旁边的build,接着就会在matlab的显示路径文件夹中(如“我的文档/matlab”)产生几个格式各异的以svpwm开头的文件,如svpwm.c,svpwm.tlc等,不过这是后话,先说说设置,在initialization中的各参数均设为0,sample

mode 设为inherited,如图5所示,这些都是默认值,也是说可以不用管它就可以了,在data

properties中设:

a4c26d1e5885305701be709a3d33442f.png

图6

port name 为u (默认是u0),行数row为4(因为有四个输入参数),其他选用默认值,如图6所示,设output

ports的输出port

name为y(原来为y0),行数rows为3(因为有三个输出),其他参数默认,剩下的两个parameters和data type

attributes均采用默认值;在libraries中全部使用默认值;接下来要改的就是outputs中的内容,也是实现SVPWM的核心算法,必须注意要必须勾选inputs

are needed in the output function(direct

feedthrough),这句话的意思是:输出结果直接用到了输入数据,比如y=u+1,将下面给出的C语言程序复制到空白处,如图7所示:

a4c26d1e5885305701be709a3d33442f.png

图7

int A,B,C,N;

double X,Y,Z,Tx,Ty,T0,Tl,Tm,Th;

if (u[1]>0) A = 1;

else A=0;

if ((1.732051*u[0]-u[1])>0) B = 1;

else B=0;

if ((-1.732051*u[0]-u[1])>0) C = 1;

else C=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)

{

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)>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;

Tm=(u[2]-Tx+Ty)/4;

Th=(u[2]+Tx+Ty)/4;

switch (N)

{

case 1

:y[0]=Tm;y[1]=T0;y[2]=Th;break;

case 2

:y[0]=T0;y[1]=Th;y[2]=Tm;break;

case 3

:y[0]=T0;y[1]=Tl;y[2]=Th;break;

case 4

:y[0]=Th;y[1]=Tm;y[2]=T0;break;

case 5

:y[0]=Th;y[1]=T0;y[2]=Tl;break;

default

:y[0]=Tl;y[1]=Th;y[2]=T0;

}

接下来的两个continuous derivatives和discrete

update都不用改,使用默认值,这两个只有在有导数时才会用到,最后一个在build info中勾选show comlile

steps(在build时会显示编译过程)、create a debugged mex-file和generate wrapper

tlc(这个我也不知道干什么用的)。这下所有的细节设置都结束了,

步骤4:设置仿真参数,回到mdl主界面,选择菜单栏中的simulation/configurate

parameters,里面的仿真时间可以根据实际情况自己定,在sover

options中,type建议选fixed-step,fixed step

size应本人设为5e-6,这个参数是仿真时最小的步长,这个参数必须比开关周期Tz小,否则无法仿真,其他参数都不用管它,要想知道这些参数是什么意思,就多看看matlab

中的help,里面都有详细说明。

步骤5是安装lcc,在matlab的command window中输入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的原因是建成的模块很简洁,而且运行速度要比其他方法快的多,接下来同志们该去自己试一下了!


http://chatgpt.dhexx.cn/article/BLXvQb3D.shtml

相关文章

SVPWM细节

SVPWM细节 # 原理 通过六个扇区的六个非零矢量进行矢量合成所需电压,但在合成过程中不可避免地会经过零矢量来合成,从而降低开关频率动作次数。 一般过调制的情况下非零矢量作用时间大于载波周期,所以在此过程中只取有效矢量的作用时间之和。…

SVPWM学习

作者寄语:在公众号(浅谈电机控制)中以小文章的形式记录自己学习SVPWM的过程。有时候自学未免出现理解错误的地方,所以烦请学友们批评指正。 如果需要SVPWM模型,关注微信公众号:浅谈电机控制。留下邮箱获取…

单相SVPWM

单相SVPWM逆变技术起源于三相电机调速系统中的三相SVPWM技术,在三相SVPWM调制中由旋转的电压矢量得到旋转的磁场,对电压矢量进行控制从而实现电机调速,其实电压矢量控制的实质是一种逆变过程,故单相SVPWM逐渐被研究并应用于逆变电…

SVPWM

接上一篇文章咱们接着讲讲SVPWM,如果对于PWM和SPWM不是很了解的同学可以看我上一篇文章。电机控制是一门很深得学问,由于时间和精力有限,本文章不会讲解特别深入,在此只是抛砖引玉。 SVPWM原理 SVPWM的全称是空间矢量脉宽调制(Sp…

SVPWM算法理解(一)——基本原理

SVPWM算法理解(一)——基本原理 说明1 SVPWM基本原理1.1 引言1.2 三相电量的空间矢量表示1.3 SPWM与SVPWM比较1.4 问题1:2Udc/3还是Udc? 2 SVPWM算法推导2.1 SVPWM的合成原理2.2 问题2:电压利用率1?2.3 SVP…

SVPWM理论部分

SVPWM理论部分 简述1、基本原理2、SVPWM控制2.1 扇区判断(根据$\alpha\beta$为方便判断扇区而采取的一种方法)2.2 电压空间矢量合成及作用时间2.3 电压空间矢量作用顺序2.3.1 五段式SVPWM2.3.2 七段式SVPWM 总结 简述 SVPWM,即空间矢量调制&…

SVPWM算法原理及详解

SVPWM算法原理及详解 1.概述 SVPWM是近年发展的一种比较新颖的控制方法,是由三相功率逆变器的六个功率开关元件组成的特定开关模式产生的脉宽调制波,能够使输出电流波形尽可能接近于理想的正弦波形。空间电压矢量PWM与传统的正弦PWM不同,它是…

FOC电机控制之SVPWM原理与实现

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、SVPWM原理二、SVPWM实现方法1. 基本矢量电压:2.扇区判断:3. 计算相邻两个基本矢量电压的作用时间4 .三路PWM占空比计算 算法流程ste…

SVPWM分析、各个扇区详细计算以及Matlab仿真

SVPWM分析以及各个扇区详细计算以及Matlab仿真 说明目的两电平逆变器拓扑空间矢量扇区判断扇区内如何发波?矢量作用时间计算矢量切换时间的计算Simulink仿真/基于Matlab-R2014a版本 说明 第一次发文章,不太会用Markdown,word编辑的公式复制过…

概率统计Python计算:解古典概型问题

假定以 S S S为样本空间的随机试验是一个等概模型,事件 A ⊆ S A\subseteq S A⊆S。若能算得 ∣ S ∣ n |S|n ∣S∣n, ∣ A ∣ m |A|m ∣A∣m,我们知道 P ( A ) m / n P(A)m/n P(A)m/n。我们把这样的计算方法定义成下列的Python函数。 fr…

古典概型

【例1】一部四册的文集按任意次序放到书架上去,问各册自右向左或自左向右恰成 1,2,3,4 的顺序(用 表示)的概率是多少? 解 此随机试验的结果是四本书在书架上的一种放法,而每一…

概率论3——古典概型与二项分布

排列组合 排列组合高中应该就学过,包括两个原理(加法和乘法原理),以及排列和组合 两个原理 加法原理 比如完成某件事有3类途径,在1类中有4种方法,第2类中有2种方法,第3类中有3种方法&#xf…

概率论基础(1)古典和几何概型及事件运算

概率论对于学习 NLP 方向的人,重要性不言而喻。于是我打算从概率论基础篇开始复习,也顺便巩固巩固基础。 1.事件及运算 1.1 文森图及运算 1.2常用运算律 1.3相关练习 理解:要么A要么B要么C发生,所以是A ∪ B ∪ C&#xff…

概率论--古典概型和几何概型

-------------------------------------------几何概型------------------------------------------------------------------ 向某一可度量的区域内任掷一点.如果所掷的点落在中任意子区域内的可能性大小与A的度量(长度,面积和体积等&…

古典概型和几何概型

古典概型(等可能概型) 1.1定义(随机试验模型) ①只有有限个可能 ②每个结果发生的可能性大小相同。 由 1P(S)得 设事件A包含样本空间S中k个基本事件,那么事件A发生的概率为 1.2计算古典概型的方法——排列跟组合 …

古典概型-分房模型

古典概型问题一般从排列组合、乘法原理的角度思考; 回想概率的基本公式:p(A)A事件发生的次数/总的实验次数 (1)k个盒子已经指定了,每次拿一个球放入其中一个盒子 第一问可以理解为:指定的k个盒子中各有一球…

【概率论与数理统计】猴博士 笔记 p1-p2 古典概型、几何概型

视频 古典概型 常见的古典概型题目分为: 有放回无放回 有放回 对于有放回的题目,一般可以这样做: 举个例子,如题: 则它们的答案是: 1. C 4 4 ∗ ( 2 5 ) 4 C_{4}^{4} *&…

概率论 事件关系 古典概型与几何概型

基本知识点 随机试验:1.不确定性2.可预知性3.可重复性基本事件:包含一个样本点 必然事件:全集 不可能事件:空集 子集2^n-1-1(减去空集与真集) 事件间的关系 1.包含关系 2.和运算AUBAB,A与B至少有一个发生 3.积事件A∩BAB,AB同时发生 4.差事件A-BAB ̅A-AB,A发生但B不发生 5.…

概率论 1.3 古典概型与几何概型

1.3.1 排列与组合 排列 从n个不同元素任取r(r<n)个元素排成一列(考虑元素出现的先后次序)&#xff0c;称此为一个排列&#xff0c;此种排列的总数为n(n-1)....(n-r1)n!/(n-r)&#xff01;&#xff0c;若rn,则称为全排列&#xff0c; 2.重复排列 从n个不同元素中每次取出一个…