ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

DAB变换器闭环控制Simulink仿真:从移相调制到PI参数整定

DAB变换器闭环控制Simulink仿真:从移相调制到PI参数整定 DAB变换器在电力电子圈子里这几年是真的火无论是储能、电动汽车充电还是数据中心供电高频隔离DC-DC这条技术路线基本绕不开双有源桥这个拓扑。但真要自己动手在Simulink里搭一套带闭环控制的DAB模型很多人一开始会卡在“开环好好的一上闭环就发散”这个坎上。这篇文章我就把自己调试DAB闭环控制仿真模型的过程完整拆开讲从主电路参数设计、移相控制逻辑、闭环补偿器整定到常见坑的排查思路全部按实际操作经验来写希望能帮到正在做相关课题或者项目选型的朋友。1. 为什么DAB要上闭环控制开环仿真里最容易被忽视的问题1.1 先从DAB拓扑看能量是怎么“搬”过去的双有源桥Dual Active Bridge从名字也能猜到结构原边和副边各有一个全桥中间通过高频变压器和辅助电感连接。两个全桥都在高频开关状态下工作各自输出方波电压问题就变成了两个方波之间怎么协调。关键在“移相”这两个字。原边桥臂的驱动信号和副边桥臂的驱动信号之间存在一个相位差这个相位差通常用移相角 (D) 或者 (\phi) 表示直接决定了功率传输的大小和方向。当原边方波超前副边方波时能量从原边流向副边相位反过来了能量就反向流动。而移相角为零时两个方波完全同步变压器两侧电压没有压差自然也就没有功率流动。这里有个很直观的类比想象两个人面对面传球一个人扔球的时刻决定另一个人什么时候能接到球。如果两个人同时扔球到中间就撞掉如果错开一点时间球就能顺利传过去。DAB的移相控制就是这个“错开的时机”时机越长能传过去的能量就越多但也不能无限制拉长拉过头了效率反而会掉。1.2 开环DAB在负载变化时暴露的电压跌落问题我第一次搭完开环模型测试的时候固定移相角不变负载从轻载切换到大功率输出端电压直接掉了将近15%。理论上移相角没变传输功率应该稳定但实际上变压器漏感上的压降、开关管的通态损耗、整流侧二极管压降都会随负载变化而改变输出端不可能维持稳压。在仿真里如果只看空载或者固定负载工况开环模型看起来完全正常波形漂亮电压也稳。可一旦把负载设置成阶跃变化或者模拟实际系统中输入电压波动的场景开环的缺陷就暴露出来了。这也解释了为什么实际工程中的DAB变换器几乎都要带闭环控制移相角必须由控制器实时调节而不是固定写死。1.3 控制目标到底是什么稳压、稳流还是功率控制设计闭环之前先想清楚控制目标。DAB最常见的控制模式有两种输出恒压控制适用于给电池充电的前级或车载DC-DC和输出恒流控制适用于充电过程的恒流阶段。对于恒压控制采样输出电压 (V_{out})和参考电压 (V_{ref}) 比较经过PI补偿器得到移相角指令恒流控制则采样输出电感电流或变压器原边电流同样经过PI环生成移相角。实际项目里还可能是“恒流恒压”双环切换但我建议初学者先把单环做明白不要一上来就搞双环。2. 单移相控制的Simulink模型设计主电路参数与控制逻辑如何落地2.1 传输功率公式与参数设计的联动关系闭环控制的核心执行量是移相角但移相角能调节的范围和灵敏度取决于主电路参数。单移相Single Phase Shift, SPS调制下DAB的传输功率表达式为[ P \frac{V_{in} \cdot V_{out}}{2\pi f_s L} D(1-D) ]其中 (V_{out} V_{out}/n)n为变压器变比(f_s) 是开关频率(L) 是辅助电感感值通常包含变压器漏感(D) 是移相比取值范围通常在 [-0.5, 0.5] 之间。这个公式很有用。第一它说明功率是 (D(1-D)) 的抛物线关系所以移相比并不是越大功率越大超过0.5之后功率反而下降第二功率大小由 (L) 和 (f_s) 决定如果电感太小很小的移相角就会产生很大电流容易过流如果电感太大要输出额定功率需要很大的移相角动态响应会变慢。我在设计参数时的一个具体做法是先根据功率等级确定开关频率然后反推电感量范围。用仿真结果对比不同电感值下的电流峰值和传输功率选取一个兼顾电流应力和调节裕度的中间值。2.2 主电路各模块的设计要点变压器变比 (n) 的选取通常满足 (V_{out}/n \approx V_{in})这样原副边的方波电压幅值接近电流应力最小。但这只是一个粗略的起点实际还要考虑死区时间和开关管压降的影响必要时加入一点修正。高频变压器模型可以在Simulink里用Linear Transformer模块设置变比也可以用理想变压器加漏感的方式替代后者更方便调参。我一般把主要电感量单独做成一个串联电感元件调试时只需改一个参数不用每次动变压器模型。参数典型取值设计说明输入电压 (V_{in})400 V前级PFC输出或电池组电压输出电压 (V_{out})48 V负载侧母线电压变压器变比 (n)8:1尽量匹配原副边电压折算值开关频率 (f_s)50 kHz兼顾效率与磁性元件体积辅助电感 (L)30–60 μH根据功率等级和电流应力折衷移相比范围-0.4 ~ 0.4避免接近0.5导致功率回落2.3 控制环路在Simulink中的具体搭建方式主电路可以用Simscape Electrical (SimPowerSystems) 来搭控制部分则建议用普通Simulink模块搭建不要混在同一个电气网络里。控制环路的输入信号是输出电压采样值这个采样值通过Voltage Measurement模块取得同时把这个测量电压和参考电压做差经过PI控制器输出一个归一化移相比指令。需要注意PI控制器输出的移相比是标幺值范围一般在 ±0.5 之间这个指令不能直接作为开关管的门极信号需要通过一个“移相角转PWM”的模块来生成四路或者八路互补驱动信号。我习惯用一个简单的S函数或者MATLAB Function来写这段逻辑function [y1, y2, y3, y4] fcn(D) % 输入D为移相比范围[-0.5, 0.5] % 输出原边和副边的开关驱动信号 T_half 0.5; % 半个开关周期归一化 if D 0 % 原边超前副边原边方波脉宽固定 % 副边方波延迟 D*T_period 后产生 y1 (mod(time,1) T_half); % 原边Q1/Q4 y2 ~y1; % 原边Q2/Q3 y3 (mod(time - D,1) T_half); % 副边Q5/Q8 y4 ~y3; % 副边Q6/Q7 else % 副边超前原边功率反向 y1 (mod(time,1) T_half); y2 ~y1; y3 (mod(time abs(D),1) T_half); y4 ~y3; end这段代码的核心逻辑是让原边驱动信号始终保持50%占空比方波而副边驱动信号在原边基础上偏移 (D) 倍的开关周期。实际使用中需要把time换成仿真时间变量并注意Simulink中MATLAB Function模块的支持方式。也可以用Stateflow来搭但我觉得S函数更轻量。3. 闭环PI控制器整定为什么直接抄参数容易翻车3.1 从功率传递函数看系统的近似模型PI参数整定是闭环仿真里最容易卡壳的环节很多人直接抄论文里的PI参数换上自己的模型就发现震荡或者响应太慢原因在于DAB的传递函数和主电路参数强相关不同功率等级、不同电感量对应的小信号模型差异很大。从工程近似角度DAB的输出电压对移相比的传递函数可以简化为一阶惯性系统[ G(s) \frac{V_{out}(s)}{D(s)} \approx \frac{K}{1 s\tau} ]其中 (K) 是稳态增益(\tau) 是输出滤波电容和负载电阻共同决定的时间常数。如果输出滤波电容为 (C_f)负载电阻为 (R_L)则 (\tau \approx R_L C_f)。这个公式的意义在于PI参数整定前可以先估算时间常数再据此选择合适的带宽。我自己的整定步骤是先通过仿真获取阶跃响应用“开环阶跃测试”得到特定移相比下的输出电压变化曲线从曲线上直接读取稳态增益和时间常数然后用零极点对消的方法设计PI参数。3.2 PI参数的工程整定方法和初始值计算按照零极点对消的思路令PI控制器的零点近似抵消被控对象的大惯性极点[ T_i \tau, \quad K_p \frac{1}{K \cdot T_{desired}} ]其中 (T_{desired}) 是期望的闭环时间常数。为了让系统有足够的响应速度又不至于震荡期望闭环带宽通常取开关频率的1/20到1/10。在50kHz开关频率下闭环带宽取2~5kHz比较合理对应的期望时间常数为 (1/(2\pi \times 3000) \approx 53\mu s)。不过我实际调试时发现直接用这个公式算出来的参数往往偏激进仿真里会出现明显的电压超调我一般会把算出来的 (K_p) 乘以0.5左右先试跑观察动态响应后再逐步增加。整定过程中我习惯用四组参数做对比测试观察输出电压波形和移相比输出波形然后选择综合动态最优的组。PI参数组合超调量调节时间稳态误差移相比波动Kp0.01, Ki50%15 ms0.2 V平滑Kp0.05, Ki508%5 ms0.05 V轻微抖动Kp0.1, Ki20022%2.5 ms0.02 V明显震荡Kp0.02, Ki202%8 ms0.1 V平滑上表是典型的对比结果可以看到Kp和Ki同时增大虽然加快了响应但超调和震荡问题也随之而来实际应用时要在响应速度和控制稳定性之间折衷。没有一组参数是“万能最佳”必须配合具体工况来选择。3.3 限幅器与控制前馈让闭环更稳的两个细节PI控制器输出直接连到移相调制模块前必须加限幅。我见过不少仿真翻车案例是因为PI积分项不断累积输出移相比超过0.5进入功率回落区系统瞬间失去调节能力。限幅范围我通常设置为 ±0.45留出一点裕量。积分器也要带限幅避免“积分饱和”导致退饱和时间过长。Simulink中的PID Controller模块自带积分限幅选项建议勾选并设定与输出限幅相近的积分限幅。除了限幅前馈控制也能显著提升动态响应。既然稳态时功率和移相角之间有明确对应关系可以在PI输出上叠加上一个按功率估算的基准移相比让PI只负责修正偏差而不是承担全部调节任务。这样在负载突变时PI需要调节的幅度就小很多动态响应自然更快。4. 仿真调试中的高频陷阱震荡、直通和代数环4.1 驱动互补管直通问题死区时间必须加很多初学者搭完模型一跑发现输入电流巨大或者波形完全不对第一个怀疑对象是控制逻辑和参数但第三排查的往往是IGBT/MOSFET模块没有设置死区时间。在Simulink的Simscape电气开关模型中同一个桥臂的上下管驱动信号绝不能在同一时刻同时为高。实际控制器设计时会在互补驱动信号之间插入一个死区时间 (t_d)防止开关管未完全关断时另一个开关管就导通形成直流母线直通。仿真模型中如果使用的是理想开关Ideal Switch可能不会出现直通导致的严重后果但这会掩盖实际操作中必须考虑的问题导致移植到硬件平台后突然炸管子。我建议在建立模型时就把死区逻辑写进去比如在S函数里把上下管驱动信号分别延迟一段时间或者用Simulink的on/off delay模块来产生死区。死区时间一般取开关周期的1%到3%。50kHz开关频率下死区取200ns到600ns这段时间虽然很短但会引入额外的功率损耗和电压误差需要在精确的移相角计算中考虑进去。4.2 仿真步长不匹配引发的伪震荡Simulink模型跑起来出现莫名其妙的高频震荡时不一定是控制参数问题很可能是步长设置不对。电气开关模型的最小时间尺度是开关周期如果仿真步长比开关周期大开关动作的细节就会被严重混叠导致波形失真。高频开关变换器仿真建议使用固定步长求解器如ode3或ode4步长取开关周期的1/50到1/100。50kHz开关频率对应开关周期20μs步长取0.2μs到0.4μs比较合适。如果使用变步长求解器会出现“开关时刻检测不准确”的问题导致门极信号和实际开关动作的时间错位仿真结果时好时坏干扰对控制性能的判断。我后来统一改成固定步长后很多看起来像控制问题的现象自动消失了。4.3 代数环问题控制信号不能直接反馈进电气模型控制环路在Simulink里的实现有时候会遇到代数环的报错原因在于控制模块的输入不仅依赖于被控对象的输出还通过某条路径直接依赖于自身的输入形成了一个没有延迟的循环依赖。解决代数环的常见方法是在反馈回路里插入一个Memory模块或者Unit Delay模块打破循环。但我建议不要随便找地方插最好先在控制信号链路上加一个采样保持器模拟数字控制器的采样周期这样既解决了代数环问题也更接近硬件实现的真实情况控制器本来就是以离散周期工作的。把PI控制器离散化时采样频率一般取开关频率的1/1到1/2也就是每个开关周期更新一次或两次移相比指令。离散化后的PI控制器可以用Z变换形式写也可以在Simulink里用离散PID模块实现。5. 从DAB闭环仿真到硬件实现那些仿真里看不到的坑5.1 仿真模型的理想化假设与硬件差异仿真跑通了移相比调节平滑电压稳定输出动态特性良好这时候容易产生“直接抄作业”的冲动。但仿真器里的开关管是理想器件没有导通压降、没有开关损耗、没有脉冲上升沿下降沿时间这些在仿真里看似无关紧要的差异到硬件平台上会变成实打实的效率问题。变压器模型同样如此仿真里用的是线性磁路模型没有饱和效应、没有漏感分布参数、没有绕组电容。实际设计中变压器在高频下的寄生参数会显著影响波形质量尤其是输出电压的尖峰问题在仿真里几乎看不到但硬件调试时用示波器一看就是一大把毛刺。更关键的是采样链路。仿真里电压测量模块是瞬时值的理想采样没有噪声、没有延迟但硬件电路中的电压传感器、运放电路、ADC转换都有带宽限制和量化误差这些延迟会直接降低控制系统的相位裕度。如果仿真里稳定裕度只有30度左右到了硬件上很可能就会震荡。我的建议是仿真设计初步参数时控制器带宽不要取太高留出足够的稳定裕度在仿真中主动加入一个延时模块模拟采样延迟看看系统在“更真实”的条件下还能不能稳得住。5.2 数字控制器的采样延迟建模理想连续域PI控制器和实际离散数字控制器的行为有很大差别。数字控制器在每个采样周期末尾更新一次占空比这个计算延迟等效于在控制环路中加入了一个延迟环节 (e^{-sT_s})其中 (T_s) 是采样周期。在Simulink的连续域仿真中如果直接忽略这个延迟整定出来的PI参数往往过于激进实际部署后系统容易高频震荡甚至失控。我建议从一开始就把控制环路做成离散模型比如用Z变换写离散域PI或者用PID Controller模块设置离散域模式并指定采样时间 (T_s)。离散化后的PI控制器在Simulink中实现时使用PID Controller模块的Digital模式设定采样时间为 (T_s20\mu s)与开关周期一致。这样做出来的参数可以直接映射到DSP或MCU代码中省去后续重新整定参数的麻烦。5.3 DAB闭环控制的仿真结果如何解读最后简单说一下仿真输出波形的解读方法。闭环调试中重点看三个波形输出电压波形看稳态误差和动态响应、移相比指令波形看控制器的调节过程和是否饱和、变压器原边电流波形看电流应力和是否出现偏磁。电流偏磁问题值得多留意。当移相比突然变化、或者负载突然切换时变压器原边电流可能出现直流偏置表现为电流波形正负半周不对称。仿真模型里如果变压器模块的磁芯模型带饱和特性偏磁会积累并导致电流尖峰。我通常在控制环路中加一个低频的电流平均值检测必要时采用“脉冲频率调制移相”的组合策略来抑制偏磁但这属于进阶内容了控制环路的基本框架不变。仿真结果中如果输出电压在稳态时存在小幅的高频纹波这是正常的开关频率纹波大小主要取决于输出电容。如果纹波频率远低于开关频率则说明PI参数可能有问题比如积分系数过大导致了低频振荡这时优先减小Ki而非Kp。6. 仿真模型的扩展方向从单移相到更优调制策略单移相SPS是最基础的DAB调制方式但它的缺点是回流功率大尤其在输入输出电压不匹配时电流应力显著增加。这也是为什么现在很多研究论文都在讨论双重移相DPS、三重移相TPS、扩展移相EPS等新型调制策略。在Simulink中从SPS扩展到EPS或DPS不需要重写主电路只需要修改调制模块。以EPS为例原边桥臂内部存在一个额外的小移相角使得原边输出电压变成三电平波形从而减小回流功率。这个“内部移相角”的调节既可以固定也可以由另一个控制环实时优化。如果课题或项目需要做效率优化我建议在现有闭环模型基础上增加“移相角优化环”每运行若干周期搜索一次最佳内部移相角。这个搜索算法可以是查表法、扰动观察法也可以用遗传算法离线寻优后做成查找表。Simulink的MATLAB Function模块写这类算法很方便不需要额外工具箱。模型的另一个扩展方向是加入软开关ZVS约束。DAB的优势之一就是可以实现原副边开关管的零电压开通但ZVS范围受负载和电压匹配程度影响。在仿真中可以通过监测原边电流过零时刻和移相角的相对关系来判断ZVS状态进而优化调制参数。这个优化在纯负载试验中可能看不出来但做热设计评估时会发现开关损耗明显变化。从课程设计或者横向项目的角度DAB的Simulink闭环仿真是一个非常经典且能体现功底的题目因为涉及到高频变压器设计、功率电路建模、数字控制器设计、离散化、稳定性分析和调制策略优化每一层都有值得展开的知识点。最后再分享一个我在实际调试中反复踩过的坑换PI参数前先确认模型里所有信号单位一致。Simulink模型里电压传感器输出可能是V也可能因为增益设置变成了kV移相比指令可能是0-1的标幺值也可能是0-100的百分比单位不统一会导致PI参数看起来正确但实际完全失效。在做参数整定之前把每一个信号链路从头到尾检查一遍把单位标清楚能省掉一半以上排查时间。DAB闭环仿真本身不难难的是各模块之间的逻辑衔接和参数匹配只要把主电路参数、移相调制逻辑和PI整定路径走通后面的优化扩展都是水到渠成的事。
返回列表