前阵子做一套储能电池充电方案时,甲方给了一个硬性约束:输入输出必须电气隔离,电池侧要支持能量双向流动,同时还得额外拖一路48V辅助电源给散热风扇和控制系统供电。我最初的想法是"那就在前端放一个DAB,再并一个DAB",后来评估了一圈体积、成本和磁性器件数量,还是改成了TAB(Triple Active Bridge,三有源桥)——一个高频三绕组变压器加三个全桥,把三路功率全部整合进去,并用Simulink完成了系统级的仿真验证。这篇文章就是把这个项目的建模思路、控制策略和踩坑过程复盘一遍,给正在入手隔离型多端口变换器仿真、准备用Simulink做TAB/三端口电池充电系统研究的朋友做个参考。
TAB的仿真并不复杂,但它和DAB最大的不同在于"三端口功率是强耦合的":三个桥之间两两都有移相角,动其中一个角会同时影响另外两条功率通路。这个耦合特性决定了仿真模型该怎么搭、控制环该怎么分层、参数又该怎么整定。下面我按自己的实际项目顺序来拆。
1. 为什么电池充电场景里,我会选TAB而不是"两个DAB拼出来"
先说回项目需求。这套系统的拓扑要求是:一路400V直流母线(连接前端AC-DC变换器),一路电池端口(额定200V动力电池组,支持充电和放电),再加一路48V辅助输出。三路之间必须高频变压器隔离。这种"多输入/多输出+双向+隔离"的三端口结构,放在三年前我大概率直接用两个DAB并联解决——一路DAB负责电池充放电,另一路DAB负责辅助电源,两套变换器各干各的。
但双DAB方案有一个很难受的问题:磁性元件和功率器件都是双份的。
两个高频变压器、两组全桥器件、两套控制电路,成本和体积直接翻倍。而且两个DAB各自独立控制,在动态切换时(比如电池从充电瞬间切换为放电),两个变换器之间的功率协调必须靠外部调度,响应速度天然慢半拍。更重要的是,双DAB一共要占四个端口,实际却只有三个端口需要接设备,另一个端口和对应的磁性绕组等于浪费。
TAB的价值就在于"用一个多绕组变压器把三个端口绑在一起"。三端口之间只有唯一的高频磁路,任意两个端口的功率交换都是通过第三个端口进行平衡,功率器件和磁性器件都被大幅压缩。整个系统的功率路由关系在拓扑层面就天然完成,不需要额外通信。下表是我当时做的方案对比:
| 方案 | 高频隔离 | 双向能力 | 磁性元件数量 | 功率协调方式 | 体积与成本 |
|---|---|---|---|---|---|
| 三个独立DAB | 有 | 全端口双向 | 2个变压器+4组电感 | 外部调度 | 高 |
| 非隔离多路Buck/Boost | 无 | 部分单向或半桥双向 | 无 | 本地控制 | 低但无隔离 |
| TAB | 有 | 全端口双向 | 1个三绕组变压器+等效串联电感 | 磁路自然耦合 | 低 |
选TAB还有一个电池充电场景特有的理由:电池端口电压是宽范围变化的,而TAB天然适合处理大范围电压波动。磷酸铁锂/三元锂整组电池从亏电到满电,端口电压会有20%~30%的变化幅度,这在充电机设计中非常头疼。TAB通过移相角调节,可以让变压器端口间的电压差异转化成可控的功率传输,电压匹配条件比DAB更宽松——后续的移相调压能力正好覆盖电池电压的变化区间。
不过也要说清楚,TAB不是银弹。三端口完全耦合导致控制自由度变少,电磁设计上对三绕组变压器的漏感参数更敏感,这些都是实际工程中需要接受的代价。仿真阶段如果这些特性处理不好,后面实验阶段大概率会反复改板子,所以我这篇文章会花较大篇幅讲"仿真里怎么把耦合特性复现出来"以及"怎么通过控制策略让耦合不再是问题"。
2. 三个桥的功率调配:移相角才是核心控制变量
2.1 从DAB的移相逻辑说起
DAB(双有源桥)的功率控制很简单:原副边两个H桥都用50%占空比的方波驱动,两个方波之间错开一个移相角φ,功率传输大小和方向就完全由这个φ决定。正向调大φ,功率从原边流向副边增大;反向调φ,功率反向流动。工程上常用的稳态功率公式可以简化写成:
P = (V1 × V2') / (2 × π × fs × L) × φ × (1 - |φ| / π)
其中V2'是副边电压折算到原边的值,L是变压器漏感与外加电感的等效串联感值,fs是开关频率。这个公式虽然是在忽略电阻、忽略高次谐波的条件下得到的,但用来估计功率容量和选漏感特别直观——漏感小了电流冲击大,漏感大了同样移相角下功率传不过去。
2.2 TAB的三端口耦合到底是什么
TAB比DAB多了一个桥,三个桥的方波之间就有三个相对相位差:φ12(桥1与桥2)、φ13(桥1与桥3)、φ23(桥2与桥3)。但注意,三个相位差之间满足约束关系φ23=φ13-φ12,所以真正独立可调的控制变量只有两个。
三绕组变压器在做等效分析时,通常把三个端口的漏感折合成一个星形(Y形)耦合电感网络。在这个等效模型下,每个端口的功率等于该端口电压与其他各端口电压相位差的贡献之和。也就是说:
P1 = k12×φ12 + k13×φ13 P2 = -k12×φ12 + k23×φ23 P3 = -k13×φ13 - k23×φ23
其中k系数与电压幅值、频率、等效电感有关。从这个式子可以清楚看到TAB的本质问题:调整φ12会同时改变P1和P2,但P3也会跟着变,因为φ23等于φ13减φ12。三个端口的功率像连通器一样,动一个角,所有端口都会受影响。
2.3 我采用的功率路由策略
虽然耦合听起来麻烦,但反过来利用它其实可以简化控制。我的策略是:端口1作为"功率平衡端口",不直接参与闭环;端口2(电池充电电流/电压)和端口3(48V辅助电压)作为两个受控端口,由两个独立控制环分别输出φ12和φ13。
工作逻辑是这样:当电池需要加大充电功率时,电流环输出更大的φ12,这个动作会让功率从端口1向端口2流动;同时端口3的电压会因为耦合略微波动,电压环会自行微调φ13来补偿。端口1的功率不设独立控制环,其输入功率自动等于端口2和端口3功率之和——从物理角度看,直流母线侧电源天然会自动补充总功率缺口。这种"两个指头按下,第三个指头跟着弹起"的控制方式,在实际硬件上避免了三个环互相打架的问题。
2.4 移相角边界与回流功率问题
移相控制最忌讳的是移相角超过一定范围。从DAB功率公式看,φ在0到π之间时功率在φ=π/2附近达到最大,超过π/2后功率反而下降,同时回流功率比例增大,电流应力飙升。我在控制环里给两个移相角都做了限幅,默认限制在±60度电角度以内(约π/3),既保证有足够功率传输能力,又不会让回流功率占过大比例。这个限制在仿真模型里就是一个Saturation模块的事,但它能救命——不加限制的PI控制器在启动和负载突变时,很容易把移相角推过头。
3. Simulink建模关键步骤与参数选型
3.1 建模策略:平均模型先行,开关模型验证
TAB的Simulink建模最忌讳一上来就搭完整的开关级模型——三个H桥、高频变压器、十二个开关管,再加上控制环路,仿真速度会非常感人。我的做法分两步:
第一步,用平均模型把控制策略跑通。在Simulink里,平均模型不需要IGBT/MOSFET开关管,直接用受控电压源模拟每个H桥输出的基波方波,通过移相角改变各个受控源之间的相对相位。这样跑一次稳态仿真只需几秒钟,电压环和电流环的PI参数可以在这里快速粗调。
第二步,再做开关级模型验证。开关级模型里保留实际全桥开关管、三绕组变压器和二极管,用来验证电流纹波、ZVS条件和启动冲击这类细节问题。两个模型共用同一套控制逻辑和PI参数,只是被控对象的电气描述精度不同。
3.2 高频三绕组变压器的建模细节
三绕组变压器是TAB仿真里最容易出错的地方。Simulink的Simscape Electrical里有一个Three-Winding Transformer模块,直接设置各绕组变比、漏感和磁化电感即可,但它内部默认的电压电流参考方向和实际电路搭接容易搞混。我更推荐的做法是拆开建模:用理想变压器(受控电压源+受控电流源组合)作为电压变换核心,然后在每个端口串联一个等效漏感L1、L2、L3。这样每个端口的感值都能独立调整,后续观测端口电流也更直观。
变压器变比按端口额定电压匹配:端口1为400V、端口2为200V、端口3为48V,因此变比设为N1:N2:N3 = 8.33:4.17:1,也就是主变比近似8:4:1。实际设置时我按800:400:100匝数比设,方便计算。
漏感值按额定功率反推。项目目标功率2kW、开关频率20kHz(仿真用)、直流母线400V、电池端折算后电压约400V,额定移相角取30度(约π/6),带入DAB功率公式算出的等效漏感约280μH。这个值我分配在端口1、端口2各140μH,端口3辅助端口漏感较小设为约50μH。当然实际样机开关频率会远超20kHz,漏感可以大幅缩小,但仿真里只要频率和感值配比等效,验证的控制逻辑就是有效的。
3.3 全桥与移相PWM生成
三个H桥我都用Universal Bridge模块实现,桥臂配置选全桥模式,开关器件选IGBT/Diode。Universal Bridge的好处是内部已包含反并联二极管和续流路径,不用手动搭死区逻辑,适合系统级仿真。
移相PWM的生成是整个模型的关键。我用一个统一三角载波源,频率设为20kHz,三个桥的A、B桥臂驱动信号在同一载波上比较。给每个桥设置一个"移相角度参考"(Simulink里用角度信号控制脉冲延迟),桥1的移相基准是0,桥2的移相基准是φ12,桥3的移相基准是φ13。每个H桥内部,A桥臂和B桥臂之间再错开半个开关周期(即50%占空比方波的互补关系)。这样三个桥输出的方波就带上了期望的相对相位差。
这里要说一个我踩过的小坑:Simulink的移相角度单位是rad,载波频率对应的时间周期是50μs,移相角给多少rad就必须换算成对应的时间延迟。如果用Pulse Generator模块里的"Phase delay"参数,单位其实是秒,不是角度,我当初在这个单位换算上花了半小时才反应过来。
3.4 电池模型怎么选
Simulink自带Battery模块(在Simscape Electrical库中),支持锂电池模型,可设置额定电压、容量、SOC初始值、内阻等。我直接用它建了一个额定电压200V、容量50Ah、初始SOC 30%的锂离子电池模型。但自带电池模型有个问题:默认内阻偏小,充电时端口电流纹波会全部压在电池端,波形看起来特别毛糙。解决方法是给电池端口额外串联一个小电感(约1mH),模拟实机中电池线束和滤波电感的寄生感值。
如果只关心功率变换侧行为,可以用一个更简单的Thevenin等效模型:受控电压源(SOC开路电压)串联一个内阻R0并联RC网络(极化效应)。这种模型在平均模型阶段用起来更快,SOC计算可以后面再补。两种方式我都试过,结论是:系统级控制验证用Thevenin模型就够了,开关级详细波形分析用自带Battery模块更省事。
4. 电池充电的CC-CV控制:两个闭环如何配合
4.1 充电流程为什么要分恒流恒压两段
锂电池充电不能一直大电流充到满电,否则过压会损坏电池。标准充电曲线是先恒流(CC):电池电压低于设定值时,以固定电流(比如10A)充电;当电池电压上升到充电上限(本项目设为228V)时,切换为恒压(CV):保持电压不变,充电电流自然逐渐减小,当电流降到0.5A左右时认为充电完成。这套CC-CV流程本身很简单,但在TAB这种多端口拓扑里实现,关键在于"电流环和电压环之间怎么平滑切换"。
4.2 两个闭环的控制结构
我的控制结构如下:
- 端口2电流环:采样电池端口直流电流,与CC阶段电流设定值(10A)做误差,输出移相角φ12。PI控制器输出经过限幅(±60度电角度)后直接作用于桥2移相基准。
- 端口3电压环:采样48V辅助端口电压,与48V参考值做误差,输出移相角φ13,同样限幅后作用于桥3。
- 模式切换逻辑:检测电池端口电压,低于228V时切换开关指向电流环(CC模式);高于228V时切换开关指向电压环(CV模式)。
CV模式下,电流环并不停掉,电压环输出的φ12也在不断缩小,从而让充电电流平滑下降。为避免切换瞬间电流突变,我给模式切换加了一个斜坡逻辑:不是瞬间从10A切到电压闭环,而是让电流参考值在200ms内按照设定的电压闭环电流预测值斜坡递减,实测效果很好,电池端电压没有任何尖刺。
4.3 PI参数整定的实操参考
TAB的PI参数没有精确公式,工程上给一组可用的起始参考值再微调就好。我用的小信号法整定思路是:把移相角到电池电流之间的传递函数近似成一阶惯性环节,带宽按开关频率的1/10(即2kHz)来取。实际起始参数如下:
| 控制环 | Kp起始值 | Ki起始值 | 输出限幅 | 说明 |
|---|---|---|---|---|
| 电池电流环 | 0.1 | 20 | ±60度 | 电流环响应快,Ki大胆给 |
| 辅助电压环 | 0.05 | 5 | ±60度 | 电压环动态要求低,Kp不应过大 |
这个参数在平均模型里可以直接用,换到开关级模型时需要稍作微调——因为开关级模型里有PWM延迟和电流纹波,Kp过大会造成振荡。我在开关级模型里最终把电流环Kp降到0.05,Ki保持20,系统才稳定下来。
提示:如果仿真中出现持续振荡,先不要盲目调PI,先检查移相角是否频繁触碰到限幅值。如果限幅值顶满,说明功率传递能力不足,需要增大等效漏感或提高直流母线电压,而不是继续加大Kp。
4.4 电池端口的反馈量选哪个
端口2的"充电电流"有两种采样位置:变压器端口侧的交流电流,和电池直流侧的直流电流。我强烈建议采样直流侧电流作为闭环反馈,原因有两个:一是电池充电工况关心的是实际注入电池的直流电流,交流侧电流包含了无功分量,并不直接等效于充电功率;二是直流侧电流纹波相对小,给PI控制器带来的压力也小得多。代价是需要增加一个采样延时补偿,我在反馈路径上加了一个一阶低通滤波(截止频率5kHz),用于滤除开关频率附近的毛刺。
5. 从"仿真发散"到"稳态正常":我踩过的坑
5.1 代数环问题
这是我第一次跑TAB开关级模型时直接卡死的元凶。现象是仿真一开始就报"Algebraic loop detected",然后整个模型计算速度慢到无法忍受,甚至在特定条件下直接发散。原因在于PWM信号的发生依赖输出电流的测量值,而电流测量值又由PWM信号决定,两者之间形成了瞬时反馈回路。
解决方式有三种:
- 在测量信号链上插入一个极小的惯性环节(比如1e-6秒的一阶低通),打破瞬时回路;
- 在电流采样反馈路径上加Unit Delay模块,牺牲一个采样周期换取解耦;
- 在求解器设置里允许Simulink自动代数环求解。
我在实际项目中前两种都用过。开关级模型用第一种(惯性环节),效果最自然;平均模型用第二种(单位延迟),因为平均模型没有高频开关噪声,一个周期的延迟对几十ms级动态响应几乎无影响。
5.2 启动冲击电流与软启动
第一次闭环启动时,电池电流瞬间冲到40A,直接把仿真数值拉爆。原因很简单:三个桥同时启动且移相角直接给到目标值,变压器端口电压之间相位突变,等效电感上会产生巨大的电流冲击。
解决办法是软启动:启动时移相角从0开始,以斜坡方式在20ms内缓慢上升到PI控制器输出的目标值。同时直流母线侧电容和电池侧电容都有预充电过程,需要在仿真最初阶段让三个桥先以零移相角运行几个开关周期,等电容充到接近额定电压后再切入闭环。这个方法放在实际样机上也同样适用——我在实验里就是照抄这个软启动时序。
5.3 三绕组变压器漏感折算方向
如果你直接用Simscape的Three-Winding Transformer,一定要注意漏感参数究竟标注在哪个绕组基准下。这个模块的漏感单位是百分比(标幺值),基准选择不同,实际感值会差好几倍。我在第一次建模时按百分值1%设置端口1到端口2的漏感,结果功率传输能力只有预期的一半,后来才反应过来标幺基准和我实际算出来的感值对不上。
更稳妥的替代方案就是前面说的"分解建模法":理想变压器+各端口独立串联电感。这样每个端口的感值都以Henry为单位直接设,即使以后要改参数,逻辑也更清楚。强烈建议仿真新手用这种模块组合。
5.4 电压匹配条件检查
TAB运行时,各端口电压折算到同一基准后的幅值越接近,系统内的无功环流越小。我在开环调试时测过一个工况:端口2电池电压跌到160V(低压保护点),但端口3是48V稳压输出,按变比折算后端口2折算电压和端口3折算电压差异较大,结果变压器绕组里的环流明显增大,端口1输入电流峰值比正常工况高了近一倍。
这说明仿真调试的第一步不是调控制器,而是先做电压匹配检查。用开环仿真测一下各端口在额定工况下的折算电压,如果不匹配就调整变压器变比,或者适当增加相应端口的串联电感来吸收电压差。控制环只在电压匹配合理的基础上才有意义。
5.5 仿真速度的取舍
20kHz开关频率、50μs开关周期,如果仿真时长设1秒,步长上限至少要取1μs量级,那就是100万步——笔记本电脑跑一次要几分钟。我的实际做法是分段仿真:控制参数整定用平均模型(步长1e-5秒,跑0.2秒就够);开关级模型只仿真几个关键工况片段(每个工况0.1~0.3秒),主要用来截取波形和确认纹波特性。开关级模型里把Powergui的求解器设为离散模式,采样时间取1e-6秒,在精度和速度之间取平衡。
注意:仿真结果里如果出现电流波形"糊成一团",先别急着怀疑拓扑,先看Powergui求解器是不是设成了连续模式并且仿真步长过大。连续模式下的变步长求解器在开关切换点会反复逼近,能慢到让你怀疑人生。
6. 仿真结果怎么判读:确认模型没做错的方法
6.1 第一关:功率平衡校验
TAB模型做出来后,第一个要校验的就是功率平衡:端口1输入功率应当等于端口2充电功率加上端口3辅助功率再加上系统损耗。我在模型里用积分器分别计算三个端口的瞬时功率平均值,然后看P1 + P2 + P3是否接近0。如果三个端口的功率和明显不为零,那说明变压器绕组连接方向或功率采样符号出错了。
这个校验看似基础,但它能快速定位一大类接线错误。我第一次搭模型时,端口3的辅助功率符号反了,功率校验显示P1 + P2 + P3等于两倍端口3功率,一下就知道问题出在哪路。
6.2 第二关:充电工况波形判读
稳态充电工况下,需要观察三个关键波形:
- 电池端口电流:恒流阶段应当稳定在10A附近,纹波峰峰值不超过额定值的10%;恒压阶段电流应缓慢下降,不能出现振荡。
- 三个H桥输出的方波电压:桥1和桥2之间的相对相位差应当稳定在PI控制器输出值附近,桥2与桥1的方波前沿对齐关系一目了然。
- 端口3电压:稳定在48V±1%以内,且切换瞬间超调小于5%。
有一次我看到电池电流波形有周期性的小尖峰,检查后发现是移相角在PI输出值和限幅值之间反复碰撞导致的次谐波振荡,把限幅角从60度改回45度后波形立刻干净了。这类问题只有在波形层面才能暴露,控制环路的Bode图分析往往看不到。
6.3 第三关:动态工况验证
充电系统不能只看稳态。我设置了三个动态工况:
- 工况1:CC阶段启动,观察软启动过程中的电流冲击和电压过冲;
- 工况2:CC模式向CV模式切换,观察切换点是否有电流振荡;
- 工况3:端口3负载从0突加到500W,观察辅助电压恢复时间和电池充电电流受影响程度。
TAB的端口耦合特性在工况3中最明显:端口3加负载瞬间,电池端口充电电流会出现一个短暂的小扰动,这正是耦合导致的,电压环补偿后应该在50ms内回到充电设定值。如果你的仿真里这个扰动完全不存在,反而要怀疑是不是耦合建模出错了——真正的TAB不可能完全不解耦。
6.4 从仿真到实验前的差距清单
仿真跑通之后,我还会做一份"仿真与硬件差异清单",提醒自己实验阶段可能出现的偏差:开关管死区时间会造成实际移相角偏小;变压器实际漏感容差会导致功率传输能力和仿真值有偏差;电池的实际内阻和极化特性与模型不完全一致;还有线束寄生电感带来的额外电压尖峰。这些差异大多可以靠控制环的裕量吸收,但如果你在仿真阶段就把漏感、电容等参数贴着边界取值,实验阶段就会非常被动。
最后再说两句我的体会
整套TAB仿真调下来,最深刻的感受是:这个拓扑真正的难点不是拓扑本身,而是"三端口天然耦合"这个特性在整个开发流程里无处不在。建模时要考虑耦合对功率平衡的影响,控制设计时要靠"两个环+一个自然平衡端口"的策略避开耦合对抗,波形调试时又要靠端口间扰动关系来反推建模是否正确。这和做DAB很不一样——DAB调好一个闭环就基本完事,TAB始终要有"三端口是一体的"这个全局视角。
如果后续要做类似方向,我会建议在现有模型上继续扩展两步:一是把端口1换成光伏输入或电网整流后的不稳定直流母线,研究功率波动时电池端口的响应;二是把移相控制从单移相升级为双移相或三角波调制,对比不同调制策略下的回流功率和ZVS范围。Simulink这套模型已经把这些扩展的接口都留好了,改起来不会伤筋动骨,后面哪个方向有进展我再单独写一篇记录。