
做隔离型 DC-DC 仿真的时候我第一次在 MATLAB/Simulink 里把串联负载谐振拓扑SLR_ConverterSeries Load Resonant Converter完整跑通前后花了将近三天。主回路看起来很简单一个全桥逆变桥、一组 LC 串联谐振槽、一台隔离变压器、一组整流桥再加个输出滤波电容。可真正用 Simulink 的 Specialized Power Systems 平台搭起来以后我才发现真正的坑全藏在解算器配置、门极逻辑、变压器磁化电感和软开关波形验证这些环节里。这篇博文就按我实际建模的顺序写清楚为什么选串联负载谐振、L_r/C_r 怎么算、Simulink 模型怎么分块搭、开环和闭环仿真分别要注意什么。适合手里有 Simulink 基础、做过一点电力电子仿真、现在想把谐振变换器落实到模型上的朋友参考。1. 串联负载谐振像什么等效电路与软开关优势1.1 从普通 PWM 变换器的瓶颈说起做 DC-DC 仿真大家最熟悉的还是 Buck、Boost 这类硬开关拓扑。硬开关的问题在于开关器件在电压电流同时不为零时强行切换每一拍都有开关损耗和 di/dt、dv/dt 带来的 EMI。频率一旦提到 100kHz 以上损耗和噪声就很扎眼。串联负载谐振的思路是在开关网络和负载之间插进一个由电感 L_r 和电容 C_r 组成的谐振槽让电流波形主动“变软”开关器件在电流过零或者电压过零的瞬间完成动作从而降低开关损耗。SLR_Converter 的位置我习惯这样理解直流输入先经过全桥逆变器变成高频方波电压方波加到 L_r 和 C_r 串联的谐振网络上负载以反射电阻的形式也串联在这个回路里所以叫“串联负载谐振”。谐振网络后面接高频变压器和整流滤波输出平滑的直流电压。1.2 软开关是怎么“软”的关于软开关可以打个比方。硬开关像你半夜回家用力推门门还没完全到位就急着合上力全花在碰撞上谐振变换器则像顺着门的惯性慢慢送门在快要合上的一刻已经不再受力了。串联谐振变换器的经典工作点有两个方向开关频率低于谐振频率时谐振槽呈容性电流相位超前电压容易实现零电流开关ZCS开关频率高于谐振频率时谐振槽呈感性电流相位滞后电压配合开关管反并联二极管续流容易实现零电压开关ZVS。在 Simulink 里看波形时别只看输出电压重点是把开关电压和电流放到同一个 Scope 里。如果电流在开关关断前已经自然回零说明开关是“切”在零电流上的如果开关开通前反并联二极管已经把电压钳到零说明是零电压开通。这两种现象在示波器上都一眼能看出来这也是谐振变换器仿真的一个核心乐趣比单纯调 PI 参数直观得多。1.3 与其他谐振拓扑的简单对比同样带谐振网络的还有并联谐振、LLC、LCC 等。LLC 现在很火因为它在宽输入输出范围下的表现更好。但 SLR_Converter 作为入门级谐振拓扑有它的价值结构最简单参数计算最直接变压器变比和 L_r/C_r 的设计思路完全可以迁移到 LLC 上。先把 SLR 跑明白后面再去碰 LLC 会顺手非常多。2. 设计参数先行按指标反算 L_r/C_r 和变压器变比仿真模型最怕的就是“先搭图、后补参数”。谐振拓扑对参数极其敏感我在 Simulink 里搭模型之前先在纸上把参数算清楚模型一次跑通的可能性会高很多。2.1 先定输入输出指标我用的设计案例是这样输入电压 V_in 100V DC输出电压 V_out 48V DC输出电流 I_out 10A谐振频率 f_r 100kHz变压器原副边变比 n 2:1为什么把变压器变比取 2:1因为串联负载谐振在谐振频率附近时从逆变器看到的增益基本上是一个单位。理想情况下输出到负载上的直流电压约等于 V_in 除以变比100V / 2 50V。这个值和 48V 目标有偏差没关系一来整流二极管有压降二来后续闭环控制会把电压压回来。开环阶段先取整变比好算也好调。2.2 桥式整流器的等效电阻怎么折算输出端的实际负载电阻是R_o V_out / I_out 48 / 10 4.8Ω但谐振网络在原边看到的并不是这个 4.8Ω因为中间隔着变压器和整流桥。对于全桥逆变器加全桥整流器的组合原边等效交流电阻的常用近似公式是R_ac (8 * n²) / π² * R_o把 n2、R_o4.8Ω 带进去R_ac (8 * 4) / π² * 4.8 ≈ 15.56Ω这个数值代表了谐振网络在负载上的“等效交流负载”后面算 Q 值全靠它。2.3 谐振元件的 Q 值怎么选谐振槽的特性阻抗 Z_0 sqrt(L_r / C_r)品质因数 Q Z_0 / R_ac。Q 值选大还是选小其实是在几个目标之间权衡Q 值大增益曲线更尖锐频率调节范围更明显谐振电流也更大器件应力相应增加Q 值小曲线更平坦频率控制范围变宽但谐振电流小一些输出增益变化不明显。我做第一版的时候取 Q1发现开环下从满载切到半载输出电压变化并不小但频率调节范围很窄波形判断起来不明显。后来把 Q 提到 2仿真里更容易观察频率变化对输出的影响谐振电流也不至于太大。所以这个案例里取 Q2。于是特性阻抗Z_0 Q * R_ac 2 * 15.56 ≈ 31.12Ω2.4 算出 L_r、C_r 和输出电容有了 Z_0 和谐振频率L_r 和 C_r 直接算L_r Z_0 / (2π * f_r) 31.12 / (628318.53) ≈ 49.53μHC_r 1 / (2π * f_r * Z_0) ≈ 1 / (628318.53 * 31.12) ≈ 51.1nF最后验证一下谐振频率f_r 1 / (2π * sqrt(L_r * C_r)) ≈ 100kHz结果对得上。输出滤波电容的选择主要看允许的电压纹波。整流桥每个开关周期输出两次脉动等效纹波频率可以粗略按 2*f_r 估算。按输出纹波 0.5V 以内估算C_f ≥ I_out / (2 * f_ripple * ΔV) 10 / (2 * 200000 * 0.5) 100μF我实际取 220μF留点裕量同时串了一个 0.01Ω 的等效 ESR避免仿真里出现无阻尼高频振荡。设计参数汇总如下参数数值说明V_in100V直流输入V_out48V目标输出I_out10A满载电流变压器变比2:1原边:副边f_r100kHz谐振频率Q2品质因数Z_031.12Ω特性阻抗L_r49.5μH谐振电感C_r51nF谐振电容C_f220μF输出滤波电容R_o4.8Ω标称负载算完参数再进 Simulink模型里的物理量基本不会出现夸张到没法看的现象。3. Simulink 里分模块搭模型先从主功率回路开始我用的工具箱是 Simscape Electrical 里的 Specialized Power Systems也就是以前大家习惯叫的 SimPowerSystems/Simscape Power Systems。如果你的 MATLAB 版本装了 Simscape ElectricalLibrary Browser 里能找到Simscape - Electrical - Specialized Power Systems。注意单纯只装 MATLAB 和 Simulink 是不够的做电路级仿真的朋友基本都会装这个工具箱。3.1 主功率回路需要的模块搭主体电路前先在模型里放一个 Powergui 模块。这个模块不参与电气计算但所有 Specialized Power Systems 的电路仿真都必须依赖它来初始化、设置解算器。没有这个东西仿真根本跑不起来算是一个“地基”模块。主功率回路的模块清单如下DC Voltage Source直流电压源V_in 100VUniversal Bridge作全桥逆变器桥臂数选 2开关器件类型根据你自己的需求选 MOSFET 或 IGBT我这里用 MOSFETSeries RLC Branch作谐振电感 L_r 和谐振电容 C_rL_r、C_r 串联在逆变桥和交流输出之间Linear Transformer 或 Ideal Transformer作为隔离变压器变比 2:1Universal Bridge作整流桥桥臂数选 2开关器件类型选 DiodesSeries RLC Branch作输出滤波电容电容值和 ESR 按上面表格设Series RLC Branch作负载R 4.8ΩL 和 C 设为 0。连接关系比较直接直流电源给逆变桥供电逆变桥的两个交流输出端接 L_rL_r 接 C_rC_r 接到变压器原边一端变压器原边另一端接回逆变桥另一输出端形成串联回路。变压器副边接整流桥交流端整流桥直流端接滤波电容和负载。3.2 变压器为什么别直接当“理想”处理很多人第一次搭这种带变压器的谐振电路时喜欢用 Ideal Transformer觉得参数少、方便。但实际仿真中理想变压器没有磁化电感也没有漏感电路数值上容易产生非物理的电流尖峰特别是与串联谐振电容配合时开环启动阶段经常会看到莫名其妙的振荡。如果你用 Specialized Power Systems 里的 Linear Transformer搭两个绕组就好。关键是磁化电感 L_m 要设置得足够大我一般把它放到 1mH 以上让磁化电流对比负载电流可以忽略。漏感可以先取小一些比如原边漏感 0.5μH副边漏感 0.1μH如果需要模拟真实变压器再根据厂家数据改。绕线电阻先设 0.01Ω 左右后续算效率时可以调大。如果用的是 Simscape Electrical 里的 Ideal Transformer就通过变比参数直接设 2:1但要注意外面串一个小电感模拟漏感不然谐振波形在数值上过于干净反而和真实电路差很远。3.3 门极驱动信号和死区时间全桥逆变器的门极驱动是仿真里最容易出问题的地方。Universal Bridge 做两臂全桥时门极输入是一个四元素的向量信号顺序为第一臂上管、第一臂下管、第二臂上管、第二臂下管。我的接法是第一臂上管方波 p第一臂下管方波 p 经过延时后取反第二臂上管方波 p 直接取反第二臂下管p 取反后再延时取反。这样做的本质是在同一桥臂里制造一个 100ns 左右的死区时间避免上下管同时导通。具体实现时我用一个 Pulse Generator 产生 50% 占空比的方波周期为 1/100kHz 10μs然后用 Logical Operator 的 NOT 模块取反再用 Transport Delay 做 100ns 延时。信号线接错之后最直观的表现是逆变桥输出电压波形上下不对称或者直接出现股本相同的短路冲击电流一定要先用 Scope 看桥臂中点电压确认它是一个 ±100V 的方波再继续往下调。方波驱动本身非常简单不需要 SPWM 那种载波调制。SLR_Converter 的核心是让逆变桥输出一个高频方波用谐振网络把方波里的谐波滤掉让流过开关的电流近似正弦。门极驱动这块比较便宜不需要像普通 PWM 变换器那样纠结占空比。3.4 Powergui 解算器设置Simulink 默认的解算器是 ode45但这个默认配置跑电力电子电路尤其是带高频开关和谐振槽的电路会慢到怀疑人生。原因是电路方程很 stiff开关动作造成快速变化ode45 为了稳定会把步长压得非常小。我在 Powergui 里选择 Continuous然后在 Simulink 模型参数里把 Solver 改成Solverode23tb变步长相对误差 RelTol1e-4最大步长 MaxStep1/(20 * f_r) 左右算下来是 0.5μs实际我常取 0.2μsMaxStep 是谐振仿真里一个容易被忽略的参数。如果 Solder 自己乱跳波形虽然能出来但开关切换时刻的采样点太少软开关波形看起来会严重失真。而如果 MaxStep 取得太小仿真时间又会爆炸。0.2μs 在这个案例里精度和速度比较平衡。4. 门极逻辑、解算器与建模仿真的常见误区这部分是我觉得最有价值的内容。参数对了、电路也搭了可仿真还是慢、还是震荡、还是发散多半出在下面这几个地方。4.1 开关吸收回路默认参数反而是最大的“假负载”Universal Bridge 里的开关模型默认带有 RC 吸收回路典型默认值是 R_snubber5000Ω、C_snubber1e-6F。这个参数对三电平、PWM 整流这种电路影响不大但在谐振变换器仿真里非常致命。吸收电容和谐振电感、电容会附加额外的能量存储路径导致你看到的谐振波形带着明显的高频尾巴输出纹波也被污染。更麻烦的是吸收回路让仿真里的开关关断过程变得钝化你根本看不出真实的软开关过程。我在搭完第一个版本后就是因为没关吸收回路波形上一直多了一个大约 300kHz 的振铃排查了一下午才发现是吸收电容造成的。所以进入仿真前先在 Universal Bridge 参数里把 Snubber 关掉或者把 R 设成 inf、C 设成 0。如果想保留一点数值上的稳定性可以把吸收电阻设成 10kΩ 以上吸收电容设成 pF 量级但最干净的办法还是直接关闭。4.2 变压器磁化电感太小启动瞬间的电流尖峰用 Linear Transformer 时如果磁化电感设得太小仿真启动瞬间会出现很大的原边电流尖峰。因为直流母线电压在第一个开关周期直接加到变压器原边磁化电感本质上相当于一个不经过谐振槽的并联支路如果电感太小电流就直接“冲”过去了。我调试时把磁化闪电从 1mH 改成 100μH 试了一次开环启动瞬间原边电流几乎能冲到正常峰值的 3 倍。这个电流尖峰在真实电路里对应的是变压器的饱和问题在仿真里则会让解算器疯狂缩小步长导致仿真速度急剧下降。设置时除了关注 L_m还要合理设置绕组漏感。漏感太小会让开关瞬间电流变化率过大数值上容易产生振荡漏感太大则会影响实际谐振频率因为漏感是串联在谐振回路里的。如果你发现谐振波形频率和理论值偏差超过 5%先把漏感值砍到很小再看漏感是影响这个偏差的主要因素。4.3 代数环和非物理的数值振荡在 Simulink 里如果电路里有电压源直接并联电感、或者存在没有经过 Powergui 处理的电气连接容易报出代数环错误或者出现高频数值振荡。遇到这种问题我常用两个手段在电压源和电容这种刚硬支路上串联一个极小电阻比如 1mΩ 级别用来切断裂代数环在电流测量后面接一个一阶低通滤波器时间常数取 1/(20*f_r) 左右避免测量信号直接参与控制回路的代数计算。这里插一句这些“保护性”的小电阻不是物理真实需要的而是为了数值稳定性。仿真里加 1mΩ 电阻对结果影响微乎其微但对解算器来说差别非常大。加这些电阻时记得写在模型注释里免得别人复现时看不懂。5. 看波形、验证软开关再做闭环频率控制开环模型能稳定跑起来之后仿真只会给你一堆初始波形。谐振变换器真正要看的不是“有没有输出电压”而是谐振电流是否正弦、开关切换时刻是否落在电流过零附近、频率变化是否真的能调节输出电压。5.1 开环阶段建议看的几组波形我建议至少要放四个 Scope逆变桥输出电压 V_ab理论上是一个正负 100V 的方波谐振电感电流 i_Lr理想情况下接近正弦平均值接近零谐振电容电压 V_Cr也是正弦但相位滞后或超前电流 90°输出电压 V_out从启动瞬态慢慢爬到 50V 附近纹波应在零点几伏以内。开环谐振波形有几个特征可以验证参数对不对谐振频率落在约 100kHz电流波形一个周期 10μs满载时i_Lr 的幅值大约等于 V_in 的基波分量除以 R_ac用 4*V_in/π ≈ 127V 的基波峰值去除 15.56Ω得到约 8.2A 的峰值电流实际波形应该在这个数量级输出整流后的纹波频率是开关频率的两倍如果 C_f 选得太小Scope 上能清晰看到锯齿形纹波。如果这些特征都对开环模型基本没问题可以进入闭环。5.2 为什么 SLR 的闭环要变频控制和普通 PWM 变换器靠占空比调节不同串联负载谐振变换器的输出增益主要和开关频率相对谐振频率的位置有关。当开关频率高于谐振频率时频率越高谐振网络分压到负载上的增益越小输出电压越低。所以闭环可以简单理解成输出电压偏高就把频率调高一点输出电压偏低就把频率调低一点。这里有一个容易踩的坑Simulink 自带的 Pulse Generator 不支持外部频率输入默认只能手工填一个固定频率。想要做变频控制得自己做一个“压控方波发生器”。我实现的方式是用积分器搭一个简单的 VCOPI 控制器的输出作为频率指令 f_cmd频率指令经过 Saturation 限幅限制在 80kHz 到 120kHz限幅后的频率乘以 2π给到一个 Integrator得到相位信号相位信号对 2π 取模变成一个 0 到 2π 的锯齿波通过 Relay 或者 Compare to Constant在相位小于 π 时输出 1否则输出 0就得到了一个频率可变的方波。这样得到的方波再经过前面的死区逻辑就可以直接驱动全桥了。PI 控制器的方向特别重要。我一开始按习惯用了误差 e V_ref - V_out结果正反馈输出电压直接往一边冲。后来把误差改成 e V_out - V_ref输出电压偏高了就升频输出自然往下压。原因是工作点选在谐振频率右侧频率与增益是反相关系。实际参数可以先给 Kp1000、Ki20000单位都是基于频率为 Hz 来设置的。这个参数不一定适合所有模型但作为初值非常稳。跑起来之后观察输出稳定时间若要更快可以加大 Ki若出现振荡就降 Kp。5.3 负载跳变仿真从满载切到半载闭环做起来以后我还加了一个负载跳变测试在 t3ms 时把另一个 4.8Ω 负载并联到输出端让负载从满载变成半载观察闭环能否把输出电压拉回来。实现方式很简单在负载两端并联一个由理想断路器控制的电阻分支或者用一个 Step 信号控制一个可控开关在指定时刻合上。跑完后看输出波形如果 PI 参数调得好输出电压应该在几百微秒内回到 48V 附近且不能有明显振荡。这种跳变测试对谐振变换器意义很大因为它暴露的不仅是控制器快不快还有谐振网络的动态特性。我曾经把 Ki 调得太大结果负载跳变瞬间输出电压来回摆了三四个周期才稳定这说明控制带宽和谐振动态耦合了。把 Ki 降一半后现象立刻消失。6. 模型扩展方向与我在实操中的体会SLR_Converter 模型完全跑通过一次之后你会发现自己对谐振拓扑的“手感”完全不一样了。后面想继续深入的话有几个扩展方向我觉得特别顺。6.1 从 SLR 往 LLC/CLLLC 迁移SLR 的谐振槽只有 L_r 和 C_r而 LLC 会在变压器原边并联一个磁化电感 L_m让 L_m 也参与谐振。LLC 的增益特性和轻载行为更好但它本质上是 SLR 加了一个并联磁化支路Simulink 模型里只需要多一个并联 L_m并把整流环节改成同步整流或倍流整流就能从 SLR 演变成 LLC。这个扩展我在实际项目里做过核心骨架和我前面搭的这套模型几乎一样改动工作量远小于从零起步。6.2 把理想器件换成带损耗模型如果只做控制验证理想开关就够了。但想看效率、热损耗就去 Universal Bridge 里给开关设置导通电阻、给二极管设置导通压降给变压器绕组设置电阻最后用Mean模块算平均输入功率和平均输出功率。实际仿真中效率不会像真实电路那样低于 90%理想器件下基本在 97% 以上这是正常的别以为模型坏了。6.3 我的几个实操习惯仿真跑通只是开始最后分享几个我自己的习惯所有波形用 To Workspace 导成结构体回到 MATLAB 里用 plot 统一画图比 Simulink Scope 截图更清晰也能统计效率纹波数据每次改参数前把原来的 L_r、C_r、死区时间记录在模型注释里方便回退对比先用 1ms 的仿真时间验证启动波形等启动波形稳定后再把仿真时间拉长到 5ms 或者 10ms 做闭环稳定性分析能省下大量等待时间。说实话SLR_Converter 本身并不是一个拓扑上的大创新它最值钱的地方在于你能通过这个模型真正体会到“谐振”这两个字在电路里意味着什么。以后无论是做电池充电器、高压电源还是接触 LLC 和 CLLLC这套建模方法和调试手感都是通用的。