SVPWM空间矢量调制模块的matlab仿真2:仿真模型搭建

这篇具有很好参考价值的文章主要介绍了SVPWM空间矢量调制模块的matlab仿真2:仿真模型搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

接上一篇:SVPWM空间矢量调制模块的matlab仿真1:理论部分_Fantasy237的博客-CSDN博客

SVPWM空间矢量调制模块的matlab仿真2:仿真模型搭建

仿真模型

仿真模型框图如下。其中,有两个模块是用matlab function搭的,sample frequency 等于开关频率。用代码实现更方便一些。根据代码再用模块搭建也相对简单。
按照之前说的,分成了4个模块:

  1. clarke变换,或者叫3/2变换,和求角度
  2. 扇区计算
  3. 矢量作用时间计算
  4. 驱动生成

SVPWM空间矢量调制模块的matlab仿真2:仿真模型搭建

Clarke变换和计算角度

这里用模块搭了Clarke变换的公式:

[ v α v β ] = 2 3 [ 1 − 1 2 − 1 2 0 3 2 − 3 2 ] [ v a v b v c ] \left[ \begin{matrix} v_\alpha \\ v_\beta \end{matrix} \right] = \frac{2}{3} \left[ \begin{matrix} 1 & -\frac{1}{2} & -\frac{1}{2}\\ 0 & \frac{\sqrt{3}}{2} & -\frac{\sqrt{3}}{2} \end{matrix} \right] \left[ \begin{matrix} v_a \\ v_b \\ v_c \end{matrix} \right] [vαvβ]=32[102123 2123 ] vavbvc

SVPWM空间矢量调制模块的matlab仿真2:仿真模型搭建

对转换结果进行atan2计算,获得角度:
θ = a t a n 2 ( v β v α ) \theta = atan2 \left( \frac{v_\beta}{v_\alpha} \right) θ=atan2(vαvβ)
然后进行了弧度-角度转换。

确定扇区

atan2得到的角度(-180°,180°]。把[0-60°)定义为扇区1,…
具体代码如下:
然后对模块的输出做了1~6的限幅。

function sector = fcn(angle)
    if(angle>=0 && angle <60)
        sector = 1;
    elseif angle>=60 && angle <120
        sector = 2;
    elseif angle>=120 && angle <180
        sector = 3;
    elseif angle>=-180 && angle <-120
        sector = 4;
    elseif angle>=-120 && angle <-60
        sector = 5;
    elseif angle>=-60 && angle <0
        sector = 6;
    else
        sector = 0;
end

确定矢量作用时间

SVPWM空间矢量调制模块的matlab仿真2:仿真模型搭建
就是三角形边长的关系,基于Vref,计算t1和t2。其中, T s = t 1 + t 2 + t 0 T_s=t_1+t_2+t_0 Ts=t1+t2+t0Ts为开关周期,在模型中归一化处理,因此Ts=1t1是矢量1作用时间,t2是矢量2作用时间,t0是零矢量作用时间。

v ⃗ r e f = V ⃗ 1 t 1 + V ⃗ 2 t 2 \vec{v}_{ref}=\vec{V}_{1}t_1+\vec{V}_{2}t_2 v ref=V 1t1+V 2t2
3 2 v r e f s i n ( 12 0 ∘ ) = V 1 t 1 s i n [ 6 0 ∘ − ( θ − ( n − 1 ) ⋅ s e c t o r ⋅ 6 0 ∘ ) ] = V 2 t 2 s i n ( θ − ( n − 1 ) ⋅ s e c t o r ⋅ 6 0 ∘ ) \frac{\frac{3}{2}v_{ref}}{sin(120^\circ)} = \frac{V_{1}t_1}{sin[60^\circ-(\theta-(n-1)\cdot sector\cdot 60 ^\circ)]} =\frac{V_{2}t_2}{sin(\theta-(n-1)\cdot sector\cdot 60 ^\circ)} sin(120)23vref=sin[60(θ(n1)sector60)]V1t1=sin(θ(n1)sector60)V2t2

