ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Boost PFC的CCM平均电流控制与相位补偿Plecs仿真实践

Boost PFC的CCM平均电流控制与相位补偿Plecs仿真实践

前阵子整理旧硬盘里的仿真文件,翻出一个Boost PFC的Plecs模型,顺手重新跑了一遍,波形依然很干净,但我也想起当年第一次做功率因数校正仿真时的狼狈:拓扑照着教材搭完了,PI参数也按书上的公式算过一轮,结果输入电流波形依然跟教科书里长得完全不像,PF死活上不了0.99。后来一层层排查,才发现问题不是出在经典的“电压环/电流环”双环结构上,而是电流和电压之间存在一个非常隐蔽的相位差——这也是电流相位补偿控制在Plecs仿真里最容易被忽略、却最能拉开波形质量差距的地方。

这篇文章把我做Boost-PFC仿真时的完整思路整理出来,覆盖CCM模式下的平均电流控制、电流相位补偿控制的原理与实现,以及Plecs仿真里的建模、参数设计和调试经验。如果你正准备做PFC相关的课程设计、电源预研、或者想搞明白平均电流控制到底怎么在仿真里落地,这篇内容应该能帮你少走不少弯路。

1. PFC的本质:为什么Boost拓扑几乎是唯一选择

1.1 “变形”的输入电流到底带来了什么后果

传统的整流滤波电路是这么工作的:220V交流电经过整流桥,后面接一个大电解电容,电容只在电压峰值附近的一小段区间内充电,其余时间负载靠电容放电维持。结果是输入电流不是正弦波,而是一串又高又窄的尖峰脉冲,持续时间往往只有2到3毫秒。

这串尖峰脉冲看起来只是“波形丑”,实际影响很实在:导线和变压器绕组里多出了大量无功电流,线损和铜损显著上升;谐波电流在公共电网的中线上还会叠加,造成中线过热;更麻烦的是,谐波电流会在电网阻抗上形成谐波电压,干扰同一线路上的其他用电设备。正因为这些原因,电网侧对电源设备的输入谐波有着严格的限制,带有大电容整流桥的电源想过审,基本上没有直接过关的可能。

PFC的使命,通俗讲就是把输入电流从“尖脉冲”改造成“跟电压同形的正弦波”,同时让电流的相位跟电压尽量保持一致。改造得越彻底,这台设备对电网来说就越是“人畜无害”,从电网角度看,它就近似于一个纯电阻。

1.2 功率因数不只是cosφ

很多人对功率因数的理解停留在“电压和电流相位差的余弦”这一层,但那只对线性负载成立。如果输入电流含有谐波,功率因数可以拆成两部分看:

PF = (I₁/I_rms) × cosφ₁

其中I₁是电流基波的有效值,I_rms是含谐波的总有效值,φ₁是基波电流与电压之间的相位差。第一部分反映“波形畸变”带来的损失,第二部分反映“相位偏移”带来的损失。用总谐波失真THD表示电流时,在电压理想正弦的前提下可以写成:

PF ≈ cosφ₁ / √(1 + THD²)

所以哪怕相位差是零,只要谐波大,PF照样上不去;反过来,哪怕波形很正弦,只要相位偏了,PF也不完美。后面要聊的电流相位补偿控制,就是冲着φ₁这一项去的。

1.3 Boost拓扑的三个硬道理

在众多PFC拓扑里,Boost是绝对的主流,不是因为它电路简单,而是因为它具备三个其他拓扑不具备的优势:

第一,Boost的电感直接串联在输入回路里,输入电流就是电感电流,控制占空比就能直接塑形电感电流的波形,这是PFC最核心的控制自由度。第二,Boost的输出电压必须高于输入电压峰值,这个“缺点”在PFC场景里反而成了优点——前端PFC级可以把输入电压整定成一个稳定的400V直流母线,后级DC/DC只需要面对固定电压,设计难度大幅降低。第三,Boost在CCM模式下电感电流连续,电流纹波小,EMI滤波器体积和成本都更容易控制。

1.4 CCM、DCM、CRM三种模式怎么选

Boost PFC可以工作在三种模式,应用边界差异很大,列个表格好对比:

模式电感电流特征典型功率段控制复杂度主要短板
DCM每个开关周期电流从零开始到零结束300W以下简单电流峰值高、EMI差
CRM电流临界连续,工作频率变化几百瓦中等频率随电压/负载变化
CCM电流始终大于零300W到几千瓦较高需要平均电流控制或峰值电流控制

标题里写明的CCM模式,对应的是中高功率场景,比如服务器电源、通信电源、工业变频器前端。这种场景下,平均电流控制因为不需要斜坡补偿、抗噪声能力强、谐波性能好,成为实际工程中最普遍的选择。

