资讯动态

Boost-PFC平均电流控制与相位补偿:从原理到PLECS仿真验证

发布时间:2026/10/20 7:05:39 来源:尧图企业网站定制
做电力电子仿真的人多半被功率因数校正这件事折磨过。电路拓扑就那几个仿真软件也越用越熟但Boost-PFC跑到最后总会在过零畸变和相位偏差这两个问题上卡壳——输入电流看起来是正弦包络细看却跟输入电压差着角度轻载时THD一路飙上去PF眼睁睁掉到0.95以下。这篇文章就从Boost-PFC在CCM模式下的平均电流控制讲起把电流相位补偿控制拆开揉碎最后用PLECS从零搭一套能复现、能改参数的完整仿真把补偿前后的波形和指标对比摆出来。1. 为什么Boost拓扑成了PFC的主流CCM平均电流控制又赢在哪1.1 升压结构天然适合做功率因数校正Boost拓扑在PFC里的地位几乎是统治性的。原因不复杂电网输入经过整流桥之后电压波形是带脉动的馒头波这个时候你需要在后端得到一个稳定的直流电压同时又想让输入电流跟随输入电压的波形。Boost电路恰好是个升压结构输出电压高于输入峰值电压这给了控制环路一个天然的自由度——在输入电压低的时候开关管仍然可以把能量往输出端推。换句话说Boost天生支持输入电压从接近零到接近输出值的全范围工作。反激和正激虽然也能做PFC但一个受限于变压器漏感一个受限于占空比电流波形质量通常不如Boost来得干净。单级Boost-PFC结构简单没有变压器隔离需求磁性元件只有一只升压电感设计得好不好很大程度决定了整机的THD和PF上限。1.2 CCM平均电流控制相比其他方式的优势PFC的控制策略常见有三类临界导通模式BCM控制、峰值电流控制、平均电流控制。BCM控制适合小功率开关频率随输入电压变化比较大功率下磁性元件利用率不高。峰值电流控制在CCM下容易产生次谐波振荡必须在占空比超过0.5时加斜坡补偿试过的朋友都知道那个补偿斜坡的斜率调起来多费劲。平均电流控制走的是另一条路它直接检测电感电流的平均值用一个高增益的电流误差放大器把这个平均值强行跟踪到正弦参考上。因为电流环工作在平均意义上它对开关纹波不敏感占空比大于0.5也不会天然地不稳定更关键的是它天生适合数字化实现——采样点落在电流纹波的中点附近就可以得到非常干净的平均电流信息。这就是为什么标题里强调CCM平均电流控制它是在2kW这个量级上最容易调出漂亮电流波形的一套方案既有模拟实现的成熟经验也有数字控制时的清晰接口。2. CCM平均电流控制的双环架构与关键参数推算2.1 双环拆解电压外环、电流内环、乘法器平均电流控制的整体结构用一句话概括就是外环定幅、内环追形。电压外环采样输出电压和基准值比较后经过一个低带宽PI调节器输出一个代表电流幅值的信号。这个信号本身不直接决定电流大小它得和输入电压的单位正弦波形相乘得到一个与输入电压同相、幅值由负载决定的电流参考。所以乘法器在这个环路里不是辅助是灵魂。电流内环拿这个正弦参考和电感电流的实际采样值做差经过电流误差放大器后直接决定占空比。电流环开环增益越高跟踪误差越小电流波形越接近参考但也会带来噪声放大和次谐波风险。这个矛盾贯穿整个调试过程。三个关键采样点的增益要在建模之前定死不然控制参数完全没有计算基准。我习惯简化为输出电压采样增益Kv0.0025对应400V时反馈1V电感电流采样增益Ki0.05V/A20mV/APWM调制器三角波幅值Vtri1V。这些参数确定之后环路计算才有确定的数值基础。2.2 电感量和输出电容怎么定先看一个常见的设计目标输入交流220V、50Hz输出直流400V额定功率2kW开关频率100kHz负载等效约80Ω。电感量主要由电流纹波决定。Boost电感在输入电压峰值附近的纹波最大因为这里占空比和电压同时处于不利组合。按纹波系数20%的工程惯例来算电感电流峰值接近13.5A允许纹波约2.7A对应电感量大约300uH。如果按10%纹波要求需要大概600uH。我在实际调试中通常取600uH这个档位因为PFC电感还要考虑启动冲击和动态过程留出峰值裕量比一味压纹波更现实。输出电容则不是按开关纹波来选的而是按电网频率的二次功率脉动来选。电网50Hz整流后功率脉动是100Hz输出电容必须能吸收这部分能量才能把电压纹波压低。粗略估算公式是C≈P/(2π×f_line×ΔV×Vo)把纹波做到5V以内算出来大约需要3200uF实际工程里受体积和成本限制常用2200uF对应电压纹波7V左右。这个7V纹波会在电压环输出端造成小幅波动电流参考的幅值也跟着轻微波动属于正常现象后面电流相位补偿不针对这个。2.3 电流环PI参数的地推过程说句实话PI参数永远以仿真和实测为准但理论估算能给你一个靠谱的初始值不至于盲调。电流内环的被控对象在CCM下可以近似成控制量占空比到电感电流的传递函数约等于Vout/(sL)。代入400V和600uH就是6.67e5/s典型的一阶积分特性增益随频率升高而下降。设计目标把电流环交叉频率定在5kHz左右对象在这个频率的增益约21.2A。乘上电流采样增益0.05和调制器增益1/1反馈回路给到比较器的信号约1.06V/V。这意味着PI调节器在5kHz附近只需要约0.94的增益就能让开环增益穿越。PI零点我习惯放在交叉频率的1/10到1/5之间取500Hz左右。算出来一组初始参数大致是Kp≈0.9Ki≈2800。实际跑仿真时会发现这个参数下系统稳定但相位裕度不到15度动态压降后会有明显振铃。所以我通常会把Kp往下调到0.6到0.7同时给电流环加一点输入电压前馈把相位裕度垫上去。这个加前馈提相位的做法比单纯减增益更有效。3. 电流相位补偿到底在补什么又该怎么补3.1 输入电流和输入电压之间的相位差从哪来很多人以为只要电流环跟踪理想正弦参考输入电流就和输入电压同相了。实际跑过仿真的都知道不是这么回事。你仔细看稳态波形电流过零的时刻往往比电压过零晚一点点或者早一点点这就是相位偏差。相位偏差的来源主要有三个。第一个是电流环本身的有限带宽和相位滞后参考是正弦电流环跟踪正弦时会有固有的相位延迟频率越高、带宽越低越明显。第二个是数字控制里的采样和计算延迟DSP从ADC采样到发出新占空比通常要等一个甚至好几个开关周期这个延迟直接转换成相位滞后。第三个是输入端的EMI滤波电容它会让输入市电电流超前于电压等效于给电流相位加上了一个正角。三个因素叠加方向可能一致可能抵消所以相位补偿不是固定加一个角就完事要用负载前馈或其他手段做动态补偿。3.2 过零畸变为什么是PF和THD的沉默杀手除了相位偏差平均电流控制还有一个老大难输入电流过零附近的总畸变。原因是整流桥在电流过零时进入换向区二极管导通压降在低电流时占的比例突然变大电流参考在这个区域又非常小电流环的跟踪误差被相对放大结果电流波形在过零附近出现一段平台或者凹陷。这段平台的持续时间通常只有几百微秒但对THD的贡献非常大因为畸变集中在相位0度和180度附近会引入明显的奇次谐波。3次谐波一多THD直线上升PF自然掉下来。这就是为什么你看到很多PFC控制器芯片内部都有专门针对过零的补偿电路。电流相位补偿控制中的补偿在工程实现上其实包含两层意思一层是补偿基波的相位偏差让电流基准整体超前或滞后一点抵消环路和滤波电容带来的相移另一层是在过零附近对参考波形做修形比如在低角度区域插入一个补偿脉冲或叠加一个校正项把平台期顶起来。两层配合才能把PF从0.95拉到0.99以上。3.3 补偿逻辑在PLECS里的实现思路PLECS里做相位补偿我推荐直接在电流参考生成链路上动手。整个链路是电压环输出电流幅值IampPLL给出输入电压相位θ电流参考等于Iamp乘以sin(θφ)φ就是补偿角。φ本身不该是常数。轻载时电流小过零畸变占比大需要更大的补偿满载时电流大环路跟踪相对充足补偿可以小一些。最简单的线性化做法φk0k1×Iampk0负责抵消固定相移k1负责随负载变化。在PLECS里可以用两个增益模块加一个加法器就搭出来也可以写成C-Script逻辑更清晰。需要提醒的是补偿角的方向有讲究。如果观测到输入电流滞后电压说明补偿角应该为正让参考提前如果是因为EMI电容造成输入电流超前往往要反着来。实际调的时候先跑两组不同补偿角下的波形一眼就能看出该往哪个方向补。4. 在PLECS里把整套模型从零搭出来4.1 为什么用PLECS而不是通用电路仿真器PLECS和通用电路仿真器之间最大的差别在于它把电路分成了电气域和控制域两个部分控制模型可以直接用模块搭不用绕一大圈做接口转换。仿Boost-PFC这种强非线性系统PLECS的分段线性算法在开关切换瞬间的处理非常利索仿真速度快波形也干净。另外一个很实际的优势是PLECS的元件模型自带很多工程化参数比如开关管的导通电阻、二极管的正向导通压降和反向恢复特性、电感的饱和曲线。早期验证控制逻辑可以用理想开关模型跑后期想评估损耗和温升可以逐步把模型升级成带热特性的版本。这种从功能验证一路平滑过渡到性能仿真的体验用其他工具很难这么顺手。4.2 主功率电路搭建步骤在PLECS里新建一个模型先在电路域里把主功率回路搭出来。元件依次是交流电压源220Vrms、50Hz、二极管整流桥、升压电感、功率开关、升压二极管、输出电容、负载电阻。元件选型的细节上功率开关我第一个版本直接用理想开关把门极信号接到控制域确认环路逻辑没问题之后再换成型器件。升压二极管不能一直用理想模型至少要设一个0.7V左右的正向导通压降和一个反向恢复时间参数否则过零畸变会被严重低估。输出电容2200uF但要给它串一个几十毫欧的等效串联电阻否则电压纹波波形会显得过于理想影响后续电压环的调试手感。电感我建议直接设置成带饱和拐点的非线性电感饱和电流设成额定峰值电流的1.5倍左右。PFC电感在启动或输入电压骤变时非常容易出现电流尖峰线性电感根本暴露不了这个问题非线性的才能让控制环路提前发现问题。4.3 控制电路的模块化搭建控制域里的核心模块有这几个电压采样后的误差比较器、电压环PI、乘法器、PLL、电流参考生成、电流误差比较器、电流环PI、PWM调制器。PLL用PLECS控制库里的现成模块输出输入电压的相位角。电压环PI的输出接到乘法器一端另一端接PLL给出的单位正弦波乘法器输出就是原始的电流参考。电流参考加完相位补偿角之后和电感电流采样值做差送进电流环PIPI输出和三角波比较生成占空比。这里有一个容易忽略的设置PWM调制器的三角波频率要设为100kHz三角波幅值要和你前面计算用的Vtri一致也就是1V。很多人在PLECS里发现占空比不对或者输出发偏多半是三角波幅值默认值和自己算环路时假定值不一致。搭完控制域之后别忘了加一个软启动逻辑。最简单的做法是给电压基准加一个斜坡从0爬升到400V爬升时间100ms左右。没有软启动电容充电瞬间电流环会饱和整个环路直接拉出一个很大的过冲反而搞不清楚是控制参数的问题还是启动的问题。4.4 相位补偿模块的两种建模方式第一种是纯模块化方式PLL相位角经过一个增益k_p再加上一个常数偏置k0然后和PLL原相位相加送进正弦模块做参考波形。这种方式直观适合先验证补偿方向。第二种是C-Script方式代码类似下面这样/* PLECS C-Script 示例 */ /* 输入: theta, iamp; 输出: iref */ static const double k0 -0.03; /* 固定相位补偿 */ static const double k1 0.002; /* 负载相关补偿系数 */ double phi; phi k0 k1 * iamp; iref iamp * sin(theta phi);用C-Script的好处是后续想加入查表式补偿、自适应补偿或者温度修正都只在脚本里改公式不用动电路结构。我最终在仿真里用的就是这种方式调参效率比改模块连线高很多。5. 仿真波形解读关键指标与补偿前后对比5.1 补偿前后的波形差异把仿真时间设到0.4秒留足8个工频周期让环路进入稳态然后抓稳态段波形。观察输入电流和输入电压的关系以及电感电流在过零附近的行为。我实际拿到的对比数据非常典型。补偿前的波形输入电流整体看起来是正弦但过零附近有一段明显的平坦区持续大约200到300微秒同时电流峰值略微滞后于电压峰值大约滞后2到3度。用FFT工具看频谱3、5、7次谐波都比较突出3次谐波含量接近4%总THD大约8%PF在0.96左右。加上相位补偿并微调补偿角后过零平台明显收窄电流波形在过零处恢复成了接近线性的斜波谐波含量大幅下降。3次谐波降到1%以内总THD降到3%以下PF达到0.993以上。这个提升在波形图上一目了然——补偿前后的电流波形放在一起过零区域的差异肉眼可见。5.2 PF和THD怎么统计才算有效统计指标的时候要特别注意稳态窗口的选择。很多人在仿真还没进入稳态就开始计算前几个周期的波形明显不对算出来的THD毫无参考价值。我习惯先等0.2秒或者0.3秒再截取连续几个完整工频周期做分析。PLECS的示波器自带FFT功能可以直接看谐波频谱但要注意FFT窗口的长度。如果窗口长度不是完整周期的整数倍频谱会泄漏谐波数值会偏高。正确做法是把FFT窗口长度设成10个工频周期即0.2秒这样频率分辨率正好是5Hz50Hz的各次谐波都落在谱线的整数倍位置读出来才准。另外THD有包含谐波到第几次的口径差异。有些软件默认算到第40次有些算到第50次对比不同来源的数据时先确认口径一致不然数字差个1%可能不是控制变差的锅是统计方式不同。5.3 动态响应测试负载突变和输入电压跳变静态指标漂亮还不够PFC还得看动态行为。我在仿真里做了两个典型测试。第一个是负载突变满载2kW突然降到半载1kW观察输出电压的恢复过程。电压环带宽低负载突变后输出电压肯定有一个小跌落大约10到20V然后经过几十毫秒回到400V。这时候要注意电流参考有没有出现振荡如果相位补偿系数在满载时调得偏大半载时可能变成过补偿电流波形会出现一个缓慢的锯齿状波动这是补偿角与负载不再匹配的典型症状。第二个是输入电压跳变220V突然升到264V或者降到176V观察输入电流有没有尖峰或者断续。输入电压突升时占空比需要瞬变电流环如果带宽不够会出现一个持续几十毫秒的电流凹陷。调相位补偿系数时要兼顾这种动态工况不能只盯着稳态满载的THD。6. 调试中容易踩的坑和实际经验6.1 电流环过冲和振铃的根源我第一次把电流环Kp往上提的时候电流波形没有变得更平滑反而在开关管开通的瞬间出现明显的振铃示波器波形像被狗啃过一样。排查下来发现是电流反馈信号里的开关纹波被放大器高倍放大了。平均电流控制的设计目标本来是让误差放大器平均掉纹波但PLECS里如果采样回路用理想传感器直接做瞬时反馈误差放大器的带宽内会混入大量高频分量。解决办法有两个方向一是把电流采样环节做成带低通特征的模型模拟真实采样电阻加滤波电容的效果二是降低电流环交叉频率避开开关频率附近的增益峰。我最终把电流环交叉频率从8kHz压到5kHz振铃就消失了PF和THD并没有劣化多少。6.2 过零畸变怎么继续优化相位补偿能解决大部分过零问题但极端轻载下还是很顽固。我习惯在轻载时单独加大补偿系数实测效果最好的做法是用分段线性补偿满载时φ1度半载时φ3度10%负载时φ7度。直接在C-Script里写一个if-else结构就能完成。还有一招在很多芯片内部都见过就是在过零区域临时降低电流环的积分增益防止误差放大器在参考过零时被拉死。这个操作在PLECS里实现稍显复杂需要检测过零区间并切换PI参数但效果立竿见影电流过零处的尾巴能彻底收干净。如果你做的是产品级的PFC值得花时间把这个逻辑加进去。6.3 不同工况下的参数适配思路仿真调参和实物调试有一个共同的规律不存在一组参数能覆盖所有工况。满载优化的参数轻载往往过补偿轻载优化的参数满载又欠补偿。合理做法是把工况分成满载、半载、轻载三档分别记录最优补偿系数然后在控制代码里定义一个以负载电流为自变量的补偿系数查找表中间段用线性插值。PLECS里可以用一维插值模块直接实现非常方便C-Script里也可以用表格查值。另外别忘了输入电压的影响。高压输入和低压输入下整流后峰值电压差很大占空比工作区域也完全不同固定一套补偿系数肯定不够。我自己在仿真里会把输入电压也加进补偿系数的计算用一个两输入一输出的查找表输入是负载电流和输入电压有效值输出是补偿角。搭建起来并不麻烦但对全工况的PF一致性提升非常明显。做Boost-PFC仿真这件事最难的部分往往不是搭模型而是搞清楚每个补偿环节背后的物理含义。电流相位补偿听起来像是一个锦上添花的小功能实际跑完对比数据你就会发现它才是把PF从勉强能用推向真正漂亮的临门一脚。建议你搭好模型之后先刻意取消相位补偿跑一遍满载和轻载记录下THD和PF的数值再加回补偿做同样测试把两组数据贴在仿真报告里——这种直观的对比比单纯背诵控制理论有用得多。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