做开关电源仿真绕不开PFC这个话题。最近我把Boost PFC的CCM平均电流控制叠加电流相位补偿控制,在Plecs里完整跑了一遍仿真,从主电路参数计算到控制环路搭建,再到波形分析和问题排查,整个过程踩了几个坑,也把原理重新梳理了一遍。这篇就把这个项目从原理到实战细节一次性讲清楚,适合刚接触功率因数校正的工程师,以及想在Plecs里做PFC仿真但不知道从哪下手的朋友。
先说结论:Boost PFC + CCM平均电流控制是目前中大功率电源里最实用的组合方案之一,电流相位补偿则是让输入电流波形更“干净”的关键一环。这篇我会先讲清楚为什么需要PFC,再对比控制模式,然后重点拆解平均电流控制和相位补偿的实现细节,最后给出完整的Plecs仿真搭建步骤和调试实录。
1. 从为什么非做PFC不可说起
1.1 功率因数低到底是谁的错
我们日常用的市电是正弦波电压,但绝大多数电子设备内部都是先整流再稳压,典型结构就是整流桥后面直接接大电解电容。这种电路只在交流电压峰值附近的一小段区间内导通充电,输入电流变成很窄的尖峰脉冲,波形严重偏离正弦。结果就是电流谐波含量高,功率因数可能只有0.5到0.7。
功率因数低意味着什么?电网要为此承担更大的无效电流,输配电损耗增加,线缆发热,变压器容量被白占。更关键的是,现代电气设备都有谐波限制标准,比如IEC 61000-3-2,出厂产品必须过检。所以PFC不是“锦上添花”,而是刚需。
PFC的核心作用就是让输入电流主动跟随输入电压的波形和相位,把整个负载等效成一个纯电阻。这时电压是正弦波,电流也是正弦波,功率因数接近1。对于开关电源工程师来说,PFC级几乎是前端标配。
1.2 Boost拓扑为什么是主流
实现PFC的拓扑主要有Boost、Buck、Buck-Boost和反激等,但Boost电路在PFC领域占据了统治地位。原因很实在:Boost的电感位于输入端,输入电流连续,意味着电流波形更平滑,谐波容易控制;管子驱动浮动,但控制起来不复杂;输入电压范围宽,输出必须高于峰值电压,这天然适合升压应用比如交流220V输入对应400V输出。
Boost PFC的工作过程也不难理解。整流桥输出的是正弦半波,Boost开关管以高频PWM动作,电感电流连续时,一个开关周期内输入电压、输出电压和占空比的关系满足:
[ \frac{V_{out}}{V_{in}} = \frac{1}{1-D} ]
所以占空比D会随着输入电压瞬时值不断变化,目的只有一个:让电感电流的平均值按正弦规律跟着输入电压走。这个“让电流跟随电压”的过程,就是PFC控制要干的事。
2. 控制策略选型:CCM平均电流控制为什么合适
2.1 DCM、BCM、CCM,怎么选
Boost PFC可以工作在电感电流断续模式(DCM)、临界导通模式(BCM)和电流连续模式(CCM)。它们各有各的主场,不能一概而论。
| 模式 | 电流形态 | 二极管反向恢复 | 控制复杂度 | 适用功率 |
|---|---|---|---|---|
| DCM | 电感电流断续 | 无,零电流关断 | 最简单 | 几百瓦以下 |
| BCM | 电流临界连续 | 轻微,谷底开通 | 需变频控制 | 中低功率 |
| CCM | 电感电流连续 | 严重,需快恢复管 | 需要环路补偿 | 几百瓦到数千瓦 |
DCM的好处是天然实现零电流关断,二极管没有反向恢复问题,但电流峰值大,器件应力高,EMI也不好处理。BCM做变频,峰值电流仍然不小,适合中等功率。CCM虽然二极管反向恢复是痛点,但电流纹波小、峰值电流低,适合中大功率,配合快恢复二极管或SiC二极管,问题完全可以克服。
2.2 平均电流控制是怎么个工作法
CCM模式下最常用的控制方法是平均电流控制。它的基本结构是双环:电压外环负责稳定输出电压,电流内环负责让输入电流的波形和相位紧跟参考值。
电流参考怎么来?关键在这:电压外环的输出,它代表的是负载功率级别,把这个直流信号与输入电压瞬时值归一化后的波形相乘,就得到了电流参考信号。这个参考在形状上就是正弦半波,幅度由功率需求决定。电流内环把采样到的实际电感电流与参考值做误差放大,误差放大器的输出直接送给PWM比较器,产生驱动占空比。
和峰值电流控制相比,平均电流控制的最大优势是“算的是平均值,不是尖峰值”。峰值电流控制用一个电流采样结果和斜坡比较,电路里电流波形尤其是电感电流纹波会影响占空比的产生方式,谐波大,而且对噪声敏感。平均电流控制则有专门的误差放大器,可以把高频开关纹波当作交流量处理掉,只对低频的电流平均值进行精确跟踪,输入电流的正弦度更高。
所以从工程角度讲,CCM平均电流控制是兼顾动态响应、波形质量和抗干扰能力的优选方案。这也是整个项目选择这一控制策略的原因。
3. 电流相位补偿控制是怎么回事
3.1 相位误差藏在哪
理论上PFC的目标是输入电流和输入电压同频同相,但实际上总是存在相位滞后。这个滞后来自哪里?首先是采样滤波,比如输入电压采样和电流采样都需要低通滤波来抑制高频毛刺,滤波器会产生相移。其次是开关周期导致的平均延迟,PWM更新占空比有一个开关周期的固有延迟。第三是电流环带宽有限,带宽越高相位滞后越小,但带宽受稳定性和采样延时限制,不可能无限提高。
更隐蔽的是数字控制中的一拍延迟:如果使用单片机或DSP,AD采样、算法计算和PWM更新还会多一个执行周期的滞后。这个相位差在高频段尤其明显,直接造成功率因数下降、无功分量增多。如果不做补偿,输入电流和电压就会有一个几度到十几度的相位差,功率因数可能从0.99掉到0.96。
3.2 相位补偿的基本思路
补偿的思路就是“对症下药”。最简单的方法是在电流采样回路里串一个一阶超前校正网络,让采样到的电流信号相对真实电流提前一个角度。也可以调整电流环比例积分参数,提高穿越频率来减小相位滞后。更高级的做法是在参考电流中叠加一个与输入电压导数成比例的分量,等效于构造一个虚拟阻抗,或者采用电网电压前馈方式直接抵消电源阻抗的影响。
在Plecs仿真里,比较实用的是加一个相位超前补偿器。补偿器传递函数可以写成:
[ G_c(s) = K \cdot \frac{1+\alpha \cdot T_{lead}s}{1+T_{lead}s} ]
通过调节α和T_lead,可以在目标频率处提供需要的超前相角。这样不需要改变主电路,也不用动控制环路的整体参数,对原有系统影响最小。这个补偿环节加在电流误差放大器输出之前或电流采样支路都可以,但通常放在电流参考信号生成之后,因为过度补偿会造成高次谐波放大,需要多跑几次实验确定参数。
4. Plecs仿真搭建实操
4.1 主电路参数计算
仿真之前必须把主电路参数算准。这里以一个220V输入、400V输出、1kW功率的Boost PFC为例。
开关频率选100kHz,这是一个做电源仿真的常规选择,兼顾效率和磁性元件尺寸。输出电压400V,输入有效值220V,那么峰值电压约311V,Boost电感纹波电流取峰值电流的20%左右。
输入峰值电流估算:
[ I_{pk} = \frac{\sqrt{2}P_{out}}{V_{in_rms}} = \frac{1.414 \times 1000}{220} \approx 6.43A ]
电感电流纹波取2A左右。Boost电感大小计算公式近似为:
[ L = \frac{V_{in} \cdot D \cdot (1-D)}{f_{sw} \cdot \Delta I} ]
在峰值输入电压附近D最小,D≈(400-311)/400≈0.22,此时纹波电流与伏秒积的关系最紧张。按峰值点计算得到大约0.34mH。实际取1mH可以留足余量,但过大的电感会造成动态响应慢,所以一般选330μH到500μH。这个案例取400μH。
输出电容选择与保持时间和输出电压纹波有关。按维持时间20ms、功率1kW、输出400V、允许跌落到300V计算,需要的电容量是:
[ C = \frac{2 \cdot P \cdot t_{hold}}{V_{out}^2 - V_{min}^2} \approx \frac{2 \times 1000 \times 0.02}{400^2 - 300^2} ]
约等于571μF,取680μF。仿真中可以适当降低,因为主要看控制效果,不必完全按标准设计。
4.2 在Plecs里的模型搭建方式
Plecs最方便的地方在于它把电力电子开关器件模型和控制系统放在同一个仿真环境里,不需要像其他工具那样做分立器件级的SPICE建模。我用的Plecs Standalone,搭主电路非常直观。
主电路部分包括:交流电压源、整流桥、Boost电感、MOSFET、快恢复二极管、输出电容、负载电阻。Plecs里的开关器件直接选理想模型加导通电阻,仿真速度快,而且核心的控制逻辑不受开关模型复杂度影响。
控制部分在Plecs的Control子系统中搭建。电压采样经过比例分压得到输出电压反馈,和参考电压做差后送入电压环PI调节器。这个PI的输出乘以输入电压采样归一化波形,得到电流参考。电流参考与电感电流采样做差,经过电流环PI(或零点-极点补偿)后,输出给PWM比较器。占空比限幅在0.95左右,防止启动瞬间短路。
4.3 CCM平均电流控制的Plecs实现步骤
在Plecs里一步步来:
第一步,把主电路从电源到负载完整搭好,确认整流桥和Boost部分正确。注意电感电流采样点放在Boost电感下方并串联一个电流传感器。
第二步,生成输入电压归一化波形。将交流电压源采样信号整流后除以它的峰值(或者用RMS检测后归一化),得到一个0到1的半波波形。这个半波就是电流参考的形状来源。
第三步,搭建电压外环。输出电压与400V参考比较,经过PI输出一个直流电平,它代表电流参考的幅度。把这个直流电平乘以输入电压归一化波形,就得到实时的电流参考信号。
第四步,搭建电流内环。电感电流采样值与参考电流做差,经过电流环补偿器输出。平均电流控制中,这个补偿器通常用PI加极点或简单积分器,带宽设置在10kHz左右。电流环输出送入比较器。
第五步,PWM生成。用一个100kHz三角载波和电流环输出比较,输出经逻辑反向得到驱动信号。
第六步,加入电流相位补偿。在电流环输出或电流参考支路加入超前环节,先不加补偿跑一遍,记录功率因数和相位差,再加上补偿器看效果。
以上步骤听起来简单,但每个环节的PI参数和补偿位置都需要仔细调。Plecs里可以直接在控制系统里加传递函数模块,所以调参很快,这是它比硬件调试方便太多的地方。
4.4 相位补偿模块的接入位置
我最后把相位补偿器放在电流参考信号后面,而不是电流采样后面。原因是电流采样信号里包含开关纹波,在其后加超前环节会把高频噪声放大,反而干扰PWM比较器。参考信号相对干净,补偿器的超前作用直接让参考波形的相位前移,等效于把整个电流环的相位裕量补齐。
具体接法:补偿器输入是电流参考信号,输出连接到电流误差比较器的正端。补偿器传递函数用一阶超前: (\frac{1+0.001s}{1+0.0002s}),具体参数根据仿真结果迭代。跑出来后对比输入电压和输入电流的过零点,相位差明显缩小。
5. 仿真结果分析与调试实录
5.1 关键波形怎么判读
仿真跑起来以后,要看四个波形:输入电压、输入电流、输出电压、电感电流。
最直接的观察点是输入电压和输入电流的过零点是否一致,以及电流波形是否和电压同相位。理想情况下,两个波形应该完全同步,电流形状接近正弦半波。输出电压要稳定在400V附近,纹波包含两倍工频分量(100Hz或120Hz),这个电流是正常的,因为输出功率瞬时值本身是波动的。
电感电流在CCM模式下应该始终不小于零,纹波是锯齿状,开关频率为100kHz。如果电感电流有间断,说明掉出CCM了,需要增加功率或者增大电感。
加上相位补偿后,重点观察输入电流的过零点是否相对电压过零点提前了。如果提前,说明补偿过度;如果仍然滞后,说明补偿不足。补偿合适的表现是电流过零点严格对齐电压过零点,且启动阶段没有明显畸变。
5.2 调试中的典型问题
我在仿真中遇到的最大问题是电流环振荡。现象是电感电流和输入电流出现高频包络,输出电压还能稳住,但波形完全不对。排查发现是电流环PI参数太激进,比例系数过大,而且补偿器在感应的频率处引入了额外的正反馈。
解决方法是把电流环穿越频率降到5kHz左右,比例增益减到原来的一半,积分积分时间稍微降低以保持直流增益。重新跑之后波形干净了。
另一个问题是启动瞬间输出电压过冲很大,超过430V。原因很简单:启动时输出电容上没有电,电压环输出接近饱和,电流参考瞬变到很大,导致电容过冲。解决方法是给电压环输出加缓启动限幅,比如用斜坡函数让参考从0缓慢升到400V,或者限制电流参考最大值。仿真里用Slew Rate限速器最方便。
还遇到过一个PFC不工作的坑:Plecs里的调制器默认是单极性三角波,我用双边沿对称载波时,比较器输出频率翻倍,控制逻辑乱了。检查后发现PWM模块的载波周期设置和开关频率搞混了。这些都是仿真里很容易忽略的细节。
5.3 常见问题排查速查表
| 现象 | 可能原因 | 处理办法 |
|---|---|---|
| 输入电流严重削顶 | 电流参考信号饱和 | 放宽占空比限幅,检查乘法器输出范围 |
| 电流相位明显滞后 | 电流环路带宽较低 | 提升电流环穿越频率,或加超前补偿 |
| 电感电流断续 | 轻载或电感偏小 | 降低开关频率或加大电感量 |
| 输出过冲大 | 启动无软启动或电压环过调 | 加缓启动,限制电压环输出 |
| 开关管电压尖峰 | 寄生电感/理想模型噪声 | 检查吸收电路,或Plecs中用带杂散参数模型 |
| 功率因数不稳定 | 电流参考毛刺 | 对输入电压采样滤波,或补偿器带宽太高 |
6. 一点个人经验
仿真做完再回头想,最重要的不是把电路跑通,而是把每个环节的作用边界弄清楚。平均电流控制之所以好用,恰恰是因为它把“电流平均值”这个概念做到了可控制,而相位补偿则是精准地修正了系统固有延迟这幅眼镜。没有补偿,波形看着也还行,功率因数0.95也不错,但补偿之后就知道了什么叫做电压电流严丝合缝。Plecs这种基于理想器件的仿真工具,很适合做控制策略的快速验证,在软件里调相位补偿器的参数,比硬件改板子不知道快多少倍。不过也正因为模型理想,仿真结果看起来完美,落到硬件要注意采样噪声和延迟会重新引入相位误差。建议在做PCB之前,先在Plecs里把补偿参数范围摸清楚,再到硬件上做小范围微调,能省掉很多返工时间。如果后面有时间,我打算再把数字控制的一拍延迟和采样保持加进仿真里,对比一下理想模拟控制与数字控制的差距,这会是另一个有意思的坑。