ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Boost与Buck双闭环控制Simulink仿真:从参数计算到PI整定全流程

Boost与Buck双闭环控制Simulink仿真:从参数计算到PI整定全流程 1. 项目概述与整体设计思路Boost和Buck电路是电力电子领域最基础的两种DC-DC变换拓扑一个是升压一个是降压但把它们放在同一个仿真框架里做双闭环控制研究就不是简单搭两个模型的事了。我最近刚完成这个项目的全流程仿真从主电路参数计算、控制环路设计到Simulink模型搭建、波形调试一路走下来踩了不少坑也攒了不少可以直接复用的经验。这篇就把整个研究过程和细节完整捋一遍。这个项目要解决的核心问题很明确Boost和Buck电路都只有一个可控开关管输出会受到输入电压波动和负载突变的影响单环控制只采样输出电压虽然能稳住稳态但动态响应慢而且Boost电路在负载突变时输出容易过冲。双闭环控制也就是内环电感电流环加外环输出电压环是在这个场景下最常规也最实用的解决方案。内环对付快速变化的电流扰动外环稳住输出电压精度两者配合后系统的带宽和抗扰能力都会有明显提升。建模仿真这个环节选Simulink几乎是行业标准做法。Matlab/Simulink里既有Simscape Electrical这种物理建模工具包可以直接拖功率器件和磁性元件也可以用传递函数搭平均值模型做控制算法验证。我在这个项目里两套都用了前面验证控制参数用平均值模型速度快PI参数大概心里有数之后再切到开关模型跑精细波形这样效率最高。整篇文章涉及的物理建模、参数计算、PI整定、PWM生成、波形分析都可以直接照着做。1.1 为什么Boost和Buck要放一起做双闭环研究很多人觉得Boost和Buck是两个独立电路控制方法也各搞各的其实它们的本质结构高度相似。对比一下就看明白了Buck是开关管串联在输入端和电感之间输入电压通过斩波后经LC滤波输出Boost是电感串联在输入端开关管并联在电感后面通过控制电感储能和释放来实现升压。两者的被控对象都是电感电流和输出电压传递函数也都是一阶系统带一个由LC决定的谐振极点区别只在于Buck的占空比到输出的传递函数是线性的Boost是非线性的小信号模型里分母上多了一个与占空比相关的零点。正是因为数学本质接近双闭环控制可以共用同一套设计框架。外环用电压PI调节器生成电感电流参考值内环用电流PI调节器生成占空比Boost中还需要折算成合适的调制方式。我在实际仿真中发现只要把电流环带宽设为电压环带宽的5到10倍两个环路基本不会互相打架这个设计经验在Boost和Buck上都能直接套用。这个项目把两种拓扑放一起对照研究最大的价值就在这里——参数整定方法论可以互相迁移。1.2 双闭环相比单闭环的优势在哪里单电压闭环的问题是输出电压已经偏离了才去调节属于事后修正而电感电流本身包含了负载变化和输入变化最直接的信息。举个例子Boost电路负载突然加重时输出电压会先掉下来电压环才反应中间这段滞后时间内电流可能已经冲到很高严重时会触发过流保护甚至烧管子。双闭环相当于把电感电流单独拎出来用一个环路去管。负载突变时负载电流变化会立刻反映到电感电流上电流内环第一时间把电流拉回设定值附近不需要等输出电压掉下来再动。外环的电压PI只负责缓慢修正电流参考值让输出电压逐步回到目标。这个快慢分工的思路在控制领域很常见但对于Boost这种非最小相位系统存在右半平面零点内环的存在还能显著缓解响应初期输出下降的问题这在实际仿真波形里可以看得很清楚。2. 主电路原理与关键参数计算2.1 Buck电路的工作原理与参数整定Buck电路降压的原理很容易理解开关管以一定频率开通和关断把输入电压斩成方波然后经过LC滤波器把方波平均值之外的谐波滤掉负载上得到的就是平均电压。工作在连续导通模式CCM下输出和输入的关系是 Vout D × Vin这里 D 是占空比。这个公式是Buck控制的基础。电感和电容的取值决定了电流纹波和电压纹波。我常用的设计指标是电流纹波不超过满载电流的20%到40%电压纹波不超过输出电压的1%到2%。电感量按这个公式算L_min (Vin_max - Vout) × D_min / (fs × ΔI_L)这里 D_min 是最高输入电压对应的最小占空比fs 是开关频率ΔI_L 是允许的电流纹波峰值。电容按纹波电压要求来算CCM下C_min ΔI_L / (8 × fs × ΔVout)我这次仿真里设定输入48V输出24V开关频率50kHz满载5A。按上面的公式电感算出来大约是96uH左右我取了120uH留出一点裕量电流纹波设计为0.8A电容按1%纹波电压算出来大概是67uF实际取100uF。这些参数放到Simulink里跑出来的纹波都在预期范围内。2.2 Boost电路的工作原理与参数整定Boost升压电路的工作原理可以这样理解开关管导通时输入电压直接加在电感上电感电流线性上升相当于给电感充磁开关管关断时电感电流不能突变会通过二极管流向负载端这时电感上的感应电压和输入电压串联叠加输出端电压就被抬高了。CCM下输出和输入的关系是 Vout Vin / (1 - D)因为D只能是0到1所以输出永远大于等于输入。Boost的储能元件计算思路和Buck类似但公式不同。电感量主要看最大输入电流时的纹波要求L_min Vin_min × D_max / (fs × ΔI_L)输出电容要考虑两个因素一个是电压纹波要求另一个是负载突变时电容需要提供能量缓冲。纹波要求对应的电容计算公式是C_min I_out × D_max / (fs × ΔVout)我仿真里Boost设计参数是输入12V输出24V开关频率50kHz满载2A。输入最低10V对应的最大占空比 D_max 算下来大概是0.58允许电流纹波0.6A电感约需要190uH我取220uH。电容按输出纹波0.1V约0.4%计算需要约230uF我取470uF。Boost对电容容量的需求比Buck大的原因也在这里开关管关断期间输出全靠电容维持电容太小电压跌落就会很明显。2.3 双闭环控制架构与PI调节器设计双闭环的架构一句话就能说清电压外环的输出是电流内环的参考值电流内环的输出通过调制生成开关管的PWM占空比。采样对象分别是输出电压和电感电流两个PI调节器串联工作。电压外环PI的作用是保证输出电压稳态精度和较低的超调量输出限幅要限制在允许的最大电感电流范围。电流内环PI的作用是快速追踪电感电流变化输出限幅要限制在PWM占空比的合理范围Boost通常是0.10.9Buck可以到0到1。PI参数整定我整体采用由内到外、分层整定的思路。先单独设计电流内环把电流环的响应速度调够快然后再加电压外环慢慢调整电压环的PI参数。项目中把电流环的截止频率设置在开关频率的1/10左右也就是5kHz附近电压环的截止频率设置在500Hz到1kHz左右。这样电压环和电流环之间隔开5到10倍频程环路之间的耦合影响几乎可以忽略。3. Simulink模型搭建与核心实现3.1 两种建模方式的选择平均值模型与开关模型Simulink里做电力电子仿真有两种主流方式一个是平均值模型一个是开关模型很多人一上来就建开关模型其实效率很低。平均值模型忽略开关纹波把开关管和二极管等效成一个受控电压源和受控电流源输出电压和电流的关系直接按占空比的线性或非线性函数来建立。这个模型跑起来非常快几分钟就能跑完好几秒的仿真特别适合调PI参数和验证算法逻辑。开关模型则是用Simscape Electrical里的MOSFET、Diode、电感、电容等物理器件搭建真实电路每个开关周期都能仿真出来波形里能看到完整的电流纹波和电压纹波更贴近实际。缺点是仿真速度慢而且参数不合适时很容易不收敛。我的建议是两条腿走路先用平均值模型把PI参数调好再用开关模型验证。这样既快又不失真还能互相印证。下面讲的就是两套模型的搭建方式。3.2 平均值模型搭建用于PI参数快速整定平均值模型的重点在于把开关网络的平均行为用公式表达。对Buck电路开关网络的平均输出电压是 D×Vin平均电流是 D×I_L对Boost电路开关网络的平均输入电流是 1/(1-D) 折算到输出侧的电流关系输出电压平均值是 Vin/(1-D)。具体搭法如下用Vin乘以脉冲信号的平均占空比D得到前级的电压源输入到LC网络电感串联一个小电阻模拟铜阻负载用可变电阻模拟突加突卸。控制部分用电压采样模块直接节点电压、电流采样模块串联电流测量误差信号进PI调节器限幅之后作为占空比给到受控源。这个模型里没有任何开关器件仿真速度和稳定性都很好。整个模型的Simulink实现大致是这个逻辑Verr Vref - Vmeas Iref PI_voltage(Verr) Ierr Iref - Imeas D PI_current(Ierr)两个PI调节器串联之后把D送给受控源。电流内环饱和限幅对Buck设为0.95对Boost设为0.9防止出现过大的占空比导致电感饱和。3.3 开关模型搭建用于精确波形验证开关模型用Simscape Electrical搭建Buck电路具体是这样直流电源接入一个N沟道MOSFET作为开关管后接电感和二极管续流再后面是电容和负载电阻。MOSFET的驱动端接PWM信号PWM信号由控制回路计算出的占空比经过PWM Generator模块生成。Boost电路拓扑稍微换一下电感放在输入端MOSFET并联在电感后面二极管和电容组成输出级。这里有几个关键设置需要注意。第一个是求解器我在仿真里使用的开关电源模型如果开关频率是50kHz连续求解器建议选 ode23tb 或 ode15s这两个对刚性系统的处理能力比较强不容易出现不收敛。第二个是PWM生成方式Simulink里的PWM Generator模块只需输入占空比和开关频率输出的Pulse宽度信号直接连接MOSFET的g端即可。第三个是杂散参数电感要加串联等效电阻电容要加等效串联电阻ESR否则波形会偏理想化和实际差别很大。我这次仿真里给电感设的是10mΩ内阻电容ESR设的是20mΩ虽然电阻很小但对阻尼和纹波仿真结果的真实性影响显著尤其反映在启动过冲和负载阶跃响应的波形上。3.4 电流采样与PWM调制细节电流内环的效果很大程度上取决于怎么采样电感电流。在开关模型里有两种常用做法一是用Simscape里的Current Sensor模块串联进电感支路二是把电感所在的支路信号引出通过滤波后送入控制环。但要注意开关纹波很大直接采样进PI调节器会导致占空比波动我在仿真里对采样电流加了一个一阶低通滤波器截止频率设在20kHz左右把50kHz的开关纹波滤掉保留电流的基波和主频段信息控制就更平稳。PWM调制频率选择上Buck和Boost都用50kHz这个频率对于MOSFET和仿真速度都是折中方案。频率太高仿真步长必须缩小跑同样时长的时间成本成倍上升频率太低电感体积大电流纹波明显。50kHz对我来说熟练度和仿真稳定性都是最佳点。还有一点很多人会忽略PWM Generator模块输入的占空比需要经过单位换算。Simulink里PWM Generator在连续模式下输入范围是0到1如果PI调节器的输出限幅设的不是这个范围很容易出现调制比不对、输出电压偏低的灵异现象。我专门给PI输出端加了一个饱和限幅和增益校准保证进入PWM模块的信号严格落在0到1之间。3.5 双闭环模型整体连接与信号路由整体模型我把主电路部分放在一个Subsystem里控制部分放在另一个Subsystem里输入输出通过Goto/From标签连接避免模型线缆密集到看不清。控制部分内部结构是Vref常量送入求和器与Vmeas求差进入电压PI限幅得到IrefIref与Imeas求差进入电流PI限幅得到DD进PWM模块PWM信号进主电路。主电路里输出电压和电感电流的测量信号通过From标签回传到控制侧。模型跑起来之后用Scope把输出电压、电感电流、占空比、参考电流四个信号同时显示出来。需要注意的细节是初始状态。Boost电路在启动时输出电容上没有电压如果直接把Vmeas反馈到电压环里PI调节器一开始就会饱和输出最大占空比电感电流可能冲到很高。我做了两步处理第一步是给输出电容设置初始电压和输入电压相同模拟预充状态或者给参考电压做一个斜坡上升第二步是给电流PI输出加软启动限制让占空比从较小值开始逐步放开。处理之后启动过冲和电流冲击明显小了很多。4. 仿真结果与分析4.1 稳态波形与关键指标验证模型搭好后先跑稳态不加载任何扰动。Buck电路输入48V输出24V实测输出平均电压24.02V电压纹波大约180mV在我设计指标的1%以内。电感电流平均值接近负载电流5A纹波约0.65A也符合设计预期。Boost电路输入12V输出24V实测输出24.05V纹波大约210mV电感电流平均值在5A左右纹波约0.5A都在设计范围内。两个电路的开关管两端电压波形都符合理论预期Buck开关管承受最大反向电压等于输入电压48VBoost开关管承受的最大电压等于输出电压24V严格说是输出二极管反向恢复电压大概在30V以下这说明主电路的参数和拓扑结构都是合理的。功率开关的占空比波形稳定Buck稳定在0.5附近Boost稳定在0.5附近和理论公式 VoutVin/(1-D) 反推回来的基本一致控制环路没有明显的稳态误差。4.2 负载突变动态响应对比接下来做动态测试。我给负载电阻在仿真运行到0.03秒时从满载变为半载再在0.06秒时从半载跳回满载观察双闭环控制下的动态响应。Buck电路的负载突变响应让人满意满载切换到半载时输出电压上冲约250mV约1%经过约1.5ms恢复半载切回满载时电压跌落约300mV恢复时间约2ms。电感电流在切换瞬间有快速的调节动作电流内环明显参与了制约没有出现明显的电流尖峰。Boost电路的负载突变响应更有看点。由于Boost是非最小相位系统满载切半载时理论上会出现输出电压先继续上冲再回落的反向现象。在双闭环控制下这个反向变化被电流内环抑制了很多实测上冲量约420mV恢复时间约3ms。如果只用单电压环这个上冲量至少会翻一倍。对比实验我做过多次结果很稳定这也是双闭环在Boost电路里价值的最直观体现。4.3 输入电压扰动下的鲁棒性分析电源系统常见的工况是输入电压波动。我模拟了两种情况Buck输入电压从48V阶跃到54V再回到48VBoost输入电压从12V阶跃到9V再回到12V观察系统的抵抗能力。Buck在输入电压阶跃时刻输出电压出现了约150mV的偏离2ms内恢复。调整过程中占空比自动从0.5下调到0.44左右抵消输入升高的影响这正是双闭环中的电压外环在发挥自动调节作用。Boost的输入电压骤降是它不太友好的工况之一。12V掉到9V时输出电压瞬时跌落约500mV恢复时间大概4ms。但这期间电感电流被电流内环控制得很平稳没有冲击到大电流。我用单电压环做过同样的测试跌落幅度和恢复时间都有明显恶化。这个对比实验强烈说明了电流内环对Boost系统鲁棒性的重要贡献。5. 常见问题与排查技巧实录5.1 仿真报错与不收敛问题电力电子仿真最常见的问题之一是Simulink cannot solve the algebraic loop或者仿真直接卡死在某个时间点。我这里总结一下处理经验。第一种情况是代数环。控制回路里如果测量信号和占空比信号之间存在没有延迟环节的直通通路就容易出现代数环。最简单的解决办法是在PI调节器输出和PWM模块之间插入一个Memory模块或单位延迟Unit Delay。虽然会引入一个步长的延迟但在50kHz开关频率下一个步长的延迟对控制品质的影响可以忽略。第二种情况是数值刚性。连续仿真用默认的ode45很容易不收敛因为电力电子电路天然存在非常快的时间常数开关切换瞬间的电压电流变化率极高。我建议直接用 ode23tb 或者 ode15s配置上把最大步长设置为开关周期的1/50也就是1e-6秒左右这样既能保证精度又能兼顾仿真速度。下面是几个我实际遇到的报错场景和解决方案的速查表。报错/现象原因处理方法Algebraic loop detected控制环存在直通路径在PI输出后插入Memory模块Solver failed to converge步长过大或模型太刚性改用ode23tb最大步长设为1e-6NaN出现在波形中PI积分器初始状态过大或模型中有除零检查PI初始条件和积分增益增加限幅输出电压一直偏低PWM占空比范围不对检查PI输出限幅是否在0到1之间电流波形发散电流PI参数过大或采样滤波不足降低电流环比例增益增加电流采样滤波5.2 启动冲击电流过大的处理Boost电路启动时的冲击电流是个很容易让人头疼的问题。模型刚跑起来控制还没建立起来输出电容相当于直接通过电感充电电感电流在极短时间内冲得很高。这个冲击电流让你无法判断控制器到底调得好不好因为每次启动波形都是充满毛刺的。我做了三件事来缓解启动冲击。第一件是把输出电压参考源从阶跃改为斜坡斜坡时间设在2ms左右让电压环的输出不要一开始就饱和。第二件是给电流内环加软启动限幅把电流参考值的最大值从稳定值的50%开始逐步放开到100%。第三件是在输出电容上设置初始电压让电容预先充到接近输入电压的值再开始PWM调制。这些处理做完之后启动过冲和电流冲击都在可控范围内调试参数时也更容易看清控制环路的真实响应。5.3 PI参数整定的实操心得最后聊一下PI参数整定的一些心得。很多人调PI毫无章法乱试一通。我给出我的经验方法先把电流内环单独调把电压外环断开直接把电流参考值设成固定值观察电感电流的实际追踪情况。先把P调到系统响应快速但不过度振荡再逐步加I消除稳态误差。电流环调好后再接电压外环。电压环的P开始尽量小加一点就观察一下阶跃响应找到临界振荡点再把P退到临界值的1/3到1/5然后再加I处理稳态误差。我这个项目最终用到的参数大概是这样Buck电压环P0.5I150电流环P2I300。Boost电压环P0.3I120电流环P1.5I200。注意这个值只在我这个具体拓扑和参数下有效鼠标一样的参数放在不同电压电流等级的电路上差别会很大关键还是要掌握整定的方法。还有个容易被忽略的小细节电流采样信号的滤波时间常数要是加得太大会在电流环里引入额外延迟导致环路不稳定。我用的一阶低通滤波器截止频率放在20kHz时间常数大约是8微秒这个值相对电流环的响应时间常数来说还比较小不影响稳定性又能有效滤除50kHz的开关纹波。5.4 仿真时长与步长的平衡技巧仿真时长和步长的平衡也是提升满意度的关键点。我一般先把仿真停止时间设定在0.1秒左右跑一次看波形确认稳态后再逐步加长到0.3秒用来观察多段扰动。固定步长设置为1e-7秒当然更精确但跑起来太慢。我的经验是在观察启动和动态响应的关键时间段比如0到0.02秒用较小的最大步长来提高精度后面稳态阶段用较大的步长可以通过修改求解器的可变步长上限来实现。这个方法操作不复杂但能让仿真效率明显提升。此外如果仿真跑完之后想更细致地观察某个时间段的波形可以设置输出的采样时间Output Times把关注的时间段单独提出来细化输出不需要重跑整个仿真。6. 个人经验总结这个项目做下来最大的体会是双闭环控制的核心难点其实不在Simulink操作而在于参数整定时对两个环路带宽分配的理解。只要想清楚内环电流快、外环电压慢这个原则很多问题都能顺着理出来。另外在实际建模时别偷懒直接上开关模型先花十分钟搭平均值模型把PI参数调好后面所有工作都会顺利很多。从项目扩展角度看这套双闭环设计思路完全可以平移到其它拓扑比如同步Buck、双向Buck-Boost、以及带耦合电感的Boost变换器原理相通只是被控对象模型和调制方式有差异。第一步先把Buck和Boost这两条腿走稳后面路就宽了。
返回列表