对于其他扇区,可以看成旋转n-1个扇区回到扇区1,再进行计算。
(如果矢量V1作用整个周期Ts,得到的电压为 V ⃗ 1 \vec{V}_{1} V 1,等比例换算,作用时间t1,得到的电压为 V ⃗ 1 t 1 \vec{V}_{1}t_1 V 1t1,注意上图中描述的归一化处理)
根据公式搭建计算t1和t2的模块如下,其中,amp输入为 a m p = V r e f V d c amp=\frac{Vref}{Vdc} amp=VdcVref
SVPWM空间矢量调制模块的matlab仿真2:仿真模型搭建

调制波形生成

七段式的开关波形和作用时间分配如下:
SVPWM空间矢量调制模块的matlab仿真2:仿真模型搭建

我们知道了两个矢量作用的时间(零矢量作用时间:t0=1-t1-t2)便可以使用下图中的调制方式来实现这个七段式的波形,因此只要计算三个值,tmin/tmid/tmax
SVPWM空间矢量调制模块的matlab仿真2:仿真模型搭建
其他扇区只是把tmin/tmid/tmax做了互相交换,六个扇区的开关波形如下:
SVPWM空间矢量调制模块的matlab仿真2:仿真模型搭建

根据这个交换规则,代码如下:

function [cmp1, cmp2, cmp3]= fcn(sector, t1, t2)
    %对于扇区1、3、5,首先起作用的是矢量1,t1对应矢量1
    %而对于扇区2、4、6,首先起作用的是矢量2
    %因此,t1对应矢量2,t2对应矢量1,所以需要交换一下。
    if sector == 2 || sector == 4 || sector == 6
        temp = t1;
        t1 = t2;
        t2 = temp;
    end
    t0 = 1 - t1 - t2;
    % 调制时,占空比和t的大小成反比,因此需要使用1-t
    tmax = 1 - (t0/2 + t1 + t2);
    tmid = 1- (t0/2 + t2);
    tmin = 1- (t0/2);
    
    if sector == 1
        cmp1 = tmax;
        cmp2 = tmid;
        cmp3 = tmin;
    elseif sector == 2
        cmp1 = tmid;
        cmp2 = tmax;
        cmp3 = tmin;
    elseif sector == 3
        cmp1 = tmin;
        cmp2 = tmax;
        cmp3 = tmid;
    elseif sector == 4
        cmp1 = tmin;
        cmp2 = tmid;
        cmp3 = tmax;
    elseif sector == 5
        cmp1 = tmid;
        cmp2 = tmin;
        cmp3 = tmax;
    elseif sector == 6
        cmp1 = tmax;
        cmp2 = tmin;
        cmp3 = tmid;
    else
        cmp1 = 0;
        cmp2 = 0;
        cmp3 = 0;
    end
end

注意奇数扇区和偶数扇区的矢量作用顺序不同(因此代码中对偶数扇区的t1和t2进行了交换),如下:
SVPWM空间矢量调制模块的matlab仿真2:仿真模型搭建

这个matlab function模块输出的cmp1~3,与三角载波比较后,就获得了三个半桥的上管的驱动信号。

我们说的马鞍形调制波信号,就是指cmp1~3

SVPWM空间矢量调制模块的matlab仿真2:仿真模型搭建

简单验证

用一个三相半桥逆变器进行验证,开环运行。
SVPWM空间矢量调制模块的matlab仿真2:仿真模型搭建
设定的相电压幅值在最左侧,30V,电源电压100V,相除后,作为归一化的幅值,输入给SVPWM模块。SVPWM模块的输出直接驱动三个上管,取反后,驱动三个下管(应该要加上死区,但是仿真中不加入死区似乎也没问题)。
可以看到输出电压的相位和参考电压相同,相电压幅值为30V。
SVPWM空间矢量调制模块的matlab仿真2:仿真模型搭建文章来源地址https://www.toymoban.com/news/detail-454633.html

一些补充信息

  1. library browser搜索space vector modulator就可以找到官方的模块Simscape / Electrical / Specialized Power Systems / Electric Drives / Fundamental Drive Blocks右键-Mask-Look Under Mask可以看下这个模块的实现方式。[模块文档](Implement space vector modulator for PWM VSI AC motor drive - Simulink (mathworks.com))
    SVPWM空间矢量调制模块的matlab仿真2:仿真模型搭建
  2. 逆变器仿真模型放在 matlabsimulink开环控制的SVPWM调制的三相半桥逆变器-嵌入式文档类资源-CSDN文库

到了这里,关于SVPWM空间矢量调制模块的matlab仿真2:仿真模型搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包