各位做电力电子仿真和电源设计的朋友,大家好!
在 DC-DC 变换器的学习与研发中,LLC 谐振变换器一直是非常热门且实用的拓扑。无论是通信电源、服务器电源,还是新能源汽车的车载充电机(OBC),都能看到它的身影。它的优势在于能够实现原边开关管的 ZVS(零电压开通)和副边整流二极管的 ZCS(零电流关断),从而大幅降低开关损耗,提升系统效率。
然而,很多初学者在接触 LLC 时,常常被它的“谐振工作模态”搞晕:为什么会有两个谐振频率?死区时间到底怎么设置?开环仿真时为什么波形会震荡?本文就将围绕“全桥 LLC 谐振变换器的开环仿真”这一主题,基于 MATLAB Simulink 平台,通过一个完整的关键波形演示案例,带你从零搭建模型、设置参数,并学会看懂那些至关重要的波形。
本文将重点覆盖:
- LLC 谐振变换器的核心原理(通俗版);
- Simulink 仿真环境的准备与模块选择;
- 全桥 LLC 开环仿真模型的完整搭建步骤;
- 关键波形(原边电流、励磁电流、副边二极管电压、输出电压)的解读;
- 常见仿真报错与工程化排错思路。
无论你是电力电子方向的在校生,还是刚转行电源岗的工程师,只要跟着本文一步步操作,都能搭建出属于自己的第一个可运行的 LLC 开环仿真模型。
1. 背景与核心概念:为什么选择全桥 LLC 谐振变换器?
1.1 LLC 是什么?它解决什么问题?
传统 PWM 变换器(如 Buck、Boost)通过调节占空比来控制输出电压,但在高频化趋势下,开关管的开关损耗急剧增加。LLC 谐振变换器是一种通过调节开关频率来改变增益的 DC-DC 变换器。它的名字来源于谐振网络中使用了两个电感(Lr 谐振电感、Lm 励磁电感)和一个电容(Cr 谐振电容)。
LLC 最大的特点是:在较宽的输入电压范围内,通过 PFM(脉冲频率调制)方式,既能实现软开关,又能保持较高的转换效率。它并不像 PWM 变换器那样去“斩波”调节脉宽,而是通过谐振网络的阻抗特性来传递能量。
1.2 全桥与半桥的差异
在 LLC 拓扑中,根据原边开关管数量,可分为半桥 LLC 和全桥 LLC。
- 半桥 LLC:由两个开关管组成,输入电压利用率较低,适用于中小功率(通常小于 500W)。
- 全桥 LLC:由四个开关管组成,变压器原边承受的电压幅值为输入电压,适合大功率场合(1kW 以上)。本文重点演示全桥结构,因为它的关键波形更清晰,也更能体现 LLC 的经典工作模态。
1.3 开环仿真的目的
所谓“开环仿真”,就是不加入电压/电流反馈闭环控制器,直接给定一个固定的开关频率和死区时间,让功率电路自行运行。这样做的好处是:
- 便于验证主电路参数是否合理;
- 方便观察不同频率下 LLC 的增益特性;
- 帮助初学者理解谐振电流与励磁电流的时序关系。
2. 环境准备:MATLAB/Simulink 仿真环境与模块选型
2.1 软件版本与工具箱
本文的模型基于 MATLAB R2022b 版本制作,理论上 R2019b 及以后版本均可打开并运行。需要特别注意:模型使用了 Simscape Electrical 库,早期版本中也可能叫 SimPowerSystems,但模块名称变化不大。
如果你用的是 R2020a 之前的版本,打开 Simulink 库浏览器时,搜索“MOSFET”或“Full-Bridge”时可能需要到 Simscape > Electrical > Semiconductor & Converters 下面寻找。
2.2 核心模块清单
搭建全桥 LLC 开环仿真模型,我们需要用到以下模块:
| 模块名称 | 库路径 | 作用 |
|---|---|---|
| DC Voltage Source | Simscape > Electrical > Sources | 提供输入直流电压 |
| MOSFET / IGBT | Simscape > Electrical > Semiconductor & Converters | 构成全桥逆变电路 |
| Pulse Generator | Simulink > Sources | 生成驱动脉冲信号 |
| Series RLC Branch | Simscape > Electrical > Passive Elements | 构建谐振电感电容或作为负载 |
| Linear Transformer | Simscape > Electrical > Passive Elements | 实现电压变换与隔离 |
| Diode | Simscape > Electrical > Semiconductor & Converters | 构成整流桥 |
| Capacitor | Simscape > Electrical > Passive Elements | 输出滤波电容 |
| Scope | Simulink > Sinks | 观测关键波形 |
| Multimeter | Simscape > Utilities | 测量电流电压 |
注意:在这里我们使用 Pulse Generator 生成互补的 PWM 脉冲,再通过逻辑门生成带死区的四路驱动信号。如果你更追求驱动波形的真实感,可以使用 Simulink 自带的“Dead Zone”或“On-Off Delay”模块,但为了直观,我们直接用脉冲发生器叠加延时。
3. 全桥 LLC 开环仿真模型搭建(零基础可复制)
3.1 确定系统规格与参数
在开环仿真中,参数是灵魂。参数设置不合理,波形必然是乱的。本文示例使用以下系统规格:
- 输入直流电压 Vin:400V(模拟 PFC 输出的母线电压)
- 输出功率 Po:1000W
- 输出电压 Vo:48V
- 开关频率 fs:100kHz
- 谐振频率 fr:约 108kHz(让工作点略低于谐振频率,体现 ZVS 区域)
- 谐振电感 Lr:8µH
- 谐振电容 Cr:270nF
- 励磁电感 Lm:40µH
- 变压器变比 n:4:1(原边匝数 4,副边 1)
需要说明的是,这个参数组合只是一个演示值。在实际工程中,Lm 与 Lr 的比例(电感比例系数 k)通常取 3~8,这里取 5,属于比较常见的范围。
3.2 创建模型结构:从整体到局部
打开 MATLAB,在命令行窗口输入:
simulink在 Simulink 模块库中新建一个空白模型,命名为LLC_FullBridge_OpenLoop。建议保持模型名称和文件路径为英文,避免某些老版本软件出现编码问题。
模型整体从上到下分为五级:
- 输入直流电源;
- 全桥逆变电路;
- 谐振网络(Lr、Cr、Lm);
- 变压器与整流滤波;
- 负载与观测波形。
用鼠标拖拽模块到模型中,并按图 1 的逻辑连线。这里我给出每一步的详细说明。
3.3 搭建全桥逆变电路
全桥逆变电路由四个 MOSFET 模块组成,分别标记为 Q1、Q2、Q3、Q4。它们的连接关系是:
- Q1 与 Q2 构成一个桥臂,连接在直流母线正极与变压器原边同名端之间;
- Q3 与 Q4 构成另一个桥臂,连接在变压器原边异名端与直流母线负极之间;
- 四个开关管的门极信号分别为 S1、S2、S3、S4。
在 Simscape 中,MOSFET 模块默认会有三个电气连接端口:漏极(D)、源极(S)、门极(g)。门极信号需要通过“Simulink-PS Converter”将 Simulink 逻辑信号转换为物理信号,再连接到门极。不过为了方便快速搭建,我们也可以使用理想开关模型,把门极信号直接当成 Simulink 数值信号处理。
这里做一个简化处理:采用“Ideal Switch”理想开关模块,这样可以省去 Simulink-PS Converter 的繁琐步骤,把精力集中在谐振主电路上。
在 Simulink 库中搜索“Ideal Switch”,拖入 4 个。每个开关有三个连接口:+、-、控制端。
- Q1:+ 接 Vin 正极,- 接 A 点;
- Q2:+ 接 A 点,- 接 Vin 负极;
- Q3:+ 接 Vin 正极,- 接 B 点;
- Q4:+ 接 B 点,- 接 Vin 负极。
此时,A、B 两点之间接入的就是谐振网络的输入端口。开关管 Q1、Q4 同时导通时,A 为正、B 为负;Q2、Q3 同时导通时,A 为负、B 为正。
3.4 构建谐振网络与变压器
在 A、B 两点之间按顺序串联以下元件:
- 谐振电容 Cr(Series RLC Branch,设置为电容模式,容值 270nF);
- 谐振电感 Lr(Series RLC Branch,设置为电感模式,感值 8µH);
- 变压器原边绕组。
变压器副边接全桥整流二极管电路。变压器的模型使用 Linear Transformer 时必须注意设置变比。R2022b 版本中,Linear Transformer 的参数里有“Nominal power”(额定容量)、“Frequency”(频率)、“Winding 1 [V1(V) R1(pu) L1(pu)]”和“Winding 2”等参数。
为了方便计算,将变压器额定容量设为 1200VA,频率设为 100kHz,原边电压设为 400V,副边电压设为 100V,这相当于原副边匝比为 4:1。同时,励磁电阻和漏感可以保持默认或设置为 0,因为我们的励磁电感 Lm 是外接的。
为什么励磁电感 Lm 是外接的?因为在实际变压器中,Lm 是变压器本身的励磁参数,但为了在仿真中独立观察 Lm 电流,我们通常将变压器设为理想变压器,将 Lm 并联在变压器原边两端。
3.5 输出整流与滤波
变压器副边接由 4 个二极管组成的全桥整流电路。整流输出的正端接滤波电容 Co 和负载电阻 Rload,负端接地。
为了便于观测输出电流,可在整流正端串联一个电流测量模块(Current Measurement)。
3.6 驱动脉冲与死区时间设置
全桥 LLC 的驱动逻辑非常重要。对角开关管(Q1、Q4)同时导通,另一对角(Q2、Q3)同时导通,两组之间必须存在死区时间。
我们使用 4 个 Pulse Generator 模块来产生驱动脉冲:
- Pulse 1(Q1):周期为 10e-6 秒(100kHz),脉冲宽度为 45%(即 4.5µs 导通占空比),相位延迟 0;
- Pulse 4(Q4):与 Pulse 1 完全相同;
- Pulse 2(Q2):周期一致,脉冲宽度 45%,相位延迟 5e-6 秒(即 50% 周期处);
- Pulse 3(Q3):与 Pulse 2 完全相同。
这样设置后,Q1/Q4 与 Q2/Q3 刚好相差 180°。但注意,这里脉冲宽度是 45% 而不是 50%,多出来的 5% 周期(即死区时间)两组开关管都不导通,这就实现了死区。
死区时间 = 周期 × (50% - 45%) = 10µs × 5% = 0.5µs。在 100kHz 下,0.5µs 死区是一个比较保守但安全的设置。ZVS 的条件之一就是在死区时间内,谐振电流能够抽走开关管结电容的电荷。本文的波形演示中,可以看到死区时间内励磁电流给结电容充放电的过程。
3.7 仿真参数设置
点击仿真参数(或按 Ctrl+E),设置如下:
- 仿真停止时间:0.005s(5 毫秒)。在 100kHz 下,这相当于 500 个开关周期,足以让波形稳定,又不会让仿真时间过长;
- 求解器:ode23tb(这是一款适合电力电子强刚性系统的求解器,比默认 ode45 更稳定);
- 最大步长:1e-7(100ns),保证能捕获 100kHz 开关波形的细节;
- 相对误差:1e-3。
4. 生成完整可运行的模型代码(基于 Simulink 数据结构的描述)
需要说明的是,Simulink 模型本质是图形化的.slx文件,通过代码文本搭建需要用到add_block等命令,较为繁琐。为了让读者能快速复现,本文给出关键的 MATLAB 脚本片段,用于在命令行中自动创建部分模型。但更推荐的方式是直接手动搭图,这样可以加深对拓扑结构理解。
下面给出一个模块添加与参数示例脚本(仅覆盖从库中拖入模块并设置参数的核心逻辑):
% 创建新模型 new_system('LLC_FullBridge_OpenLoop'); open_system('LLC_FullBridge_OpenLoop'); % 添加直流电压源模块并设置参数 add_block('simscapeelectrical_lib/Electrical Sources/DC Voltage Source', ... 'LLC_FullBridge_OpenLoop/Vin'); set_param('LLC_FullBridge_OpenLoop/Vin', 'Amplitude', '400'); % 添加理想开关 for i = 1:4 add_block('simscapeelectrical_lib/Electrical Elements/Ideal Switch', ... ['LLC_FullBridge_OpenLoop/Q' num2str(i)]); end % 添加脉冲发生器 for i = 1:4 add_block('simulink/Sources/Pulse Generator', ... ['LLC_FullBridge_OpenLoop/PWM' num2str(i)]); end注意,上面这段脚本只是思路展示,由于不同 MATLAB 版本中库名路径可能不同,直接运行时会报错。如果你使用的是 R2022b 及以上版本,可以尝试在命令行输入simscapeelectrical_lib查看库路径。
5. 关键波形演示与深度解读
这是本文最核心的部分。我们运行仿真后,在 Scope 中添加几条关键观测线:
- 原边谐振电流 i_Lr;
- 励磁电感电流 i_Lm;
- 变压器原边电压 V_AB;
- 输出电压 Vout;
- 副边整流二极管 D1 两端电压。
5.1 工作点:低于谐振频率的 ZVS 区域
由于我们设置工作频率 100kHz 低于谐振频率 108kHz,变换器工作在“低于谐振”的容性/感性临界偏感性区域(通常 LLC 会在低于谐振且高于励磁电感与谐振电容形成的第二谐振频率之间工作)。
在这个区域,原边谐振电流的波形特征是:近似正弦波,但在励磁电感参与谐振的部分会出现“平台段”。具体来说,在一个开关半周期内:
- 阶段一(能量传递阶段):Q1/Q4 导通,Lr 与 Cr 谐振,变压器副边二极管导通,能量传递给负载;
- 阶段二(励磁电感与 Lr 共同谐振):当谐振电流 i_Lr 下降到与励磁电流 i_Lm 相等时,副边整流二极管自然关断,变压器原边不再向副边传递能量。此时 Lr、Cr、Lm 三者共同谐振,由于 Lm 很大,谐振频率很低,电流近似不变,在波形上表现为一条平坦的直线段。
这个“平台段”是 LLC 区别于其他谐振变换器的标志,也是副边二极管实现 ZCS 的关键。
5.2 如何判断 ZVS 是否实现?
在仿真波形中,观察原边电流 i_Lr 过零时刻与驱动脉冲关系的相位差。若原边电流过零点在开关管驱动脉冲上升沿之前出现,说明在开关管开通前,电流从 MOSFET 的源极流向漏极(即体二极管导通),为 ZVS 创造了条件。
在 Scope 中,同时显示 PWM1 信号与 i_Lr 波形。你将看到:PWM1 上升沿到来时,i_Lr 仍为负值。这说明 Q1 的体二极管正在导通,Q1 两端的电压被钳位在 -0.7V 左右。这样 Q1 导通就是零电压导通。
5.3 输出电压波形解读
开环仿真中,输出电压会经过一个短暂的启动过渡过程,然后稳定在某个值。这个值并不一定是我们设定的 48V,而是取决于开关频率、变压比和负载的大小。因为开环没有反馈调节,如果频率偏离谐振点较多,输出电压会与期望值有偏差。
在本次参数下,输出电压稳定值大约在 45V~52V 之间波动(具体与互感器设置相关)。如果输出电压偏低,可以降低开关频率(更接近谐振点)获得更高增益;如果偏高,则升高开关频率。
5.4 二极管电压尖峰问题
副边整流二极管 D1 在反向恢复瞬间,会在示波器上看到一个电压尖峰。这是因为变压器副边漏感与二极管结电容在关断瞬间产生了谐振。在开环仿真初期,如果尖峰异常高,不要慌,这是正常现象,实际电路中需要增加 RC 吸收或选择合适的二极管。
6. 常见问题与排查思路
6.1 仿真报错:无法求解 or 求解器步长过小
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
| 仿真实时性极差,1ms 需要跑数分钟 | 最大步长设置过小 | 将步长从 1e-7 调整为 1e-6 |
| 仿真出现“Solver cannot be extended” | 模型中有代数环或高频震荡 | 使用 ode23tb,并检查驱动信号是否悬空 |
| 电压波形剧烈震荡 | 变压器参数设置不当,励磁电感太小 | 增大变压器励磁电感或改正 Lm 并联方式 |
| 输出电压几乎为 0 | 驱动脉冲相位接反 | 检查 Q1/Q4 与 Q2/Q3 是否为对角同时导通 |
6.2 波形不对称:谐振电流正负半周不一致
如果发现原边谐振电流的正半周与负半周幅值相差很大,通常是因为:
- 变压器原边电压波形不对称,四个开关管的导通压降不一致(使用理想开关时影响小);
- 驱动信号占空比不是 50%,导致正负半周期充电时间不一致;
- 启动瞬间直流分量未消除,需要等待波形进入稳态再观察。
6.3 死区时间引起的误导通
如果死区时间设置太长,会发现励磁电流在死区内反向并提前给对侧开关管的结电容放电,导致体二极管导通损耗增加。如果死区时间太短,开关管无法实现 ZVS,硬开关会造成电流尖峰。更合理的方法是:在仿真中逐步增加死区时间,观察原边电流过零点相对于驱动信号沿的时间差,通常 1%~5% 的开关周期都是可接受范围。
6.4 示波器崩溃或波形无法显示
确保所有 Scope 连接的是 Simulink 信号而不是 Simscape 物理信号。你需要使用“Simulink-PS Converter”或直接使用“Current Measurement”模块,将电流转为 Simulink 信号后再送入 Scope。否则会出现黄色/红色连线的报错提示。
7. 最佳实践与工程化建议
7.1 参数扫描:从静态走向动态
开环模型搭建成功后,建议读者使用 Simulink 的parsim或linmod工具对开关频率做扫描,绘制增益曲线。这里给出一个简单的频率扫描脚本思路:
% 频率扫描参数设置 freq_list = 80e3:5e3:140e3; Vout_list = zeros(size(freq_list)); for i = 1:length(freq_list) fs = freq_list(i); % 修改 PWM 周期模块参数 set_param('LLC_FullBridge_OpenLoop/PWM1', 'Period', num2str(1/fs)); set_param('LLC_FullBridge_OpenLoop/PWM2', 'Period', num2str(1/fs)); % 仿真 simOut = sim('LLC_FullBridge_OpenLoop', 'StopTime', '0.003'); % 提取输出电压稳定值 Vout = simOut.yout{1}.Values.Data(end); Vout_list(i) = Vout; end % 绘制增益曲线 plot(freq_list, Vout_list, 'LineWidth', 2); grid on; xlabel('开关频率 f_s (Hz)'); ylabel('输出电压 V_o (V)'); title('LLC 变换器频率-电压增益特性');这种开环增益扫描,为后续闭环补偿器的设计提供了基础数据。
7.2 离散化与实际控制器的桥接
本文开环仿真使用了连续求解器,但实际工程中,数字控制器(如 DSP)是离散化的。因此后续进阶方向,建议将控制环路改成 Z 域离散形式,并通过Simulink Coder生成 C 代码,在 HIL(硬件在环)或实际 DSP 板上验证。这个方向涉及代码生成、ADC 采样延迟补偿等问题,比较复杂,建议先吃透本文的开环模型。
7.3 仿真效率优化技巧
电力电子仿真最大的痛点是“跑得慢”。在保证精度的前提下,可以尝试:
- 使用
ode23tb并设置较大相对误差(1e-3 即可); - 将负载和滤波电容的初始条件设置为近似稳态,减少启动过渡时间;
- 合理使用“Simscape Electrical”的“Discrete solver”模式,用固定步长 200ns 代替连续求解器,可以获得 10 倍以上的提速。
7.4 安全与生产环境提示
本文内容为仿真研究,不涉及真实高压操作。但如果你后续将仿真结果转化为实际样机调试,请务必注意:
- 400V 直流母线属于危险电压,实验时需使用隔离变压器、差分探头和短路防护措施;
- 仿真参数不会百分百匹配实际器件,必须经过实物小功率验证;
- 修改负载或输入电压时,先调低电压到 50V 观察波形,再逐步加压,避免炸机。
7.5 模型架构建议
在 Simulink 中,不要把所有模块都堆在一个页面里。推荐的模型架构是将系统拆分为两个子系统:
PowerStage:包含直流源、全桥、谐振腔、变压器、整流、滤波、负载;ControlAndGateDrive:包含四个脉冲发生器、死区生成逻辑、频率设置参数。
用Ctrl+G进行子系统封装,然后为子系统添加Mask(右击 > Mask > Create Mask)。这样后续做参数扫描或者闭环控制时,可以动态修改子系统内部的参数,代码更清晰,也便于团队协作。
8. 总结与下一步学习路线
通过本文的完整操作,你应该已经掌握了以下核心技能:
- 理解全桥 LLC 谐振变换器的电路结构和工作原理;
- 能够在 MATLAB/Simulink 中手动搭建开环仿真模型;
- 学会设置合理的死区时间、开关频率和谐振参数;
- 能够分辨 i_Lr 与 i_Lm 在波形上的特征差异;
- 具备根据波形判断 ZVS/ZCS 是否实现的能力。
需要指出的是,开环仿真只是第一步。真正做电源产品时,需要围绕 LLC 增加闭环控制(通常采用 PFM 变频控制),以及过流保护、过压保护、软启动等逻辑。下一步你可以尝试:
- 在本文模型中加入简单的 PI 调节器,通过调节压控振荡器(VCO)实现稳压闭环;
- 学习 LLC 小信号建模,理解它的极点/零点随负载如何变化;
- 尝试用 Ansys Simplorer 或 PLECS 与 Matlab 协同仿真,对比不同工具下的损耗差异。
关于这些相关的技术延伸,涉及内容较多,我在之前的文章中对“LLC 闭环控制与补偿器设计”也有过专门的拆解。对于初次接触 LLC 的朋友,我建议先不要急着追求高深的理论,先把波形看懂,把每个工作区间与电流路径在图上指出来,这是最快的入门方式。