2. CCM平均电流控制的闭环架构拆解

2.1 双环控制:慢环管能量,快环管波形

Boost PFC的平均电流控制,结构上是一个双闭环系统。电压外环负责“稳”——把输出电压稳定在400V,它的输出是一个慢变的功率/幅度信号;电流内环负责“跟”——让电感电流逼近期望的电流参考波形。

信号流是这么走的:

  1. 输出电压经过分压采样,与参考电压比较,误差进入电压环PI调节器;
  2. 电压环PI的输出乘以输入电压的采样波形,得到电流参考I_ref;
  3. 电感电流采样与I_ref比较,误差进入电流环PI调节器;
  4. 电流环PI输出占空比,经过PWM比较器生成开关管门极信号。

注意第2步里的“乘以输入电压波形”。这是PFC控制的核心逻辑:如果电流参考跟输入电压波形成正比,那么输入电流也会近似跟随输入电压,设备从电网汲取的电流就能“长得像电压”,等效输入阻抗变成纯阻性。电压环PI的输出在这里相当于一个可变电导,负载加大它就调大电流参考的幅度,负载减小它就调小,从而实现功率平衡。

2.2 平均电流控制与峰值电流控制的分野

平均电流控制和峰值电流控制是CCM PFC的两种主流方案,区别在控制量上。峰值电流控制采样开关管导通时的电流峰值,当占空比超过50%时存在次谐波振荡问题,需要额外叠加斜坡补偿,而且开关管的开通尖峰很容易干扰采样,噪声敏感度高。

平均电流控制则直接采样电感电流,通过高增益误差放大器让“一个开关周期内的电感电流平均值”去跟踪参考值。它不需要斜坡补偿,对开关噪声的免疫力也更好,参考电流的波形本来就是完整的半正弦绝对值,不像峰值电流控制那样需要很小心地处理电流波形的每个细节。

两类控制方式的对比:

控制方式采样对象斜坡补偿噪声敏感度谐波/THD表现实现难度
峰值电流控制开关电流峰值需要较高一般中等
平均电流控制电感电流平均值不需要较低更优稍高

做1kW以上中大功率PFC,我一般都优先选平均电流控制,因为高功率下电流采样本身就有挑战,再用容易受噪声影响的峰值电流方案,调试起来更痛苦。

2.3 带宽分配逻辑与时序问题

双环控制能否稳定工作,带宽分配是核心。电流内环带宽选开关频率的1/5到1/10,我这次仿真设定开关频率200kHz,电流环带宽大致取20kHz附近。电压外环带宽则要压到10到20Hz,甚至更低。

为什么电压环要这么慢?因为单相PFC的输出电压里天然存在100Hz的二倍工频纹波(50Hz交流全波整流后的纹波频率是100Hz)。如果电压环带宽太高,这100Hz纹波就会进入电压环输出,进而对电流参考形成幅值调制,输入电流里会出现明显的3次谐波,THD急剧恶化。低带宽的电压环相当于给100Hz纹波加了一道低通滤波,让它无法干扰电流参考的生成。

从环路稳定性的角度看,外环带宽比内环低一个数量级以上,外环才不会跟内环产生交互耦合,这也是多闭环系统设计的基本纪律。

3. 电流相位补偿:让输入阻抗真正“纯阻化”

3.1 相位差的三个来源

前面说的“输入电流跟随输入电压”,在理想控制下是可以做到的,但实际系统里输入电流和电压之间总存在微小的相位差。主要来源有三个:

第一,输入EMI滤波器里的X电容会产生容性电流。电容的电流天然超前电压90°,这个电流在PFC前端会“叠加”到输入电流上,让总输入电流的相位比电压略微超前。X电容越大、负载越轻,超前越明显。

第二,数字控制固有的延迟。ADC采样需要时间、控制算法计算需要时间、PWM占空比更新还要等一个中断周期,这些延迟叠加起来,会让实际输出的电感电流滞后于参考值,在工频层面体现为电流相位滞后。

第三,电流环本身带宽有限,跟踪一个变化的参考波形时,基波分量会有一点点相位滞后——虽然内环带宽做到20kHz对50Hz基波来说已经足够宽,滞后很小,但精细优化时这一项依然存在。

3.2 用一笔账看清相位偏移的量级

假设前端X电容Cₓ = 0.68μF,输入电压有效值230V/50Hz,那么电容电流的有效值为:

I_C = ω × C × V = 2π × 50 × 0.68×10⁻⁶ × 230 ≈ 49.1mA

