
前阵子整理旧硬盘里的仿真文件翻出一个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它的输出是一个慢变的功率/幅度信号电流内环负责“跟”——让电感电流逼近期望的电流参考波形。信号流是这么走的输出电压经过分压采样与参考电压比较误差进入电压环PI调节器电压环PI的输出乘以输入电压的采样波形得到电流参考I_ref电感电流采样与I_ref比较误差进入电流环PI调节器电流环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 设计目标和主电路参数计算先给出一组完整的仿真设计参数方便你有依据地复现。参数数值输入电压有效值230V180~265V范围验证电网频率50Hz输出电压400V DC额定功率1000W开关频率200kHzBoost电感300μH输出电容470μF负载电阻160Ω电感值的设计依据是电流纹波。最低输入电压180V时输入电流峰值约I_pk √2 × 1000 / 180 ≈ 7.86A。按峰值电流20%的纹波预算纹波电流约1.6A。Boost电感纹波的最恶劣工况出现在V_in V_out/2附近此时占空比d 0.5L 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:1400V对应4V采样值电压参考就设为4V。电压误差进PI调节器输出限幅在合理范围防止启动时电流过冲。输入电压的采样波形经过缩放后与电压环输出相乘得到电流参考。电流采样用1A/V的增益把电感电流转换成电压信号与电流参考比较后进入电流环PI输出占空比指令送入PWM模块生成200kHz门极信号。Plecs里有现成的PWM调制模块也可以用三角波发生器加比较器自己搭效果一样。相位补偿就插在输入电压采样到乘法器之间——或者更准确地说插在“整流电压信号”这一路用一个Delay模块实现固定延时。补偿角按满载需求先设一个小值比如满载时0.65°对应时间延时约36μs50Hz工频下。这样放进去跑一轮先看波形方向对不对。4.4 用AC Sweep整定电流环与电压环PIPlecs最值得利用的功能之一是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补偿后THD100W0.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直接导成表格数据。这个脚本化思路能省掉大量手工改参数的时间也让补偿角的取舍决策变得非常直观。做电源仿真把效率花在反复手工试参上是最不划算的养成参数扫描的习惯比任何建模技巧都更值钱。