第4章 模型在环仿真:在Simulink中搭建开环SPWM逆变器模型
说实话,模型在环仿真(MIL)这一步,很多人觉得可有可无。
我刚开始做逆变器开发时也这么想——反正最后都要上硬件,仿真能看出啥?
直到有一次,我在仿真里发现了一个死区补偿的逻辑错误。要是直接烧到DSP里,估计得炸几个管子才能发现问题。嗯,从那以后,我再也不敢跳过MIL了。
4.1 为什么需要MIL?
模型在环仿真,说白了就是在纯软件环境里验证你的控制算法。
你想想看,硬件电路一搭就是几百上千块,烧了心疼。但在Simulink里,随便你怎么折腾,零成本。
我个人习惯是:先跑MIL,再跑PIL,最后才上硬件。三步走,稳得很。
MIL的核心价值:
- 验证算法逻辑是否正确
- 检查参数设置是否合理
- 发现时序和采样问题
- 提前暴露边界条件bug
4.2 开环SPWM逆变器模型搭建
咱们这次做的是开环SPWM,也就是不引入反馈。虽然简单,但它是理解逆变器工作原理的基础。
4.2.1 整体架构
一个完整的开环SPWM逆变器模型,包含这几个部分:
- 直流电源:模拟电池或整流后的直流母线
- SPWM生成模块:产生驱动信号
- 逆变桥:IGBT或MOSFET开关模型
- LC滤波器:滤除高频分量
- 负载:纯阻性或阻感性负载
我在项目中遇到过一种情况:有人把滤波器的截止频率设得太低,结果输出波形畸变得厉害。仿真一看就明白了,根本不用上示波器。
4.2.2 SPWM生成原理
SPWM的核心思想很简单:用正弦波和三角波比较,产生PWM脉冲。
正弦波是调制波,频率决定输出基波频率(比如50Hz)。三角波是载波,频率决定开关频率(比如10kHz)。
当正弦波大于三角波时,输出高电平;反之输出低电平。就这么简单。
我的小技巧:
载波频率一般选10kHz~20kHz。太低会有噪声,太高开关损耗大。我习惯用12kHz,兼顾噪声和效率。
4.2.3 Simulink模型搭建步骤
咱们一步步来。打开Simulink,新建一个空白模型。
第一步:添加电源和负载
- 从Simscape/Electrical/Specialized Power Systems里拖出DC Voltage Source
- 设置电压为400V(模拟三相整流后的直流母线)
- 拖出Series RLC Load,设置电阻10Ω,电感1mH
第二步:搭建逆变桥
- 使用Universal Bridge模块
- 选择IGBT/Diode,桥臂数选2(单相全桥)
- 或者选3(三相半桥),看你的需求
第三步:生成SPWM信号
- 用Sine Wave生成50Hz正弦波
- 用Repeating Sequence生成三角载波(幅值±1,频率10kHz)
- 用Relational Operator做比较(大于输出1,否则0)
第四步:连接驱动信号
- SPWM输出接到IGBT的g极
- 注意:全桥需要互补信号,用Logical Operator取反
注意:
千万不要忘记加死区时间!我曾经在仿真里没加死区,结果上下管直通,电流直接飙到几千安。虽然仿真不会烧硬件,但这个习惯很危险。
在Simulink里可以用On-Off Delay模块模拟死区,一般设2~3μs。
4.3 仿真参数设置
仿真参数设置不对,结果就是错的。我见过有人用变步长仿真跑电力电子,结果波形全是毛刺。
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 求解器 | ode23tb或ode15s | 电力电子系统刚性较强,用刚性求解器 |
| 步长 | 固定步长,1e-6秒 | 开关频率10kHz,步长至少1μs |
| 仿真时间 | 0.1~0.2秒 | 足够看到稳态波形 |
我个人习惯用固定步长。变步长虽然快,但开关时刻容易漏掉,波形不准。
4.4 仿真结果分析
跑完仿真,咱们看看结果。
看什么?
- 输出电压波形:应该是正弦波,幅值接近直流母线电压
- 输出电流波形:正弦波,相位滞后电压(感性负载)
- IGBT驱动信号:应该是SPWM脉冲,占空比按正弦规律变化
- 谐波分析:用FFT看THD,一般开环下THD在5%~10%
常见问题排查:
- 输出波形是方波?——检查SPWM比较逻辑,可能是三角波频率太低
- 输出波形不对称?——检查死区时间是否过大
- 电流波形有尖峰?——检查滤波电感是否太小
- 仿真跑不动?——减小仿真时间或增大步长
4.5 从MIL到代码生成
MIL验证通过后,下一步就是生成代码。
但这里有个坑:仿真里的理想模型和实际硬件有差距。
比如仿真里IGBT是理想开关,没有导通压降和开关损耗。实际中这些都会影响波形质量。
我建议在MIL阶段就加入一些非理想因素:
- IGBT导通电阻(Ron)设为0.01Ω
- 二极管正向压降设为1V
- 加入采样延迟(用Transport Delay模块)
这样仿真结果更接近实际,代码生成后调试起来也少踩坑。
避坑指南:
我曾经在MIL阶段用理想模型跑得飞起,结果代码烧到DSP里,输出波形全是毛刺。查了两天才发现是ADC采样时序没对齐。
从那以后,我都在MIL里加入采样延迟和量化误差。虽然仿真慢一点,但省了硬件调试的时间。
4.6 本章小结
MIL仿真不是走过场,它是整个开发流程的基石。
你想想看,在仿真里花一天时间排查问题,比在硬件上花一周时间强多了。
我个人习惯是:MIL阶段至少跑三种工况——空载、满载、过载。每种工况看波形、看THD、看开关损耗。
都通过了,才敢往下一步走。
下一章咱们聊PIL(处理器在环),看看怎么把仿真模型跑在真实的DSP芯片上。到时候你会发现,MIL阶段踩过的坑,都是宝贵的经验。