全桥LLC谐振变换器在新能源充电、通信电源、服务器电源里已经成了主流拓扑,但真正把“电压电流双环竞争控制”玩明白的人其实不多。很多刚接触这个方案的工程师第一反应都是:LLC不是调频率就行了吗?电压环加个PI就完事了,为什么还要弄两个环路去竞争?这篇文章我会从拓扑设计、控制策略、参数计算、仿真验证到实测排坑,把这条技术路线完整拆开讲一遍。标题里提到“带说明文档”,那就顺手把一份合格工程文档该沉淀什么,也一并聊聊。
1. 全桥LLC究竟在什么场景下需要双环竞争控制
1.1 全桥LLC拓扑的核心价值
全桥LLC本质上是一个以谐振网络为核心的单向直流变换器,通过调节开关频率控制谐振腔增益,进而稳定输出电压。相比传统的硬开关移相全桥,LLC最大的优势在于大部分工况下都能实现原边开关管的ZVS(零电压开通),关断电流也明显更小。这意味着开关损耗低、效率高,EMI频谱相对干净,磁性元件和滤波器的压力也能小一些。
大功率场景下,全桥结构天然适合处理几百瓦到几千瓦的功率等级。比如常见的400V直流母线输入、48V/20A输出的项目,半桥LLC做500W以下还能凑合,上了千瓦级基本都会切到全桥。全桥LLC的变压器双向励磁,磁芯利用率更高,同样的功率等级磁性元件体积更小。再加上谐振腔实现了部分能量无源回流,开关管电压应力也更可控,这对可靠性要求高的行业来说非常关键。
LLC还有一个硬优势是调频范围相对集中。设计得当的话,额定点落在谐振频率附近,增益变化平缓,满载到半载的效率曲线都能保持很漂亮。这也是为什么现在车载充电机和通信电源的行业方案里,LLC几乎成了标准答案。
1.2 单电压环在限流、充电场景下的无力感
如果只是纯粹的稳压输出,LLC单电压环确实够用。反馈输出电压,送入PI调节器,PI输出直接映射到开关频率。电压偏高就升频降压,电压偏低就降频升压,逻辑简单,很多参考设计都是这么干的。
但一旦遇到需要“限流”的场景,单电压环就露怯了。举个常见的例子:电池充电。充电过程前段需要恒流充电,电流被限制在设定值,电压自然爬升;到后期电压达到上限,又必须切到恒压模式,电流逐渐回落。这是一个典型的“CC-CV”双模式需求。如果用单电压环硬扛,电压没到设定值之前,环路会拼命把频率降低去抬升输出,结果电流一路飙上去,直接触发保护甚至炸管。
这时候很多人会想:加个电流采样,超过限流值就切到电流环?思路是对的,但“切换”这两个字是灾难的起点。硬件切换存在迟滞,软件状态机切换存在模式判定延迟,切换瞬间两个环路的输出可能完全脱节,输出电压和电流会出现明显的过冲或跌落,严重时系统在模式边界反复震荡。
所以行业里逐渐形成了一种更优雅的做法:电压环和电流环同时闭合,每个周期都参与运算,但通过仲裁逻辑决定当前谁说了算。这就是“电压电流双环竞争控制”。
2. 电压电流双环竞争控制的设计原理与仲裁逻辑
2.1 竞争控制并不神秘
竞争控制的思想可以理解成两个司机抢方向盘:电压环是一个司机,电流环是另一个司机,都盯着同一个控制对象输出频率指令。LLC的增益和频率是负相关关系,升频会降增益、降输出,所以谁给出的频率指令更高,谁就相当于在踩刹车,最终取大值的那个环路获胜。
这和常规的“电压外环、电流内环”串级控制完全不同。串级结构里电流环被嵌套在电压环内部,动态响应快,但环路阶数高,补偿器设计难度大,而且天然适合的是“电压给定电流”的控制场景,不是“竞争限流”。竞争控制的本质是两个独立的闭环并行工作,通过取极值仲裁输出,谁的约束更紧谁自动接管系统,不需要人工切换。
这种方案在电力电子里其实早有应用。光伏逆变器的MPPT限功率、电机驱动器的限流保护、开关电源的恒压恒流切换,底层逻辑都是同一套。只是LLC的PFM调频控制让“竞争”的实际对象变成了频率指令,更直观,也更容易实现。
2.2 LLC场景下竞争仲裁的工程实现
为了实现“取大获胜”的仲裁,两个环路的误差定义必须统一方向。我的习惯是这样定义:
- 电压环误差:
e_v = Vfb - Vref - 电流环误差:
e_i = Ifb - Iref
注意这个误差定义和教科书里常见的“参考减反馈”是反的。之所以这么定义,是因为LLC要升频时PI输出必须增大。电压高于设定值,误差为正,PI输出增大,频率升高,增益下降,电压回落,负反馈成立。如果按“参考减反馈”定义,就必须用负增益PI,容易把新手绕晕,调试时也容易搞反极性,所以我个人强烈推荐用“反馈减参考”加正增益PI。
两个PI各自输出频率指令fv和fi,最终开关频率指令:
fsw = max(fv, fi)
取大值的物理含义是:两个环路中哪个要求“更压制输出”谁就接管系统。电压超限了,电压环狂升频;电流超限了,电流环狂升频;都没超限,两个环都在低位,频率指令主要由稳压需求决定。这里什么都不用切换,硬件上二极管取大、软件上比较取大,都是几个周期内完成的事。
提示:如果控制对象是占空比且输出与占空比正相关,竞争方向就要反过来,变成取小仲裁。一定要先搞清楚控制量和被控量之间的极性关系,再定仲裁方向,这是竞争控制里最容易翻车的第一道坎。
2.3 从充电曲线理解竞争切换的平滑性
拿充电场景走一遍过程。电池电压还很低的时候,电压误差e_v是个较大的负值,电压环努力降频想抬高输出电压,但它给出的频率指令并不高。电流环呢,输出电流已经顶到限流值,e_i为正且比较大,PI输出一路拉升频率,把输出功率压住。取大仲裁下电流环完全压过电压环,系统进入恒流模式,电流被稳定在设定值。
随着充电持续,电池电压逐渐上升。电压环误差从负往正慢慢走,PI输出同步上升。当电池电压到达甚至略微超过电压设定值时,电压环的频率指令反超电流环,仲裁结果翻盘,系统自然进入恒压模式。此时电流还没有立刻掉到零,但电流环误差逐渐变小,PI输出被积分器拉回,电流跟随负载和电池内阻自然回落。
整个过程没有任何“模式判断”,没有“切换标志位”,两个环路始终在运算、始终在争取主导权,系统只是根据运行点自动换手。这就是竞争控制在动态响应上的本质优势:切换是连续且自动的,边界是模糊且平滑的。
3. 控制环路参数设计与数字实现
3.1 谐振参数先行:竞争控制的地基
控制环路的动态性能,一半取决于补偿器,另一半取决于谐振槽参数。我以一个实际做过的项目为参考:输入400V直流母线,输出48V/20A,满载功率960W,谐振频率设计为100kHz。
先算变比。全桥LLC的直流增益公式:
M = 2 * n * Vo / Vin
其中n = Np/Ns是变压器原副边匝比。取n=4,额定点增益:
M = 2 * 4 * 48 / 400 = 0.96
考虑到输入最低390V、输出最高52V的极限情况,最大增益需求:
Mmax = 2 * 4 * 52 / 390 ≈ 1.067
输入最高420V、输出最低45V时,最小增益需求:
Mmin = 2 * 4 * 45 / 420 ≈ 0.857
增益需求范围明确了,再看等效负载电阻。折算到原边的交流等效负载:
Rac = 8 * n^2 * Vo^2 / (pi^2 * Po) = 8 * 16 * 2304 / (9.8696 * 960) ≈ 31.1Ω
取品质因数Q=0.4,这个值要兼顾增益峰值和ZVS条件。特性阻抗:
Z = Q * Rac = 0.4 * 31.1 ≈ 12.4Ω
谐振电感:
Lr = Z / (2 * pi * fr) = 12.4 / (2 * 3.1416 * 100000) ≈ 19.8μH
谐振电容:
Cr = 1 / (2 * pi * fr * Z) = 1 / (2 * 3.1416 * 100000 * 12.4) ≈ 128nF
取k = Lm/Lr = 7,励磁电感:
Lm = 7 * 19.8 ≈ 139μH
这些参数算完之后,谐振网络的增益曲线、ZVS边界、最小/最大开关频率范围基本就定了。一般我会把最大频率限制在1.8倍谐振频率(约180kHz),最小频率限制在0.65倍谐振频率(约65kHz),预留软启动和瞬态响应的频率空间。
注意:
Q值取多大很有讲究。Q太大增益峰值过高、工作点离峰值太近,输入波动时容易落入容性区丢ZVS;Q太小ZVS好做到但满载增益不够,可能需要降变比。工程上0.3到0.5是常见起步区间,具体要结合增益需求曲线迭代。
3.2 电压环和电流环的带宽分配
LLC控制对象是频率到输出电压,小信号特性本质上是三阶以上系统,而且随负载变化明显。理论解析建模非常耗时,实际工程我更推荐用仿真扫频拿控制-输出波特图,再以此设计补偿器。
电压环的任务是稳压,带宽不需要太高,太高反而容易把谐振槽的相位特性拖进不稳定区。我通常把电压环穿越频率设计在开关频率的1/50到1/20之间,100kHz的开关频率对应2kHz到5kHz。以2kHz带宽为目标,相位裕量留50度以上,用PI补偿器就能满足。一组我调过的参考值:
Kpv = 0.3, Kiv = 1800
电流环的响应可以稍快一点,因为限流动作需要足够敏捷,避免过冲穿透。穿越频率设计在3kHz附近,参考值:
Kpi = 0.5, Kii = 2800
需要强调的是,两个环路带宽并不是越大越好。竞争切换时,如果两者的带宽差距过大,一个环已经响应结束另一个还没跟上,会导致仲裁结果来回跳变,输出频率就跟着抖。我的习惯是两个环带宽保持在同一个数量级,相差不要超过2倍。
3.3 积分抗饱和是竞争控制的灵魂
双环竞争控制最常见的失败案例,不是环路不稳,而是积分饱和。想想这个场景:恒流阶段,电压环的误差一直很大,它的积分器一直在往里堆。但它又没被仲裁选中,堆出来的输出被取大值丢弃,PI出力的方向不明确,积分器照样涨。等充电接近尾声、电压环该接管的时候,积分器里憋着一大坨输出,接管瞬间频率指令被强行拉到一个极高值,输出电压直接被打下来一大截,然后又是另一个方向的过冲。
这种问题在纯模拟电路里靠二极管取大加积分钳位解决,数字化以后更好办。我用的是“条件积分”策略:每个周期仲裁完成后,只有获胜的环路才允许积分动作,落选的环路冻结积分。如果有人需要更精细的控制,还可以做积分器输出钳位,根据竞争差值动态限制积分上下限。
一段精简的DSP中断代码长这样:
// 电压环误差:反馈减参考 ev = vfb - VREF; out_v = KP_V * ev + integral_v; // 电流环误差 ei = ifb - IREF; out_i = KP_I * ei + integral_i; // 双环竞争:取大 fsw = (out_v > out_i) ? out_v : out_i; // 频率限幅 if (fsw > FSW_MAX) fsw = FSW_MAX; if (fsw < FSW_MIN) fsw = FSW_MIN; // 关键:只有获胜环路积分 if (out_v == fsw) { integral_v += KI_V * ev * Ts; } else { integral_v = integral_v; // 冻结 } if (out_i == fsw) { integral_i += KI_I * ei * Ts; } else { integral_i = integral_i; // 冻结 }这段代码里唯一需要再讨论的是落选环路冻结积分后,积分器会不会一直停在历史值上,导致下次接管瞬间突变。我的处理是:落选环路在冻结状态下,把积分器输出钳制到当前仲裁获胜方的频率指令附近,让它随时准备好“平滑接管”。工程上简化为:
if (out_v != fsw) { integral_v = fsw; // 跟随主导输出,避免突变 } if (out_i != fsw) { integral_i = fsw; }实际上就是把落选环路的积分器直接灌成当前输出值。这么做的坏处是环路输出不再独立,但好处是切换永远无感。两种做法我都用过,前者切换速度稍慢但没有耦合,后者切换顺滑但两个环路的边界变得模糊。最终选择取决于项目对模式切换时间和输出精度的要求。
3.4 DSP实现中的采样和时序细节
数字控制容易忽略采样延迟对相位裕量的影响。LLC的采样一般用DSP内部ADC触发,和驱动信号同步,在PWM周期中点采样电流、在载波周期特定相位采样电压。采样延迟加上计算延迟会贡献额外相移,典型值约1.5个控制周期,在100kHz控制频率下就是15微秒,足够吃掉好几度相位裕量。设计补偿器时要把这部分预留进去,或者干脆采样后做一拍延迟补偿。
频率调节的精度也要注意。传统LLC的PFM用DSP时基周期寄存器调整,周期寄存器是整数,频率分辨率在100kHz附近约几百赫兹。低分辨率会让环路在稳态时出现频率抖动,输出纹波劣化。如果MCU支持高分辨率PWM扩展模块,建议直接用HRPWM把频率分辨率做上去;如果硬件没有这个功能,可以在代码里对频率指令做一阶低通滤波,牺牲一点动态换稳态平滑度。
4. 仿真验证与典型波形解读
4.1 仿真建模的三个要点
LLC的仿真我建议用电路级仿真器,Plecs或者Simulink Simscape都可以,纯数学模型很难准确描述谐振电流波形和开关瞬态。但搭建时有几个坑要注意。
第一个是变压器模型。理想的变压器外加分立电感并不能完全等效LLC的耦合关系,最好使用带耦合系数的绕组模型,或者直接搭理想变压器加原边串联谐振电感、原边并联励磁电感的标准T型等效。励磁电感要放在原边,谐振电容和电感按实际值建模。
第二个是开关管寄生参数。仿真中不一定要引入完整寄生电容模型,但开关管输出电容对ZVS死区过程影响很大,至少要给一个等效电容值,否则死区时间仿真不出来。
第三个是控制环路的离散化。连续域PI在仿真里跑得飞起,但和实际DSP行为差得很远。我习惯直接把控制系统也离散化,用固定步长和真实DSP一样的采样频率,这样仿真结果到实测才有参考价值。
4.2 恒流到恒压的典型切换波形
设置好工况:满载启动,闭环稳定后给定电流限幅,然后模拟电池电压逐步上升。观察几组关键信号:输出电压、输出电流、开关频率指令、电流环输出、电压环输出。
正常合格的切换过程应该是这样的:
恒流段,输出电流被死死压在设定值,输出电压线性爬升,频率指令基本由电流环主导,电压环输出维持在较低位。快接近电压设定值时,电压环输出逐渐抬头,在某一个周期超过电流环输出,频率指令开始由电压环接管。随后输出电压稳定在设定值,电流缓慢下降,电流环输出跟着回落。整个过程中,频率指令没有出现台阶式跳变,输出电压没有过冲超过设定值的2%,电流在切换点没有尖刺。
如果看到频率指令在切换点来回跳动、电流出现锯齿状波动,十有八九是落选环路的积分器没有处理好,或者两环路带宽差太大导致仲裁信号反复易手。
仿真中我还会重点看一个指标:两次切换点之间的时间间隔。正常充电全程只应该有“电流主导”到“电压主导”这一两次切换。如果系统在临界点反复来回切,说明竞争逻辑本质上存在滞回不足的问题,需要引入滞环或者调低两环路增益差。
4.3 负载突变下的竞争行为
给一个从50%负载突加满载的仿真工况,观察双环竞争系统怎么响应。
满载瞬间输出电流快速上升,如果超过限流值,电流环立即把频率指令抬上去压功率。与此同时输出电压跌落,电压环也在努力降频抬升输出。注意这里两个环路出现了方向相反的对抗:电流环要升频降压,电压环要降频升压。仲裁取大后电流环暂时获胜,输出被压在限流上限,输出电压继续跌落,但不会跌穿系统允许的下限。电压环因此误差持续加大,输出频率指令也在上升,最终和电流环指令交汇,电压环重新接管,输出电压回到设定值。
这个动态过程其实很灵敏地反映两环路的竞争方向设计对不对。如果取大仲裁变成了取小,系统会在负载突变瞬间彻底失控:电流环和电压环一个要升频一个要降频,取小让电压环提前接管,限流失效,电流尖峰直接触发硬件保护。
5. 实测中的那些坑与排查速查表
5.1 切换瞬间过冲
实测中最常见的问题是CC切CV的瞬间电压过冲。排除采样噪声、逻辑错误之后,大概率是落选环路积分器残留造成的接管冲击。我在调试某台通信电源样机时遇到过电压过冲5V左右的情况,检查代码发现电压环积分器在恒流阶段已经饱和到积分上限,接管瞬间频率指令从电流环输出瞬间切换到电压环饱和输出,频率被压到最低导致电压猛冲。
解决方法就是前面说的条件积分和积分器跟随。我当时同时做了两种处理:落选环路每个周期把积分器灌成当前频率指令,另外把PI积分上限从100kHz收窄到80kHz,过冲立刻压到0.8V以内。
5.2 轻载不稳和频率抖动
LLC轻载时容易进入间歇导通状态,或者叫间歇跳过周期模式。此时输出电流很小,采样信噪比差,竞争控制的两个环路在噪声干扰下频繁交换主导权,频率指令出现抖动。
解决思路分两头:硬件上提高电流采样精度,采样电阻的差分走线要远离功率回路,条件允许的话加一级有源二阶滤波。软件上给竞争仲裁加一个小滞环,比如当前频率指令由电压环主导时,只有当电流环输出持续超过电压环输出2%以上(维持连续N个周期),才允许切换主导权。这个滞环能非常有效地压制临界点抖动。
5.3 启动瞬间电流冲击
LLC启动时输出电压为零,电压环误差极大,PI输出会直接冲向频率下限,结果谐振腔以极低频率启动,电流冲击爆炸。不加软启动直接上电,满负荷启动瞬间原边谐振电流可能达到额定值的5倍以上。
我在软启动实现上是从最高频率出发扫频,因为最高频率对应谐振网络最低增益,能量传输最小。初始频率设在180kHz,然后以每毫秒下降一定比例的速度往工作点靠,扫频时间设定在80毫秒到100毫秒之间,实测这个时长既能避开启动冲击,又不至于让输出电压建立太慢。
启动过程要特别注意电流环在这个阶段的表现。因为启动初期电流环一直在限幅,它会和软启动扫频抢主导权。我的做法是软启动期间暂时拉高电流环限幅值,让软启动逻辑独占控制,等输出电压稳定之后再恢复正常的电流竞争限幅。
5.4 实测排查速查表
| 异常现象 | 可能的环节 | 排查方向和手段 |
|---|---|---|
| 切换瞬间电压过冲 | 积分器饱和/残留 | 加条件积分,收敛积分上下限,观察接管瞬间频率指令是否突变 |
| 临界点频繁切换 | 噪声/带宽差/无滞回 | 电流采样滤波,拉大两环路带宽差,仲裁加滞环计数 |
| 启动电流冲击 | 软启动策略失效 | 确认起始频率是否在最高频,扫频时间是否足够,检查启动时限流值 |
| 轻载输出电压失控 | LLC突发模式 | 加最小频率限制,必要时增假负载 |
| 频率指令抖动 | 频率分辨率不足/采样噪声 | 使用高分辨率PWM,频率指令一阶滤波,补偿器增益适当降低 |
| 恒流精度差 | 电流采样误差 | 校准采样系数,去掉采样毛刺,检查电流环带宽是否过低 |
| 满载效率低 | ZVS丢失 | 检查死区时间,确认最小频率未落入容性区,核算励磁电感取值 |
5.5 我自己的调环顺序
很多人拿到一张原理图就开始对着补偿器参数硬调,效率极低。我的习惯是先开环定点:不跑控制,通过直流电源给定频率指令,确认谐振电流波形、增益曲线和预估一致。再跑单电压环,验证稳压精度和负载瞬态。之后加上电流环,用一个电阻负载人为降低电流限幅设定值,验证限流动作是否有效。最后做完整充电工况,结合上位机或串口截图观察双环竞争切换波形。
这个顺序可以保证每加入一个环节时变量最少,出问题能快速定位。我踩过最深的坑就是在没有确认开环增益曲线的情况下直接调闭环,结果把ZVS做丢了还以为是补偿器参数问题,白白耗了两天。
6. 说明文档要怎么写才不坑后人
标题里说了“带说明文档”,这是很多技术分享里被忽略却极其重要的一环。竞争控制策略如果只存在代码里,三个月后原作者自己都可能记不清仲裁方向为什么取大。一份能真正传承的技术文档,我认为至少要包含下面几块:
需求规格层:输入电压范围、输出电压/电流范围、功率等级、效率目标、EMI等级、保护要求。这些参数决定了拓扑选型和设计边界。
参数设计层:变压器的匝比和绕法、谐振电感电容的计算过程和最终取值、磁性元件磁芯选型和损耗估算、频率工作范围。每个关键参数必须带计算依据,不能只贴最终结果。
控制策略层:这是最核心的部分。要写清楚为什么选双环竞争而不是状态机切换,误差定义方向是什么,仲裁逻辑是取大还是取小,依据是什么。PI参数表要附带穿越频率和相位裕量的仿真记录,这样后人改参数时心里有数。
仿真结果层:纯电路中心控制-输出波特图、补偿后开环Bode图、CC-CV切换波形、负载突变波形。截图加上必要的说明,比纯文字描述强十倍。
实验数据层:效率曲线、温升数据、动态响应实测波形、保护动作记录。实测和仿真不一致的地方必须如实记录并分析原因,这是整套文档里最有价值的内容。
风险与对策层:列出已知的设计薄弱环节,比如轻载抖动、切换过冲、启动冲击、频率分辨率不足,以及对应的软硬件缓解措施。
版本历史层:记录每次改动的日期、作者、改动原因和验证结果。这个模块看着最不起眼,实际救治了不知道多少项目。
我见过太多“只有代码和原理图没有文档”的项目,接手的人只能在Git日志和聊天记录里考古。写文档不是给领导看的,是给三个月后的自己看的,这一条我这些年体会特别深。
全桥LLC加双环竞争控制这套组合,做出来不难,做好很难。我自己在实际调试中最深的体会是:两个环路竞争的不是谁更快,而是谁更懂系统当前的约束。电压环负责“该稳的稳”,电流环负责“该限的限”,而仲裁逻辑则是那个时刻盯着谁在闯红线判官。条件积分、滞环切换、软启动这些细节表面上看都是小事,但最后决定系统是平顺还是抽搐的,恰恰就是这些小事。最后再分享一个小技巧:给两个环路都加上实时频率指令的观测通道,通过上位机同时绘制电压环输出、电流环输出、最终开关频率三条曲线,你会非常直观地看到竞争过程——那条曲线在何时被另一条反超,系统状态就何时被接管,一切几乎透明可见。