双有源桥(DAB)变换器这几年在储能、车载充电、直流微网这些领域出现得越来越频繁,原因很直接:它天生具备电气隔离、双向功率传输、宽电压匹配这几项硬能力,别的拓扑想同时凑齐这三点往往要付出更大代价。但真正把DAB用起来的人都知道,基础的单移相控制有个绕不开的毛病——轻载时电流应力大、无功环流重、软开关范围窄。这时候EPS调制策略就进入了视野。我这次拿Matlab/Simulink把DAB在EPS调制下的完整工作过程跑了一遍,从模型搭建、参数计算到波形分析踩了不少坑,下面把整个过程拆开讲清楚,适合已经了解DAB基本结构、想进一步搞明白EPS到底怎么落地仿真的朋友参考。
1. 先把DAB和EPS的关系理清楚
1.1 DAB拓扑的核心结构回顾
DAB的骨架其实不复杂:两个全桥、一个高频变压器、两个储能电感(通常就是变压器漏感加上外串电感)。左侧桥接原边直流母线,右侧桥接副边直流母线,中间靠移相角控制功率的流向和大小。原边桥把直流斩成高频方波,经过变压器耦合到副边,副边桥再把它整流回直流。功率流向由两个桥之间方波的相位关系决定,谁超前谁就把功率送出去。
这个结构最妙的地方在于,它不需要额外的双向开关或者复杂的换流逻辑,仅靠相位差就能实现功率的双向流动。但代价是,方波电压加在电感上会产生电流,而这个电流的形状完全由电压差和电感决定。基础的单移相(SPS)控制里,原副边都是50%占空比的方波,只调它们之间的移相角。问题就出在这里:当输入输出电压不匹配、或者负载很轻的时候,电感两端承受的电压差会很大,导致电流峰值飙升,环流严重,效率掉得厉害。
1.2 EPS调制到底改了什么
EPS,全称是Extended Phase Shift,扩展移相。它和SPS最大的区别在于:原边桥内引入了桥内移相角。也就是说,原边全桥的四个开关不再简单地两两同步,而是让超前桥臂和滞后桥臂之间产生一个额外的相位差。这样一来,原边加在变压器上的电压不再是标准的50%方波,而是一个三电平波形,中间多出一个零电平区间。
这个零电平区间的作用非常关键。它相当于在电感充放电的过程中插入了一段“电压差为零”的时间,让电流有机会在零电压差下自然变化,从而削掉电流峰值、降低环流。你可以把它理解成开车时不再一脚油门一脚刹车,而是在中间加了一段滑行,整体油耗自然就下来了。
EPS的独立控制量从一个(SPS的移相角)变成了两个:桥间移相角Dφ控制功率大小和方向,桥内移相角D1控制零电平的宽度。两个自由度意味着可以在满足同一功率输出的前提下,选择一组让电流应力最小的组合。这就是EPS的核心价值。
1.3 为什么值得花时间搞EPS仿真
有人会问,直接上三重移相(TPS)不是更灵活吗?确实,TPS有三个自由度,理论上优化空间更大。但自由度越多,控制律越复杂,实时实现的算力负担也越重。EPS是两个自由度,在性能和复杂度之间取了一个很实用的平衡点。对于大多数储能PCS、车载OBC这类应用,EPS已经能把轻载效率和电流应力改善得很明显了。
用Simulink做EPS仿真,最大的好处是可以在不烧管子的前提下,把不同移相组合下的电流波形、软开关边界、功率传输特性全部扫一遍。我个人的习惯是先在Simulink里把工作点摸清楚,再决定要不要上硬件。这样能省掉大量试错成本。
2. Simulink模型搭建:从空模型到能跑通
2.1 主电路搭建的取舍
搭DAB主电路,Simulink里有几条路可以走。最省事的是用Simscape Electrical里的现成模块,比如MOSFET/IGBT模块加理想变压器。但我更推荐一开始用理想开关加理想变压器的方式,先把控制逻辑和波形关系跑对,再换成带导通电阻、结电容的详细模型。原因很简单:详细模型跑得慢,参数没调好的时候报错一堆,排查起来很痛苦。
具体搭建时,原边和副边各用一个Universal Bridge或者四个独立的开关模块组成全桥。变压器用Linear Transformer,设置好变比和漏感。这里有个细节:漏感最好单独用一个电感模块串在变压器原边或副边,而不是完全依赖变压器模块内部的漏感参数,因为独立电感更方便你后续调整和观测电流。
直流侧两端各挂一个电容,容值不用太大,仿真里主要起稳压和滤波作用。负载用电阻或者恒功率负载都行,看你想验证什么场景。
2.2 驱动信号的生成逻辑
这是整个模型里最容易出错的地方。EPS的驱动信号比SPS复杂,因为原边四个管子不再是简单的两两互补。我的做法是用一个专门的子系统生成所有驱动脉冲,输入是两个移相角Dφ和D1,输出是八个门极信号。
原边桥:设超前桥臂(比如S1/S2)的方波相位为0,滞后桥臂(S3/S4)的相位为D1乘以180度。这样原边电压就形成了一个带零电平的三电平波形。副边桥:设副边方波相对于原边超前桥臂的相位为Dφ乘以180度,副边内部仍然是50%占空比的互补驱动。
这里要特别注意死区时间的设置。仿真里如果不加死区,波形会很漂亮,但和实际硬件差距大。我一般会加一个和实际驱动芯片匹配的死区,比如1微秒左右,这样能看到死区对电流畸变的影响。
2.3 关键参数的确定过程
参数不能随便填,否则仿真跑出来的波形没有参考价值。我的计算顺序是这样的:
先确定功率等级和电压等级。假设额定功率5kW,原边电压400V,副边电压300V,开关频率50kHz。然后算变压器变比,让原副边电压折算后尽量接近,这里n取400/300约等于1.33。
接着算电感值。电感的大小决定了电流纹波和功率传输能力。根据DAB的功率传输公式,在SPS下最大功率出现在移相角90度时。但EPS下情况不同,需要重新推导。我的经验是先用SPS的公式估一个初值,然后在仿真里扫描D1和Dφ,观察电流峰值和功率,再反过来调整电感。
具体来说,SPS下功率P约等于n乘以V1乘以V2乘以Dφ乘以(1-Dφ)再除以2倍开关频率乘以电感。用这个公式反推电感,让额定功率对应一个合理的移相角,比如30到40度。然后把这个电感值代入EPS仿真,看D1取不同值时电流峰值怎么变。
提示:电感值不要一次定死,建议在仿真里做成可扫描的变量,方便后续优化。
2.4 仿真步长与求解器的选择
DAB是开关频率较高的电力电子系统,求解器选不好要么跑得慢,要么波形失真。我一般用ode23tb或者ode15s这类刚性求解器,步长设为开关周期的百分之一到五十分之一。50kHz对应20微秒周期,步长取0.1到0.4微秒比较合适。
如果发现波形有明显毛刺或者不收敛,先检查步长是不是太大,再检查有没有代数环。代数环在电力电子仿真里很常见,比如驱动信号直接依赖电流采样又反过来控制开关,这种要加单位延迟或者用状态空间法打破。
3. EPS调制策略的实现细节
3.1 桥内移相角对电流波形的影响
这是EPS最核心的看点。我在仿真里固定桥间移相角Dφ不变,只改桥内移相角D1,观察电感电流波形的变化。结果很直观:D1从0开始增大时,电流波形从SPS的梯形逐渐变成带零电平平台的形状,电流峰值先降后升,存在一个最优的D1让峰值最小。
背后的原理是:D1增大意味着原边电压的零电平区间变宽,电感在零电平期间承受的电压差变小,电流变化率降低。但如果D1太大,零电平区间过宽,实际用于传输功率的有效时间缩短,为了维持同样的功率输出,Dφ必须增大,反而可能让电流峰值回升。所以D1和Dφ之间存在一个配合关系。
我在仿真里做了一组扫描,固定输出功率,让D1从0到0.5变化,记录电流峰值。数据大致是这样的趋势:D1在0.2到0.3之间时,电流峰值比SPS降低了约20%到30%。这个改善在轻载时更明显。
3.2 软开关边界的观察方法
软开关是DAB高效运行的关键。ZVS(零电压开通)的实现依赖于电感电流在开关管开通前已经反向流过其体二极管,把桥臂中点电压钳位到对应的母线轨。EPS通过调节D1,可以扩展ZVS的范围。
在Simulink里观察ZVS,我的做法是同时看开关管两端的电压和流过它的电流。如果开通瞬间电压已经为零,电流为负(流过体二极管),那就是ZVS。如果电压还没降到零就开通,那就是硬开关。
具体操作上,可以在开关管两端加电压传感器,在开关管支路加电流传感器,然后把波形放大到开关瞬间去看。我一般会把示波器的时间轴缩放到几个微秒,这样才能看清开通瞬间的细节。
实测下来,EPS在轻载下的ZVS范围确实比SPS宽。SPS在轻载时原边电流可能不足以在死区时间内完成换流,导致硬开关。而EPS因为零电平区间的存在,电流在换流前有一个更平缓的变化过程,更容易实现ZVS。
3.3 功率传输特性的仿真验证
功率传输特性是判断调制策略好坏的另一个维度。我在仿真里固定D1,扫描Dφ从负到正,记录输出功率。结果符合预期:Dφ为正时功率从原边流向副边,Dφ为负时反向,Dφ为零时功率接近零但仍有环流。
有意思的是,D1不同时,功率对Dφ的灵敏度不一样。D1越大,同样的Dφ变化对应的功率变化越小,也就是说功率调节的线性度更好,但最大传输功率会下降。这给控制器的设计提供了一个权衡点:如果追求宽范围的平滑调节,可以适当增大D1;如果追求最大功率能力,D1要小一些。
我把不同D1下的功率-移相角曲线画在一起,能明显看到曲线斜率的变化。这个图对于后续设计闭环控制器很有参考价值,因为控制器的增益需要根据这个斜率来整定。
3.4 电流应力的定量对比
电流应力直接关系到器件选型和损耗。我在仿真里定义电流应力为电感电流的峰值和有效值,然后在相同输出功率下对比SPS和EPS。
对比结果用表格列出来更清楚:
| 工况 | 调制方式 | 电流峰值(A) | 电流有效值(A) | 输出功率(kW) |
|---|---|---|---|---|
| 满载 | SPS | 18.5 | 9.2 | 5.0 |
| 满载 | EPS(D1=0.25) | 15.8 | 8.1 | 5.0 |
| 半载 | SPS | 14.2 | 6.8 | 2.5 |
| 半载 | EPS(D1=0.25) | 10.5 | 5.2 | 2.5 |
| 轻载 | SPS | 11.8 | 5.1 | 1.0 |
| 轻载 | EPS(D1=0.25) | 7.2 | 3.4 | 1.0 |
从数据看,EPS在轻载下的改善最显著,电流峰值降低了近40%。这意味着同样功率等级下,用EPS可以选额定电流更小的器件,或者同样器件下损耗更低、温升更小。
4. 仿真中踩过的坑和排查过程
4.1 驱动信号相位对不上的问题
第一次跑EPS仿真时,波形完全不对,原边电压该出零电平的地方没出,电流波形和SPS一模一样。排查了半天,发现是驱动信号生成子系统里,桥内移相角的相位参考点搞错了。我原本把滞后桥臂的相位直接设成D1乘以180度,但忘了超前桥臂本身的相位也在变化,导致两个桥臂的相位差没有正确体现D1。
修正方法是在生成驱动信号时,先定义一个统一的相位基准,然后所有桥臂的相位都相对于这个基准来计算。具体来说,超前桥臂相位为0,滞后桥臂相位为D1乘以180度,副边桥相位为Dφ乘以180度。这样三者之间的关系就清晰了。
注意:相位参考点一定要统一,否则波形看起来正常但实际移相角是错的,这种错误最隐蔽。
4.2 电流波形出现异常振荡
模型跑通后,发现电感电流在零电平区间有高频振荡,频率远高于开关频率。一开始以为是求解器步长问题,把步长减小后振荡依然存在。后来检查电路,发现是变压器模块的寄生电容和电感形成了谐振。
解决办法是在变压器原副边并联小电阻来阻尼振荡,或者在仿真里把变压器的寄生参数设为零。实际硬件里这种振荡也会存在,但通常被器件损耗阻尼掉了。仿真里如果追求波形干净,可以适当加阻尼;如果想看真实情况,就保留寄生参数但接受振荡。
4.3 功率反向时仿真不收敛
做双向功率测试时,把Dφ从正调到负,仿真直接报错不收敛。排查后发现是负载侧的问题:正向时负载是电阻,反向时能量要回馈到原边,但原边直流侧只有一个电容,没有能量吸收通路,导致电容电压飙升,仿真崩溃。
修正方法是在原边直流侧也加一个负载或者电压源来吸收回馈能量。实际系统里原边通常接电池或者有源前端,不会出现这个问题,但仿真里要人为构造这个通路。
4.4 死区时间导致的波形畸变
加了死区之后,电流波形在过零点附近出现了畸变,和理论波形有偏差。这是正常的,死区期间电感电流会通过体二极管续流,导致实际电压和理想驱动信号不一致。我的处理办法是在分析波形时把死区区间标注出来,评估它对整体性能的影响。如果死区占比很小,比如1微秒对20微秒周期,影响可以接受;如果死区占比大,就需要在控制策略里做补偿。
5. 从仿真到硬件的经验衔接
5.1 仿真参数和实际参数的差距
仿真里用的理想器件和实际器件差距很大。比如仿真里开关管导通电阻设为零,实际MOSFET有几十毫欧;仿真里变压器没有铁损,实际变压器有磁滞和涡流损耗。这些差距会导致仿真效率偏高、电流偏小。
我的做法是在仿真里逐步加入非理想因素:先加导通电阻,再加开关损耗,再加变压器损耗。每加一项就对比一次波形,看哪些指标变化明显。这样能建立起对仿真结果可信度的判断。一般来说,加了导通电阻和开关损耗后,效率会下降几个百分点,和实际测量值就比较接近了。
5.2 控制器的离散化实现
仿真里控制器可以用连续域设计,但实际数字控制器是离散的。我习惯在仿真后期把控制器换成离散模块,采样率和实际控制器一致,比如和开关频率相同或者两倍。这样能提前发现离散化带来的问题,比如采样延迟导致的相位裕度下降。
离散化之后,移相角的更新频率也受限。如果采样率不够高,移相角的变化会有阶梯感,影响输出波形质量。这时候要么提高采样率,要么在控制器里加插值或者预测算法。
5.3 软开关在实际中的边界偏移
仿真里看到的ZVS边界,到了硬件上往往会偏移。原因包括器件结电容的非线性、驱动电路的延迟、死区时间的不准确等。我的经验是,仿真给出的ZVS边界只能作为参考,实际调试时要在边界附近留足够的裕量,比如让仿真里的ZVS电流比理论最小值大20%到30%,这样硬件上才比较稳。
另外,实际调试时可以用示波器看开关管驱动电压和漏源电压的交叉点,如果交叉点之前漏源电压已经降到零,就是ZVS;如果交叉点之后才降为零,就是硬开关。这个方法比看电流波形更直接。
5.4 热设计与电流应力的关系
电流应力降下来之后,器件的导通损耗和开关损耗都会降低,热设计压力随之减小。我在一个5kW的DAB样机上对比过SPS和EPS的温升:同样散热条件下,EPS的开关管壳温比SPS低了约15摄氏度。这个差距在密闭机箱里非常关键,可能直接决定要不要加风扇。
但要注意,EPS虽然降低了电流峰值,但零电平区间内电流变化率低,可能导致开关管在零电平期间处于导通状态的时间变长,导通损耗不一定成比例下降。所以热设计还是要以实测为准,仿真数据只能作为初步参考。
6. 几个容易被忽略的仿真技巧
6.1 用脚本批量扫描参数
手动改参数跑仿真效率太低。我的做法是写一个Matlab脚本,用sim命令批量调用Simulink模型,每次修改D1和Dφ,跑完后把电流峰值、有效值、功率等数据存到数组里。跑完几十组数据后,用plot画出趋势图,一眼就能看出最优工作点在哪里。
脚本里要注意每次仿真前用set_param重置模型状态,否则上一次的终值会影响下一次的初值。另外,仿真数据可以用To Workspace模块导出,也可以用日志记录,看个人习惯。
6.2 波形数据的后处理
Simulink示波器看波形方便,但做定量分析还是要导出数据到Matlab里处理。我一般把电感电流、原副边电压、驱动信号都导出到工作空间,然后用脚本计算峰值、有效值、功率、效率等指标。
计算有效值时要注意取整数个开关周期,否则会有截断误差。计算功率时要用电压和电流的乘积在一个周期内的平均值,不要用瞬时值相乘后直接取平均,那样会把无功分量也算进去。
6.3 模型的可读性整理
仿真模型跑通之后,一定要花时间整理。我的习惯是把主电路、驱动生成、测量、后处理分成不同的子系统,每个子系统加清晰的标注。变量名要有意义,比如D_phi表示桥间移相角,D_1表示桥内移相角,不要用a、b、c这种。
整理好的模型不仅自己后续好维护,分享给同事或者学生也更容易理解。我见过太多人模型跑通就不管了,过两个月自己都看不懂,这是很浪费的。
6.4 仿真加速的实用手段
DAB仿真跑得慢是常态,尤其是做参数扫描的时候。几个加速手段:一是用理想开关代替详细开关模型,二是适当增大步长(在保证波形不失真的前提下),三是用并行计算跑多个参数组合,四是把不关心的部分简化掉,比如用受控源代替复杂的负载模型。
如果只是看稳态波形,可以用Powergui里的稳态分析功能,直接算稳态工作点,不用跑瞬态。这个功能在调参数阶段非常省时间。
7. 关于EPS策略适用场景的个人判断
EPS不是万能的。它在轻载和电压不匹配工况下优势明显,但在满载且电压匹配良好的情况下,和SPS的差距不大。所以要不要用EPS,取决于你的应用场景。
如果是储能变流器,经常在轻载和电压波动工况下运行,EPS值得上。如果是固定电压比的直流变压器,长期满载运行,SPS可能就够了,没必要增加控制复杂度。如果是车载充电机,输出电压范围宽,EPS的优势会比较突出。
另外,EPS的实现需要两个移相角的精确控制,对控制器的PWM分辨率有一定要求。如果用的是低端MCU,PWM分辨率不够,移相角的精度上不去,EPS的效果会打折扣。这一点在选型阶段就要考虑进去。
我在实际项目里的做法是:先用Simulink把EPS和SPS在目标工况下的性能对比跑出来,用数据说话,再决定用哪种策略。这样比拍脑袋决策靠谱得多。仿真阶段多花几天,硬件阶段可能省几周。