看到“Z源逆变器仿真模型:从基础到进阶的探索”这个题目,我第一反应是:这个东西真的值得动手搭一次。Z源逆变器在电力电子课程设计和工程预研里出镜率越来越高,它最大的价值在于用一个X型阻抗网络解决了传统逆变器“不能直通”和“直流电压利用率低”两个老问题。这篇内容适合正在做课程设计、毕业设计,或者刚开始接触电力电子仿真的工程师参考,我会把我自己从理论到Simulink建模再到调试过程中踩过的坑、算过的参数、验证过的方法都拆开讲清楚。
1. 先弄清楚Z源逆变器到底在解决什么问题
1.1 传统逆变器对“直通”谈虎色变
传统电压源型逆变器有两个根深蒂固的限制。第一个是害怕桥臂直通,也就是同一相上下两个开关管同时导通。一旦发生直通,直流母线相当于直接被短路,器件瞬间过流损坏,所以实际装置必须在PWM驱动里加入死区时间,先关断一个管子再开通另一个。死区时间虽然很短,但会带来输出波形畸变和电流谐波,而且死区时间越长,低压大电流工况下的影响越明显。
第二个限制是直流电压利用率低。以最常见的正弦脉宽调制SPWM为例,线性调制区内,三相输出相电压的基波峰值最多是直流母线电压的一半。拿一个100V直流电源来举例,相电压峰值理论上只能到50V。如果你需要输出更高的交流电压,传统做法是前面加一级Boost升压电路,或者加一个工频变压器,代价是额外损耗、体积和成本。在光伏发电这种输入电压变化范围很大的场景里,这个问题尤其突出,因为光伏电池的电压随光照和温度波动,希望逆变器既能在低压时升压、又能在高压时正常工作。
1.2 Z源网络是怎么把“坏事”变成“特色”的
Z源逆变器把传统逆变器“避之不及”的直通状态变成了正常工作状态。它的结构很简单:在直流电源和三相逆变桥之间插入一个X型阻抗网络,由两个电感L1、L2和两个电容C1、C2交叉连接组成,通常还在直流源正极串一个二极管防止能量倒灌。
当同一桥臂上下管同时导通时,逆变桥输入侧被短路,这个状态叫作直通状态,英文里叫shoot-through。此时Z源网络里的两个电容通过直通桥臂放电,电流流过两个电感,电感储能增加。当开关管回到正常开关状态时,电感把储存的能量释放出来,配合直流源一起向负载供电,逆变桥等效直流母线电压就被抬高了。
定量来看,设直通占空比为D0,升压因子B=1/(1-2D0)。比如D0=0.2时,B=1/(1-0.4)=1.667,相当于把直流母线电压等效抬高了66.7%。Z源电容上的稳态电压约等于Vdc×(1-D0)/(1-2D0),100V输入时能到133V左右。输出相电压基波峰值可以表示为:
v_ph = M × B × Vdc / 2
其中M是调制比。这个拓扑的厉害之处在于:不需要额外加一级变换器,一个功率级就同时完成了升压和逆变,成本、体积、损耗都更优。用一个生活化的类比,Z源网络就像给直流母线装了一个小水塔,直通状态时蓄水,正常开关时放水,水塔里存了多少水取决于你“放水”和“蓄水”的时间比例。
2. 仿真模型的整体思路和参数估算
2.1 仿真平台和模型结构怎么选
做Z源逆变器仿真,我优先推荐Matlab/Simulink环境下的Simscape Electrical元件库。原因是它自带三相桥、IGBT/二极管、电感和电容模型,电力电子开关管的导通压降、反向恢复等特性都能模拟,而且和Simulink控制逻辑模块之间的接口很方便。别的工具也能做,但Simulink对新手最友好,波形测量、FFT分析都有现成工具。
模型整体分两部分:主电路部分放在Simscape域,包括直流源、防反二极管、Z源网络、三相逆变桥、三相阻感负载;控制部分放在普通Simulink域,包括正弦调制波生成、三角载波生成、比较器、直通信号生成和逻辑门。两部分通过三相桥的门极端口连接。搭建时不要一上来就尝试各种复杂拓扑,先用最简单的三相二电平桥加阻感负载,把Z源升压特性和PWM行为验证清楚,再往闭环、并网方向扩展。
还有一个小提醒:Simscape Electrical的模型里必须放一个Powergui模块,否则模型无法求解。双击Powergui可以选择仿真类型和进行FFT分析,很多新手第一次跑电气模型报错,往往就是少了这个模块。
2.2 先动手算一组能用的主电路参数
我给自己定的设计目标是用100V直流输入,输出50Hz三相交流,开关频率取5kHz,直通占空比D0=0.2,调制比M=0.75。为什么这样选?因为Simple Boost Control这种最简单的调制策略对M和D0有一个约束关系:M要小于1-D0,本案例中M=0.75、1-D0=0.8,留出了0.05的裕量,既不会让直通区间吞掉有效调制区间,又能保证足够的升压能力。
具体参数计算如下:
升压因子 B = 1/(1-2×0.2) = 1.667
Z源电容稳态电压 V_C = 100×(1-0.2)/(1-0.4) ≈ 133.3V
逆变桥等效直流母线电压峰值 V_bus = B×Vdc = 166.7V
相电压基波峰值 v_ph = M×V_bus/2 = 0.75×166.7/2 ≈ 62.5V
线电压基波有效值 V_LL = √3×62.5/√2 ≈ 76.5V
负载取三相Y接阻感负载,每相R=10Ω、L=5mH。在50Hz下,感抗约1.57Ω,和10Ω电阻比可以忽略,负载近似阻性。相电流有效值约62.5/√2÷10.1≈4.4A,输出功率约3×(62.5/√2)×4.4≈580W,考虑逆变器损耗,直流输入功率约620W,平均输入电流约6.2A。
电感值按纹波要求估算。直通状态下每个电感上的电压近似为V_C,纹波电流公式为Δi_L = V_C×D0×T_s / L。把目标纹波控制在平均电流的20%以内,即约1.2A,则有:
L ≥ 133.3×0.2×0.0002 / 1.2 ≈ 4.4mH
我实际取L=8mH,留了一倍裕量,实测纹波大概只有11%。电容值按电压纹波要求估算,经验公式ΔV_C ≈ I_L×D0×T_s/(2C)。I_L取6.2A,要求电压纹波小于5%即6.7V,则:
C ≥ 6.2×0.2×0.0002 / (2×6.7) ≈ 18.5μF
我取C=100μF,实际纹波不到3V,非常稳。电容大一些对启动冲击和动态响应都有好处,但太大成本高、体积大,这个值需要权衡。
仿真参数方面:Simulink求解器选ode23tb或者ode15s,最大步长限制在2e-6秒,仿真时长0.1s足够看到稳态。求解器刚性和非刚性差别很大,Z源网络本身是二阶系统,加上开关器件的高频动作,属于典型的刚性系统,用ode23tb比ode45省时间。
2.3 调制信号和直通信号怎么配合
直通信号是Z源逆变器建模里最容易出问题的地方。直通不是随便乱插的,必须放在传统SPWM的零矢量位置,也就是三角载波的波峰和波谷附近。原因很简单:零矢量位置本来就不会向负载传递有效电压,在此时插入直通不会干扰输出波形,却能让Z源网络完成升压。
我采用的生成方法是:三角载波范围取-1到1,频率5kHz;三相对称正弦调制波幅值为M=0.75,频率50Hz;每相用“调制波大于载波”生成上管驱动,用“调制波小于载波”生成下管驱动。直通信号用两个比较器生成:当载波大于(1-D0)时输出一个顶部直通脉冲,当载波小于(-1+D0)时输出一个底部直通脉冲,然后把这两个脉冲合并成总的直通信号。最后将直通信号和每一相上下管的驱动信号做逻辑或运算,这样直通脉冲到来时六个开关管全部导通,直流侧被短路,等效于一个特殊的零矢量。
用这种方式,每个载波周期插入了两段直通时间,加起来占总时间的比例近似等于D0。实测用mean模块测量驱动信号占空比,和理论值偏差很小。要注意的是,如果D0和M选择不当,比如M+D0接近1甚至超过1,直通脉冲会覆盖调制波的正常动作区域,输出波形会明显畸变,这一点后面会详细讲。
3. 从零搭建仿真模型的完整实操
3.1 主电路搭建与初始值设置
打开Simulink新建模型,先拖入一个Powergui模块,再用下面的元件搭建主电路:
- DC Voltage Source:100V,类型选“DC Voltage Source”
- Diode:放在直流源正极和Z源网络之间,方向是阳极接直流源正极、阴极接Z源网络,作用是防止直通状态下Z源网络能量倒灌
- 两个电感L1、L2:都取8mH,勾选设置初始电流选项,初始值可以设为6A左右,能明显缩短启动暂态
- 两个电容C1、C2:都取100μF,用“initial state”设置初始电压,建议设为133V左右,注意参考方向要和实际电路一致,极性反了启动瞬间会有很大的冲击电流
- Universal Bridge:选“IGBT/Diode”,桥臂数3,输出端接三相负载
- Three-Phase Series RLC Branch:三相接成Y形,中性点接地,每相R=10Ω、L=5mH
为什么建议设初始值?Z源网络的电容启动时从0V充电到133V需要相当一段时间,不设初值的话你会看到很长的电容充电过程,电感电流也会出现很大的冲击尖峰。设了初值以后,模型一启动就比较接近稳态,观察起来清爽很多。这不算作弊,很多仿真里用稳态初值来加速仿真都是常规做法。
搭建时还有几个容易踩的细节。第一,三个负载支路的连接顺序要一致,别把Y接和Δ接搞混,电压波形计算完全不同。第二,电感和电容的电压电流测量建议用专门的Current Measurement和Voltage Measurement模块,因为要用到的波形数据在后面分析时能直接导入工作区。第三,各元件之间一定要用Simscape电气连接线,普通信号线连不上,这个新手最容易困惑。
3.2 PWM驱动信号生成与直通插入逻辑
控制部分全放在普通Simulink域里,不需要电气元件。具体需要的模块有:
- 三个Sine Wave:分别生成幅值0.75、频率50Hz、相位相差120度的三相调制波。我习惯写成sin(2×pi×50×t)、sin(2×pi×50×t-2×pi/3)、sin(2×pi×50×t+2×pi/3)
- 一个Repeating Sequence:生成三角载波,时间点取[0 0.0001 0.0002],输出幅值取[-1 1 -1]这样的双极性三角波,周期等于1/5000=0.0002秒
- 三个Relational Operator:做“调制波大于载波”的比较,输出上管信号;再做三个“调制波小于载波”的比较,输出下管信号,总共六个比较器
- 两个Compare To Constant:一个判断载波是否大于0.8,另一个判断载波是否小于-0.8,分别对应1-D0和-1+D0,D0=0.2
- 一个Logical Operator(或门):把两个直通脉冲合成一个总的直通信号
- 六个Logical Operator(或门):把每一相的上下管信号分别和总直通信号做或运算,得到最终门极驱动
信号线接线逻辑可以写成这样:Gate_A_top = (va > carrier) OR shoot_through,Gate_A_bottom = (va < carrier) OR shoot_through,B相C相同理。直通信号一到,六个管子全通,短时间后直通信号消失,管子恢复正常SPWM动作。
这里有一个实际仿真中的小坑:调制波、载波、直通比较这组信号链可能形成代数环,Simulink报“Algebraic Loop”错误。解决办法很简单,在直通信号生成链路上加一个Memory模块或者Transport Delay模块,延迟一个采样步长,就能断开代数环。延迟一个步长对总体趋势没有任何可感知的影响。
3.3 启动仿真后该看哪些波形
模型配置好以后,建议在需要观察的线路上加上Scope模块。第一个必须看的是Z源电容电压,正确的情形是C1和C2的电压都稳定在133V附近,带有小幅纹波,纹波频率和开关频率相关。第二个看电感电流,应该是在某个直流分量上叠加三角纹波,直通期间电流上升,非直通期间电流下降,平均值大致等于输入电流6A左右。第三个看输出三相相电压和线电压,相电压波形是含高频纹波的阶梯波,线电压的基波有效值应该接近76V。
我习惯用一个简单的自查方法验证模型是否正确:把直通信号强制置零,相当于把Z源逆变器退化成传统SPWM逆变器,这时输出相电压基波峰值应该等于M×Vdc/2=0.75×100/2=37.5V。再恢复直通,相电压峰值跳到62.5V左右,前后对比就能直观看出Z源网络的升压效果。这个对比实验特别适合用来确认“升压功能是Z源网络带来的,而不是参数错误造成的”。用Powergui的FFT分析工具看输出相电压基波幅值,如果FFT结果和理论值差距超过10%,大概率是D0和M的关系没设置好,或者负载太重导致母线电压跌落。
4. 从基础模型往进阶方向延伸
4.1 从简单升压控制到最大升压控制
上面用的Simple Boost Control虽然实现简单,但有一个明显毛病:直通占空比恒定,所有时间内开关管都要额外承受直通电流,器件应力比较大。进阶一点的方案是最大升压控制Maximum Boost Control,它不再使用固定直通脉冲幅度,而是让直通占空比随三相交变的调制波变化:在调制波峰值附近不直通,在调制波低谷附近多直通。这样相同调制比下能获得更高的升压能力,但由于直通占空比在一个输出周期内是变化的,电容电压会产生较大的低频脉动,输出电压谐波分量会有所增加,需要更大的电容来压制。
MBC在Simulink里的实现方式比SBC复杂一些,核心是用三相调制波的最大值和最小值构建两条动态包络线,再用载波和包络线做比较产生直通信号。包络线是随50Hz周期连续变化的曲线,所以直通信号不再是一串等宽的脉冲,而是宽度按正弦规律变化的脉冲序列。如果你已经跑通了SBC模型,改造MBC实际上只动了直通生成那部分模块。建议先把SBC模型的波形保存一份,改造后再跑一次,对比两种方式下电容电压纹波和目标输出电压的关系,理解会更直观。
4.2 给模型加上电压闭环
开环模型验证拓扑没问题后,下一步自然是闭环控制。Z源逆变器的闭环控制有两个自由度:调制比M和直通占空比D0。固定其中一个,调节另一个,都能改变输出电压。实际中我更习惯固定M、用PI调节D0,因为直通占空比直接决定了升压能力,物理意义更清楚;在某些应用里也见过固定D0同时调节M的做法,但M变化会同步影响调制波和直通阈值的关系,约束条件处理起来麻烦一些。
闭环控制回路的设计思路是:采样输出线电压,经过有效值计算或者旋转坐标系变换得到反馈值,和参考电压做差送入PI调节器,PI输出限幅到0到0.25之间作为D0的给定值。这里限幅很重要,D0如果超过1-2M相关约束,模型会出畸变。我的调试经验是先设P=0.05、I=2开始,观察响应曲线,如果输出发散就把P减小一半,如果响应太慢就适当加大I。实际仿真中Z源网络和PWM环节本身带有延迟,PI参数不宜过大,否则会在开关频率附近引入振荡。
加了电压闭环以后,输出抗负载扰动的能力明显增强。你可以做一个对比实验:在0.05s时刻把三相负载电阻从10Ω突加到5Ω,开环模型输出电压会明显下降,闭环模型经过一个短暂的调节过程后能回到参考值附近。这个实验做完,你对Z源逆变器动态特性的理解会上一个台阶。
4.3 往光伏并网和电机驱动场景扩展
Z源逆变器的典型应用场景有两个。一个是光伏并网逆变器,光伏电池输出电压范围宽,传统方案必须先Boost再逆变,而Z源逆变器一个功率级就能完成升降压和逆变功能,省掉了前级变换器。仿真扩展方向是加上MPPT算法、并网电流内环和电压外环,负载由无源阻感负载改成含LCL滤波器和电网模型。另一个是电机驱动,Z源逆变器可以把直流母线电压提升后供给电机,改善低速大转矩输出能力,同时可以省去传统驱动中的直流Boost电路。这两类扩展场景都能在已有基础模型上做增量修改,核心主电路不变,重点是控制策略的变化。
5. 避坑指南:我实际调试中踩过的问题
5.1 启动就崩?先检查这三处
我建模型时遇到最多的崩溃场景是启动后第一个仿真步长就发散,Scope里全是NaN或者数量级离谱的尖峰。排查顺序从概率高低来排:第一,确认Powergui模块是否放入了模型,没有它整个电气部分不参与仿真;第二,检查是否设置了电容初始电压,未设置初值时启动瞬间Z源电容充电电流可能极大,接近理想电压源的短路行为,仿真器直接报错;第三,检查二极管方向是否正确,方向接反了整个Z源网络无法正常工作,电容电压直接反向充满。
如果启动没发散但出现巨大的电流冲击尖峰,那多半是直通信号生成的相位出了问题。直通信号一定要严格按照载波波峰/波谷的位置插入,如果直通比较阈值设得不对,比如把1-D0写成了D0,直通脉冲会落在有效矢量期间,输出波形质量会显著恶化,电感电流也会出现异常尖峰。
5.2 电压上不去、波形畸变严重怎么排查
现象一:实测电容电压明显低于理论值。优先怀疑直通信号没有真正施加到桥臂上,用示波器观察最终门极信号,拉长到载波周期级别,数一下每个周期内上下管同时为高电平的时间是否约等于0.4×T_s(对应D0=0.2)。如果根本没有同时导通的区间,说明直通逻辑被死区模块或者逻辑门配置覆盖掉了。我调试时发现有些读者照搬传统逆变器的死区电路到Z源逆变器里,死区会直接把短直通脉冲吃掉,导致升压完全失效。
现象二:输出相电压波形严重畸变。这是M和D0约束被打破的典型症状。以SBC为例,必须满足M小于1-D0,如果M=0.8而D0=0.2,M+D0恰好等于1,调制波峰值区间和直通区间贴在一起,有效调制被直通吞掉,波形畸变特别明显。解决办法是重新分配M和D0,让M+D0不超过0.95,留出5%以上裕量。这一点在参数设计阶段就要想到,不要等到波形难看再去猜原因。
现象三:输出电压比理论值低很多且随负载加重进一步跌落。这种情况通常是电感电流进入了断续模式。Z源网络参数设计时,电感电流必须保证连续,否则电容电压会纹波剧增、输出能力下降。检查电感电流波形,如果出现长时间为零的台阶,说明电感值偏小或者负载偏重,需要加大电感或减小负载。
5.3 常见问题速查表
我把调试中容易遇到的问题整理成一个表,按现象排查最方便:
| 现象 | 可能原因 | 检查手段 | 处置方法 |
|---|---|---|---|
| 仿真直接报错、无波形输出 | 缺少Powergui模块 | 检查模型树 | 添加Powergui模块并正确设置求解器 |
| 启动瞬间电流尖峰巨大 | 电容初始电压未设置或极性错误 | 检查电容Initial state | 按理论值设置初值并核对方向 |
| 电容电压远低于理论值 | 直通信号未生效或D0过小 | 观察门极信号直通区时间 | 检查逻辑或门配置,删除多余死区模块 |
| 降压比正常但无升压 | 二极管方向反了或Z网络接线错误 | 对比原理图逐节点核对 | 修正二极管极性 |
| 输出波形严重畸变 | M+D0超过1 | 检查调制比与D0关系 | 重新分配参数,留出裕量 |
| 输出电压随负载下跌明显 | 电感电流断续 | 观察电感电流波形 | 加大电感或减小负载 |
| 代数环报错 | 控制信号链闭合回路 | 查看代数环路径高亮 | 在直通生成链路加入Memory延迟模块 |
| 仿真速度非常慢 | 最大步长太小且开关频率高 | 检查求解器配置 | 使用ode23tb,最大步长放宽到2e-6 |
最后一个我自己常用的调试习惯:把控制逻辑分成独立子系统之前,先用散落模块把功能跑通一次,确认每个信号都正确,再封装成子系统。Z源逆变器模型涉及的信号多,封装以后如果内部接线有问题反而不好查。等所有波形对上了再封装,后面做闭环改造时改动起来会非常顺手。这套“先开环后闭环、先SBC后MBC、先纯阻后感性负载”的增量式调试方法,看起来慢,实际上是最省时间的路径。