ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

三相电压型逆变器Simulink仿真:从SPWM原理到谐波分析

三相电压型逆变器Simulink仿真:从SPWM原理到谐波分析 这次我们来做电力电子技术微课第 37 讲的配套仿真实验三相电压型逆变电路。逆变器是把直流电变成交流电的核心环节三相电压型逆变器Three-Phase Voltage Source InverterVSI又是变频调速、UPS、光伏并网、储能变流器等工程应用的公共基础。很多同学在课堂上能听懂 SPWM 原理但一到自己搭模型就不知道开关管怎么触发、线电压波形为什么长那样这篇文章就直接解决这个问题。我们会在 MATLAB/Simulink 环境下搭建一套完整的三相 VSI 仿真模型从这个实验里把几个核心问题一次搞清楚直流母线电压如何变成三相交流输出、SPWM 调制信号怎么产生、相电压和线电压的波形差异在哪里、调制度和载波比改了对结果有什么影响、输出谐波怎么用 FFT 观察。整个过程不需要真实硬件普通教学计算机就能流畅运行可以说门槛非常低重点在于理解建模思路和波形验证方法。本次实验会完整演示从模型搭建、参数设置、波形观测到谐波分析的规范流程并且把批量对比试验的方法也一起给出来。建议正在学电力电子技术课程的同学、准备考研复试的考生以及刚接触变频器或逆变器设计的工程师收藏备用。1. 仿真模型核心能力速览这里先给出一张能力速览表方便你快速判断这个实验要解决什么问题以及完成它需要什么条件。能力项说明实验内容三相电压型逆变电路建模、SPWM 调制、波形与谐波分析仿真平台MATLAB/Simulink Simscape Electrical原 SimPowerSystems核心模块DC Voltage Source、Universal Bridge、PWM Generator、Three-Phase RLC Load、Powergui主要验证目标相电压、线电压、相电流波形调制度与载波比影响FFT 谐波特性运行方式Simulink 直接点击 Run或用 MATLAB 脚本批量跑不同工况是否支持批量实验支持可通过参数扫描或脚本循环一次跑多组工况输出形式Scope 波形、工作区数据、FFT 分析报告建议电脑配置64 位系统8GB 以上内存安装 Simulink 与 Simscape Electrical 即可实用难度中等适合课程实验、毕业设计、入门研究表格里没有写死版本号是因为不同 MATLAB 版本中模块库的名称和位置会有差异。如果你使用的是 R2020a 之前的版本对应工具箱名称为 Simscape Power Systems新版本则统一归入 Simscape Electrical。搭建时如果找不到模块直接用库搜索框输入英文名定位最省事。2. 三相电压型逆变电路原理与仿真目标2.1 三相 VSI 基本结构三相电压型逆变器的主电路可以简单概括为一个直流电压源三个桥臂每相桥臂由上、下两个开关管串联组成。常见的开关管模型是 IGBT 反并联二极管其中二极管负责续流这样负载电流在开关管关断时仍然有流通路径。三个桥臂的输出端分别接三相负载或三相交流电网负载中心点如果引出就形成了三相四线制如果只有三条输出线则是三相三线制。仿真实训中通常使用阻感负载和星形连接便于同时观察电压和电流波形。从电压型逆变器这个名词也能看出它最重要的外部特征直流侧是电压源母线电压基本恒定。逆变器只能控制输出交流电压的幅值和频率不能控制直流侧电流的流向。某些场景下能量需要从交流侧回馈直流侧那就必须依靠桥臂并联的续流二极管所以仿真模型里“IGBT/Diode”的器件模型不能随便替换成纯开关。2.2 SPWM 调制的基本思路正弦脉宽调制SPWM是产生开关脉冲最常用的方法。核心思想是把一个低频正弦调制波与一个高频三角载波做比较正弦波大于三角波时上管导通、下管关断正弦波小于三角波时则相反于是得到一系列宽度按正弦规律变化的脉冲序列。输出脉冲经过负载电感或滤波电路后高频开关成分被削弱最终表现出接近正弦的交流波形。仿真时要重点区分两个参数调制度 和 载波比。调制度是正弦波幅值与三角波幅值的比值决定了输出基波电压的幅值载波比是载波频率与正弦波频率的比值决定了输出波形中谐波的主要分布位置。课堂上常说“载波频率越高谐波越容易被滤除但开关损耗也越大”这种现象在仿真实验中能够非常直观地看到。2.3 本实验要验证的内容仿真不是把模型搭出来就算完成更关键是看到现象并能解释现象。本次实验建议按以下顺序验证验证相电压、线电压之间的幅值关系理解为什么线电压不是相电压的简单三倍关系。验证调制度变化对输出基波电压的影响观察过调制现象。验证载波比变化后谐波频率位置的移动规律。使用 FFT 工具观察输出线电压的谐波分布计算 THD。对比纯阻性负载和阻感负载下电流波形的差异理解电感续流作用。观察负载不平衡或三相开关不对称时输出电流和电压的变化。这几项验证下来基本就把教材中三相 VSI 的重要知识点覆盖了。3. 仿真环境准备与前置条件3.1 软件环境要求这个实验不需要真实功率电路板也不需要示波器硬件你只需要一台安装了 MATLAB 的电脑。建议安装时勾选以下工具箱Simulink 是必须的Simscape Electrical 是电路模型搭建的基础MATLAB 本身用于运行脚本和数据处理。如果电脑里已经装过 MATLAB但不确定有没有 Simscape Electrical可以在命令行输入ver查看已安装工具箱列表里面包含“Simscape Electrical”字样即可。从学习角度讲R2020a 及以后的版本界面布局比较稳定下面章节中的模块名称也更容易搜索到。版本过老可能会遇到模块库名称不同的问题但总体建模思路不变照着搜索框找相近模块即可。3.2 硬件配置说明三相 VSI 仿真模型规模并不大属于典型的教学级电路仿真普通教学笔记本完全可以跑。内存建议 8GB 以上如果模型加入了高开关频率、长仿真时长或者连续求解器计算量会明显上升16GB 内存会更从容。电脑显卡不参与此模型的仿真计算核显即可真正吃资源的是 CPU 和内存。如果使用变步长求解器并且输出大量波形数据到工作区长时间仿真会产生很大的数据矩阵这点在遇到电脑卡顿时要首先检查而不是急着升级硬件。3.3 建模前需要明确的参数搭建模型之前先把参数定下来。这里给出一组适合教学的通用参数具体数值可根据课程要求调整% 三相 VSI 仿真参数初始化 Vdc 400; % 直流母线电压单位 V f0 50; % 基波频率单位 Hz fs 2000; % 载波频率单位 Hz ma 0.8; % 调制度 R 10; % 负载电阻单位 Ω L 10e-3; % 负载电感单位 H sim_t 0.1; % 仿真时长单位 s max_step 1e-5; % 变步长模式下最大步长单位 s这组参数的特点是直流母线电压选 400V接近常见三相整流后的母线电压载波频率 2kHz 不算高仿真速度很快波形也能看到明显的开关纹波负载电阻 10Ω、电感 10mH电流变化比较适中。实际做课程实验时以你自己的实验指导书为准但保持参数之间数量级协调是关键。3.4 解决模块版本差异问题从老版本升级到新版本 MATLAB 后旧模型打开可能提示“Block is not compatible”之类的警告。这是因为 Simscape Electrical 模块在版本迭代中更新了接口或隐藏了大量辅助参数。遇到这种情况最稳妥的办法不是强行升级模块而是新建模型重新拖放对应模块再按照实验指导设置参数。仿真实验的建模过程本身就是学习的一部分尽量自己动手搭一遍不要直接打开网上现成的.slx文件完事。4. Simulink 仿真模型搭建步骤下面给出基于 Simulink 标准库搭建三相 VSI 的方法。这套流程的优势是逻辑清楚主电路、控制和测量三部分分离适合课程报告展示。4.1 新建模型并添加直流电源打开 MATLAB在主页点击 Simulink选择空白模型模板新建一个模型保存为three_phase_inverter.slx。打开库浏览器在搜索框输入DC Voltage Source拖入画布。双击模块将幅值设置为变量Vdc这样后面修改直流电压时只需要改脚本里的变量不需要逐个双击模块修改。直流电源的一端要接 Reference也就是接地。从 Simscape Electrical 库里找到Electrical Reference模块把它连到直流电源负极。如果缺少接地仿真器会提示浮地节点问题。4.2 搭建三相逆变桥在库浏览器搜索Universal Bridge拖入画布。这是一个高度集成的三相桥模块内部可以选择不同开关器件。双击设置选择IGBT/Diodes。桥臂数设置为3。测量端口按需要选择电压和电流输出。缓冲电阻和电容参数可以先保留默认值该参数的作用主要是吸收开关瞬间的电压尖峰教学模型中通常影响不大。Universal Bridge 的三个交流输出端就是逆变器的三相输出端直流正负端分别与直流电源正负极相连。为了波形观测方便最好在主电路输出端串接Current Measurement模块并在输出端并联Voltage Measurement模块。电压测量模块要连接到某两相之间用于测量线电压。4.3 构建 SPWM 调制控制信号SPWM 信号有两条思路。第一条是用 Simscape Electrical 自带的PWM Generator (Three-phase)模块这种方式最方便只需要输入正弦波幅值、频率、载波比等参数模块内部会自动生成六路脉冲。第二条是用普通 Simulink 比较器自己搭把三个相位相差 120 度的正弦波与同一个三角波比较得到 A、B、C 三相的上下管脉冲。自我搭建结构虽然麻烦但可以直观看到调制波、载波和脉冲三者之间的关系建议初学者至少搭一次。具体方法是使用Sine Wave模块生成三相参考正弦波相位分别设为 0、-2pi/3、-4pi/3。使用Repeating Sequence模块生成三角载波。用Relational Operator比较正弦波和三角波输出逻辑信号。逻辑信号经过Logical Operator取反后得到下管脉冲再通过Goto和From标签连接到 Universal Bridge 的脉冲输入端。调制波、载波和脉冲信号属于 Simulink 域逆变桥主电路属于 Simscape 电气域中间需要通过 Universal Bridge 的内部控制端口完成信号传递。如果使用PWM Generator (Three-phase)模块这个模块的输出已经是 Simulink 脉冲信号可以直接连接 Universal Bridge 的控制端。4.4 连接负载与测量模块三相负载使用Three-Phase Series RLC Branch模块配置为星形连接方式选电阻和电感串联不使用电容。每相参数设置为变量R和L。负载中性点可以接一个Electrical Reference也可以悬空两种接法在三相对称时结果一致但接地点更有利于电压测量。测量环节建议一次性把所有关注量都引到 Scope 中三相对称正弦参考波。三角载波。三相相电压。线电压尤其是 AB 相之间的电压。三相负载电流。Scope 中可以分多个输入端口也可以在 Scope 内多点排列。课程报告中需要的波形图直接截图或者用 MATLAB 脚本重新绘图都行。4.5 求解器与仿真参数设置Simulink 模型工具栏打开模型设置求解器选择VariableStepAuto停止时间设置为sim_t。如果出现步长过小而仿真速度慢的问题把最大步长设置为max_step这里给出 1e-5 秒已经足够观察 2kHz 载波和 50Hz 基波。注意变步长模式下Scope 显示的是非等时间间隔采样数据后续需要做 FFT 时应该先进行等间隔重采样。如果只是观察波形运行完成后双击 Scope 查看结果。如果要把数据送到 MATLAB 工作区需要在模型里添加To Workspace模块分别记录输出电压、电流和仿真时间。5. 功能测试与效果验证模型搭完不是终点关键在于验证波形是否符合理论分析。下面按测试维度依次验证。5.1 基础运行测试先看脉冲和相电压先运行模型打开 Scope 查看调制波、三角波和 A 相上管驱动脉冲。正常情况下正弦波高于三角波的时间段内脉冲为高电平脉冲宽度呈现中间宽、两端窄的规律。如果脉冲宽度变化不明显说明载波频率设置过高或者波形显示时间窗口过短需要把 Scope 显示范围缩小到几个基波周期内观察。接下来看相电压波形。A 相桥臂中点与直流母线负端之间的电压是单极性 SPWM 脉冲序列幅值在 0 和 Vdc 之间跳变平均值近似为 0.5 倍直流母线电压同时叠加了 50Hz 正弦分量。这里要提醒一点教材中常说的“相电压正弦”通常指经过滤波后的基波分量实际开关波形本身就是一系列脉冲。5.2 线电压与相电压波形关系验证把 Scope 切到线电压波形也就是 AB 两相桥臂输出之间的电压。线电压由两个桥臂的相电压做差得到由于上下桥臂交替导通线电压的瞬时值只会是 Vdc、0、-Vdc 三种电平形成典型的“六拍阶梯波”。相电压是单极性脉冲线电压是双极性脉冲这一差异在示波器图上一眼就能分辨。把相电流波形叠加进来观察当负载含有电感时电流不能突变所以即使电压是脉冲序列电流仍然呈现平滑的正弦趋势只是带有与开关频率相关的纹波。电感越小纹波越明显电感越大波形越接近理想正弦。5.3 调制度对输出电压的影响测试调制度 是 SPWM 里最重要的控制量。把ma分别改为 0.4、0.6、0.8、1.0运行模型并记录线电压基波幅值。在线性调制区基波幅值随 近似线性增加当大于 1.0 进入过调制区后基波幅值增长变缓同时低次谐波增加波形畸变加重。这个测试用脚本批量跑效率更高。下面给出一段批量仿真脚本模板假设模型保存名为three_phase_inverter.slx% 批量扫描调制度 ma_list [0.4, 0.6, 0.8, 1.0, 1.2]; results struct(); for i 1:length(ma_list) ma ma_list(i); out sim(three_phase_inverter.slx); results(i).ma ma; results(i).time out.tout; results(i).vab out.Vab; results(i).ia out.Ia; end % 统一绘图对比线电压基波幅值 for i 1:length(results) subplot(length(results), 1, i); plot(results(i).time, results(i).vab) title([ma , num2str(results(i).ma)]) end脚本中的Vab和Ia是模型里To Workspace模块定义的变量名实际运行前需要与自己的模型变量名保持一致。仿真过程中每一次调用sim都会重新初始化模型因此变量修改是有效的。5.4 载波比对谐波分布的影响测试载波比 决定了载波频率与基波频率的比例关系。把载波频率从 2kHz 改为 1kHz 再运行观察线电压频谱会发现主要谐波分量出现在载波频率附近及其整数倍附近也就是 n 倍载波频率加减 k 倍基波频率的边频带。这个现象是 SPWM 谐波分析的考点。仿真中可以用 Powergui 自带的 FFT 工具快速观察步骤如下双击模型中的Powergui模块进入FFT Analysis。选择要分析的信号比如线电压Vab。设置基波频率为 50Hz最大频率设置为 5kHz 或 10kHz。点击 Display会得到幅频特性和 THD 数值。如果模型中没有放 Powergui 模块Simscape Electrical 电路仿真会直接报错。因此搭建模型时一定不要漏掉 Powergui它相当于电气系统的求解器配置中心。5.5 阻性负载与阻感负载对比测试把负载电感改为 1e-6H 近似替代纯阻性负载再与原来的阻感负载对比电流波形。纯阻性负载下电流形状和相电压脉冲形状几乎一致含有明显的高频开关纹波阻感负载下电流变得平滑纹波明显减少。这个对比实验能帮助理解电感在逆变电路中的滤波作用。实际电机负载本身就是大电感所以电机电流更容易趋于正弦。如果电流中出现明显不平衡要检查三相正弦参考波的相位是否严格相差 120 度或者载波相位是否存在固定偏移。6. 批量仿真与多工况对比实验课程实验中经常需要改多个参数对比结果如果每次手动修改参数再运行效率太低。建议把仿真流程脚本化用 MATLAB 脚本统一驱动 Simulink 模型一次跑完多组工况并把结果统一保存。6.1 参数扫描脚本设计批量实验的关键是“参数变量化”。模型中的直流电压、调制度、载波频率、负载参数全部用 MATLAB 工作区变量定义然后通过脚本循环修改。下面是一个载波频率扫描示例% 扫描载波频率对 THD 的影响 fs_list [1000, 2000, 4000]; thd_results zeros(1, length(fs_list)); for i 1:length(fs_list) fs fs_list(i); out sim(three_phase_inverter.slx); % 这里假设已经用 Powergui 或脚本得到线电压 THD暂用占位变量 thd_results(i) calculate_thd(out.Vab, out.tout); end disp(不同载波频率下的 THD); disp(thd_results);需要注意的是calculate_thd函数在本文中是自定义占位名称。实际计算 THD 可以通过power_fftscope配合工作区数据或者使用thd函数对等间隔采样的信号进行分析。批量任务跑完以后建议把每次仿真的参数、波形、THD 结果都保存成.mat文件避免重新仿真浪费时间。6.2 结果自动保存与绘图批量仿真会生成大量数据建议统一目录管理。脚本里可以用mkdir创建results文件夹按工况名保存savefig([results/ma_, num2str(ma), .fig]); save([results/ma_, num2str(ma), .mat], t, vab, ia);这样后面写实验报告时直接从 results 目录提取图片和数据不再需要重新打开模型手动截图。6.3 多工况对比的判断思路多工况对比的重点是找到规律而不是单纯堆积波形。比如调制度扫描应该绘制“调制度-基波电压幅值”曲线观察线性区和过调制区的分界载波比扫描应该绘制“载波频率-THD”曲线观察谐波抑制效果与开关频率的关系。仿真实验的价值在于通过多组数据验证理论曲线明显比单张波形图有说服力。7. 资源占用与性能观察7.1 仿真时间与步长的权衡三相 VSI 仿真的计算量主要来自高频开关信号的生成和 Simscape 电路求解。载波频率 2kHz、仿真时长 0.1s 时模型计算速度快基本几秒内就能完成。如果把载波频率提高到 20kHz仿真时间会明显增加这是因为固定步长或变步长求解器需要更多的时间步来分辨开关边沿。遇到模型跑得慢时不要盲目加大步长否则会丢失开关波形细节。更合理的做法是分阶段仿真先用小步长跑出稳态波形再用大步长跑长时间平均效果两者结论互补。7.2 降低内存占用的方法长时间仿真时To Workspace 模块会保存全部时间点的数据数据矩阵可能非常大。降低内存占用的方法有三种减小数据保存频率使用Downsample模块抽取部分数据。把仿真时间控制在几个基波周期内例如 0.06s 只包含 3 个 50Hz 周期已经足够观察波形。只保存最终需要的变量不要一股脑把所有测量信号都丢到工作区。电脑运行 MATLAB 时如果发现内存占用过高优先清理工作区中不再使用的变量使用clear命令释放空间后再跑下一组仿真。7.3 观察仿真收敛性Simscape 电路仿真偶尔会出现不收敛的情况表现为求解器步长不断缩小、仿真速度越来越慢或者提示“Convergence error”。排查思路是先检查电路是否存在浮地节点或断路节点再检查开关管的缓冲电阻参数是否过小。把 Universal Bridge 缓冲电阻从默认值适当调大通常可以缓解收敛问题。8. 常见问题与排查方法下面整理三相 VSI 仿真中容易出现的几类问题按现象、原因和解决方案列出遇到问题可以直接对照排查。问题现象可能原因排查方式解决方案提示缺少 Powergui电路模型中没有添加仿真求解器模块检查 Simscape 电路是否包含 Powergui从库中添加 Powergui并放在模型顶层输出波形全为零直流电源未接地负载未形成回路脉冲信号未连接到桥臂检查电路连续性查看脉冲信号是否进入 Universal Bridge给直流电源负极添加 Ground确认脉冲连接正确线电压只有两种电平SPWM 载波和调制波频率设置异常或脉冲相位错误查看 A、B 两相脉冲波形确保三相正弦波相位依次相差 120 度载波设置为高频三角波相电流畸变严重负载电感过小调制度接近过调制区对比不同负载电感下的电流纹波增大负载电感恢复调制度到线性区仿真速度极慢最大步长太小开关频率过高变步长求解器在开关边沿反复缩小步长观察仿真进程和求解步长统计适当增大最大步长降低载波频率改用离散求解器FFT 结果杂乱信号不是等间隔采样数据窗口不是整数个基波周期检查输入到 FFT 的数据是否经过重采样用 interp1 或 resample 统一采样率截取整数倍基波周期三相电流不平衡三相参考波相位错误负载不对称桥臂参数不一致查看三相调制波和桥臂脉冲修正相位使用对称负载参数Simscape 报错模块不兼容新旧版本模块库不同查看报错模块名称新建模型重新放置对应模块并设置参数如果按照表格排查后仍然找不到问题建议把模型逐步拆分来定位。先把 PWM 发生器和逆变桥断开用固定电平信号测试桥臂能否正常输出再把负载断开用纯电阻负载代替阻感负载一步一步缩小排查范围。9. 实验报告写作与工程实践建议9.1 实验报告应该包含哪些内容课程实验通常需要提交报告建议按照问题定义、建模思路、参数设置、结果分析、结论和不足的顺序来写。重点不是贴波形而是解释波形产生的原因。例如贴出线电压波形后要说明为什么只有三种电平贴出 FFT 频谱后要指出谐波集中在哪个频段对应教材中的哪条结论。报告中最好附上模型截图并在截图中标注出直流电源、逆变桥、PWM 发生器、负载和测量模块。这样老师能够快速确认你的模型结构是否正确也方便后续自己复习时快速回忆起整个仿真链路。9.2 仿真实验的工程化习惯即使是仿真实验也建议养成工程化习惯。把参数初始化脚本、模型文件、输出结果分目录存放每次修改参数前先保存一份可用版本批量仿真时在脚本中记录运行时间和参数组合。这些习惯在做更复杂的并网逆变器、双闭环控制、电机调速系统时能节省大量时间。仿真模型不能替代实物实验。真正的功率电路涉及器件损耗、散热、驱动延时、死区效应等问题这些在理想仿真模型中容易被忽略。做课程设计时如果想体现工程意识可以在模型中加入死区时间设置观察死区对输出波形的影响这是很好的提高加分项。9.3 合规与安全提示本次实验为纯软件仿真不涉及真实强电操作但仍要注意如果后续在实验室搭建真实电路必须确认直流电源、示波器和功率器件选型正确并在指导教师确认后通电不允许在没有隔离和短路保护的情况下直接触碰功率端子。10. 总结与下一步三相电压型逆变电路仿真是电力电子课程里投入产出比非常高的一次实验。通过本次实验你应该已经掌握了 Simulink 中从直流电源、Universal Bridge 到 PWM 发生器的完整建模流程理解了 SPWM 脉冲生成、线电压电平切换、谐波分布等关键知识点也学会了用脚本扫描参数和批量跑仿真的方法。建议你先用默认参数把波形全部跑通再逐步修改调制度、载波频率和负载参数观察波形的变化规律。最容易踩坑的地方是忘记放 Powergui、脉冲信号没有接到逆变桥控制端、以及 FFT 分析时数据不是等间隔采样这三个问题解决了模型基本就能稳定运行。如果还想继续深入下一步可以在这个模型基础上做三个方向一是加入 LC 滤波器和闭环控制把开环 VSI 升级成闭环逆变电源二是把负载换成异步电机或永磁同步电机观察变频调速过程三是加入死区时间和管压降模型对比理想开关和实际器件之间的差异。这三个方向都是从课程实验走向工程应用的自然延伸建议收藏这篇文章等做毕业设计或实际项目时直接按这套思路扩展。
返回列表