做电力电子仿真这些年,单相PWM整流器是我觉得最适合拿来练手、也最能讲清楚“控制策略差异”的一个对象。从交流220V整流到直流350V,表面看只是一个“升压+整流”的过程,但真正让这个系统有灵魂的,是网侧电流的波形质量、功率因数、直流电压的动态特性。这次我把两种经典控制策略——直接电流控制和间接电流控制——在Simulink里完整搭了一遍,从主电路参数计算、控制环路搭建、仿真结果对比到调试踩坑全部记录下来。文章里没有玄学,只有可复现的步骤和波形。
我要先明确这个项目的边界:输入是单相交流220V/50Hz,输出直流350V,额定功率按3kW设计,开关频率取10kHz,控制策略对比目标是解决“用什么方式让网侧电流正弦化、并且稳定住直流母线电压”的问题。如果你正在做课程设计、毕业设计,或者刚接触PWM整流器想找个能跑的模型参考,这篇内容应该能帮你省下不少走弯路的时间。
1. 两种控制策略的选型思路
1.1 为什么这个场景必须用PWM整流器
先回答一个很多人会忽略的问题:交流220V整流到直流350V,为什么不能用二极管整流堆?
交流220V的有效值是220V,峰值是311V,二极管不控整流出来最多就是311V上下浮动的直流,而且电流波形是脉冲状的,谐波很大、功率因数很低。如果需要350V直流,本质上是一个“升压整流”的过程,得先通过Boost或者全桥结构把电压抬上去。单相PWM整流器的H桥拓扑天然就是一个Boost型变流器,它在交流侧串联电感,通过控制四个开关管的通断,让电感储存和释放能量,既能把直流电压抬到比交流峰值更高的水平,又能同时控制交流侧电流波形接近正弦、相位与电网电压一致,实现单位功率因数。
工程上选择单相PWM整流器的另一个重要理由是能量双向流动能力。虽然这个项目只做整流方向,但H桥结构天生具备四象限运行能力,只要控制策略改一下就能回馈能量。相比“不控整流+Boost”的组合,PWM整流器用一套拓扑同时完成了升压、正弦电流、功率因数校正三件事,代价就是控制复杂度上去了。这个复杂度正是本文要拆解的核心。
1.2 直接电流控制和间接电流控制的核心差异
这两种策略的分水岭在于:交流电流是不是被“直接闭环控制”。
直接电流控制,顾名思义,是在控制回路里引入网侧电流反馈,电流内环直接决定开关管的动作。典型的实现有滞环电流控制和三角波比较(SPWM)电流控制。这样做的好处是动态响应快、对参数不敏感、电流波形质量高,缺点是必须使用电流传感器,控制结构相对复杂。
间接电流控制,又叫幅相控制,它不检测交流电流,而是根据PWM整流器的稳态相量关系,通过控制整流器交流侧电压基波的幅值m和相位δ,间接地控制网侧电流。好处是结构简单、省掉电流传感器,缺点是动态响应慢,而且控制精度依赖主电路参数的准确性,一旦电感值、电网电压与设计值偏离,功率因数和电流波形就会变差。
我习惯用开车来类比:直接电流控制是“眼睛盯着方向盘,随时修正方向”,间接电流控制是“估算好弯道角度,把方向盘打到固定位置”。前者稳、快,但费传感器;后者省钱、简单,但路况一变就容易偏。两种策略没有绝对的好坏,取决于项目的成本预算和动态性能要求。
2. 主电路参数设计:不能拍脑袋
2.1 系统指标与拓扑选择
做仿真之前先把指标定死,否则后面调参根本没有基准。我这次按以下指标来设计:
| 参数 | 数值 |
|---|---|
| 交流输入电压 | 220V RMS / 50Hz(峰值311V) |
| 直流输出电压 | 350V |
| 额定功率 | 3kW |
| 开关频率 | 10kHz |
| 直流电压纹波 | ≤ 2%(约7V) |
| 网侧电流纹波 | ≤ 15%峰值电流 |
主电路拓扑选择单相全桥,四个IGBT(或MOSFET)带反并联二极管,交流侧串联电感L,直流侧并联电容C和负载电阻R。之所以直流电压定在350V,是因为它必须高于交流峰值311V——只有直流侧电压高于交流峰值,Boost型PWM整流器才能通过电感储能把电压抬上去,同时留出足够调制空间。350V大约是311V的1.125倍,这个裕量既保证单位功率因数运行,又不至于让开关管承受过高的电压应力。
2.2 交流侧电感L的计算方法
电感是PWM整流器最关键的元件,它决定了电流纹波大小和动态响应能力。先看电流纹波怎么来的:在一个开关周期内,电感电流上升阶段满足 L·Δi = us·Ton,其中Ton = D·Ts,D是占空比,Ts是开关周期。
单相PWM整流器工作在手Boost状态,占空比近似为 D = (Udc - |us|) / Udc,代入可得:
Δi = |us|(Udc - |us|) / (Udc · L · fs)
由这个式子可以看出,当 |us| = Udc/2 时,|us|(Udc-|us|) 取最大值 Udc²/4,所以最大电流纹波为:
Δimax = Udc / (4 · L · fs)
额定功率3kW,网侧电流有效值 I = P/U = 3000/220 ≈ 13.6A,峰值约19.3A。取纹波为峰值的15%,Δimax ≈ 2.9A。代入计算:
L = 350 / (4 × 10000 × 2.9) ≈ 3mH
我仿真里电感取3mH,串联0.1Ω电阻模拟线路损耗。这里要特别提醒:电感不是越大越好。电感太大,电流响应变慢,交流侧压降增大,为了维持输出需要更高的调制比,反而压缩了控制裕量;电感太小,纹波大、谐波大,网侧电流很难达标。3mH在10kHz开关频率和3kW功率下是一个工程上很合理的折中值。
实际中你可以用参数计算脚本快速复核:
% 单相PWM整流器主电路参数计算 U_rms = 220; U_peak = U_rms*sqrt(2); % 峰值311V Udc = 350; P = 3000; fs = 10e3; I_rms = P / U_rms; % 13.6A I_peak = I_rms * sqrt(2); % 19.3A delta_imax = 0.15 * I_peak; % 2.9A L = Udc / (4 * fs * delta_imax); % 约3mH2.3 直流母线电容C怎么选
直流电容的作用是平衡瞬时功率脉动。单相系统有个天然特点:瞬时功率以2倍工频脉动,也就是100Hz。直流电压纹波主要集中在这个频点上,电容容值必须能吸收这部分脉动能量。
按电压纹波要求计算,直流母线纹波主频是100Hz:
C ≈ P / (2π · 2f · Udc · ΔUdc)
取ΔUdc = 2% × 350 = 7V,代入:
C ≈ 3000 / (2π × 100 × 350 × 7) ≈ 1950μF
实际取2200μF。我还习惯从动态响应角度复核一下:负载等效电阻 R = Udc²/P = 350²/3000 ≈ 40.8Ω,电容时间常数 τ = R·C ≈ 40.8 × 2200e-6 ≈ 90ms,这个时间常数与电压环带宽是匹配的,说明电容不会小到让负载突变时母线电压跌穿。
电容也不是越大越好。容值太大,启动充电时间变长,动态响应变慢,成本也高。这个项目取2200μF是合理的。
2.4 负载电阻和系统参数总表
最终参数汇总如下,仿真模型和后面所有调试都基于这组数据:
| 参数 | 符号 | 数值 |
|---|---|---|
| 电网电压有效值 | Us | 220V / 50Hz |
| 直流电压给定 | Udc* | 350V |
| 额定功率 | P | 3kW |
| 交流侧电感 | L | 3mH(串联0.1Ω) |
| 直流母线电容 | C | 2200μF |
| 负载电阻 | R | 40Ω |
| 开关频率 | fs | 10kHz |
| 仿真步长 | Ts | 1μs |
3. Simulink仿真模型搭建
3.1 主电路搭建顺序与模块配置
Simulink模型的核心是“主电路 + 控制电路 + 测量反馈”三层结构。主电路搭建顺序建议从上到下、从左到右,方便后续对信号命名和整体检查。
主电路模块:
- 交流电源:
Simscape / Electrical / Specialized Power Systems / Sources / AC Voltage Source,Peak amplitude填311V(也可以用220*sqrt(2)),Phase填0,Frequency填50Hz。 - 交流电感:用
Series RLC Branch,R设0.1Ω,L设3e-3H,C设inf。 - H桥:用
Universal Bridge,Power Electronics device选IGBT/Diode,桥臂数4。这里要注意snubber电路先保留默认值,仿真跑稳定之后再考虑去掉,初学者一上来就去掉snubber很容易发散。 - 直流电容:
Series RLC Branch,R设inf,L设0,C设2200e-6F,勾选初始电压Set initial condition,可设为300V以减少启动冲击。 - 负载:
Series RLC Branch,R设40Ω,L设0,C设inf,并联在电容两端。
仿真求解器设置也提一句:这种带PWM开关的系统,建议用discrete(离散)求解器,固定步长1e-6,ode4。开关频率10kHz意味着载波周期100μs,步长至少要比载波周期小一个数量级,1μs才是稳妥的。如果步长太大,PWM边缘采样会失真,波形上会出现很多毛刺。
3.2 直接电流控制(滞环)实现细节
直接电流控制的典型实现是滞环电流控制,控制结构是电压外环加电流内环:
- 采样直流母线电压Udc,与给定350V比较,误差进电压PI调节器,输出电流幅值指令Im。
- 用PLL(我这里直接用理想sin(2π·50·t))与Im相乘,得到网侧电流指令 i_ref。
- 采样交流侧电流iL,与i_ref比较,误差进滞环比较器。
- 滞环比较器输出开关信号,驱动H桥。
滞环比较器的参数设定是关键。Simulink里用Relay模块实现,我设定:
Switch on point= 0.5Switch off point= -0.5
即滞环带宽度h=1A左右。滞环带宽与开关频率是直接矛盾:带宽越小,电流跟踪精度越高,但开关频率会飙升,仿真步长不够器就会出现锯齿状的高频毛刺;带宽太大,电流波形失真,THD变大。3kW系统额定峰值电流约19.3A,取1A带宽大约对应5%额定电流,实际仿真下来开关频率分布在中高频段,波形质量还比较理想。
开关逻辑上,滞环比较器输出S=1时导通S1和S4,S=0时导通S2和S3,也就是双极性调制。这么做简单直接,但缺点是四个管子开关频率相等、损耗大。工程上也可以做单极性调制,用一个滞环比较器控制两个桥臂,另一个桥臂用互补方波,但仿真对比控制策略时双极性更直观。
电压外环PI参数初值我直接给:Kp=0.3、Ki=20。这个参数按3kW和2200μF电容调出来的响应比较稳,大约0.3秒左右建立到350V,超调在10%以内。注意Im输出必须限幅,我限在0~25A,防止启动瞬间电流指令过大。
3.3 间接电流控制(幅相控制)实现细节
间接电流控制的思路是通过控制整流器交流侧电压基波的幅值m和相位δ,间接控制网侧电流。稳态相量关系很简单:电网电压Us,整流器交流侧基波电压Uc,电感压降jωLI,三者满足 Uc = Us - jωLI。如果希望网侧电流与电网电压同相位(单位功率因数),那么Uc必然滞后Us一个角度:
δ = arctan(ωLI / Us)
调制比 m = |Uc| / Udc = √(Us² + (ωLI)²) / Udc
在实际控制里,负载功率P可以通过Udc和负载电阻R估算出来(P = Udc²/R),然后 I = P/Us,代入上式算出δ。这样不需要电流传感器,只要电压环维持Udc稳定,网侧电流就自动接近正弦且单位功率因数。
我搭的控制结构如下:
- 采样Udc,与350V比较,经电压PI输出调制比m,限幅0.85~1.0。
- 根据Udc和R估算负载电流 I_est = Udc/R(注意:这里是近似,认为Udc≈Us×m且忽略谐波即可)。
- 计算 δ = arctan(ωL·I_est / Us),ω=2π·50。
- 生成调制波 v_ref = m·sin(θ - δ)。
- v_ref与10kHz三角载波比较,生成双极性PWM信号驱动H桥。
电压PI参数我取Kp=0.2、Ki=10,比直接电流控制慢一些,因为整个环路是建立在稳态估算之上的,PI太快容易振荡。
这里有一个容易踩坑的点:调制比m在额定工况下大约等于 Us/Udc = 220/350 ≈ 0.63?不对,这里要区分“调制比”的定义。如果调制波 v_ref = m·sin(θ-δ),H桥输出交流电压基波幅值是 m·Udc(双极性SPWM线性区),要满足基波电压幅值等于|Uc|≈220V,需要 m ≈ 220/350 ≈ 0.63。所以m的限幅范围应是0~0.9左右,给一点裕量到0.95。很多人在这里直接把m限幅到1,导致启动瞬间过调、直流侧过压严重。
3.4 两种控制策略的PWM生成对比
直接电流控制(滞环)和间接电流控制(SPWM)在PWM生成层面有本质区别:
| 项目 | 直接电流控制(滞环) | 间接电流控制(幅相) |
|---|---|---|
| 电流反馈 | 需要 | 不需要 |
| 开关频率 | 不固定,随电压/电流变化 | 固定10kHz |
| 调制方式 | 滞环比较 | 三角载波比较 |
| 动态响应 | 快 | 慢 |
| 谐波频谱 | 分散、宽带 | 集中在开关频率附近 |
| 对参数依赖 | 低(反馈自动修正) | 高(依赖L和负载估算) |
从表格能直观看出,间接电流控制省了电流传感器,但代价是动态性能和鲁棒性。
4. 仿真结果对比与波形复盘
4.1 启动过程对比
先说直接电流控制。给定350V,启动瞬间因为电容初始电压设为300V(如果设0,冲击电流会非常夸张),电压约0.25s建立到350V,超调约8%,随后稳定。网侧电流在启动阶段被限幅在25A以内,约60ms后进入正弦稳态。整体波形干净,像样的“教科书曲线”。
间接电流控制启动就要“挣扎”很多。因为m由电压环缓慢调节,而δ是实时根据估算功率算的,启动初期Udc较低时估算电流偏小,δ偏小,电流建立慢,电压环需要更长时间把m推上去。实测下来建立时间约0.5~0.6s,超调约15%。如果想改善启动性能,可以给Udc给定加一个0.2s的斜坡,从300V斜坡上升到350V,冲击电流和超调都会显著变小。这是我反复试验后觉得最有效的办法。
4.2 稳态波形与THD分析
稳态下用Simulink的Powergui / FFT Analysis分析网侧电流THD:
- 直接电流控制(滞环)的THD通常在3%~4%左右,电流波形正弦度很好,但因为开关频率不固定,谐波频谱比较分散,从几kHz到几十kHz都有分布,如果想做EMI滤波器会比较头疼。
- 间接电流控制的THD一般在4%~6%,谐波主要集中在10kHz及边带,滤波设计更容易。但间接控制对电网频率和电感参数比较敏感,如果我把电感从3mH改成4mH,不重新调δ的计算系数,功率因数会从接近1掉到0.97左右。
直流侧电压纹波方面,两种策略都工作在100Hz主频纹波,实测纹波幅度大约4~5V,优于2%的设计指标。
4.3 负载突变动态响应对比
动态对比我做了两次负载切换实验:t=0.5s时把负载从40Ω切换到20Ω(功率从3kW跳到6kW),观察直流电压恢复情况。
直接电流控制的表现:负载加重的瞬间直流电压跌落约12V,然后在大约80ms内恢复到350V。这是因为电流内环快速响应,网侧电流迅速上升补充功率。整个过程电流波形始终正弦,没有出现明显的振荡。
间接电流控制的表现:电压跌落约25V,恢复时间超过250ms,期间还伴随一点低频振荡。原因在于它的功率估算依赖Udc和R,负载突变瞬间Udc没来得及变化,估算功率跟不上实际功率,导致δ偏小、电流建立慢。如果负载不是突变的而是缓慢变化的,间接控制的性能会好很多。
这个对比很有说服力:直接电流控制适合负载频繁突变的场合,比如电机驱动、UPS;间接电流控制更适合负载基本恒定的场合,比如固定电压的直流电源,可以用低成本换性能。
4.4 直接电流控制变体:三角波比较法
既然做了直接电流控制,我顺便把三角波比较法也跑了一遍,因为它同属直接电流控制家族,但开关频率固定,兼有滞环控制的动态性能和SPWM的定频特性。
三角波比较法不需要滞环比较器,而是把电流误差送入电流PI调节器,输出调制波,再与三角载波比较。控制结构:
- 电压外环PI输出电流幅值指令Im(与滞环法一致)。
- i_ref = Im·sin(θ),采样网侧电流iL,做差。
- 电流误差进PI(我取Kp=15、Ki=500),输出调制波v_m。
- v_m与10kHz三角波比较生成PWM。
实测效果:THD约3.5%,开关频率固定,动态响应比滞环略慢但远快于间接控制。如果你后面要做LCL滤波器设计,我更推荐用三角波比较法,因为固定开关频率对滤波器调谐友好得多。这种方法本质上是在滞环控制和间接控制之间取了一个平衡点。
5. 调试踩坑与常见问题实录
5.1 PI参数到底怎么调
我见过太多人一上来就纠结PI参数,仿真发散就觉得是参数问题,其实是顺序搞反了。调参有个铁律:先内环后外环,先粗调后细调。
对于直接电流控制(滞环),电流内环不需要PI,滞环比较器就是“电流控制器”,所以只需要调电压外环。电压外环的带宽必须远低于100Hz纹波频率,否则电压环会把直流纹波放大成电流指令的畸变。我调的Kp=0.3、Ki=20,在实际操作中可以先给Kp一个试探值,比如0.5,看Udc是否超调过大;如果超调超过20%,就降Kp;如果稳态误差一直消不掉,就加Ki。Ki加太快的表现是Udc出现明显的低频振荡,这时候要回退。
对于三角波比较法,电流内环PI也遵循类似逻辑:Kp大了电流环跟得快但容易振荡,Ki大了低频增益高但也会带来振荡。初值Kp=10~30、Ki=100~500都是合理的探索范围。先固定电压环不动,手动给一个固定幅值的i_ref信号看电流跟踪波形,调好了再接入电压环。
5.2 仿真不收敛、波形发散怎么办
Simulink里PWM整流器仿真发散,八成是下面几个原因:
第一,步长太大。固定步长超过10μs时,PWM开关边沿无法准确采样,电流环容易跑飞。建议固定步长设为1μs,最多不超过2μs。
第二,代数环。控制回路里如果把采样信号直接和PI输出相乘,容易形成代数环。解决办法是在反馈信号处加一个Memory或Unit Delay模块,打断代数环。
第三,Universal Bridge的snubber设置。默认的snubber电阻1e5Ω、电容inf通常没问题,如果发散可以先检查snubber是不是被改成了0或inf等极端值。
第四,电感电容初始条件冲突。电容初始电压为0时,启动瞬间电感电流冲击很大,可能直接让仿真发散。先把电容初始电压设为300V,等模型稳定了再尝试从0启动,并且配合软启动。
5.3 启动冲击电流怎么压下来
说到启动冲击,这是PWM整流器很典型的问题。电容初始电压为0时,上电瞬间电容相当于短路,母线电压环发现电压远低于给定,输出饱和,电流指令冲到限幅上限,网侧电流一个工频周期内可能达到额定电流的十几倍。
我的处理顺序是:
- 仿真模型中,给Udc给定加斜坡,0.2s内从300V斜坡到350V。
- 电流指令Im的输出限幅从25A临时降到15A,启动完成后再放宽。
- 如果还嫌冲击大,可以在直流侧串一个预充电电阻,启动后旁路掉——但这会让模型复杂化,仿真阶段用斜坡给定就够了。
实际工程中软启动是标配,因为真实电网不允许这么大的冲击电流,但仿真阶段主要抓控制策略对比,用斜坡给定可以快速绕开这个与主题无关的麻烦。
5.4 滞环控制开关频率不固定的处理
滞环控制的“随机频率”特性,仿真的时候最明显:看开关管的脉冲信号,间隔忽长忽短。这是滞环控制的固有特性,因为误差在滞环带内摆动的时间取决于电路参数和电压瞬时值。
如果你发现开关频率高到离谱(几十kHz甚至上百kHz),说明滞环带宽设得太小了。把带宽从0.5A加大到1A,开关频率会明显下降。反过来,如果带宽太大,电流波形会出现“台阶感”,THD明显恶化。在仿真中找一个折中带宽的快速方法:跑一段稳态,打开Powergui/FFT Analysis看电流THD和平均开关频率,调到THD和频率都能接受即可。
5.5 单相系统相位同步的隐患
我在仿真里直接用了sin(2π·50·t)作为电流指令的相位参考,这在理想情况下没问题,但实际系统电网频率会波动、电压会畸变,必须用PLL锁相。单相PLL不像三相那么容易,常见方案是延时90°构造虚拟正交信号,或者用SOGI(二阶广义积分器)。如果你后面要把模型移植到硬件,这一块是绕不开的,千万别用理想正弦源偷懒。
仿真阶段如果电网电压本身设置的是纯净50Hz正弦,直接用sin源没问题,可以快速验证控制逻辑。但注意不要让这种简化掩盖了真实系统的复杂度,我做硬件在环测试时就因为PLL带宽没调好,导致启动时电流指令相位突变,整机过流保护动作了好几次。
6. 控制策略评估与扩展方向
6.1 怎么评估两种策略适不适合你的项目
做“控制策略评估”不能只看波形好不好看,要回到项目实际约束:
| 评估维度 | 直接电流控制(滞环) | 间接电流控制(幅相) | 三角波比较法 |
|---|---|---|---|
| 电流传感器 | 需要1个 | 不需要 | 需要1个 |
| 动态响应 | 最快 | 最慢 | 中等 |
| 开关频率 | 不固定 | 固定 | 固定 |
| 实现复杂度 | 低 | 低但调参耗时 | 中等 |
| 抗参数漂移能力 | 强 | 弱 | 强 |
| 适用场景 | 高性能电源、电机驱动 | 成本敏感、负载恒定场合 | 兼顾性能与EMI设计场合 |
如果项目预算能接受一个电流传感器,我优先推荐直接电流控制,尤其是三角波比较法,因为它在固定开关频率的前提下保留了电流闭环的动态优势,后级滤波器和EMI设计都更容易做。如果目标是把成本压到极致、负载又基本恒定,间接电流控制值得考虑,但要有心理准备:把它调稳定所花的时间,可能比省一个电流传感器省下的成本还要多。
6.2 从单相到三相的思路迁移
做完单相PWM整流器,你会发现核心控制思想完全可以迁移到三相系统。三相PWM整流器的主流控制策略是电压定向控制(VOC),本质上是把本文的“直接电流控制”放到dq旋转坐标系里,用两个PI调节器分别控制有功电流和无功电流。而单相系统因为没有天然的正交分量,需要额外构造虚拟正交信号,这让单相dq控制比三相繁琐。
反过来,间接电流控制的思路在三相里对应的是“基于电网电压定向的幅相控制”,实际工程中已经很少用了,因为三相VOC的控制效果和鲁棒性全面碾压它。所以我的建议是:如果你想在三相系统中做选择,直接上VOC,单相项目里再体验体验幅相控制的局限即可。
6.3 后续可以扩展的仿真方向
如果你把这个基础模型跑通之后还想继续深挖,我建议以下三个方向:
第一,加LCL滤波器。把单纯的电感L换成LCL,在高频段有更好的衰减特性,电流谐波进一步下降,但LCL的谐振峰需要设计阻尼,常见的有无源阻尼和有源阻尼。
第二,做电网电压畸变/跌落工况。给交流源叠加上5%的5次谐波,或者电压骤降50%,对比两种控制策略的应对能力。你会发现直接电流控制依然能保持较好的电流质量,而间接电流控制的电流波形会明显恶化。
第三,把控制策略换成dq旋转坐标系下的单相VOC。这需要加入SOGI或延时构造正交分量,更适合作为进阶学习内容,也能直接对接三相VOC的学习路径。
写在最后的一点心得
如果让我给第一次做这个仿真的朋友一句忠告,我会说:先不要急着让两种控制策略在同一台电脑上同时跑出漂亮波形,而是先把直接电流控制的电压环PI调到一个你能解释清楚的响应状态,再去搭间接电流控制的模型。我在实际调仿真的过程中最大的体会是,间接电流控制看起来最省器件,调起来反而最费劲,因为你把电流控制的“眼睛”蒙上了,全靠模型估算精度在撑着。两种方案各有取舍,没有绝对优劣,关键看你的项目到底要动态性能、成本结构,还是简化实现。做完这个对比,你对“反馈”和“前馈”这两种控制哲学的理解,会比看十篇论文都深刻。