ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

Boost-PFC仿真实战:CCM平均电流控制与电流相位补偿全解析

Boost-PFC仿真实战:CCM平均电流控制与电流相位补偿全解析

搞PFC仿真这件事,很多人模型搭得出来,波形却一直不大体面。我最早做Boost-PFC仿真的时候,主电路参数照着资料抄,CCM平均电流控制也写对了,结果一跑起来,输入电流又歪又尖,PF只有0.84,功率因数这根硬指标直接让整个方案没法看。后来折腾了很长时间才明白,问题往往不是控制环路的大框架,而是藏在电流相位补偿这种小细节里。今天把Plecs里搭Boost-PFC、做CCM平均电流控制、再补上电流相位补偿的全过程整理出来,希望能帮你少走几段弯路。

这篇文章适合正在做PFC仿真验证的电源工程师、研究生,以及想在项目预研阶段快速评估控制策略的同行。我会先讲为什么Boost拓扑和平均电流控制是PFC最常见的搭配,再给出一份可以直接照抄的参数算例,重点拆解电流相位补偿到底在补什么、怎么补,最后是Plecs仿真里的波形验证和排查经验。

1. 方案遴选:Boost拓扑与平均电流控制凭什么胜出

1.1 为什么PFC大多选Boost而不是Buck

做PFC的第一步不是选控制算法,而是选定拓扑。市面上绝大多数有源PFC前级都用Boost,这不是偶然。Boost电路的输入侧直接串联电感,电网电压经过整流后加在电感一端,电感电流就是输入电流。这种情况下,只要控制电感电流的形状,就等于控制了输入电流的形状,天然适合做电流塑形。

如果改用Buck,输入电流是斩波出来的断续波形,必须先加一级很大的差模滤波才能把高频分量压下去,滤波器的体积和成本立刻上去了。Boost则不同,电感电流是连续的,高频纹波相对可控,配合小得多的EMI滤波就能过标准。另外,Boost的输出电压高于输入电压峰值,输出电容的储能能力和后级变换器的电压裕量都更从容。以220V交流输入为例,峰值约311V,输出做到400V甚至420V都很常见,中间有足够空间给后级做稳压。

从控制角度看,Boost的占空比公式是D=1-Vin/Vout,输入电压瞬时值高的时候占空比自动变小,电压低的时候占空比变大,PFC控制器只需要在电流环内给出一个合适的占空比就行。这种单调、无极性反转的特性让控制器的设计简单很多。

一句话总结:Boost拓扑用最小的无源器件代价,换来了最容易控制的电流整形路径。这也是为什么教科书和工程实践都把Boost-PFC当成默认方案。

1.2 CCM平均电流控制与其他控制方式的差异

确定了Boost拓扑之后,还要选电感电流的工作模式和控制策略。标题里的CCM指的是电感电流连续导通模式,也就是电感电流始终大于零,没有断续区间。CCM适合中大功率应用,电感电流纹波小,传导EMI好做,器件应力相对稳定。

但在CCM内部,控制方式还可以分成好几种。最常见的三种是峰值电流控制、滞环电流控制和平均电流控制。它们的核心区别在于电流环比较的对象不一样。

控制方式电流检测点抗噪声能力THD表现典型场合
峰值电流控制开关管峰值电流对开关噪声敏感,需斜坡补偿容易有谐波畸变小功率、低成本
滞环电流控制瞬时电流窗口开关频率不固定,滤波难设计电流跟踪好但频率乱对频率无要求的场合
平均电流控制一个开关周期的平均电流强,电流误差经过积分器THD低,控制稳定中大功率PFC主流方案

平均电流控制最大的特点,是电流误差信号要经过一个积分器再形成占空比。这个积分环节保证了电感电流的平均值无静差地跟踪参考信号,而且对开关噪声的敏感度比峰值电流控制低很多。峰值电流控制的麻烦在抗扰能力,开关管开通瞬间的电流尖峰很容易让比较器误动作,必须额外加斜坡补偿才能稳住。

我在实际项目中对比过,同样一个1kW的Boost-PFC平台,用峰值电流控制时THD大概能到6%左右,换平均电流控制后THD可以做到3%上下。所以只要成本允许、控制芯片算力够,平均电流控制就是低THD、高PF场景下的最优解。

2. 控制环设计:电压外环和电流内环的参数怎么算

2.1 电压环与电流环的分工协作

Boost-PFC的平均电流控制几乎都是双环结构。内环是电流环,带宽高,负责强制电感电流跟踪一个与输入电压同相位的正弦参考;外环是电压环,带宽低,只负责把输出电压稳定在目标值左右,同时输出一个电流幅值系数K。

