资讯动态

全桥LLC混合控制仿真:PFM与PSM协同设计及Simulink建模实践

发布时间:2026/10/19 5:26:30 来源:尧图企业网站定制
做电源的朋友应该都有过这种经历满载工况下一切正常全桥 LLC 的输出波形漂亮、效率也高但负载一轻输出电压就开始往上飘原边电流变成一个很细的尖。我见过不少人的第一反应是拼命把开关频率往高处推结果频率推到接近谐振频率的两倍输出还是压不住驱动损耗倒是先上来了。真正把这个问题解掉的是变频控制与移相控制组成的混合式控制全桥 LLC 谐振变换器也就是 PFMPSM 混合控制。这篇文章把我从零搭这套 Simulink 模型的完整思路写下来重点拆解混合控制为什么合理、PFM 和 PSM 怎么交接才不会振荡、桥臂驱动信号怎么生成、环路参数怎么调以及仿真里最容易被忽略的软开关问题。对正在做 DC-DC 电源仿真、准备做毕业设计或者刚接手 LLC 项目的同学应该能少走不少弯路。1. 纯 PFM 打到墙上的那一刻为什么全桥 LLC 需要混合控制1.1 先回顾 LLC 靠什么调压全桥 LLC 的功率级由四个开关管构成分成超前桥臂和滞后桥臂对角管同时导通原边得到一个正负交替的方波。谐振槽由谐振电感 Lr、谐振电容 Cr 和励磁电感 Lm 组成副边接整流二极管和输出滤波电容。LLC 调压的核心是增益曲线随频率移动。用基波近似法分析时方波输入先被谐振槽滤波只有基波分量真正参与能量传递。这个电压增益曲线是单峰的当开关频率等于 Lr 和 Cr 决定的谐振频率 fr 时增益大约为 1频率低于 fr 时整体增益大于 1频率高于 fr 时增益小于 1。PFM 控制做的事情就是根据输出电压误差不断调整开关频率让工作点在这条曲线上前后移动从而稳定输出。这里必须记住一个前提LLC 不仅是个降压电路还是个阻抗变换网络。负载越轻品质因数 Q 越低增益曲线越尖锐。这意味着同样的频率偏移量在满载时能改变不少电压在轻载时却可能只换来一点点变化。很多第一次做 LLC 的人只盯着满载点设计恰恰忽略了这一点。1.2 轻载和深降压把频率推到失控区举个典型场景输入 400V输出 48V满载 5A变压器变比 Np:Ns 取 4:1谐振频率 fr 设计在 100kHz 附近。满载时工作频率可以放在 95~105kHz效率高、软开关条件也好。可当负载降到 1A等效到原边的电阻变大Q 值骤降增益曲线变得又高又窄输出电压就会明显上扬。为了压住电压控制器被迫把频率往上推很多设计要推到 150kHz、170kHz 甚至更高。频率推到这种高度有三个直接后果。第一增益曲线在高频端变得很平。频率从 100kHz 推到 110kHz 可能还能看到电压变化从 160kHz 推到 170kHz输出电压几乎纹丝不动。控制分辨率基本丧失环路带宽也上不去。第二开关周期变短死区时间占比变大。100kHz 时一个周期 10μs200kHz 时只有 5μs再扣除死区和开关暂态有效导通窗口被压得很窄。第三ZVS 条件变差。原边开关要实现零电压开通必须依靠死区内原边电流给结电容充放电。负载越轻电流越小频率越高死区越短ZVS 就越难保证。仿真里如果只看输出电压稳定就以为万事大吉往往会漏掉这个隐患。反过来如果输入电压很低、负载又重控制器会把频率往 fr 以下推以获得高增益。频率太低可能进入容性工作区原边开关失去 ZVS轻则电流尖峰变大重则直接炸管。所以纯 PFM 的频率范围跨度越大设计越难做这也是宽范围应用的痛点所在。1.3 移相控制补上了哪块短板PSM 的思路和 PFM 完全不同。固定开关频率让滞后桥臂的驱动信号相对于超前桥臂错开一个相移角 φ。对角开关同时导通的时间缩短原边方波在移相区间内变成零电平相当于把 180° 的方波“切”掉一块。谐振槽收到的激励电压基波分量下降了输出电压随之下降。用生活会话类比PFM 像调整水龙头孔径的大小去调节流量PSM 像反复开关水龙头、靠调节每次开启的时长来控水。两者都能调但作用机理不一样。但纯 PSM 也不是免费的午餐。相移角一旦拉大原边电流在零电平区间会形成明显的回流平台超前臂和滞后臂的软开关条件很不均衡尤其是滞后臂轻载下很容易变成硬开通。而且重载下单纯靠移相降压电流峰值并不会同比减小开关损耗反而可能上升。所以把 PFM 和 PSM 放一起做混合控制不是多此一举而是让两条控制通路各自处理自己擅长的工况。2. 混合策略的决策逻辑PFM 和 PSM 怎么分权、怎么交接2.1 单环带两个执行器控制量到频率和相位的映射混合控制不是两套独立的电压环而是同一个电压误差环路把 PI 控制器输出映射到两个不同的执行通道。我这里给出一套最基础、也最容易在 Simulink 里落地的映射逻辑。设电压误差经 PI 后输出 u限幅在 0 到 1 之间。PFM 模式下频率指令由 u 映射f_cmd f_limit - kf * (u - u_switch); phi_cmd 0;这个式子表达的是u 越大说明误差为正、需要提升增益频率就往低处走u 越小说明输出偏高、需要压低增益频率就往高处走。f_limit 是设计好的频率切换阈值不是保护极限。u_switch 是工作点刚好对应 f_cmd f_limit 时的 PI 输出。当 u 小到让 f_cmd 超过 f_limitPFM 通道已经没有继续调节的余地就切到 PSM 模式f_cmd f_limit; phi_cmd saturate(kph * (u_switch - u), phi_max);频率被锁定在 f_limit相移角随 u 继续变小而增大实现更深的降压。当输出回升、u 重新变大相移角会逐渐减小到 0这时候再把控制权交还给 PFM。这套逻辑的关键点是切换点不在物理极限而是选在一个还能保证软开关、又足够覆盖调压需求的工作点。比如 f_limit 取 100~120kHz 附近比硬推 170kHz 要合理得多。2.2 模式切换的交接边界与防振荡设计模式切换是混合控制最容易翻车的地方。仿真里最常见的现象是输出电压波形刚开始还行切到 PSM 后突然抖起来或者在两个模式之间来回弹跳看着像 PI 参数没调好实际是切换逻辑没有做保护。第一个必须加的是滞环。在 PFM 进入 PSM 的条件上加一个低阈值在 PSM 退回 PFM 的条件上加一个高阈值避免边界附近微小的电压扰动导致模式频繁跳变。没有滞环的控制轻载时输出电压轻微波动就能让模式标志每几毫秒翻转一次环路当然稳不住。第二个是抗积分饱和。PI 输出 u 被限幅后积分器必须停止累加否则切到 PSM 时积分器里残留的不合理数值会让相移角一开始就冲向最大值。仿真里表现为切换瞬间输出电压剧烈跌落然后才慢慢恢复。第三个是交接连续性。我在 PSM 入口把初始相移角设为 0并让频率锁定在当前 f_limit就是为了保证切换前后施加到谐振槽上的方波形状尽可能接近。如果切换瞬间频率突然变化几十千赫或者相移角从零跳到很大的值输出必然会出现一个明显的冲击这不是控制算法的错误而是交接方式太粗暴。2.3 纯 PFM、纯 PSM、PFMPSM 的适用范围对比策略轻载/空载表现低输入电压重载满载效率软开关保持控制器复杂度纯 PFM差频率被推到高频平台区低频可能进入容性区好中等简单纯 PSM好相移可深度降压重载下电流畸变明显中等滞后臂易丢失中等PFMPSM 混合好频率被限制在安全点由 PFM 低频段承接好较好需要模式管理从这张表能直接看出混合控制的定位PFM 负责需要高增益的重载、低压段PSM 负责需要深度降压的轻载、高压段两者都不需要在极端频率下硬撑这是纯 PFM 和纯 PSM 都做不到的。3. Simulink 建模的关键一步一坑从功率级到驱动信号3.1 功率级的模块划分与参数绑定把上面的控制策略落到 Simulink 里第一步是搭功率级。我的习惯是分成五个模块区域直流输入电源、全桥逆变、谐振槽与变压器、整流滤波、负载与测量。全桥开关建议带导通电阻和体二极管不要用理想开关。道理很简单混合控制要看软开关而软开关的判断依赖死区内的反向电流路径和结电容充放电。理想开关模型没有这些信息仿真波形看起来干净但结论不可靠。谐振电感 Lr 和励磁电感 Lm 要分开建模即使实际设计里可能把漏感并进谐振电感。高频变压器的寄生参数可以先不管但副边整流二极管的导通压降最好设一个合理值否则轻载时的输出电压计算会偏差很大。输出滤波电容要设置初始电压否则仿真刚开始时会有一个很长的电容充电过程不仅浪费时间还容易触发数值不收敛。仿真模型的接地和信号域转换也要提前梳理清楚功率部分用带物理单位的分量控制部分用普通 Simulink 信号两者之间靠传感器和转换模块连接不要混在一起。3.2 产生带死区、带移相的桥臂驱动信号四路驱动信号是模型里最容易出错的地方。最直观的做法是用两个 50% 占空比的脉冲发生器一个给超前桥臂一个给滞后桥臂滞后桥臂的脉冲再加一个可变时间延迟实现移相。这里有个实际问题可变延迟模块在高频下容易产生边沿抖动相位精度不够。我建议用 MATLAB Function 块统一生成四路信号逻辑更清晰也方便加死区。示意伪代码如下function [g1, g2, g3, g4] gate_logic(f_cmd, phi_cmd, Tdead) % 生成四个桥臂信号g1/g2 为超前臂g3/g4 为滞后臂 % 这里只描述逻辑实际需要配合离散计数器和定时中断实现 T 1 / max(f_cmd, 1e3); triangle mod(t / T, 1); % 0~1 归一化三角波 g1 triangle 0.5; g2 triangle 0.5; % 滞后臂叠加相位phi_shift phi_cmd / (2 * pi) * T triangle_b mod(t / T phi_cmd / (2 * pi), 1); g3 triangle_b 0.5; g4 triangle_b 0.5; % 实际模型中还需要把 g1 和 g3 的死区时间拆分出来防止直通这个逻辑只是骨架。死区必须在同一桥臂的两路信号之间插入死区时间取开关周期的 1%~2% 量级比如 100kHz 对应 100~200ns。如果同一个桥臂的上下管同时导通仿真会出现明显的不收敛或者异常尖峰。还要注意一个很多人踩过的坑对角管的驱动必须保持近似 50% 占空比。不要试图用普通 PWM 的“占空比”控制 LLC那是 buck、boost 的做法。LLC 调压靠的是频率和移相不是直接调制占空比。3.3 步长、离散化与控制频率仿真求解器选型直接影响混合控制成败。功率级是强非线性开关系统建议先用变步长求解器跑通逻辑限制最大步长到开关周期的 1/50~1/100。比如 100kHz 开关频率最大步长给 1μs 到 2μs 比较合理。如果确认软开关波形时必须更精细再把步长缩小但仿真时间会成倍增加。控制环路部分我建议先做连续 PI把功能跑通后再改成离散控制器。连续 PI 参数理解直观定位问题方便一旦换成离散控制采样周期、计算延迟、零阶保持器都会影响稳定性所有问题混在一起很难排查。负载突变是必须做的测试。在模型里用阶跃源切换负载电阻模拟 1A 到 5A 的变化时间点设置在控制进入稳态后比如 0.1s。这样能看到真实动态响应而不是只盯着静态稳态。3.4 闭环信号到底该送给谁搭建闭环前先把控制器的输出理清楚。普通 PWM 控制里PI 输出送给占空比比较器在 LLC 混合控制里PI 输出映射后产生的是频率指令 f_cmd 和移相角指令 phi_cmd然后把这两个量送给驱动信号生成模块。如果中间某个环节直接把 PI 输出接到占空比端口整个闭环方向就全错了。输出电压反馈的采样也要处理。LLC 副边输出含有开关纹波直接拿瞬时值送 PI 会放大纹波甚至让环路误动作。我的做法是在反馈通道加一个截止频率远低于开关频率的一阶低通滤波器或者用带采样保持功能的数据采样模块提取一个开关周期内的平均值。4. 环路参数整定与模式切换的动态验证4.1 为什么不能照抄一份 PI 参数跑两种模式PFM 和 PSM 的调制增益差别很大。PFM 通道里频率变化改变的是谐振网络的增益曲线位置PSM 通道里相移角改变的是方波基波幅值。两者的单位不同、斜率不同、线性度也不同。一份 PI 参数能在 PFM 下跑得很好切到 PSM 后可能要么响应慢吞吞要么猛振荡。从频域角度看LLC 本身的传递函数还会随负载和增益移动。满载时增益曲线陡、响应快轻载时曲线平坦、响应变慢。所以混合控制的参数整定本质上是给“频段模式”做增益调度而不是求一个万能值。推荐的做法是把两组 PI 参数分别存在模式控制表里PFM 模式用一组PSM 模式用另一组切换时根据当前模式选用。更平滑的做法是在模式边界附近做线性插值让增益调度系数随着控制量缓慢变化避免参数跳变带来输出台阶。下表是我在仿真里常用的一个初始参数参照思路具体数值必须结合自己的功率级参数重新标定控制通道增益变化方向典型量级参考初始 PI 切入点PFM频率升高输出电压下降每 10kHz 频率变化约引起 6%~15% 电压变化Kp 给 0.5Ki 给 50再逐级放大PSM相移增大输出电压下降每 10° 相移约引起 4%~10% 电压变化Kp 给 0.2Ki 给 20再逐级放大这些数值不是精确公式而是给一个调试方向。真正标定要依赖开环扫描。4.2 用仿真把 PFM 和 PSM 两段的传递特性测出来我强烈建议每次新搭模型都先做开环扫描再闭环保数据。方法很简单固定输入电压和负载分别跑一组离散的频率指令和相移指令记录对应的输出电压得到静态增益曲线。比如 PFM 扫描让 f_cmd 从 f_min 到 f_limit 每隔 2kHz 取一个点等待系统稳定后记录输出电压PSM 扫描固定开关频率在 f_limit让 phi_cmd 从 0 到 60° 每隔 5° 取一个点同样记录输出电压。把曲线画出来就能很直观地看到哪一段增益平坦、哪一段增益陡峭进而确定 PI 参数和模式切换阈值。扫描还有个附加价值可以顺便找到 f_limit 和最小相移角的组合点确保模式切换前后输出电压工作点尽量连续。这个数据靠拍脑袋猜不可靠用开环扫描去对齐是最稳妥的。4.3 阶跃负载与切换点波形应该怎么读仿真调通后要做一次完整的动态验证至少看四个信号通道输出电压、原边电流、f_cmd/phi_cmd 指令、模式标志。阶跃负载从轻载跳到满载时理想波形是输出电压先有一个动态跌落然后平滑恢复模式标志不会来回翻转。如果发现 f_cmd 冲到上限附近输出电压还在往下掉说明 PFM 段增益不足要么 f_limit 选得偏低要么变压器变比或谐振参数需要调整。如果在模式切换点附近输出电压出现先跌落再回升的连续震荡大概率是滞后太小或者 PI 参数没有切换。把探针挂到 phi_cmd 上如果 phi_cmd 在短时间内反复上下折腾切换逻辑的问题基本就暴露了。给我自己一个判断套路只要模式切换后的第一个开关周期内原边电流和输出电压没有明显的台阶就说明交接逻辑已经做对了。后面再慢慢打磨动态响应比一上来就追求切得又快又稳要省事得多。下面是一个常见仿真现象排查表现象可能原因处理思路输出电压高频抖动反馈通道纹波没滤干净反馈端加低通滤波或均值采样模式标志在边界反复跳缺少滞环切换条件增加 5%~10% 的滞环宽度切换瞬间电压凹陷过大积分器未做抗饱和处理PI 输出限幅同时冻结积分器相移角一进 PSM 就冲满PSM 段 PI 增益过大用开环斜率重新估算 kph轻载仍然压不住电压f_limit 选得太低提高切换阈值频率或增大相移上限5. 仿真验证中容易被忽略的软开关和器件应力问题5.1 在 Simulink 里怎么确认 ZVS 是真开还是假开很多仿真模型看起来收敛很好真正上板调试却硬开关损耗严重原因就是波形判断只看输出电压、不看软开关细节。判断原边开关是否真正实现 ZVS要看开关管开通前那一刻的电流方向和漏源电压。如果开通前体二极管已经导通电流从负方向穿过零点漏源电压被二极管钳到接近 0V才算是真正的 ZVS。仿真里把这几个信号拉出来看时间轴放大到死区范围检查开通指令上升沿前 Vds 是否已经降到接近 0V。如果开通前电流还保持正向Vds 也没有提前跌落那这个开关就是硬开通芯片结温会明显上升。混合控制切到 PSM 后尤其要反复检查滞后臂因为移相会改变电流时序滞后臂的 ZVS 条件比 PFM 模式脆弱得多。5.2 移相模式下的滞后臂电流丢失与最小相移角PSM 模式下相移角越大有效方波窗口越短原边电流可利用的换流时间越少。滞后臂要完成 ZVS必须在移相区间内保持足够的负向电流给结电容放电。负载一轻、相移一深电流提前衰减到零滞后臂 ZVS 直接丢失。针对这个问题仿真里可以做一个边界扫描固定 f_limit让 phi_cmd 从 0 逐步增大同时记录每个相位点下各开关管的 ZVS 状态画出一个“还能软开关”的相移角窗口。把这个最大相移角写进控制器的 phi_max 限幅里宁可让 PFM 在低频段多做一点增补也不要把 PSM 推到软开关失效区。还有一种更高级的做法是“低频移相”双管齐下不把频率死死锁在 f_limit而是根据负载轻重让频率和相移同时参与调节扩大调压范围的同时保住软开关。这个扩展方向很香但先把固定频率的 PSM 做稳再做它。5.3 一个更稳的验证路线先 PFM 后 PSM再合龙我第一次做混合控制时太心急一上来就把四路信号、双模式切换全拉通结果仿真报错都不好定位是功率级问题、驱动问题还是控制器问题。后来我总结出一个比较稳的验证路线分三步走。第一步只闭环 PFM把 phi_cmd 固定为零。扫负载扫输入电压确认功率级、驱动信号、反馈采样都正常并记录纯 PFM 下能达到的边界和 ZVS 失效点。第二步固定频率只闭环 PSM。在 f_limit 点把移相控制单独跑通确认静态增益曲线和 PI 参数可用。第三步再把模式切换逻辑合进来。合龙时从最温和工况开始比如先做 50% 负载到 20% 负载的切换看输出和模式标志确认无误后再扩展负载范围。这样每一层问题都能找到对应源头不会互相干扰。5.4 我个人比较受用的几个仿真习惯最后分享几个自己长期用的仿真习惯不一定写在教材里但确实能省时间。保存参数时不要只写出纸面公式把 f_min、f_limit、phi_max、死区时间、步长这些关键量统一放在模型初始化脚本里每次跑前跑后都能复查。改参数时宁可一版一版存也别在模型里直接手改否则出了问题很难找回原始配置。观察波形时优先看 f_cmd、phi_cmd、模式标志这三个控制面信号再去看电压电流波形。控制面信号平稳功率级波形才会好控制面信号乱跳功率级波形再漂亮也是假象。遇到仿真速度慢到不能接受时先别急着换电脑检查一下最大步长设置。很多人把最大步长设成 1e-9但 100kHz 的系统完全没必要跑一整晚可能只跑出几十毫秒仿真时间。先把步长放到 1e-6 量级跑通宏观动态需要看死区细节时再临时缩步长这样效率和精度都能兼顾。混合式全桥 LLC 的 Simulink 仿真说到底就是把 PFM 和 PSM 两种控制策略放进同一个闭环里去协同。只要理解了它们各自的增益特性设计好交接边界再把仿真验证的注意力从“稳定输出”转移到“软开关状态”上你大概率能复现出一套非常可靠的混合控制模型。按照先 PFM、再 PSM、最后合龙的路线去做你也会发现比一上来就追求“全功能大模型”稳健得多。

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

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

免费获取报价 →
↑