拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Simulink中DAB双有源桥变换器闭环仿真与PI参数整定全攻略

第一次在Simulink里把DAB双有源桥变换器的闭环模型调通我盯着输出电压波形看了好一会儿。那种感觉和当年调通Buck电路完全不一样Buck调通是“意料之中”DAB调通是“如释重负”。开环DAB仿真其实不难搭网上模板一抓一大把但真正拉开差距的是闭环移相比怎么给定、反馈环路怎么搭、PI参数怎么整定以及那些一仿真就发散、怎么查都查不出原因的玄学问题。这篇文章就把我从模型搭建到闭环调通的完整过程拆开讲包括参数计算逻辑、坑点和排查思路适合电力电子方向的学生、做电源的硬件工程师以及所有在Simulink里折腾过DAB模型的同行。1. DAB为什么值得搭这个闭环仿真1.1 拓扑结构与功率传输关系DABDual Active Bridge双有源桥的基本结构就是原边一个全桥、副边一个全桥中间夹一个高频变压器。两个全桥都输出高频方波通过控制原副边方波之间的移相角就能精确控制功率传输的方向和大小。功率传输的公式是关键几乎所有参数设计都围绕它展开P n × V1 × V2 × D × (1 - D) / (2 × f_s × L)其中n为变压器变比V1为输入电压V2为输出电压D为移相比即移相角占开关周期的比例f_s为开关频率L为变压器漏感或外加辅助电感。从这个公式能读出几个重要信息D在0到0.5之间变化时传输功率先增后减最大点出现在D0.5附近功率大小与频率、电感成反比改变D的符号就能改变功率方向这就是DAB天然具备四象限运行能力的原因。相比传统的LLC、反激等隔离变换器DAB的优势非常明显结构对称、双向传输、容易实现软开关、动态响应快。1.2 开环仿真的局限性很多初学DAB的人第一步都是搭一个开环模型给定一个固定移相角然后看电压电流波形。这个阶段通常很顺利因为稳态波形在正确参数下就是经典的六段式电流波形。但一旦涉及实际应用场景开环模型就远远不够用了。负载突变时输出电压会偏离额定值输入电压波动时输出无法自动修正启动瞬间输出电容从零开始充电浪涌电流可能是稳态值的数倍。这些场景都需要闭环控制来解决。更具体一点如果把DAB用在车载充电机或储能变换器中恒压/恒流/恒功率这些工作模式本质上都是闭环需求。所以开环仿真只是验证拓扑原理闭环仿真才是验证控制方案能否落地的关键一步。这也是为什么我建议不要停留在“开环跑通就完事”的阶段。2. 仿真模型搭建拓扑、磁件参数与移相PWM的产生2.1 主电路元件的搭建选择在Simulink里搭建DAB主电路主流有两种做法一种是使用Simscape Electrical原SimPowerSystems工具箱用MOSFET、IGBT、变压器等物理模型另一种是纯Simulink逻辑开关模型用理想开关加逻辑控制模拟斩波行为。我强烈建议用第一种因为物理模型保留了导通压降、开关损耗、寄生电容等细节后续如果要延伸到硬件设计仿真结果更有参考价值。具体元件清单如下元件参数说明输入直流源 V1400V原边母线电压原边H桥4× MOSFET带反并联二极管可用Universal Bridge或单独MOSFET模块高频变压器变比 n 2理想变压器模型或Linear Transformer功率传输电感 L150uH可使用变压器漏感或外加串联电感副边H桥4× MOSFET带反并联二极管与原边对称输出滤波电容 C500uF抑制输出电压纹波负载 R20Ω标称负载2kW变压器建模有个容易踩的坑直接用理想变压器导致漏感为零仿真结果完全不对。DAB的功率传输恰恰依赖漏感所以要么用Linear Transformer设置漏感参数要么在理想变压器外部串联一个电感。我习惯用“理想变压器外串电感”的方式因为可以单独调节L的值做参数扫描时非常方便。2.2 关键参数的计算逻辑含算例参数设计不是拍脑袋而是从功率传输公式反向推。假设目标工况为V1400VV2200Vn2开关频率f_s50kHz额定功率2000W标称工作点取D0.25。代进公式2000 2 × 400 × 200 × 0.25 × 0.75 / (2 × 50000 × L)分子部分2 × 400 × 200 160000160000 × 0.25 × 0.75 30000分母是100000 × L得到 L 30000 / (2000 × 100000) 1.5e-4 H也就是150uH。为什么取D0.25而不是0.5因为D0.5附近是功率传输的极限点增益曲线接近饱和闭环调节空间很小。取0.25可以让系统在工作点附近有足够的调节余量负载突变或输入波动时PI控制器有条件向两边调整。输出电容的选择则基于纹波要求50kHz开关频率下500uF容值可以把电压纹波控制在1%以内。这些参数不是固定的但设计逻辑是通用的。2.3 移相PWM的三种实现方式移相PWM是整个闭环控制能够落地的关键。原边桥臂对角管互补导通形成方波V_AB副边桥臂同样形成方波V_CD两者之间的相位差就是移相角。三种常见实现方式方式一两个Pulse Generator副边PWM加时间延迟延迟量等于D × T_sw。这种方式最简单但缺点是改变D值时脉冲会立即跳变造成波形畸变闭环控制时容易引入扰动。方式二载波比较法。用一个三角载波和常数比较生成原边PWM同时将三角载波偏移D或把比较电平偏移D生成副边PWM。这种方式在改变D时是连续的闭环控制平滑推荐使用。方式三使用Simulink自带的PWM Generator模块可以配置载波频率和移相角。不过这个模块在不同版本中位置和参数差异较大灵活性不如自己搭载波比较逻辑。具体到载波比较法的实现三角波频率50kHz、幅值0到1原边A桥用常数0.5与三角波比较生成占空比0.5的方波副边A桥用常数0.5 - D与三角波比较实现滞后移相每个桥臂的上下管用取反逻辑得到互补PWM。这里注意D的物理范围是0到0.5但载波坐标下需要做一个映射D0.5对应半周期延时。3. 闭环控制设计被控量选什么、PI参数怎么整定3.1 闭环控制的目标与结构DAB最常见的闭环目标是输出电压恒定控制变量就是移相比D。控制结构并不复杂输出电压Vout与参考值Vref比较误差经过PI控制器输出限幅后的移相比D送给移相PWM生成模块从而实时调节功率传输。为什么用PI而不是PIDDAB电压环本质是恒值控制PI的积分项已经能消除稳态误差微分项对高频噪声非常敏感而电力电子变换器恰恰充满了开关噪声。实际电源控制系统绝大多数用PI或者在PI基础上加陷波器/超前校正直接上PID的很少。除了电压环DAB还有其他被控量恒功率控制直接控功率环电池充放电场景用电流环更复杂的系统会用电压外环加电流内环。不过核心逻辑都一样就是PI控制器输出一个合适的移相比。另外值得一提的是单移相SPS和多自由度移相控制的取舍。SPS只有一个控制自由度D结构简单、实现容易但回流功率较大轻载效率偏低。扩展移相EPS、双移相DPS、三重移相TPS通过增加桥内占空比等自由度来优化回流功率和软开关范围但控制复杂度成倍上升。我建议教学和入门阶段先把SPS闭环吃透再考虑更高级的移相方式。3.2 从开环阶跃响应估算被控对象模型很多人在Simulink里直接丢一个PID模块进去然后凭感觉调参数这样可能调很久也调不出满意的动态。我的习惯是先从开环阶跃响应中提取被控对象的大致模型再用模型计算PI初值最后在仿真里微调。操作步骤去掉PI控制器给一个固定的D0.25运行开环仿真。记录输出电压响应曲线。以我之前搭的模型为例输出电压最终稳定在190VD0.25对应的工作点从0上升到稳态值的63%大约需要4ms。这样就能近似估算G(s) K / (1 T × s) 760 / (1 0.004 × s)其中K 190 / 0.25 760T ≈ 4ms。另外数字采样和PWM更新会带来约1ms的等效延迟所以实际被控对象还要串联一个e^(-0.001s)。用MATLAB的pidtune工具可以直接算出PI初始值G tf(760, [0.004 1]); G.InputDelay 0.001; C pidtune(G, PI, 2*pi*100);期望闭环带宽我习惯取开关频率的1/500到1/100也就是100Hz到1kHz之间。带宽越高响应越快但对噪声和延迟越敏感。开关频率50kHz时取100Hz到200Hz比较稳妥。pidtune算出的Kp、Ki值作为初始参数再进仿真里微调。3.3 PI参数整定的实际操作拿到初始参数后我一般按照这样一个套路在Simulink里调参第一步设置PI初始参数运行闭环仿真看启动过程。如果输出电压超调大或振荡先降低Kp。第二步做负载突变测试。在t0.05s时把负载从半载切到满载观察输出电压跌落幅度和恢复时间。第三步调Kp。增大Kp可以减小负载突变时的电压跌落但过大会引起振荡甚至触发限幅导致控制失稳。第四步调Ki。增大Ki可以加快稳态误差的消除速度但过大会产生低频振荡这个振荡在实际硬件中往往表现为输出电流的大幅摆动。以我调试的经验为例初始Kp0.002、Ki0.5时负载突变导致输出电压从200V跌到192V恢复时间约20ms。把Kp翻倍到0.004后跌落减小到197V但波形开始出现轻微振荡。把Ki加大到1.2恢复时间缩短到12ms振荡基本消除。最终确定的参数是Kp0.004、Ki1.2。调参过程中有一个容易忽略的点不要只看输出电压波形还要观察输出电流和变压器电流。有时候电压波形看着稳定但电流应力已经超出器件承受范围。PI参数过大的一个典型表现就是电流波形出现明显的振荡毛刺这时候宁可牺牲一点动态响应也要降参数。3.4 采样与离散化细节反馈采样质量直接决定闭环系统能不能稳定工作。Simulink里直接采样输出电压信号中会混有开关纹波如果直接进PI会造成PWM抖动甚至极限环振荡。三种常用处理方式第一在开关周期中心点采样避开开关边沿的尖峰干扰。这种方式需要复杂的触发逻辑不太方便。第二用Mean模块对输出电压做周期平均平均窗口设为一个开关周期。这种方式简单有效能平滑掉大部分纹波。第三在反馈通道加低通滤波器截止频率远低于开关频率。需要注意滤波器本身会引入相位滞后降低系统相位裕度。我推荐第二种实现简单且不会引入额外相位延迟。离散化方面实际控制器一定是数字控制所以仿真里最好直接搭离散PI。采样周期取开关周期20us。增量式离散PI的公式u[k] u[k-1] Kp × (e[k] - e[k-1]) Ki × T_s × e[k]Simulink里直接用Discrete PID Controller模块设置采样时间为1/50000就能模拟DSP里的真实行为。用离散PI还会附带一个好处PI输出自带一个周期的延迟能打破某些情况下反馈回路中的代数环。4. 仿真发散排查我踩过的那些模型坑4.1 求解器与步长的坑现象很典型仿真刚开始几毫秒还很正常紧接着波形直接飞掉变成NaN或者报出“Nonlinear iteration is not converging with square root tolerance”之类的错误。这种情况首先怀疑求解器设置。电力电子电路本身是强非线性系统开关管动作带来高频瞬态变步长求解器在开关边沿附近很容易步长过大导致数值不收敛。我的建议是直接用ode23tb或ode15s这两个求解器对刚性系统比较友好。同时必须设置最大步长经验值是开关周期的1/20到1/50。50kHz开关频率对应的开关周期是20us最大步长取0.4us到1us。图中的波形出现小幅振荡且不可复现时多半也是步长问题。把最大步长缩小10倍重新跑一遍如果波形变化巨大说明之前的仿真结果根本不可信。4.2 模型初始条件的坑D0.25直接加到电路上启动输出电容初始电压为零电感初始电流为零仿真开始瞬间相当于一个短路态。这个瞬间的电流冲击在仿真曲线里看起来可能就是一根尖锐的尖峰严重时直接把仿真干发散。这个问题在实际硬件中同样存在所以很多电源都有软启动电路。仿真中处理方式有几种给PI输出加Rate Limiter让D从0缓慢爬升到工作点或者把输出电容的初始电压设置为接近目标值比如180V/200V或者在主电路中加预充电阻模型。Rate Limiter的方式最贴近实际硬件逻辑也顺带检验了闭环在启动过程中的稳定性。我一般把Rate Limiter的上升斜率设为每毫秒0.02到0.05这样电容充电过程可控不会出现离谱的浪涌。4.3 反馈回路里的代数环和时序坑反馈闭环调试中最烦人的报错就是“Algebraic loop detected”或者“Data dependency violation”。这个问题的根源在于PI输出的D直接成为PWM模块的输入PWM又控制开关管状态开关管影响输出电压输出电压采样又作为PI输入回传。如果整个环路中没有状态量打断瞬时关系就形成了代数闭环。解决办法通常是在反馈通道中加一个Unit Delay或者Memory模块打破代数环。如果用了离散PID模块那它本身就带一拍延迟代数环基本不会出现。这是我喜欢在仿真中用离散PI的另一个原因。需要注意的是加一拍延迟相当于给反馈通道增加了20us的相位延迟对200Hz带宽的控制环来说影响很小但如果带宽设计得很高就必须把这个延迟纳入稳定性校核。4.4 快速定位发散问题的一条排查链路仿真发散的原因千奇百怪但排查顺序是固定的盲猜没有意义。我总结了下面这条路径第一步看报错信息。Simulink的报错一般会区分代数环问题、求解器收敛问题、去约束错误前两者最常见。第二步断环隔离。把PI控制器断开给一个固定D值看开环模型是否正常。如果开环正常而闭环发散问题几乎一定出在控制环路本身如果开环也发散那问题出在主电路模型、求解器设置或参数设计。第三步检查限幅。D值有没有被限制在0到0.5或-0.5到0.5限幅上限有没有留给PI足够的调节空间如果D瞬间超过0.5功率公式中的1-D项变号系统会往反方向调直接发散。第四步检查反馈信号。用Scope查看采样电压波形是否有尖峰、是否包含开关纹波。反馈信号异常会导致PI输出剧烈波动。第五步缩步长验证。最大步长缩减10倍如果仿真恢复正常说明是数值步长问题如果反而更糟大概率是模型本身存在代数环或PI增益过高。第六步降PI增益。把Kp和Ki都缩小10倍如果模型稳定说明控制器参数需要重新整定。这套排查链路我用了很多次基本能在半小时内定位问题而不是对着模型乱猜。5. 从仿真走向硬件三个容易被忽略的边界条件5.1 死区时间不能忽略仿真中的PWM是理想互补的实际驱动芯片为了保护桥臂必须在上下管切换时插入死区时间。死区的存在会让输出电压波形偏离理想状态重载时影响更大还会引入低频谐波。如果仿真阶段完全不建模死区得到的PI参数很可能在硬件上表现不佳因为死区相当于在控制环中引入了一个非线性环节等效增益会随负载变化。我当时在仿真里用Transport Delay模块给PWM信号加了300ns的延迟来模拟死区然后重新整定了PI参数最后硬件调试时一次通过。现在Simulink里也有专门的Dead Time模块设置起来更方便。5.2 数字控制的延迟DSP的实际控制流程是ADC采样、计算PI、更新PWM寄存器整个过程会占用一定时间PWM波形要到下一个周期才更新。因此数字控制器天然存在一个到两个采样周期的延迟。如果仿真中完全不建模这个延迟PI参数可能会过于激进上硬件后轻则波形抖动重则直接振荡。建议闭环仿真结构中在PI输出后面加一个零阶保持器和一拍延迟等效于数字控制器的更新机制。这样整定出的PI参数上硬件后基本不需要做大调整。5.3 采样噪声与控制器增益仿真里采样的电压是理想值硬件ADC采样到的电压却有噪声、偏置甚至还有电感电流在PCB地线上产生的耦合干扰。仿真中看着很好的高增益PI放到硬件上会把噪声放大造成PWM占空比抖动、输出电流毛刺增大严重时还会产生可听见的啸叫。给硬件留裕量的做法是让控制环带宽远低于开关频率。我一般控制在开关频率的1/100到1/200左右。50kHz开关频率对应200Hz到500Hz带宽这个范围内即使ADC噪声再大PI输出也不会剧烈波动。如果确实需要更高带宽就要在采样电路上加模拟滤波或者在控制器里加数字滤波。5.4 参数漂移与鲁棒性仿真里电感值设成150uH就一直恒定实际电感的感值随温度升高可能下降10%到20%磁芯饱和时感值下降更明显。电感值一旦变化功率传输曲线就会改变原来整定好的PI参数可能就不再满足相位裕度要求。建议在仿真最后做一个参数鲁棒性扫描把L从120uH改到180uH把C从400uF改到600uF看闭环响应是否仍然稳定、超调是否在可接受范围内。如果参数漂移后系统极度敏感说明控制器设计得太贴着边界需要降低带宽或重新优化PI参数。从仿真走向硬件的过程中这些边界条件每一个都值得认真对待。仿真最大的价值就是在不烧管子、不炸电容的前提下把控制方案的可行性验证清楚。但仿真再完美也不能替代硬件实验中的各种非理想因素。所以在仿真阶段多留一分裕量硬件阶段就能少掉一根头发。DAB闭环仿真这件事最磨人的往往不是拓扑原理本身而是那些看似琐碎的细节步长设置、限幅范围、采样方式、初始条件、死区时间。每解决一个坑对控制环路的理解就会深一层。我自己的体会是从开环到闭环从仿真到硬件是一个不断修正认知的过程。希望这篇文章能帮你少走几步弯路尤其是那些只能靠时间和踩坑换来的排查经验。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门