电流环的设计准则是快和准。它必须在一个非常小的时间尺度内修正电流偏差,否则输入电流就会偏离正弦参考。工程上电流环闭环带宽一般取开关频率的十分之一到二十分之一。如果开关频率是100kHz,电流环带宽做到5kHz到10kHz之间比较合适。再快就容易引入开关噪声,再慢就跟踪不上50Hz工频的变化,过零附近会有明显畸变。

电压环的设计准则是慢。输出电容上必然存在100Hz的工频纹波,如果电压环响应速度太快,这个纹波会被当成误差信号放大,污染电流幅值系数K,导致输入电流出现三次谐波畸变。所以电压环带宽通常压到10Hz到20Hz,让它对100Hz纹波几乎不响应。这个设置看起来保守,但正是PFC控制稳定性的灵魂。

用一个不太严谨的比喻:电压环是项目经理,只把控整体进度,绝不插手具体执行;电流环是干活的人,必须反应敏捷、执行到位。项目经理如果事无巨细地干预,整个项目反而会乱套。

2.2 一份可以直接抄的1kW算例

我这里给出一份完整的参数算例,输入是220V/50Hz单相交流,输出目标是400V/1kW,开关频率取100kHz。这个配置在很多PFC预研项目里非常常见。

输入电流的有效值可以按输出功率和预估效率反推。假设效率95%,输入电流有效值约为1kW除以0.95再除以220V,也就是4.79A左右,对应的输入电流峰值大概6.77A。

电感量按电流纹波和占空比来算。Boost电路里电感电流纹波最大的点出现在输入电压峰值附近,因为那个位置的占空比最小。最小占空比Dmin约等于1减去311V除以400V,也就是0.22左右。取纹波电流为峰值电流的20%左右,也就是1.5A,电感量估算公式是L约等于峰值电压乘以最小占空比,再除以开关频率和纹波电流,算出来大概0.46mH。工程上取470uH比较合适。

输出电容按保持时间去设计。如果要求断电后输出电压在12毫秒内跌落不超过50V,那么电容计算大概是二倍输出功率乘以保持时间,除以输出电压平方和跌落后电压平方的差。算下来约640uF,实际取680uF或更大都可以。

控制参数方面,以实际电气量参与运算为前提,电流环比例增益可以先取0.02,积分增益取20;电压环比例增益0.02,积分增益2。注意不同采样缩放下这些值要重新标定,我给的只是第一版参考值。电流环PI的输出直接作为占空比,限幅到0到0.95之间,防止过零附近占空比长时间饱和。

参数数值说明
输入电压220Vrms / 50Hz峰值约311V
输出电压400V高于输入峰值
输出功率1kW满载工况
开关频率100kHz兼顾效率和磁性元件体积
Boost电感470uH按纹波20%计算
输出电容680uF满足12ms保持时间
电流环Kp/Ki0.02 / 20实际值参与运算
电压环Kp/Ki0.02 / 2实际值参与运算

3. 电流相位补偿:PF卡在0.97上不去的真正原因

3.1 相位偏差从哪里来

很多人做完上述双环控制,输入电流波形看起来也正常,可PF就是卡在0.96到0.98之间,再怎么调PI也上不去。问题大概率不是幅值跟踪,而是相位偏了。

功率因数由两个因素共同决定:一个是电流波形畸变程度,体现在THD上;另一个是输入电流基波与输入电压之间的相位差。THD变好优化的是第一个因素,但基波相位如果偏了,PF照样上不去。基波相位偏差5度时,PF已经降到0.996,看似还好,但在轻载下叠加THD影响后,PF跌破0.95非常正常。

相位偏差的来源主要有三个。第一个是输入端EMI滤波电容,也叫X电容。这个电容会产生超前电压90度的无功电流,导致从电网看进去的输入电流相位超前。第二个是电压采样和电流采样通道里的RC低通滤波器,它们对工频信号造成相位滞后,尤其是采样电阻或运放前端为了滤高频加了较大的电容时,滞后会更明显。第三个是数字控制里固有的采样和PWM更新延迟,模拟控制器没有这个问题,但数字控制在每个开关周期才更新一次占空比,这个一拍延迟折算到基波上也会产生几度的相位偏差。

这三个因素叠加下来,电流参考的相位已经和真实电网电压对不齐了。平均电流控制只能让电感电流跟随参考,但参考本身相位错了,它也只能跟着错。

3.2 相位补偿的工程实现

相位补偿的本质,是在电流参考信号上叠加一个与输入电压微分成正比的修正项。微分项能够对信号的相位做超前或滞后修正,方向和大小取决于当前是哪种因素占主导。

补偿公式可以写成:

iref(t) = K * vg(t) + Kd * d(vg)/dt

