ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

PFC控制环路设计:避开五个常见误区的实战指南

PFC控制环路设计:避开五个常见误区的实战指南 做PFC这么多年真正让我头大的从来不是选什么拓扑、忍什么成本而是环路参数明明在仿真里跑得好好的一上电就给你演一出“电流畸变”“输出抖振”“炸管子”最后查半天发现是控制环路某个认知坑没填平。这几年从单相Boost PFC做到三相维也纳、图腾柱无桥从模拟控制换到数字控制我在环路分析和参数整定上交过不少学费也总结出了一套自己能快速定位问题的路径。这篇专门聊我在PFC控制环路上遇到的5个常见误区以及针对每个误区的解决办法。内容从环路建模、带宽选择、PI参数初值到仿真验证、硬件实测的完整流程都会覆盖到。适合刚入手PFC控制的电源工程师以及那些想做数字PFC但总在环路参数上调不明白的同行。我不敢说下面的结论放之四海皆准但只要照着思路走一遍至少能少走一半弯路。1. 先搞清楚PFC环路控制的全局图PFC全称是功率因数校正核心任务就是让输入电流主动去跟踪输入电压的波形和相位让电网侧看进去的负载尽量接近纯电阻。但这个目标的实现在控制上是分层的不是只有一个电压环那么简单。1.1 PFC控制的本质不是稳压很多人第一次做PFC会习惯性地把它当成一个“输出电压400V的Boost变换器”觉得只要把电压稳住就行。这个理解方向没错但如果脑子里只有稳压就很容易忽略PFC真正的核心控制目标输入电流波形。PFC系统的控制结构几乎永远是双闭环。内环是电流环让电感电流实时跟踪一个和输入电压同频同相的基准信号外环是电压环负责把输出母线电压维持在目标值同时给电流环提供基准的幅值。电压环只管“慢变量”电流环只管“快变量”两环的带宽必须拉开一个数量级以上。在实际项目中电流环的作用是保证单位功率因数、低THD它的带宽、相位裕度、采样时刻都会直接反映在输入电流波形上。电压环的作用更像一个慢速的功率平衡调节器它的输出本质上是“我需要从电网吸收多少有功功率”也就是电流指令的幅值。所以调试PFC时第一步要能在脑子里分清现在看到的异常波形到底是电流环的问题还是电压环的问题还是外环耦合进来的问题。分不清这个后面所有参数整定都是瞎调。1.2 五个误区分别落在哪个环节结合我自己做项目踩过的坑最常见的五个误区可以按控制链路的位置归类第一个误区在“认知层”把PFC电流环当成普通DC-DC电流环来设计忽略了PFC输入电压大范围变化、电流基准是工频正弦这些特殊性。第二个误区在“电流环”以为电流环带宽越高动态越好结果带宽拉上去之后过零畸变、开关纹波放大、噪声全都来了。第三个误区在“电压环”电压环带宽设置不合理输出母线上的100Hz纹波直接串进电流指令THD一塌糊涂。第四个误区也在“电流环/前馈”层面没有对输入电压变化做增益补偿一套PI参数在不同输入电压下表现完全不同。第五个误区在“整体方法论”不建模、不仿真、不测环路直接在样机上靠试凑碰运气。这五个误区不是独立的它们经常串联出现。比如电压环带宽没压住会让电流指令带畸变电流环带宽又太高会把畸变进一步放大最后看起来像是电流环参数没调好其实是好几个环节叠加在一起的问题。所以做PFC参数整定一定要有全局视角按照从内环到外环、从模型到实测的顺序一步步来。1.3 拓扑变了环路骨架没有变单相Boost PFC、双Boost无桥PFC、图腾柱无桥PFC、三相维也纳PFC这些拓扑听上去差别很大但从控制环路的角度看骨架是一样的——电流内环加电压外环只是细节各有各的坑。比如无桥PFC拓扑没有公共参考地电感电流采样往往不能用简单的电阻采样需要改用电流互感器或者隔离型传感器采样的延迟、噪声、标定误差会对环路造成额外影响。图腾柱PFC在工频换流点附近有死区时间问题电流采样在这一段容易失真如果环路带宽太高过零畸变会非常明显。三相维也纳PFC则要额外处理中点电位平衡但是每一相的电流环设计思路依然是平均电流模式控制。我建议正在做这些拓扑的同行先把单相Boost PFC的环路设计吃透。单相Boost是最基础的平台所有关键概念——电流环带宽、电压环带宽抑制、增益补偿、采样点选择——都是通用的。把基础平台上的问题搞明白了再去碰三相、无桥会顺利很多。2. 误区一把PFC电流环当成普通DC-DC的电流环来设计我刚做PFC那会儿犯过的最天真的错误就是直接拿过去做DC-DC Buck那一套电流环设计方法套到PFC上。电感参数、采保参数、PI参数都是按“稳压电源内环”思路给的结果一上电输入电流波形非常难看几乎是削顶的馒头波加一堆毛刺。2.1 典型翻车现场DC-DC变换器的电流环被控对象是“直流母线电压下的电感电流”输入电压在稳态时基本不变电流基准是直流量所以环路设计相对温和。但PFC的电流环面对的是两件DC-DC不会遇到的事输入电压在整个工频周期内不断变化。交流220V整流之后母线电压是100Hz的馒头波从0到310V峰值来回扫。电流基准不是直流是一个跟随输入电压形状变化的正弦绝对值波形频率是100Hz而且包络每10ms从零爬到峰值再跌回零。这两个特征意味着电流环在过零附近和峰值附近的工作点完全不同。峰值附近电感电流很大占空比很小过零附近电感电流接近零Boost电感可能进入断续模式DCM。如果还用DC-DC那种固定工作点设计思路参数只能在一个狭窄区间内有效。还有一个更隐蔽的问题PFC电流环跟踪的是一个频率很低的周期性基准它需要的带宽其实并不高。真正影响跟踪效果的不是“带宽追得快”而是“在基准频率和低次谐波处增益够高、相位延迟可控”。很多人在这里本末倒置把带宽往死里拉结果把开关纹波和采样噪声也一起放进来了。2.2 PFC电流环的特殊之处PFC电流环的控制对象从占空比到电感电流的小信号特性和DC-DC Boost在数学形式上是相同的但参数含义有区别。以平均电流模式控制、CCM工作为例从占空比d到电感电流iL的传递函数可以近似为Gid(s) ≈ Vin / (sL)这是一个积分特性在电流环带宽范围内电感起主要作用。这个式子里的Vin是整个工频周期都在变的量。整流后的输入电压在90V到264V交流输入下对应的直流母线电压范围大约是127V到373V。同样一组PI参数在低压输入下可能稳定且慢换到高压输入下环路增益直接翻近3倍穿越频率升高相位裕度下降。这就是为什么PFC电流环不能照抄DC-DC参数。DC-DC设计时可以假定Vin固定然后在最恶劣输入电压下校核PFC则必须在整个工频周期内做设计校核或者引入增益归一化让环路特性不随输入电压变化。另外Boost变换器存在右半平面零点RHPZ在PFC中也需要确认。以1kW输出、400V母线、电感300μH、满载等效负载160Ω为例峰值输入电压310V时占空比约0.225右半平面零点频率大约在50kHz附近。电流环带宽通常只有2~5kHz远低于RHPZ所以常见单相Boost PFC的电流环基本不用太担心RHPZ问题。但这个估算在项目里还是要做一遍特别是当电感量偏小、负载偏重时RHPZ会被拉低离带宽近了就必须采取折中措施。2.3 正确的设计姿势对待PFC电流环正确的姿势是先承认它是一个时变系统然后在设计上做两点处理。第一点是采样点选择。数字控制中采用对称三角波PWM调制时在载波的顶点或谷底采样电感电流恰好能采到开关周期的平均值。这个采样点一定要锁在PWM周期中间不能随意采。很多输入电流波形变差的项目查了一圈发现就是采样点在占空比突变时采到了纹波尖峰环路看到的是一个“抖动”的电流参数怎么调都白搭。第二点是电流环PI设计要以最低输入电压作为增益最不利点来校核。因为按照Vin/(sL)这个模型Vin越低同样的PI输出对电流的影响越小环路增益越低。如果低压下带宽足够高压下增益归一化后带宽也不会失控。3. 误区二电流环带宽越高越好“电流环带宽拉高一点动态响应不是更好吗”这句话在DC-DC领域经常被当作默认规则但在PFC里它是一个很容易诱发问题的想法。3.1 带宽上限从哪里来PFC电流环带宽不是由开关频率单独决定的而是由以下三件事共同限制的PWM采样与更新机制。数字控制里从采样到更新PWM占空比通常至少有一个开关周期的延迟。比如100kHz开关频率一个周期就是10μs。这个延迟在5kHz穿越频率处造成的相位滞后大约是18度如果穿越频率推到10kHz就是36度。再加上PWM零阶保持效应、采样开关造成的等效延迟相位裕度会被吃得很厉害。电感电流纹波与采样噪声。带宽越高环路对高频噪声的抑制能力越差。开关纹波、采样毛刺、驱动串扰这些信号如果落在环路增益之内就会被放大反映在输入电流上就是脉冲状毛刺严重的会诱发振荡甚至过流保护。过零区的模型失效。PFC输入电流在过零附近天然趋近于零电感进入DCM或临界模式CCM下推导的小信号模型在这一段根本不成立。过零附近的电流畸变是PFC环路设计中最普遍的问题之一。带宽越高环路的增益越高过零区那段“模型不准但环路还在使劲儿”的区域就表现得越突出。我在一个100kHz开关频率的1kW PFC项目上做过对比实验电流环穿越频率从5kHz调到12kHz输入电流THD从4%左右上升到9%而且过零附近出现明显振荡台阶。调回去之后THD立刻回落。3.2 带宽调高之后发生了什么带宽过高带来的问题在波形上一眼能看出来输入电流的过零处出现扭曲甚至有小幅回踩像被什么东西拽了一下电流指令的边沿变毛糙电感电流不再是一条光滑的正弦包络而是带有很多高频毛刺。从控制原理上解释PFC电流环只需要保证对100Hz基波和主要低次谐波的跟踪精度这些频率远低于开关频率。带宽拉到很高并不能改善100Hz处的跟踪误差因为本来增益就足够大了反而会放大开关频率附近噪声的增益。等于你花了一大笔相位裕度去买一个PFC根本不需要的性能。另外还要考虑EMI的影响。高带宽下电流环对采样噪声和开关噪声的放大会让电感电流中的高频分量增加输入端的差模EMI变差。这就是为什么“双Boost无桥PFC拓扑配高带宽电流环”的组合经常在EMI测试环节出问题的原因之一——拓扑本身共模路径复杂环路再帮倒忙整改起来非常痛苦。3.3 电流环带宽到底取多少工程上比较稳妥的做法是把PFC电流环穿越频率取在开关频率的1/20到1/10之间。以100kHz开关频率为例电流环带宽取5kHz到10kHz。考虑到数字控制的延迟和相位裕度我最常用的起点是4~6kHz然后根据相位裕度实测结果微调。给一个具体参考1kW、400V输出的Boost PFC电感300μH开关频率100kHz数字控制采用一个周期延迟采样更新电流环PI零点放在1kHz附近目标穿越频率5kHz相位裕度45度以上。按近似模型估算PI比例系数Kp可以按这个公式给初值Kp_i ≈ (2π × f_c × L) / (Vin_min × Ki_sampling)其中f_c是目标穿越频率Vin_min是考虑最低输入电压对应的整流后峰值或有效值用于折算Ki_sampling是电流采样系数。这只是初值上机后要根据环路实测再微调。从经验上看Kp_i初值偏小一点比偏大安全因为Kp偏大直接表现为过零振荡和噪声放大而偏小只是动态略慢PFC对动态的要求本来就不苛刻后面花两分钟就能收敛。4. 误区三电压环带宽拍脑袋给纹波全灌进电流指令如果说电流环的坑是“调太高”那电压环的坑则是“不知道它为什么必须低于是随便给一个值导致整个输入电流谐波失控”。4.1 输出电压为什么一定有100Hz纹波先从功率守恒的角度理解单相PFC的输入功率不是恒定值而是以工频二倍频脉动。220V/50Hz系统里输入功率的脉动频率是100Hz。PFC的稳压职责是保证输出母线电压在一个开关周期尺度上稳定但它做不到在10ms时间尺度上消除这个功率脉动——能量只能靠母线电容吸收和释放。所以输出母线上必然存在100Hz纹波幅值由输出功率和母线电容容量共同决定。1kW的PFC输出电容470μF母线400V时这个100Hz纹波的峰峰值大约在15V左右。这是物理规律不是环路可以消除的。4.2 电压环带宽给高了会怎样如果电压环带宽较高比如说50Hz以上那么电压环看到这100Hz纹波后会认为“输出电压在波动”于是拼命调节它的输出也就是电流指令幅值。结果就是电流指令被叠加了100Hz及更高次的调制分量输入电流波形出现明显的非线性畸变。最典型的表现是输入电流的包络不再光滑变成一种“月牙形”失真峰值附近被削平过零附近变尖THD怎么调都下不来。如果你在示波器上看到这种波形先别急着动电流环PI拿掉电压环带宽的影响再看往往会发现电流环本身调得还行。工程上单相PFC电压环的穿越频率通常取10~20Hz对100Hz分量要有足够衰减一般要求低于该频率处增益衰减20dB以上。电压环响应慢不是缺陷因为PFC后面通常接DC-DC比如LLC母线电压的快速动态由后级完成PFC只需要保证母线电压的平均值稳定。4.3 电压环PI的初值怎么给电压环PI参数给初值我习惯按“带宽优先”的方法。假设目标穿越频率f_cv取10Hz输出电容C是470μF那么从电流指令到输出电压的控制通道在低频段表现出积分特性。Kp_v可以先按下面这个近似估算Kp_v ≈ (2π × f_cv × C) / K_v其中K_v是包括电流环闭环增益、前馈系数、采样比例的综合系数。Ki_v的零点频率通常放在1~5Hz之间保证电压环有足够的低频增益来消除稳态误差同时对100Hz有足够衰减。需要强调的是电压环PI初值给完之后一定要在实际样机或仿真里检查两个东西一是100Hz处的增益衰减是否足够二是开机启动时是否出现电压过冲。电压环积分饱和是开机过冲的常见原因我在多个项目里用过“电压环输出限幅积分抗饱和”来解决效果很明显。这个细节后面在问题速查表里还会再提。5. 误区四忽略增益随输入电压的变化一套参数走天下不少项目是这样的在实验室里用可编程交流源把输入设为220V调好一套参数测试波形漂亮得很于是直接交样。结果客户那边电压波动到180V或者260VPFC要么效率掉得厉害要么开始啸叫、振荡最后退回来让你重新调。5.1 90V调好的参数为什么在264V会振荡回到那个被控对象模型Gid(s) ≈ Vin/(sL)。在90V交流输入下整流后母线电压峰值约127V在264V交流输入下峰值约373V。两者相差近3倍也就是环路增益相差约9.5dB。假设你在90V下把电流环穿越频率调到5kHz相位裕度50度那么切到264V时如果不做任何处理穿越频率会往高移相位裕度可能掉到20度以下。20度裕度意味着什么负载稍微波动、占空比跳变环路就可能进入振荡边缘表现为电感电流高频抖动、管子应力增加。电压环也类似。输入电压越高在同等电流指令下输入功率越大电压环的等效增益也越高会造成电压环穿越频率飘移。5.2 增益归一化和输入电压前馈解决增益随输入变化的核心手段是在控制环路中引入输入电压的归一化处理。最简单的做法是在电流环PI输出后再乘以一个1/Vin_rms的系数或者把电流环PI的增益做成Vin_rms的函数让等效环路增益和输入电压解耦。这个在数字控制里只是一个乘法运算成本基本为零但对全电压范围的稳定性贡献巨大。更完善的做法是加入输入电压前馈。电流指令的生成不直接只用电压环输出的幅值信号而是用这个幅值乘以整流后输入电压的标幺化波形Iref A × vin_norm其中A由电压环输出决定vin_norm是输入电压的归一化形状。这样电流指令本质上是“电压环决定要吸收多少功率前馈决定这个功率以什么波形吸收”电流环只需要负责消除实际电流和这个指令之间的误差。这个结构能显著降低电流环的跟踪难度过零畸变也会改善很多。在数字实现里vin_norm通常有两种拿法一种是直接ADC采样整流后的输入电压波形实时计算归一化值另一种是用锁相环PLL生成与输入电压同步的标准正弦/绝对值波形。前一种简单直接但要注意采样延迟和噪声后一种更干净但在输入电压畸变、跌落时PLL的动态要额外做好取舍。5.3 数字实现里的两个细节做数字PFC时输入电压前馈有两个细节必须注意否则前馈反而帮倒忙。第一个是采样时刻。输入电压采样最好与电感电流采样放在同一个PWM时刻避免引入额外的相位偏差。这个偏差如果比较大会让输入电流的相位超前或滞后于输入电压功率因数从0.99掉到0.96看着数值还凑合但谐波已经超了。第二个是前馈信号的低通处理。如果不加处理输入电压的采样噪声、电网谐波都会进入电流指令造成输入电流的额外畸变。我一般会对前馈信号做一个带宽约1~2kHz的低通滤波滤掉开关噪声和高次谐波这个滤波对前馈的时域响应影响很小但对波形净化效果非常明显。6. 误区五不建模型不测环路直接在样机上试凑最让我不理解的一种做法是跳过建模和仿真直接抱着示波器在样机上试PI参数。PFC环路是一个时变系统变量之间有复杂的耦合靠试凑往往要花几天时间最后还不一定能得到一个在所有工况下都稳定的参数组合。6.1 建模能用就行的小信号模型我不主张一上来就写很复杂的模型工程上够用就行。做单相Boost PFC环路设计我常用的建模步骤是先确定功率级参数L、C、开关频率、输入电压范围、输出电压目标。建立电流环的平均模型从占空比到电感电流主要关心电流环带宽附近的幅频特性用Gid(s) ≈ Vin/(sL)这个近似就够。建立电压环模型从电流指令到输出电压低频段近似为积分特性注意把负载电阻和输出电容的极点算进去。用Mathcad或者MATLAB把控制器加上去画出开环Bode图看穿越频率和相位裕度。这组模型虽然简化但足够把PI初值算到“上机后能跑”的程度。真正精细的模型比如考虑数字延迟、ESR零点、采样效应可以放到仿真里验证不必在小信号草模里纠结。6.2 仿真先让环路在电脑上交给你看参数初值有了之后仿真这步我非常推荐尤其是对做数字控制的同行。仿真可以验证电流环带宽是否满足设计目标、电压环在100Hz频率处的衰减是否足够、启动过程是否过冲、负载阶跃时母线电压跌落是否符合要求。工具方面我用过SIMPLIS、PSIM、MATLAB/Simulink几款各有侧重点。SIMPLIS做环路频率响应特别准适合精细验证PSIM搭PFC电路和控制速度快适合做整体功能验证MATLAB/Simulink适合把数字控制算法离散化、延迟、抗饱和逻辑先跑起来。我的习惯是在Simulink里先做控制算法验证再用PSIM或者SIMPLIS做功率级联合仿真两边都对上了才进硬件。仿真还有一个重要作用可以安全地“故意”把参数调到边界观察不稳定模式长什么样。比如把电压环带宽拉到50Hz看输入电流怎么畸变把电流环Kp调大看过零振荡如何出现。在电脑上看过这些波形之后硬件上一旦出现类似现象你一眼就能认出来不用猜。6.3 实测环路分析仪与注入法参数上机之后不是看波形正常就完事了还要测环路。环路测试的标准做法是用频响分析仪在反馈回路里注入一个微小扰动信号测量环路开环增益和相位。常用设备有Bode 100、Venable等专门做电源环路测试的都可以。PFC环路实测中注入点的选择比较讲究。电压环比较容易测把注入变压器串在输出电压反馈分压电阻与地之间或者串在反馈信号通路中用10~50mV的小信号扫频。测量时要注意注入幅度不能太大避免扰动工作点同时要确保样机处于稳定的工作状态建议先让PFC带一定负载稳定运行再做扫描。电流环的实测相对难一些因为电流采样回路一般不好直接开断注入。我的做法是电流环主要靠仿真验证电压环靠实测验证。如果实测电压环的穿越频率和相位裕度符合预期而电流环带宽明显高于电压环至少5倍以上那整个系统的稳定性基本是有保障的。6.4 参数整定的标准流程经过前面这些铺垫我给一个我自己在项目里固定下来的参数整定流程可以直接抄确认功率级参数计算电流环被控对象模型按目标穿越频率4~6kHz算出Kp_i初值零点放在1kHz附近。设计电压环目标穿越频率10~15Hz零点放在1~5Hz用近似模型算出Kp_v和Ki_v初值。在仿真里跑一遍重点看输入电流THD、启动过冲、负载阶跃响应不合格就回头调整模型假设。上硬件先开环跑一个固定占空比确认电感电流和电压采样正常采样点正好在PWM载波极值点。切到闭环接电子负载或者电阻负载从轻载开始加观察输入电流波形确认没有过零畸变和振荡。用环路分析仪测电压环穿越频率和相位裕度和设计值对照偏差超过20%就回头查采样系数和增益折算。完成全电压范围、全负载范围测试重点关注最低输入电压满载和最高输入电压满载两个极端点。这个过程看起来步骤多但每一步都有明确目的实际执行下来调试时间反而最短。最怕的就是前面建模和仿真偷懒到了硬件阶段出了问题才排查复杂度会成倍上升。7. 常见问题速查表与一点实操心得前面五个误区分别对应了五个重要环节下面把这些年的实操经验整理成一份速查表遇到具体问题可以直接对照排查。7.1 问题排查速查表现象可能原因排查手段解决方案输入电流过零畸变明显电流环带宽过高过零区采样点失真前馈信号噪声大用示波器放大过零区域波形观察采样点位置把电流环穿越频率降到5kHz附近检查采样时刻是否在PWM极值点给前馈信号加低通滤波电流包络呈月牙形失真THD高电压环带宽过高100Hz纹波调制了电流指令断开电压环带宽嫌疑仿真对比不同电压环带宽的THD电压环穿越频率降到10~15Hz验证100Hz处衰减是否大于20dB高压输入时环路不稳定输入电压升高导致电流环增益升高对比不同输入电压下的开环Bode图在电流环中引入1/Vin_rms归一化检查增益补偿是否在所有电压点都生效低压输入时动态很慢低压输入下电流环增益偏低看不同输入电压下的穿越频率做前馈增益补偿后重新校核最低输入电压点开机输出电压过冲电压环积分饱和检查软启动逻辑和电压环输出限幅增加积分抗饱和逻辑限制启动阶段电流指令幅值输入电流存在周期性毛刺采样噪声或驱动串扰被高带宽电流环放大观察毛刺频率是否与开关频率相关降低电流环带宽优化采样电路滤波和PCB布局满载时母线电压跌落过大电压环带宽过低或负载前馈缺失做负载阶跃测试看跌落幅度电压环带宽适当提高到15~20Hz必要时加负载前馈这个速查表不是万能药但覆盖了我这几年大部分调试问题的起点。如果现象和表里对不上我一般会重新回到建模那一步把被控对象的模型参数重新核对一遍很多时候是模型里的某个参数比如电感饱和后的实际感值和设计值偏差太大导致的。7.2 我踩过的坑和现在的习惯最后说一点个人习惯的变化。早年间我调PFC一上来就抓PI参数调不通就换Kp、换Ki运气好能碰出来运气不好一整天都卡在同一个波形上。现在我再也不会这样干了。我现在拿到一个新的PFC项目会先花半天做建模和仿真把采样点、增益归一化、电压环带宽这些基础设计敲定才会去碰硬件。到了硬件阶段环路分析仪是我必上的两步之一——设计值算得再准也要用实测数据确认一遍尤其是电流采样系数、驱动延迟这些比较难精确建模的环节实测值往往和估计值有不小偏差。另外一个小建议调试PFC时示波器的探头和接地方式一定要规范特别是无桥PFC这种共模干扰大的拓扑探头地线夹太长会把高频噪声真实波形彻底淹没你看到的问题可能是测量手段带来的伪问题。我吃过这个亏折腾了好几天最后换了差分探头或者用短地弹簧所有“异常”全部消失。做环路分析之前先确保你看到的波形是真实的这是所有判断的前提。做PFC设计控制环路从来不是孤立的一小块它和拓扑、采样、驱动、PCB寄生都连在一起。只有把从环路建模到参数整定的整条链路理清楚才能真正避开那些折磨人的“大坑”。
RELATED READING

延伸阅读

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