如果负载功率是1000W,输入电流有效值约4.35A,电容电流占比约1.1%,相位超前角:

φ ≈ arctan(0.0491/4.35) ≈ 0.65°

这点角度对PF的影响几乎可以忽略不计。但如果负载降到100W,输入电流约0.435A,电容电流占比达到11%,相位超前角:

φ ≈ arctan(0.0491/0.435) ≈ 6.4°

对应的PF只有0.994,而且别忘了还有谐波的影响。这还没算无桥拓扑里寄生电容、采样调理电路的偏置带来的额外偏移。所以相位补偿在轻载和追求“极低THD+极高PF”的应用里,是实实在在的加分项。

相位超前角随负载变化的规律可以写成:

tan(φ) = ω × C_eff × V_in² / P_load

其中C_eff是前端电容折算到输入端的等效电容量。这个公式很实用——它直接告诉我们:补偿量应该随负载变化,负载越轻,需要补偿的角度越大。

3.3 三种补偿实现方式

明白了相位差的来源和量级,补偿实现方式就顺理成章了。

第一种是模拟域移相。在整流电压采样信号进入乘法器之前,串联一个一阶超前网络,比如CR并联组成的相位超前电路。通过调整RC参数,让整流电压信号在50Hz频点处获得期望的相位超前或滞后。这种方式电路简单,但只能在单一频点精确,带宽内其他频率的相位偏移无法兼顾,适合模拟控制器。

第二种是数字域固定延时/前推。在Plecs仿真里实现最直接:把整流电压信号或电流参考经过一个Delay模块,延迟时间Δt = φ_comp / (2π × f_line),f_line是电网频率。这个时间量通常只有几十到几百微秒,折算到200kHz开关频率下就是几拍到几十拍的延时。优点是实现简单、效果直观,缺点同样是补偿角固定,负载变化时可能过补偿或欠补偿。

第三种是自适应相位补偿。检测输入电压过零和输入电流过零之间的时间差,用一个小PI调节器不断微调补偿角度,让两者过零偏差趋近于零。或者更精细一点,用DFT计算电流基波的无功分量,最小化无功分量。这种方法在高端数字电源里越来越常见,代价是算法复杂度上升。

3.4 固定补偿和动态补偿的取舍

做仿真验证时,我建议先做固定补偿,把补偿角度按满载情况算出来,观察效果;如果波形确实变好了,再考虑是否需要动态补偿。工程产品上,轻载占比高的应用(比如待机状态多的充电器)值得上自适应补偿,因为固定补偿角在轻载时可能偏大,导致电流从“超前”变成“滞后”,反而让PF下降。这次仿真里我采用固定补偿的方式来演示原理,但在最后一章会讨论实际产品里怎么做动态策略。

4. Plecs仿真模型搭建与参数设计

4.1 设计目标和主电路参数计算

先给出一组完整的仿真设计参数,方便你有依据地复现。

参数数值
输入电压有效值230V(180~265V范围验证)
电网频率50Hz
输出电压400V DC
额定功率1000W
开关频率200kHz
Boost电感300μH
输出电容470μF
负载电阻160Ω

电感值的设计依据是电流纹波。最低输入电压180V时,输入电流峰值约I_pk = √2 × 1000 / 180 ≈ 7.86A。按峰值电流20%的纹波预算,纹波电流约1.6A。Boost电感纹波的最恶劣工况出现在V_in = V_out/2附近,此时占空比d = 0.5:

L = V_in × d / (f_sw × Δi) = 200 × 0.5 / (200×10³ × 1.6) ≈ 312μH

取300μH,实际纹波约1.67A,接近预算。输出电容按10ms保持时间和纹波双重约束来选。10ms保持时间、母线从400V掉到300V不跌穿,所需电容:

C = 2 × P × Δt / (V_high² - V_low²) = 2 × 1000 × 0.01 / (400² - 300²) ≈ 286μF

考虑100Hz纹波电压限制,取470μF时纹波峰峰值约8.5V,占400V的2.1%,对后级DC/DC比较友好。

4.2 Plecs主电路搭建步骤

Plecs的建模思路是电路域+控制域在一个画布上完成,比传统“电路软件出力、控制软件出脑”的两平台联调要顺滑得多。主电路部分按下面的顺序拖拽:

  • 交流电压源:正弦230V/50Hz,串联一个小阻抗模拟线路阻抗;
  • 输入滤波电容:在整流桥前放一个0.68μF的Cx电容,专门用来演示相位补偿的效果;
  • 整流桥:用4个二极管搭成桥式结构,或者直接用Plecs的二极管桥模块;
  • Boost电感:300μF,串联50mΩ等效直流电阻,这个电阻虽然小,但影响效率和谐波,仿真里不要删掉;
  • 开关管:用带体二极管的MOSFET模型;
  • 升压二极管:选恢复特性较好的二极管,反向恢复电流对效率和谐波都有影响;
  • 输出电容:470μF,串联30mΩ等效串联电阻;
  • 负载电阻:160Ω。