其中vg是输入电压的瞬时值,K由电压环输出,Kd是待标定的补偿系数。当输入侧EMI滤波电容引起的超前电流是主要矛盾时,Kd取负值,相当于把电感电流参考稍微拉后一点,抵消电容的相位超前;当采样延迟导致的滞后占主导时,Kd取正值,补偿回来。实际系统里往往同时存在超前和滞后因素,最终Kd的符号和大小要靠仿真和实验去试。

需要特别提醒的是,直接对输入电压做理想微分在工程上是不可行的,因为开关噪声和高频毛刺会被微分放大器放大到失控。Plecs仿真也一样,直接用Derivative块做微分会看到补偿项剧烈抖动。更稳妥的做法是用一个一阶高通环节来近似微分,传递函数写成s除以(τs+1),τ取开关周期的几倍到几十倍。这样既能提供相位补偿,又能把高频增益压住。

除了这种参考前馈补偿,还有一种思路是用锁相环锁定输入电压的相位,把所有控制量都建立在锁相环给出的同步坐标系里。这种做法更系统,轻载和电网畸变情况下表现更好,但实现复杂度高。如果只是做PFC预研或者常规工况仿真,微分前馈已经足够解决问题。

3.3 Plecs里的补偿模块搭建

在Plecs的控制库里搭相位补偿支路非常直观。我从输入电压采样点引出一条支路,经过一个近似微分环节,再到增益模块调Kd,最后和电压环输出的K倍正弦参考叠加在一起,作为电流环的参考输入。

具体连接顺序是这样的:

  1. 输入电压采样送入归一化模块,得到单位正弦波形。
  2. 电压环输出K后,与单位正弦相乘,得到基础电流参考。
  3. 输入电压采样另外分一路进近似微分器,输出接到Kd增益。
  4. 把Kd增益的输出和基础电流参考相加,结果作为最终电流参考。
  5. 电流参考与电感电流反馈做差,误差送给电流PI,PI输出限幅后进PWM比较器。

Plecs控制库里可以直接用传递函数模块实现近似微分,参数填s/(τs+1)对应的两个系数就行。τ建议从开关周期的5倍开始试,比如开关周期10微秒的话,τ先给50微秒,观察补偿项是否稳定。

这个模块位置很关键,它不在电流环里面,而是在电流参考生成环节。相位补偿是在告诉电流环“你要跟踪的信号在这里,相位已经修正过了”,而不是让电流环自己去纠正相位。

4. Plecs仿真实施:从模型搭建到波形验证

4.1 主电路和控制回路搭建步骤

Plecs仿真最大的优势是开关电路跑得快,特别适合PFC这种需要长时间运行才能看稳态波形的场景。搭建步骤分四步走下来非常顺畅。

第一步搭主电路。交流电压源接整流桥,整流桥输出接Boost电感,再经过MOSFET和二极管到输出电容和负载。MOSFET的导通电阻我给几十毫欧到几百毫欧,关断电阻设成兆欧级,二极管给一个0.8V左右的导通压降,这些寄生参数对仿真收敛影响很大,不要偷懒省略。

第二步搭采样通道。输出电压经过分压采样,输入电压也要采样,电感电流用电流传感器或者采样电阻加放大。采样信号全部引入控制子系统。Plecs里控制部分可以和主电路画在同一个画布的不同层,也可以单独放在Control子系统中,逻辑更清晰。

第三步搭控制回路。电压环、电流环、PWM生成三个部分依次连好。电压环输出K,K与输入电压归一化波形相乘后,加上相位补偿项,得到电流参考。电流参考与电感电流反馈比较后进电流PI,输出占空比限幅,再送进PWM比较器,和三角载波比较生成门极信号。

第四步搭相位补偿支路。从输入电压采样引出附加通路,经过近微分、Kd增益,叠加到电流参考上。我习惯给Kd一个可调变量,方便仿真时扫描不同补偿强度下的PF和THD。

如果控制算法要模拟数字实现,也可以在Plecs里用C-Script块写核心控制循环。下面是一段逻辑示意,不是Plecs的严格API,但控制流程很清楚:

vg = readADC(0); // 输入电压采样 vout = readADC(1); // 输出电压采样 il = readADC(2); // 电感电流采样 // 电压环PI err_v = Vref - vout; K = K + Kp_v * (err_v - err_v_prev) + Ki_v * err_v * Ts; K = sat(K, 0, 1); // 相位补偿和电流参考生成 dv = (vg - vg_prev) / Ts; iref = K * vg_norm + Kd * dv; // 电流环PI err_i = iref - il; D = D + Kp_i * (err_i - err_i_prev) + Ki_i * err_i * Ts; D = sat(D, 0, 0.95);

