我们做电源的,特别是做环路补偿的,几乎都绕不开小信号模型。早几年我刚接触开关变换器建模的时候,翻了不少教材,公式推导能看懂,但一旦轮到实际调试,比如想让Buck变换器的带宽跑高一点、相位裕量留够45度,却不知道该用哪些参数建模、模型在哪个频段可信、算出来的穿越频率跟实测怎么就对不上。这篇文章就是我把自己从零学建模到真正用起来的全过程梳理了一遍,从状态空间平均法开始,一步步推导出Buck变换器的控制到输出传递函数,再用仿真验证理论曲线,最后聊聊那些教材里不写、但实操里一定踩过的坑。
这套东西适合谁看呢?一个是刚入行但被环路调试折磨的电源工程师,另一个是研究数字电源控制、需要自己建被控对象模型的同学。看完你能明白小信号建模到底把什么“平均”掉了、在什么条件下成立、怎么从物理方程走到传递函数,以及为什么仿真曲线和理论曲线在中频段对不上也不用慌。
1. 内容整体设计与思路拆解
1.1 为什么非要从“小信号”切入
开关变换器本质是一个非线性、时变、分段光滑的系统。开关管导通时是一套电路拓扑,关断时是另一套拓扑,直接拿大信号模型去设计线性控制器,KVL和KCL都写不爽利,更别提频域设计了。
小信号建模的核心思路是在一个稳定的直流工作点附近,把非线性系统线性化,从而得到一个近似的线性时不变系统。这个线性系统可以写传递函数,可以用Bode图分析频带宽度和相位裕量,可以设计补偿网络,最后还能用经典控制理论的整套工具去综合系统。
需要刻意记住的是,小信号模型不等于把开关管随便等效成一个电阻或一个增益模块。它是从能量守恒和状态平均的物理过程出发,严格推导出来的。它牺牲了对开关频率附近甚至更高频段行为的描述精度,换来了在低频和中频段对系统动态特性相当准确的近似。控制器设计关心的正是这个频段,所以实用价值极大。
1.2 建模流派选型:状态空间平均法为什么最常用
业内目前主流的建模思路大致有三条路:状态空间平均法、开关网络平均法、离散时间建模法。
对于绝大多数连续导通模式(CCM)下的变换器设计,状态空间平均法是首选。它逻辑链条清晰,从状态方程出发,不必额外引入复杂的开关网络等效,而且结果可以很自然地退化为经典Buck、Boost、Buck-Boost的传递函数表达式。开关网络平均法在分析谐振变换器和临界导通模式(BCM)时更贴合物理,但抽象程度高,新手很容易被开关网络的各种等效子电路绕晕。离散时间建模法则主要用于数字控制器的精确设计,它把采样和PWM更新延迟都纳入系统模型,精度高但复杂度也高,不是入门首选。
我自己带项目时习惯这样做:初始设计用状态空间平均法快速搭建频域模型、定补偿参数;等样机出来了再实测环路,用测得的Bode图反过来修正模型的高频寄生参数误差。两条腿走路,既保证效率,也能在板子上找到理论模型的偏差来源。
2. 核心细节解析与实操要点
2.1 状态方程的建立——写清楚每个开关状态下的电路关系
以Buck变换器为例,图里最核心的无非是输入源 (V_g)、开关管 (Q)、二极管 (D)(或同步整流管)、电感 (L)、电容 (C) 和负载电阻 (R)。选择电感电流 (i_L) 和电容电压 (v_C) 作为状态变量,是因为它们和储能元件直接相关,做主电路状态描述最自然。
CCM下,开关管导通时:
[ L\frac{di_L}{dt} = V_g - v_C ]
[ C\frac{dv_C}{dt} = i_L - \frac{v_C}{R} ]
开关管关断、二极管续流时:
[ L\frac{di_L}{dt} = - v_C ]
[ C\frac{dv_C}{dt} = i_L - \frac{v_C}{R} ]
写这两组方程时最容易犯的错误是把电感的寄生电阻 (R_L) 和电容的ESR (R_C) 忽略得太干净。初期建模可以忽略,但后面分析输出纹波和零点位置时,电容ESR带来的零点会直接影响补偿网络的设计。所以建议从一开始就保留 (R_C),最多在推导时把它“延后”处理,否则后面要返工。
2.2 平均化处理——如何把分段系统拼成连续系统
分段线性系统不能直接做拉普拉斯变换。平均化处理就是用占空比 (d) 对两个子区间进行加权平均,把分段方程拼合成一个连续的平均方程。
导通区间占整个开关周期 (T_s) 的比例是 (d),关断区间是 (1-d)。那么电感的平均电压可以写为:
[ L\frac{d\langle i_L \rangle}{dt} = d(V_g - \langle v_C \rangle) + (1-d)(- \langle v_C \rangle) ]
化简一下就是:
[ L\frac{d\langle i_L \rangle}{dt} = d V_g - \langle v_C \rangle ]
电容支路平均化之后,和导通、关断状态长得一样,所以直接沿用:
[ C\frac{d\langle v_C \rangle}{dt} = \langle i_L \rangle - \frac{\langle v_C \rangle}{R} ]
这里需要特别注意一个前提:平均化成立的隐含条件是状态变量在一个开关周期内的变化量远小于其稳态值。也就是说,电感电流的纹波和电容电压的纹波要足够小。这正好落在CCM设计的一般约束内,所以它是合理近似,不是硬凑。
2.3 扰动注入与线性化——分清直流工作点与小信号分量
现在把平均方程里的变量拆成直流工作点加小信号扰动的形式:
[ \langle v_g \rangle = V_g + \hat{v}_g ]
[ d = D + \hat{d} ]
[ \langle i_L \rangle = I_L + \hat{i}_L ]
[ \langle v_C \rangle = V_C + \hat{v}_C ]
代回平均方程,展开之后会出现三类项:直流项、一阶小信号项、二阶小信号乘积项。直流项对应稳态工作点,让它们归零就得到稳态关系;二阶项如 (\hat{d}\hat{v}_g) 是两个小信号的乘积,数值上远小于一阶项,直接舍掉;保留下来的一阶项就组成了小信号线性方程。
于是电感电流的小信号方程是:
[ L\frac{d\hat{i}_L}{dt} = D\hat{v}_g + V_g\hat{d} - \hat{v}_C ]
电容电压的小信号方程是:
[ C\frac{d\hat{v}_C}{dt} = \hat{i}_L - \frac{\hat{v}_C}{R} ]
线性化过程中最重要的一点是:小信号扰动的幅度必须远小于直流工作点的值。工程上一般要求扰动幅度小于稳态值的10%,超过这个范围线性化误差会明显增大,模型预示的动态响应和实测就会拉开差距。
3. 实操过程与核心环节实现
3.1 拉普拉斯变换与传递函数推导
将上面的小信号方程从时域变换到S域。电感电流方程变成:
[ sL\hat{i}_L(s) = D\hat{v}_g(s) + V_g\hat{d}(s) - \hat{v}_C(s) ]
电容电压方程变成:
[ sC\hat{v}_C(s) = \hat{i}_L(s) - \frac{\hat{v}_C(s)}{R} ]
目标一般是先求控制到输出的传递函数,也就是 (\hat{d}) 到 (\hat{v}_C) 的关系。为了方便分析,先做两个合理的假设:一是输入电压 (V_g) 恒定,因此 (\hat{v}_g(s) = 0);二是负载电阻不变。这样电感方程简化为:
[ sL\hat{i}_L(s) = V_g\hat{d}(s) - \hat{v}_C(s) ]
从电容方程中解出 (\hat{i}_L(s)):
[ \hat{i}_L(s) = \left( sC + \frac{1}{R} \right)\hat{v}_C(s) ]
代入电感方程并整理,就能得到经典的Buck变换器控制到输出的传递函数:
[ G_{vd}(s) = \frac{\hat{v}_C(s)}{\hat{d}(s)} = \frac{V_g}{LCs^2 + \frac{L}{R}s + 1} ]
这个结果看着简洁,但信息量很大。它表明Buck变换器是一个典型的二阶系统,自然振荡角频率 (\omega_0 = 1/\sqrt{LC}),阻尼比 (\zeta = \frac{1}{2R}\sqrt{\frac{L}{C}})。(\zeta) 直接决定频域曲线在谐振点附近的凸起程度和时域响应的超调量。负载越轻,也就是R越大,阻尼越小,谐振峰越高,相位曲线在谐振频率附近的下跌也越剧烈。
如果保留电容ESR (R_C),传递函数会额外增加一个零点 (f_z = \frac{1}{2\pi R_C C})。这个零点通常落在几kHz到几十kHz,如果补偿网络设计忽略了它,实际开环增益曲线会比理论多一个向上的斜率段,穿越频率附近的相位裕量计算就会出现偏差。同理,电感的DCR (R_L) 会给传递函数增加一个低频零点,同时改变低频增益,在重载或小占空比工况下尤其明显。
3.2 用Python快速验证理论模型的频率响应
推导完传递函数,光看公式没有体感,必须画出Bode图来验证。我平时会用Python的control库或直接用scipy做频响计算。
Buck电路设计参数:(V_g=12V),(V_{out}=5V),(D=5/12),(L=33\mu H),(C=330\mu F),负载(R=5\Omega),计算得到:
[ f_0 = \frac{1}{2\pi\sqrt{33\times10^{-6}\times330\times10^{-6}}} \approx 1.53kHz ]
[ \zeta = \frac{1}{2\times5}\times\sqrt{\frac{33\times10^{-6}}{330\times10^{-6}}} \approx 0.1 ]
这么低的阻尼比意味着谐振峰大约有14dB的凸起,相位曲线在1.5kHz附近会迅速下拉接近-180度。看一下理论曲线,低频段是水平直线,增益约 (20\lg(V_g)=21.6dB);过了谐振点以-40dB/dec斜率滚降;相位从0度一直掉到-180度,存在一个明显的谐振“悬崖”。
这个结果给环路补偿的启示是:如果直接把穿越频率定在谐振点之后,必须用Type-III补偿在谐振点附近补两个零点和两个极点来抵抗LC双极点的相位下拉。如果穿越频率在谐振点之前,那么Type-II补偿就够了。这就是建模指导设计的最直观价值。
3.3 仿真验证:从理想模型到电路级仿真
模型推导完了,必须用电路仿真验证。我常用的工具是SIMPLIS和PSIM,这两款在做开关电源小信号分析时比SPICE类工具方便得多,因为它们自带平均模型或可以进行AC扫描分析。
在PSIM里搭Buck主电路,用正弦扫频法做AC分析。PWM调制器给一个小信号正弦扰动叠加在稳态占空比上,扫描频率范围从100Hz到100kHz。测量输出端的幅值和相位变化,就能得到电路的“实测”Bode图。把这个结果和上一节的理论传递函数画在同一张图里,你会发现理想模型在低频到中频段(约1/10开关频率以下)和仿真曲线几乎重合,在谐振点附近的峰也能对上。但频率过了开关频率的一半之后,理论和仿真开始明显分离,这是因为平均化处理把开关纹波和谐波信息都抹掉了。这部分误差是建模方法的固有局限,不是推导错误。
如果是数字控制,还得把采样延迟和计算延迟考虑进去,模型就会再增加一个 (e^{-sT_d}) 延迟项,带来越来越大的相位拖拽,这也是数字电源环路带宽上不去的核心原因之一。模拟控制一样有延迟,但比数字控制的采样延迟小得多,模型里通常忽略不计。
4. 常见问题与排查技巧实录
4.1 实测Bode图和理论曲线高频段对不上
这是被问得最多的现象。很多同学拿着理论传递函数算出来的补偿参数,信心满满地折腾样机,结果环路分析仪一测,发现1/2开关频率附近的相位比理论预测还要低二十几度。
原因主要有几个,按优先级排查:
第一,PWM调制器本身有一个等效的延迟效应。峰值电流模式和电压模式还不一样,电压模式相对简单,但调制器内部比较器和门驱动传播延迟、死区时间带来的非线性,都会在高频段增加额外的相位滞后。
第二,电感寄生电容和MOSFET结电容在高频段形成额外的谐振峰和相位拖拽。这个在开关频率的一半以上尤其明显。理论模型里的双极点模型过于干净,实际电路在高频段有非常多的寄生谐振。
第三,电容ESR零点的位置。如果电容用的是MLCC,ESR很低,零点频率高得离谱,会超出模型覆盖范围;如果用的是电解电容,零点可能落在10kHz附近,直接把相位从-180度往回拉,这个拉回效果如果你的理论模型没算零点,就会看到实测相位比理论高。
解决方法:要判断偏差是否来自上述原因,最直接的办法是保持补偿网络不变,把一个已知干净的阻性负载接上,测量开环传递函数。如果谐振峰位置和理论能对上,但高频相位对不上,基本都是寄生效应。这时候可以修正模型,给电感增加一个并联电容模拟绕组间寄生电容,给开关节点增加一个对地电容模拟结电容,再对比仿真。
4.2 占空比接近50%时,电流模式控制出现次谐波振荡
这个坑在电压模式里不明显,但在峰值电流模式里很经典。当占空比大于50%时,电感电流的上升斜率大于下降斜率平衡条件被打破,扰动会随着每个开关周期被放大,最终出现次谐波振荡,频率等于开关频率的一半。
在平均模型中,我们引入的控制到电感电流的传递函数 (G_{id}(s)) 会在这个工况下预测出一个右半平面极点,导致系统本质不稳定。这个极点在频域上表现为低频增益上升、相位额外下拉-90度,非常迷惑,特别是在Bode图上相位曲线形状和普通二阶系统差别不大,容易误判成只是相位裕量不足。
解决手段就是斜坡补偿。在平均模型里,斜坡补偿的作用相当于给电流环路增加一个等效的采样保持增益修正项,修正后的控制到输出的传递函数在高频段的增益尖峰被压低,右半平面极点被拉回左半平面。实操中,斜坡补偿的斜率一般取电感电流下降斜率的一半到一倍之间,太小压不住次谐波,太大会让系统动态响应变慢、大信号响应变钝。这里有一个经过验证的实用估算方法:补偿斜坡斜率等于电感电流下降斜率时,系统对任意占空比的稳定性裕量都比较均衡,这也是很多控制芯片内部默认设置的原因。
4.3 轻载下模型预测和实测偏差突然变大
如果你做的是CCM/DCM兼容的变换器,轻载时电感电流进入断续导通模式,情况就变了。状态空间平均法的前提是CCM,DCM下状态方程多了一个“电感电流为零”的区间,平均方程的形态完全不同,控制到输出的传递函数也从二阶降为一阶系统——负载电阻不再是独立的负载项,而是与控制环路动态耦合在一起,表现为低频增益升高、相位滞后的极点消失,带宽模型参考价值大幅下降。
遇到这种情况,不能再用CCM模型硬算。工程上有两条路:要么直接把负载提升到CCM边界以上再测量设计,要么用DCM平均模型重新推导。DCM下Buck变换器的控制到输出传递函数大约是一个单极点系统,极点位置和负载有关,补偿策略也随之不同。我在项目里遇到轻载抖振(burst mode开启和关闭引起输出微小振荡)时,就是切换到DCM模型重新算了一遍补偿,才把问题解决。
4.4 仿真软件搭建平均模型时忽略的初始化问题
无论是SIMPLIS还是PSIM,在做平均模型仿真时都要注意初始状态的设置。很多仿真器默认从零状态开始,而平均模型和开关模型在启动瞬间的动态过程完全不同。如果你要测的是小信号频域响应,一定要先让电路稳定到目标工作点,再注入扰动。否则Bode图低频段会出现奇怪的波动,或者相位曲线从0度附近莫名其妙地跳变到-180度。
实操上,我会先把占空比固定,让电路启动到稳态,再用分段线性化的方式逐步增加扰动幅度,观察输出响应是否线性变化。如果输出对扰动出现明显的非线性响应,比如整流失真或者幅值不随扰动等比例变化,那就说明扰动加太大了,要降低幅度重新扫描。一个相对保守的设置是让输出电压扰动幅度控制在稳态电压的1%以内,这个幅度在AC分析中足够被检测到,又不会触发非线性效应。
5. 建模之外的经验补全
5.1 平均模型与开关模型联合仿真的技巧
建模验证阶段,我习惯同时跑两套仿真:一套用开关模型(真实MOSFET模型或理想开关+二极管),另一套用平均模型。把两套模型的控制到输出Bode图叠加在一起,如果中频段重合度足够好,说明平均模型的适用边界确认没超;如果分叉,就要反过来检查是否进入了平均模型不适用的频段,或者参数设置出了问题。
在SIMPLIS里做这一套尤其顺手,因为它原生支持AC分析,可以直接得到开关模型的Bode图。PSIM也支持,但需要自己搭一个正弦扰动源并做后处理,稍微费事。用MATLAB/Simulink的话,Control System Toolbox可以直接把传递函数离散化,适合数字控制器设计验证。工具选择不重要,重要的是你心里有一把尺子——平均模型在什么频段以下可信,什么频段以上必须交给开关模型或实测去校核。
5.2 寄生参数到底哪些值得建模
很多论文动辄列出十几个寄生参数,但工程建模不能贪多。我的经验是只关注那些对目标频段影响显著的参数,按优先级排序。
首先是电容ESR,它带来的零点在某些电解电容方案里会落在环路带宽之内,直接影响相位裕量,必须建模。其次是电感DCR,它的影响在轻载和高频段较明显,表现为低频增益降低和轻载时阻尼增加。然后是MOSFET导通电阻和二极管压降,这两个影响的是直流工作点,在高频段影响不大,期初建模时可以先不考虑。
真正让模型复杂化的是这些寄生参数的工作点依赖性。比如MOSFET导通电阻随温度变化,DCR随温度升高而变大,电容ESR随频率和温度都在变化。如果把这些全部塞进模型,参数不确定性会大到让模型失去指导意义。合理的做法是取典型值建模,然后做±20%等参数扫描,看看环路稳定性余量对哪些参数最敏感,针对最敏感的参数再重点实测确认。控制设计本来就是在不确定性中寻找鲁棒性。
5.3 从传递函数到补偿网络设计的桥接
有了 (G_{vd}(s)),下一步就是设计补偿网络 (G_c(s)),让开环传递函数 (T(s) = G_c(s)G_{vd}(s)) 满足交越频率、相位裕量、增益裕量三个核心指标。以Buck变换器为例,如果LC双极点带来了-180度的相位滞后,而目标相位裕量是45度,那么补偿网络在穿越频率处必须提供足够的相位提升。这就是为什么需要Type-III补偿——它能在特定频率区间内产生最高约180度的相位提升。如果穿越频率选在谐振点之前,LC双极点的相位滞后还没完全展开,Type-II补偿就够用。
用模型算出来的补偿参数上板之后,一定还要实测闭环Bode图。理论参数只能作为起点,因为实际电路里还有滤波电感、采样电阻、比较器偏置等带来的额外相移。这个实测闭环Bode图通常能看出补偿网络的零极点是否落在了正确位置。零极点位置偏差不大的情况下,也可以直接在实机上微调电阻电容值来拉相位裕量,不用每次都回模型里改参数重新算。
5.4 数字控制下的建模变化
如果你做数字电源,模型还要额外考虑离散化、采样延迟和PWM更新延迟。模拟控制里,调制器几乎即时响应占空比命令;数字控制里,ADC采样需要时间,计算需要时间,PWM寄存器更新还要等下一个周期边沿。这些延迟累加起来通常有1到2个开关周期,反映到频域就是随频率线性增加的相位滞后。从模型角度,修正方式是在 (G_{vd}(s)) 后面乘一个 (e^{-sT_d}) 延时项,(T_d) 取 (0.5 \sim 1.5) 个开关周期,具体取决于采样点和PWM更新策略。
很多数字电源项目把带宽做不高,不是因为模拟部分不行,而是这部分延迟相位拖累太大。通过建模,你可以明确计算出延迟对环路带宽的上限约束,从一开始就设定合理的设计目标,而不是等样机出来了再到处抓瞎。这个思路也能延伸到峰值电流模式数字控制中,斜坡补偿参数在数字域实现时同样需要在控制环路上建立精确的数学模型,才能算出最优补偿斜率。
我个人在实际操作中的体会是:小信号建模最大的价值并不在于让你背下一个公式,而在于给了你一套“预判”能力——只要拿到拓扑、参数和工作点,就能在心里先画出Bode图的大致形状,知道哪些频段会有风险,哪些参数对稳定性最敏感。这种直觉,完全是靠一次一次推导、仿真、实测对比中磨出来的。最后再分享一个小技巧:建模完成后,在桌面贴一张“实测Bode图对不上理论Bode图”时的排查清单,从上到下依次是采样延迟、寄生参数、阻尼系数、工作点偏差、补偿网络实际零极点位置,基本能覆盖九成以上的偏差来源。如果清单逐项排查完还是对不上,那就要检查是不是模型本身选错了,比如该用DCM模型却用了CCM。