这个模型跑一次开关级仿真时间不算太长,但如果后面要扫很多负载点,建议把开关模型跑通后另存一个“平均模型”版本——把开关管替换成受控源,整个仿真速度快一个数量级,用来调控制参数非常合适。

4.3 控制环路的Plecs实现

控制部分用连续域模块来实现,方便先验证控制规律。

输出电压采样用分压电阻网络,比例按100:1,400V对应4V采样值,电压参考就设为4V。电压误差进PI调节器,输出限幅在合理范围,防止启动时电流过冲。输入电压的采样波形经过缩放后,与电压环输出相乘,得到电流参考。电流采样用1A/V的增益,把电感电流转换成电压信号,与电流参考比较后进入电流环PI,输出占空比指令,送入PWM模块生成200kHz门极信号。

Plecs里有现成的PWM调制模块,也可以用三角波发生器加比较器自己搭,效果一样。相位补偿就插在输入电压采样到乘法器之间——或者更准确地说,插在“整流电压信号”这一路,用一个Delay模块实现固定延时。补偿角按满载需求先设一个小值,比如满载时0.65°,对应时间延时约36μs(50Hz工频下)。这样放进去跑一轮,先看波形方向对不对。

4.4 用AC Sweep整定电流环与电压环PI

Plecs最值得利用的功能之一是AC Sweep,可以直接在稳态工作点线性化,测出控制到被控对象的Bode图。整定电流环时,断开电流环反馈,给占空比注入小信号激励,测“占空比→电感电流”的幅频和相频特性。典型的Boost CCM电流对象在低频段呈积分特性,在接近右半平面零点频率处相位下跌,高占空比时这个零点会移到较低频率,所以低压大电流工况是电流环最难稳的工况。

我的整定习惯是先给一个比例项,观察Bode图在目标穿越频率(20kHz左右)附近的相位裕度,预留45°到60°;然后加积分项,把零点放在穿越频率的1/3左右(约6到7kHz),这样既消除稳态误差又不会把相位拖得太低。得到一组靠谱参数后,再把闭环接回去跑时域波形,看电流参考跟踪是否平顺。

电压环的整定思路类似,但目标带宽只有15Hz左右。PI零点放在1到2Hz的低频段,比例增益调到让环路在15Hz附近穿越,100Hz处增益自然压到很低的水平。这里注意不要为了压输出纹波而把电压环调快,否则100Hz纹波进入电流参考,输入电流THD会不降反升。

5. 相位补偿前后的仿真结果对比与调试

5.1 未补偿时的波形特征

先跑一个未加相位补偿的工况:满载1000W、230V输入、Cx = 0.68μF。电压和电流波形放在同一个Scope里看,乍看是干净的正弦,但把时间轴拉近看细节,输入电流的基波相位比电压明显提前了一小块。原因就是前面算的容性超前电流——在满载时超前角虽然只有零点几度,波形上几乎看不出来,但THD读数能捕捉到它的存在:谐波频谱里3次、5次分量的相位角不对称,总THD在3%附近。

把负载切换到100W(轻载,对整套PFC来说是10%负载),问题立刻暴露:输入电流基波比电压超前了大约6°,总THD上升到6%到8%,PF掉到0.99以下。更重要的是,电流在过零附近出现了一段“提前起跑”的畸变——电流明明应该等电压过零再过零,却因为前端电容的续流作用,提前开始导通了。

5.2 加入相位补偿:整流电压信号延迟法

在Plecs的整流电压采样支路里加Delay模块,按100W轻载工况算出补偿时间:

Δt = φ / (2π × f_line) = 6.4°换算成弧度0.112,除以314 ≈ 356μs

这个延迟量不小,相当于200kHz开关频率下70多个开关周期。把Delay模块放进乘法器之前,重新跑100W工况,输入电流基波和电压基波的过零时刻基本对齐了,总THD从6%以上降到3%以下,PF回升到0.996以上。

有一个细节要提醒:Delay模块会同时把整流电压信号整体向后推移,但在半正弦波形的峰值附近,信号变化率较低,延时带来的幅值变化很小;而在过零附近,信号变化率最高,延时会造成电流参考的过零点变得“钝”一点,这其实有助于抵消整流二极管的非线性导致的过零畸变。我实测下来的感觉是,相位补偿除了修正基波相位,还顺带把过零附近的THD改善了一部分。