这里TS是控制周期,通常等于开关周期。C-Script的好处是可以直接观察Kd参数变化对PF的影响,也方便后续移植到单片机。

4.2 仿真配置与波形验证

仿真参数方面,建议用变步长求解器,最大步长不要超过1微秒。如果目标只是看稳态波形,仿真时长0.3到0.5秒足够。输出电容初始值可以设置成零,也可以直接设置成400V来跳过启动阶段,加快仿真速度。

仿真跑完之后,先看四个关键波形:输出电压、电感电流、输入电压、输入电流。输出电压应该在400V附近稳定,纹波中能看到明显的100Hz成分,这是正常的。电感电流应该始终大于零,证明电路工作在CCM。输入电压和输入电流要放在同一个Scope里对比相位,正常情况下两者的过零点应该接近重合。

用FFT分析输入电流,THD可以直观读出来。PF可以从基波有效值和总有效值的比例乘以相位差的余弦算出来。我做过的对比结果是:不加相位补偿时PF在0.972左右,THD大概6.8%;加了合适的Kd补偿后PF到0.995,THD降到3.2%以内。这个数值只代表某一组参数下的一致性对比,不是普适标准,但趋势是明确的。

补偿强度Kd从小到大扫描时,可以看到PF先升后降。升的过程是相位误差被逐步抵消,降的过程则是补偿过量,参考信号反而又带上了反向相位偏差。所以Kd不是越大越好,到峰值附近就停下来。

5. 常见问题与排查技巧实录

5.1 仿真报错和波形畸变的典型表现

Plecs仿真最常碰到的问题,第一个就是仿真不收敛。大多数情况是开关管和二极管模型的导通电阻为零或过小,导致状态切换瞬间电流突变,数值求解器直接崩溃。解决办法是把导通电阻设成合理值,同时给电容设一个合理的初始电压,别让它从零开始经历强烈的充电冲击。

第二个典型问题是输出电压一直起不来。这时候先别急着查控制参数,先检查PI的极性对不对。PFC的电压环和电流环都存在正负反馈方向的问题,接反了PI输出会一直饱和在限幅值上,输出电压当然稳不住。排查方法很简单:把输出电容初始值设到目标电压附近,如果控制器能保持住电压,说明极性正确;如果电压一路往下掉,大概率是把负反馈接成正反馈了。

第三个典型问题是输入电流过零畸变。这是CCM平均电流控制的一个固有痛点。输入电压过零附近Boost占空比接近1,控制器已经没有多少向上调节的空间,电流跟不上正弦参考,就出现一小段平顶或者畸变。仿真里见到这种波形不必太慌张,这是物理极限,只能通过增大电感电流纹波比或者接受轻微畸变来缓解。

5.2 电流震荡、相位偏大的排查思路

电流环出现次谐波震荡时,先怀疑电流环带宽过高。最简单的处理是降低Kp,或者增大积分时间常数,让电流环慢下来。有些情况下不是电流环参数问题,而是PWM比较器和三角载波幅值不匹配,导致PI输出限幅后产生了非线性。检查一下占空比限幅范围和载波幅值是否对应。

输入电流相位超前太多,优先怀疑输入侧EMI电容太大。仿真模型里如果加了X电容,并且容值逼近微法级别,它产生的超前无功电流不可忽略。先把X电容改成零对比一次,如果相位就恢复正常,说明Kd补偿方向应该取负;如果相位依然超前,再看是不是采样环节的相位问题。

最后一个容易被忽略的坑是电压环带宽没有按预期设置。如果电压环PI积分增益太大,输出电压的100Hz纹波会串进电流参考,导致输入电流包络出现二次谐波。这个在FFT里看得很明显,THD会多出明显的150Hz分量。遇到这种情况,把电压环积分增益降下来,带宽压到20Hz以下。

最后说一点个人体会

跑了这么多轮Plecs仿真,我的最大感受是平均电流控制这个大框架本身已经非常成熟,真正拉开项目差距的往往是相位补偿和采样链路的细节处理。如果你发现输入电流波形形状正确、幅值也对,就是PF卡在0.97左右上不去,不妨先把PI参数放一放,回头算一算输入电容和采样延迟的相位账,把Kd从零开始慢慢加上去。这个坑我踩过之后,现在做任何PFC仿真都会先把相位这一项列进验收清单。

再分享一个小技巧:补偿系数Kd的标定不用追求一次到位,仿真中直接用参数扫描功能,让Kd自动从负到正走一遍,把PF最高的那组参数记下来,效率比手工一个个试高得多。这个思路同样适用后面的硬件调试。

RELATED READING

延伸阅读

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