Simulink仿真---SVPWM算法

本文深入解析SVPWM算法原理,包括扇区判断、矢量作用时间计算及模型搭建过程。通过MATLAB/Simulink实现算法仿真,验证其在永磁同步电机控制中的应用效果。

一、理论

SVPWM算法的具体讲解在这里:https://blog.youkuaiyun.com/qlexcel/article/details/74787619

1、判断扇区

根据下面3个式子:


    再定义,若U1 > 0 ,则 A=1,否则 A=0; 

                  若U2 > 0 ,则B=1,否则 B=0;

                  若U3 > 0 ,则 C=1,否则 C=0。

    可以看出 A,B,C 之间共有八种组合,但由判断扇区的公式可知 A,B,C 不会同时为 1 或同时为 0,所以实际的组合是六种,A,B,C 组合取不同的值对应着不同的扇区,并且是一一对应的,因此完全可以由 A,B,C 的组合判断所在的扇区。为区别六种状态,令 N=4*C+2*B+A,则可以通过下表计算参考电压矢量Uref所在的扇区。

2、计算各矢量作用时间

        同理可求得Uref在其它扇区中各矢量的作用时间,结果如表2-4所示。表中两个非零矢量作用时间的比例系数为K =√3Ts/Udc 。

各扇区作用时间:

3、确定扇区矢量切换点(如扇区1中,矢量0到矢量4的切换点,矢量4到矢量6的切换点)

二、建模

1、添加扇区判断的子系统(根据输入的Ualpha和Ubeta判断电压矢量所在扇区):

switch模块设置为:(条件为u2>=0,如果满足u1通过,如果不满足,u3通过)

2、计算X、Y、Z,用于计算扇区矢量作用时间(输入Ualpha、Ubeta、母线电压Udc、载波周期时间Ts,计算X、Y、Z)。

3、根据N值和X、Y、Z来计算扇区中矢量的作用时间(输入XYZ、N值、载波周期Ts,计算扇区中矢量作用时间)

Mutiport Switch模块根据最上面输入的N值选择下面的那个端口通过。配置如下:

如:N=1,则Mutiport Switch模块输出为T1=Z、T2=Y,再根据Ts-Z-Y是否大于零来判断是否过调制。如果过调制,还要用上面给的比例公式,把Z和Y矫正一下再输出。

4、扇区矢量切换点的确定

实现上是计算3个PWM通道输出电平的改变点。我们知道SVPWM中定时器是配置为中央对齐模式:

要在每个载波周期中改变输出通道的比较值,而计算出的Tcm1、Tcm2、Tcm3分别就是3个通道的比较值。

5、计算出了每个载波周期3个通道的比较值,再引入定时器的中央对齐模式,就可以输出逆变桥的控制信号了。(此处用三角波模拟定时器中央对齐模式)

输入一个三角波模拟定时器中央对齐模式,用三角波当前值和通道比较值做对比,如果三角波的值大于通道比较值就输出高电平,如果小于就输出低电平。

6、使用3个通道的PWM控制逆变桥,计算相电压

以其中一种开关组合为例分析,假设Sx(x=a、b、c)=(100),此时等效电路如图:

因此相电压可以表示为:(相电压是每相相对于电机中间连接点的电压)

从电阻分压的原理,可以知道相电压共有4种输出:1/3Udc、-1/3Udc、2/3Udc、-2/3Udc。因此上面的模型中,根据3个通道的电平状态来判断相电压输出这4中电压中的哪一个。如Sa、Sb、Sc都输入1,则经过逻辑运算后,到了Product模块,从上到下依次为:0,0,0,0,因此输出0.

7、最后总模型为:

1)、正弦波信号源配置:

输入角速度为100π,幅值为200,相位互差90度的正弦波。角速度为100π,则周期为0.02,频率为50Hz,这个是电压矢量的旋转速度,即3000RPM。如果是一对极电机,转速就为3000RPM。

2)、Tpwm模块输入载波周期,此处载波为5KHz,所以值为0.0002秒。

3)、三角波信号源配置:(即载波为5KHz)

8、仿真结果

N值变化的波形:

定时器通道比较值的波形,3个通道,波形呈马鞍形

定时器通道比较值的波形、三角载波、PWM控制波形:

放大:

扇区N和3个通道PWM控制波形:

相电压波形:

放大:

最后从下面位置加入powergui模块做FFT分析

仿真完后,双击powergui模块,打开FFT Analysis:

配置如下,分析Ua的基波幅值:

可以看到50Hz的基波幅值为199.9V,与实际值200V相符。此仿真结果验证了模型的正确性。

 

模型文件下载:https://download.youkuaiyun.com/download/qlexcel/11516270

注:模型来自《现代永磁同步电机控制原理及MATLAB仿真》__袁雷编著

09-02
SVPWM即空间矢量脉宽调制,是一种在电力电子领域广泛应用的调制技术。 ### 原理 SVPWM的基本原理涉及空间矢量的概念、开关状态的选择等内容。在SVPWM中,通过对空间矢量的合成来逼近期望的电压矢量,以实现对逆变器输出电压的控制。具体而言,需要深入理解SVPWM的基本概念和工作原理,判断电压矢量所在的扇区,这是SVPWM实现的基础步骤。同时,要计算相邻基本矢量电压在不同扇区中的作用时间,确保电压矢量的合成精度。例如,在相关资源文件中,详细阐述了DQ坐标系下的具体实现方法,帮助理解空间矢量的概念和开关状态的选择等内容 [^1][^2]。 ### 应用 SVPWM技术主要应用于三相逆变器中,通过该技术可以实现对输出电压的精确控制。在电力电子系统里,其能确保输出波形的平滑和高效,从而提高系统的性能和稳定性 [^2]。 ### 实现方法 SVPWM的实现方法包括多个关键步骤。首先是扇区判断,通过电压矢量的位置确定其所在的扇区;接着计算相邻基本矢量电压的作用时间;然后根据计算出的作用时间,计算三相逆变器的占空比;最后是7段式SVPWM的实现,包括开关序列的生成和优化。相关资源文件详细描述了这些步骤,例如在“ SVPWM原理及实现方法详解”中,对每个步骤都有深入的讲解 [^2]。 ```python # 以下为简单示意代码,非完整SVPWM实现 # 假设已知扇区和作用时间,计算占空比 def calculate_duty_cycle(t1, t2, t0, sector): # 这里只是简单示意,实际计算要复杂得多 if sector == 1: duty_a = (t0/2 + t1 + t2/2) / (t0 + t1 + t2) duty_b = (t0/2 + t2/2) / (t0 + t1 + t2) duty_c = (t0/2) / (t0 + t1 + t2) # 其他扇区的计算可以类似添加 return duty_a, duty_b, duty_c # 示例调用 t1 = 10 t2 = 20 t0 = 5 sector = 1 duty_a, duty_b, duty_c = calculate_duty_cycle(t1, t2, t0, sector) print(f"Phase A duty cycle: {duty_a}") print(f"Phase B duty cycle: {duty_b}") print(f"Phase C duty cycle: {duty_c}") ```
评论 20
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qlexcel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值