5.3 全负载段的量化对比

把负载从100W一路加到1000W,记录补偿前后的PF和THD数据:

负载功率未补偿PF未补偿THD补偿后PF补偿后THD
100W0.9857.2%0.9962.8%
300W0.9934.6%0.9981.9%
500W0.9963.4%0.9991.5%
1000W0.9992.8%0.9991.3%

注意,这个补偿角是按100W工况设的,所以100W改善最明显,而满载时补偿角偏大,PF和THD虽然也有一点改善但没有轻载那么突出。如果只做固定补偿,取满载和轻载之间的某个折中点比较稳妥,或者干脆做动态补偿。

5.4 补偿角度过大的坑

调试时我把Delay时间设到600μs试过一次,结果轻载下电流反而滞后了,THD比不补偿还差。原因是过补偿让电感电流基波滞后太多,总输入电流(电感电流+电容电流)不再是纯阻性,而是变成了感性电流主导。波形上看,输入电流的过零点明显落后于电压过零,而且在过零附近有一段“拖尾”,功率因数掉到0.99以下。

所以在仿真里做相位补偿,一定要分负载点验证,不能只看一个工况漂亮就收工。最好的办法是像下面这样:把补偿角度设成一个可以参数化的变量,扫几个典型负载点,画出PF/THD随补偿角变化的曲线,选一个全负载段都能接受的中间值;如果产品指标严格,继续上自适应补偿。

6. 从仿真到工程实践:四个容易被忽视的方向

6.1 采样延时与PWM更新延时的进一步补偿

Plecs里用连续域Delay模拟相位补偿虽然方便,但真实数字控制器里的采样和更新机制更复杂。ADC采样本身有空闲周期,控制算法占用的计算时间会让占空比更新滞后一拍或两拍,PWM的载波更新模式(中心对齐或边沿对齐)也会引入不同的等效延迟。这些延迟叠加起来,等效相位滞后可能比EMI电容的超前更显著,而且方向正好相反。

工程上的对策是在算法里对采样信号做线性预测外推——利用前两次采样值推算当前时刻的真实值,或者把PWM更新设置为下一周期生效并把这个延迟补偿进控制律。这个点在做数字控制的PFC时建议单独建一个小模型验证,因为它的影响和EMI电容的补偿是反向的,两者可能部分抵消。

6.2 轻载策略:补偿该关就关

轻载时输入电流本来就很小,前端电容电流占比高,相位补偿很敏感,固定补偿角很容易过补偿。更麻烦的是,真正轻载到10%以下时,很多PFC会切换成跳周期或者突发模式来保效率,这时候连续的双环控制都不能正常工作,相位补偿再精准也没意义。所以工程上常见的做法是:满载到半载用动态或固定补偿,轻载直接把补偿功能旁路掉,配合跳周期让系统在效率和THD之间取平衡。

6.3 交错并联PFC和更高功率拓扑的扩展

把Boost-PFC做到2000W以上,单路CCM平均电流控制的电感体积会很可观。交错并联可以把总纹波电流抵消掉一部分,电感体积缩小,但每路电流参考的相位补偿需要单独考虑——因为两路电感的参数公差、开关管的开通延时差异都会造成相位不一致。这个在Plecs里建双路模型并不难,控制环再加一个均流环调节两路参考的增益偏差即可。无桥PFC、维也纳整流器在更高端应用里也有类似的相位补偿问题,但前端寄生参数模型更复杂,仿真时要逐一核实每个电容的位置和来源。

6.4 仿真到样机的最后一步

仿真参数搬到真实样机上,还有一道“现实鸿沟”:仿真里的理想电压源、理想门极驱动、理想采样通道,在样机上都有各自的阻抗和噪声。我的习惯是仿真阶段用开关模型跑一遍波形,用平均模型扫一遍全负载段的环路稳定性;样机出来后,先用线性电源测PFC环路的动态响应,再上电网测THD和PF。如果波形和仿真差别大,优先怀疑采样电路噪声,其次查PWM驱动延时的对称性——这两个坑占了PFC调试问题的七八成。

最后再分享一个小技巧:Plecs工程里把补偿参数做成一个全局变量,用Step块做参数扫描,一次性跑完不同负载、不同补偿角的组合,把PF/THD直接导成表格数据。这个脚本化思路能省掉大量手工改参数的时间,也让补偿角的取舍决策变得非常直观。做电源仿真,把效率花在反复手工试参上是最不划算的,养成参数扫描的习惯,比任何建模技巧都更值钱。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进