Simulink仿真---SPWM算法

一、概念

         所谓SPWM,就是让PWM的占空比按正弦规律变化,这样输出波形经过适当的滤波可以做到正弦波输出。

        SPWM(Sinusoidal PWM)法是一种比较成熟的,目前使用较广泛的PWM法。前面提到的采样控制理论中的一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。SPWM法就是以该结论为理论基础,用脉冲宽度按正弦规律变化而和正弦波等效的PWM波形即SPWM波形控制逆变电路中开关器件的通断,使其输出的脉冲电压的面积与所希望输出的正弦波在相应区间内的面积相等,通过改变调制波的频率和幅值则可调节逆变电路输出电压的频率和幅值。

        将一个正弦信号作为基准调制波 ,与一个高频等腰三角载波进行比较 ,得到一个等距、等幅但宽度不同的脉冲序列。脉冲系列的占空比按正弦规律来安排。当正弦值为最大值时,脉冲的宽度也最大 ,而脉冲间的间隔则最小;反之 ,当正弦值较小时,脉冲的宽度也小,而脉冲间的间隔则较大 ,这就是 SPWM 脉冲。用 6个 SPWM 脉冲序列分别控制6个IGBT导通或者截至 ,便能在三相定子绕组上得到交流信号,从而驱动PMSM 运转。

        三角载波具有频率fc,幅值Vsm。正弦调制波具有频率f,幅值Vm。

        于是载波比:,调制深度:。调制深度限制了PWM的最大占空比,相当于限制了最大输出电压。

二、建模

1、添加控制信号输出的子系统

1)、输入3个角速度为100π(频率为50Hz),幅值为1,相位互差120度的正弦波信号源,配置为:

2)、输入幅值为1,频率为5KHz的三角载波:

3)、mm模块是调节调制深度的。

2、添加把计算相电压的子系统

1)、母线电压为700V,控制电路和电机等效图如下:

拿A相举例,当Sa=1,Sb=0,Sc=0,则

根据分压原理,A相的相电压Va=Ua-Un=700-700/3=700*2/3 V。

3、总模型:

1)、调制深度设置为0.7

2)、三角载波和调制波

3)、相电压波形

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

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

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

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

 

模型文件下载:https://download.csdn.net/download/qlexcel/11541925

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

### SPWM仿真与实现 正弦脉宽调制(SPWM, Sinusoidal Pulse Width Modulation)是一种广泛应用于电力电子领域中的技术,主要用于逆变器控制和其他功率转换设备中。以下是有关SPWM仿真的资料以及其实现方法的相关说明。 #### SPWM基本原理 SPWM的核心思想是通过比较载波信号(通常是三角波)和参考信号(通常为正弦波),生成一系列宽度按正弦规律变化的矩形脉冲序列[^1]。这些脉冲可以用于驱动开关器件,在实际应用中常被用来调节输出电压的有效值和频率。 #### MATLAB/Simulink 中的 SPWM 实现 MATLAB 和 Simulink 是实现 SPWM 的常用工具之一。Simulink 提供了一个图形化界面来构建复杂的控制系统模型,这使得设计和验证 SPWM 变得更加直观简单。 ##### 构建 SPWM 模型的关键组件 - **正弦波发生器**: 这是一个标准模块,能够生成所需的正弦参考信号。 - **三角波发生器**: 使用 Sawtooth 或 Repeating Sequence 模块创建周期性的三角波作为载波。 - **比较器**: 将上述两个信号输入到逻辑运算符 (Relational Operator),从而得到 PWM 波形。 下面展示的是如何利用 MATLAB 函数编写一段简单的代码片段来进行基础的 SPWM 计算: ```matlab % 参数定义 fs = 10e3; % 采样频率 ftri = fs/2; % 载波频率(半个周期等于采样时间的一半) fc = ftri / fs; fm = 50; % 正弦波频率(Hz) t = 0:1/fs:(1/fm)*8; % 生成信号 sin_wave = sin(2*pi*fm*t); % 正弦波 tri_wave = sawtooth(2*pi*ftri*t,0.5); % 三角波 % 比较并生成PWM pwm_signal = sin_wave >= tri_wave; figure(); subplot(3,1,1); plot(t,sin_wave,'r'); title('Sine Wave'); subplot(3,1,2); plot(t,tri_wave,'b'); title('Triangle Carrier Signal'); subplot(3,1,3); stairs(t,pwm_signal,'g'); title('Generated PWM Signal'); ``` 此脚本展示了如何生成一个基于给定参数集的基础 SPWM 输出图象[^2]。 #### 在电路层面的应用 当涉及到硬件实施时,除了软件模拟外还需要考虑具体的电气元件配置。例如 MOSFETs 或 IGBTs 都可能成为最终物理系统的一部分,并由前述产生的 PWM 信号加以调控。因此了解目标平台的具体需求对于成功部署至关重要。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qlexcel

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

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

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

打赏作者

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

抵扣说明:

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

余额充值