尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

NPC三电平中点电位平衡:最优零序电压注入原理与Simulink仿真复现

NPC三电平中点电位平衡:最优零序电压注入原理与Simulink仿真复现 两年多以前我在调试一台NPC三电平逆变器样机的时候亲眼看着中点电位在带载后从0V一路漂到接近80V当时直流母线才600V上下电容各承担300V结果一只电容被顶到380V以上IGBT分压也跟着失衡。从那以后凡是涉及二极管钳位型三电平拓扑我第一件事就是先确认中点电位平衡策略靠不靠谱。这篇文章记录了我完整复现IEEE顶刊上基于最优零序电压注入法的中点电位平衡方案的过程从公式推导到Simulink仿真全部跑通效果确实比传统min-max零序注入和普通SVPWM小矢量分配好一个量级。如果你在做储能变流器、光伏逆变器、中压变频器或者电机驱动这篇内容可以直接拿来落地参考。1. 为什么这个课题值得静下心来复现1.1 中点电位失衡到底有多致命先说工程痛点。NPC三电平拓扑的核心特征就是直流母线正负之间有一个真实的中点上下两个电容串联中点通过钳位二极管连接到每相桥臂。理想情况下两个电容电压要稳定在Vdc/2也就是中点电位保持为母线中点电位。但实际运行中只要三相电流流过中点就会对上电容和下电容产生不对称的充放电导致中点电位偏移。这个偏移不只是“波形不好看”的问题。电容电压不均直接改变功率器件的电压应力比如上管承受的电压变成Vc1下管变成Vc2一旦Vc1比额定高出一截IGBT或MOSFET的关断尖峰可能直接击穿器件。其次中点电位波动会在输出端引入低次谐波尤其是三次谐波和偶次谐波对电机负载来说意味着额外发热和转矩脉动。严重情况下电容过压保护动作系统直接停机。实测下来在使用传统SVPWM且不额外处理中点平衡的情况下调制度0.8、母线电压600V、输出功率大概5kW时中点电位偏差能在几百毫秒内从0漂到30V以上并且这个漂移是持续累积的。如果负载加重或者调制度提高情况会更糟。1.2 复现这篇IEEE论文的价值针对中点电位平衡业内已经有很多方法主要分几路硬件方案比如加平衡桥臂、独立直流源、或是用四线制结构。效果好但成本和体积增加很多应用场景不接受。调制方案基于SVPWM的小矢量冗余分配通过重新分配正负小矢量的作用时间来调整中点电流。这类方法在三电平领域很经典但实现要查扇区、算矢量时间计算量和复杂度都不低尤其当你要同时兼顾五段式或七段式PWM、开关次数优化、共模电压抑制时控制器的压力会很大。零序电压注入方案在三相调制波上同时叠加一个零序电压通过改变各相P/O/N状态的占空比分配来影响中点电流。实现简单不额外增加开关频率不改变输出线电压基波硬件上零改动。最优零序电压注入法的核心贡献是解决“到底注入多少零序电压”这个问题。传统min-max注入也就是SVPWM规则采样对应的零序分量只是让调制波卡在正负载波范围内并不针对中点电流做优化。而最优注入则是在每个控制周期实时求解一个零序电压让本周期内流过中点的平均电流正好等于控制目标值。这个方法实现起来不复杂但数学形式和离散化处理上的细节非常多复现一遍能学到很多调制的底层逻辑。1.3 复现前需要具备的背景知识如果你是刚入门的同学建议先弄懂四件事三电平SPWM的载波层叠原理以及P、O、N三种输出状态对应的开关管组合。三相调制波归一化到[-1, 1]之后零序电压为什么不影响线电压。中点电流的表达式怎么从占空比和三相电流里推出来。MATLAB/Simulink的基础操作尤其是Simscape Electrical里功率器件模型的选取和测量信号的单位。如果是做控制的老手可以直接跳到第4节看分段线性求根那一段这是我复现过程中觉得最有价值的部分。2. NPC三电平中点电位失衡的物理根源2.1 开关状态与中点电流的直接关系先把基础模型摆出来。NPC三电平每相桥臂有4个IGBT和2个钳位二极管输出状态可以分成三种输出状态导通器件输出电平该相电流是否流入中点PG1、G2Vdc/2否OG2、G30是NG3、G4-Vdc/2否只有O状态会把该相负载电流接到中点上。所以在任意一个PWM开关周期内中点电流其实是三相电流在各自O状态导通时间段内的叠加。如果用归一化调制波v_x来表示某相在一个载波周期内处于非O状态的平均时间占比那么这一相在O状态的时间占比大约是1-|v_x|于是三相贡献到中点的电流可以写成i_np (1-|v_a|)·i_a (1-|v_b|)·i_b (1-|v_c|)·i_c这里v_a、v_b、v_c是注入零序电压后的归一化调制波范围是[-1, 1]。在三相三线制系统里i_a i_b i_c 0所以公式还能继续化简成i_np -(|v_a|·i_a |v_b|·i_b |v_c|·i_c)这个式子看似简单但它就是整个零序电压注入方法的基石。你看三相电流在某个时刻是固定的唯一能变的只有三个调制波的绝对值也就是通过改变零序电压让三路调制波整体上移或下移从而改变每个周期内O状态的时间分配中点电流自然就不一样了。2.2 中点电位波动的三个来源实际使用中中点电位偏移的来源可以归纳为三类。第一类是基波周期性的波动。即使三相完全对称当调制度不为零时三相电流在中点产生的安秒积分在一个基波周期内并不总是为零这会在中点形成低频纹波频率通常是基波频率的3倍也就是150Hz附近。第二类是负载和调制的非理想因素。比如负载不平衡、电流畸变、死区效应、器件导通压降不一致、电容容量误差等都会引入额外的中点电荷。第三类是动态过程。调制度突变、负载突变、直流母线电压波动都会让中点电位出现短时偏移。如果控制回路响应慢这种偏移可能变成持续误差。2.3 中点电位的数学演化模型把上下两个电容单独看设上电容电压为Vc1下电容电压为Vc2中点电流为i_np。按电流方向定义从直流母线正极经上电容流入中点的电流记为正向那么下电容流出的电流方向需要一致处理最后得到i_np C1·dVc1/dt - C2·dVc2/dt如果两个电容参数一致C1 C2 C定义中点电压偏差ΔV Vc1 - Vc2那么有d(ΔV)/dt i_np / C这个式子非常关键它说明中点电位偏差的大小完全由中点电流的积分决定。你把i_np控制成零ΔV就不会继续变化你让i_np反向流动就能把已经偏移的ΔV拉回来。这也是后面无差拍控制思想的出发点。3. 零序电压为什么能调平衡一个被低估的自由度3.1 零序电压的本质不影响线电压只改变占空比分配三相调制波在任意时刻同时叠加同一个常数叫做注入零序电压。因为线电压等于相电压之差三相减相同的量线电压基波分量完全不变。但从PWM角度看三路调制波整体被抬高或压低后各相在每个载波周期里P、O、N状态的占空比分配被改变了最终流入中点的电流也就产生了变化。用生活里的例子类比三相开关状态分配就像是三家商铺轮流开门每家开门时间占比可以调整但顾客电流总量不变。你往调制波里注入零序电压相当于规定今天这三家开门的“绝对时刻”统一提前或延后表面上看各自营业时长没变但由于顾客到访的时点不同某一家的实际客流占比就变了。对应到三电平上就是中点电流被重新分配了。3.2 零序电压的可行域调制波归一化处理后每相输出范围必须在[-1, 1]之间。设注入前三相调制波为v_a、v_b、v_c注入零序电压v_z后新的调制波是v_av_z、v_bv_z、v_cv_z。要保证三者都在[-1, 1]范围内v_z必须满足v_z_min -1 - min(v_a, v_b, v_c) v_z_max 1 - max(v_a, v_b, v_c)这个约束看着简单但决定了平衡能力的边界。调制度比较低的时候比如m0.7三相调制波的峰值只有0.7v_z可取范围很宽中点电位的可调范围就大。调制度接近1.0甚至进入过调制区时v_z的允许区间被压缩得很窄甚至没有可行域这时候仅靠零序电压注入就很难把中点电位稳住需要用其他辅助手段。3.3 不同注入策略的效果差异工程里最常见的零序电压注入是min-max注入v_z -0.5·(v_max v_min)这个策略等价于传统SVPWM规则采样时的零序分量它保证了调制波始终对称地卡在母线范围内开关损耗分配也比较均衡。但它并不考虑中点电流大小只是恰好让中点电流有一定的平衡作用。还有一些论文提出的单极性注入、双极性周期交替注入等本质上都是给v_z加了一个固定规则。这些策略相比min-max注入有改善但都不是最优的因为中点电流和零序电压的关系是随运行工况变化的固定规则不可能在所有调制度、所有功率因数下都达到最佳平衡效果。最优零序电压注入的思路就不一样了在每个控制周期内把中点电流直接写成v_z的函数然后实时求解让这个函数等于期望值的v_z。这个“期望值”由中点电压偏差决定等于给平衡控制加了一个闭环反馈所以性能上限明显更高。4. 最优零序电压注入的核心推导4.1 目标函数与期望中点电流把前面的中点电流公式再写一遍这次显式加入v_zi_np(v_z) -(|v_av_z|·i_a |v_bv_z|·i_b |v_cv_z|·i_c)控制目标很直接让某个控制周期Ts内中点电位偏差ΔV收敛到零。根据电容方程i_np_ref -C·ΔV / T_s这个式子就是无差拍思想。如果本周期的中点电流正好等于i_np_ref那么一个周期后ΔV就被完全消除。实际离散系统里由于采样和PWM延迟直接按无差拍参数往往容易振荡所以更稳妥的做法是用比例调节i_np_ref -k_p·ΔVk_p可以先取理论无差拍系数的0.1倍再在仿真里逐步增大。符号上特别注意如果Vc1大于Vc2也就是ΔV为正需要中点电流为负让上电容少充电、下电容多充电所以i_np_ref前面有负号。4.2 分段线性求根比fzero更适合实时控制现在的问题变成在约束区间[v_z_min, v_z_max]内求v_z使得i_np(v_z) i_np_ref。如果你直接在MATLAB里用fzero或者fsolve在离线仿真里没有任何问题但在DSP或FPGA的实时控制里这种通用数值求根算法计算量太大且不保证一个中断周期内收敛。所以论文里通常采用分段解析求根。观察i_np(v_z)这个函数它的非线性只来自绝对值。而每个绝对值发生转折的位置是v_z -v_x也就是当v_xv_z从正变负或从负变正的时候。三相有三个断点-v_a、-v_b、-v_c。把它们排序后把v_z的取值区间切成最多4个子区间。在每个子区间内|v_xv_z|都能去掉绝对值写成正负号固定的线性表达式于是整个i_np(v_z)变成了一个关于v_z的线性函数i_np(v_z) a·v_z b其中a -(s_a·i_a s_b·i_b s_c·i_c) b -(s_a·v_a·i_a s_b·v_b·i_b s_c·v_c·i_c)s_x的取值由该子区间内v_xv_z的符号决定要么1要么-1。线性方程的解析解是v_z* (i_np_ref - b) / a只要这个解落在当前子区间内同时又落在[v_z_min, v_z_max]内就是一个有效候选解。遍历所有子区间后如果找到至少一个有效解就选一个如果没有有效解说明本周期需要的平衡能力超出了零序电压可提供的范围那就取可行域边界上让i_np(v_z)最接近i_np_ref的点。由于线性函数的最值一定出现在端点所以只需要检查v_z_min、v_z_max和三个断点在可行域内的取值。这里有一个细节当a0时i_np(v_z)在该子区间内是常数。如果这个常数恰好等于i_np_ref那整个子区间内的v_z都是有效解工程上取区间中点即可。4.3 闭环控制框架整个控制回路在每个PWM载波周期执行一次采样三相输出电流i_a、i_b、i_c。采样或计算中点电压偏差ΔV Vc1 - Vc2。根据ΔV计算期望中点电流i_np_ref。读取当前三相调制波v_a、v_b、v_c一般是正弦波或带三次谐波的基波调制波。按照分段线性求根逻辑解出最优零序电压v_z*。三相调制波叠加v_z*送进载波比较器生成PWM脉冲。实际控制里要注意第4步的调制波优先级。如果你结构里还希望加三次谐波注入或者做特定谐波消除那这些调制分量都应该在求v_z时就已经包含在v_a、v_b、v_c里否则最后叠加出来的调制波和你预期不一致。4.4 与小矢量冗余分配的本质联系熟悉SVPWM的人可能会有疑问零序电压注入和三电平SVPWM里的正负小矢量时间再分配到底什么关系两者本质上是等价的。SVPWM中零序分量直接对应空间矢量作用时间的分配改变小矢量冗余对的时间比例就等价于向三相占空比里注入了一个特定零序电压。区别在于实现方式SVPWM需要判断扇区、分配矢量顺序而零序注入直接在调制波层面完成代码简单缩放性好。这也是为什么很多商用三电平变频器里的中点平衡控制底层用的都是零序注入。5. Simulink仿真模型搭建全记录5.1 主电路模型搭建细节我用的环境是MATLAB/Simulink R2023a Simscape Electrical。主电路结构如下直流电源DC 600V输出接两个串联电容C1、C2每个2200μF。电容中点引出接NPC桥臂的中点钳位点。NPC三相桥臂我用的是Simscape里的Three-Level Bridge模块选了Diode-Clamped结构功率器件用理想IGBT模型导通电阻设1mΩ二极管导通压降0.8V。负载三相对称阻感负载R10ΩL10mHY接。测量三相负载电流、两个电容电压、桥臂输出线电压。这里有一个容易踩的坑两个串联电容的初始电压必须显式设置。仿真开始前C1和C2的初始电压都设成300V而不是默认的0V否则仿真一开始就是一个深放电过程中点电位在起机瞬间直接崩溃你会误以为算法有问题。更贴近工程的做法是让C1初始电压330V、C2初始电压270V故意制造一个初始偏差用来验证平衡算法的收敛能力。5.2 调制与PWM生成逻辑控制子系统内部结构三相基波调制波生成频率50Hz幅值由调制度m决定m0.8。采样负载电流和电容电压进入MATLAB Function求最优零序电压v_z。三相基波调制波分别叠加v_z得到最终调制波v_a、v_b、v_c。PWM比较用两个同相层叠三角载波一个范围[0, 1]另一个范围[-1, 0]载波频率10kHz。比较规则v_x大于上载波输出1v_x小于下载波输出-1两者之间输出0。最后把-1/0/1状态映射到每相四个IGBT的门极信号。这里要提一下开关信号映射我用的是输出状态G1G2G3G4P1100O0110N0011死区时间先设成2μs这是仿真里最容易让波形变丑的因素建议先设0跑通逻辑再逐步加死区观察影响。5.3 最优零序电压求解的MATLAB Function实现直接在Simulink里拖一个MATLAB Function模块内部代码按分段线性求根逻辑写。下面是我在工程里实际使用的核心版本做了简化但保持了关键步骤function vz optimal_vz_balancing(va, vb, vc, ia, ib, ic, dV, C, Ts) % 无差拍期望中点电流 inp_ref -C * dV / Ts; % 零序电压可行域 vmin min([va, vb, vc]); vmax max([va, vb, vc]); vz_min -1 - vmin; vz_max 1 - vmax; if vz_min vz_max vz 0; return; end % 分段点使 vavz0 的临界位置 breaks sort([-va, -vb, -vc, vz_min, vz_max]); breaks uniquetol(breaks, 1e-9); best_vz vz_min; best_err inf; for k 1:length(breaks) - 1 l breaks(k); r breaks(k 1); if r vz_min || l vz_max continue; end l max(l, vz_min); r min(r, vz_max); if r - l 1e-12 continue; end fl midpoint_current(l, va, vb, vc, ia, ib, ic) - inp_ref; fr midpoint_current(r, va, vb, vc, ia, ib, ic) - inp_ref; if fl * fr 0 % 线性插值求根 vz_cand l - fl * (r - l) / (fr - fl); vz_cand min(max(vz_cand, vz_min), vz_max); err abs(midpoint_current(vz_cand, va, vb, vc, ia, ib, ic) - inp_ref); if err best_err best_err err; best_vz vz_cand; end end % 区间端点也要检查处理可行域边界最优的情况 for x [l, r] err abs(midpoint_current(x, va, vb, vc, ia, ib, ic) - inp_ref); if err best_err best_err err; best_vz x; end end end vz best_vz; end function inp midpoint_current(vz, va, vb, vc, ia, ib, ic) va2 va vz; vb2 vb vz; vc2 vc vz; inp -(abs(va2) * ia abs(vb2) * ib abs(vc2) * ic); end这段代码的核心逻辑是先求可行域再在所有子区间里做线性判定和端点检查最后选出误差最小的v_z。真实项目里我会再加一个输出限幅防止v_z突变导致电流振荡。5.4 仿真求解器与步长设置仿真模型用离散求解器固定步长。步长选1μs不能大于2μs否则PWM边沿和电流纹波会失真。载波频率10kHz控制频率也按10kHz执行也就是说MATLAB Function模块每100μs触发一次。Simulink里有两个地方容易出问题一是MATLAB Function模块如果直接使用连续时间信号采样会引入代数环。解决方案是在Function模块前加一个单位延迟Unit Delay相当于把采样延迟一拍这也更符合真实DSP的执行时序。二是电源和电容连接点如果没有任何寄生电阻Simscape在纯理想条件下容易出现数值病态。我建议在直流母线里串一个0.01Ω的小电阻不影响结果但能显著改善求解稳定性。6. 仿真结果对比波形说明一切6.1 不加入任何平衡策略时的中点电位先把零序电压注入模块断开也就是v_z恒等于0让系统在传统SPWM下运行。调制度0.8负载R10Ω、L10mH母线600V。仿真结果很典型中点电位偏差ΔV在0附近来回摆动但摆幅明显峰峰值大约24V。波动频率是150Hz也就是三倍工频。如果负载不平衡或电容初始电压不一致ΔV会在这个低频纹波之上再叠加一个缓慢漂移漂移速度取决于负载电流大小。这组数据说明一个事实即便三相调制波完全对称光靠SPWM的自然特性并不能保证中点电位稳定。低频纹波是结构性的必须靠控制手段去压。6.2 传统min-max注入与最优注入的对比同样的工况只把零序电压从0换成min-max注入也就是v_z -0.5·(v_maxv_min)。结果ΔV峰峰值从24V降到8V左右150Hz纹波幅值明显收窄。但纹波依然存在并没有被完全消除因为min-max注入并不保证每个开关周期中点电流为零。切换成最优零序电压注入后效果再上一个台阶ΔV峰峰值降到1.2V左右基本贴零。3倍频纹波被压到几乎看不见的程度剩余的小幅波动主要来自离散控制的采样延迟和死区效应。稳态时上下电容电压几乎完全重合。这三种工况放同一张图里看差距非常直观。min-max注入类似“凭经验调平衡”最优注入则是实时“按需分配”性能自然不同。6.3 调制度与负载突变下的鲁棒性验证接着我做了两个动态工况测试。第一个是调制度从0.5突然跳到0.9同时保持负载不变。最优注入下ΔV会出现一个短暂的尖峰幅度大约3V然后在3到5个工频周期内回到接近零的水平。而min-max注入在同样跳变下需要十几个周期才能恢复且稳态纹波明显更大。第二个是负载从10A突变到20A也就是R从20Ω切到10Ω。最优注入下中点电位偏移量在6个工频周期内收敛回来收敛过程中没有出现振荡。比例系数kp如果调得过大会有小幅振荡这是离散控制固有的问题后面会讲到怎么处理。第三个有意思的边界是调制度超过0.95以后零序电压可行域变窄最优注入的平衡能力明显下降。到过调制区v_z可行域几乎为零这时候就算是最优注入也压不住中点电位偏移。这个现象对应的物理本质就是第3.2节说的可行域约束不是算法不好是物理极限。6.4 输出电流THD与开关频率影响很多人担心中点平衡策略会恶化输出电流质量。实测对比下来最优注入并不会改变输出线电压基波因为零序电压在三相之间相互抵消THD和原SPWM基本持平。在我这组参数下注入最优零序电压后的相电流THD大约2.3%和未注入时的2.2%几乎一样。开关频率方面零序电压注入不改变每个载波周期内的开关次数器件开关频率大致维持不变所以开关损耗不会增加。对比SVPWM小矢量分配方案后者为了平衡中点往往需要在一定范围内延长或缩短某些矢量的作用时间反而可能改变开关动作序列嵌入死区补偿时更复杂。7. 复现过程中的五个关键坑7.1 符号约定不一致导致控制反向这是我刚复现时踩的第一个坑。只看论文公式时i_np方向定义和电流传感器正方向稍有偏差仿真结果就不是“收敛”而是“发散”。我当时的症状是中点电位本来已经偏了加了平衡算法后不但没有拉回来反而越偏越多最后直流侧保护跳闸。排查方法很简单在MATLAB脚本里断开PWM直接把三相电压、三相电流记录下来然后手动算一算在当前v_z下i_np的符号和ΔV变化方向是否一致。确认符号约定正确后再放回Simulink验证。一个经验凡是涉及中点电流的公式先确定“电流流入中点为正”还是“流出中点为正”这直接决定后面一系列公式的符号。建议在自己代码里把所有符号约定写成注释避免过几天回来自己都忘了。7.2 分段点边界处理的数值陷阱分段线性求根看着逻辑清晰但实际写代码时会遇到两个问题第一个是断点重复。比如某两相调制波恰好相等那么-v_a和-v_b就是同一个点排序后出现重复断点。如果去重做得不干净后面区间长度可能为负或零导致求根数组越界。第二个是断点恰好落在可行域边界。假设-v_a正好等于v_z_max这个点既是断点又是边界求根时既要检查左区间又要检查右区间还要保证投影回可行域的逻辑不把有效解丢掉。我给出的代码里用uniquetol去重并且在每个区间边界都做了投影和端点检查基本能避开这两类问题。但不同边界条件组合很多建议你在集成到工程代码前先用离线脚本把所有可能工况跑一遍人工核对几个极端调制度和极端电流相位角下的解。7.3 离散控制延迟导致的无差拍振荡无差拍公式i_np_ref -C·ΔV/Ts看着非常完美但直接用在离散系统里很容易出现振荡。原因是采样、计算、PWM更新之间至少有一个PWM周期的延迟你算出来的v_z要等下一个周期才真正生效。这个延迟相当于给控制环引入了一个相位滞后增益越高越容易不稳定。我的做法是把无差拍系数打个折改用带放大系数k_p的比例控制i_np_ref -k_p·ΔV初始k_p取理论无差拍系数的0.1到0.2倍然后逐步加大观察ΔV在动态过程中的衰减速度。如果出现衰减振荡就适当减小如果收敛太慢就增大。最终我取到理论系数的0.5倍左右动态和稳定性比较均衡。如果还想更精确可以在计算时做一拍预测也就是用上一拍的最优v_z估计当前中点电荷变化再补偿到下一拍里。但这个做法对模型精度要求高在仿真里性价比一般我后来没有采用。7.4 仿真发散和初始条件问题不少同学跑三电平仿真遇到的第一步问题就是发散。我排查过几次最常见的原因是电容初始电压没设默认从0V开始上电瞬间相当于短路仿真数值直接爆炸。求解器步长太大PWM脉冲的窄脉冲被漏掉导致状态量突变。代数环没有消除MATLAB Function在同一个步长里形成闭环代数约束Simulink迭代不收敛。直流电源内阻为0母线电压在开关切换瞬间出现无阻尼振荡。解决办法也简单电容初始电压设300V步长设1μsFunction前加单位延迟直流侧串0.01Ω电阻。这四个动作做完绝大多数发散问题能立刻消失。7.5 功率器件模型选型对结果的影响Simscape里三电平桥臂既可以用理想开关模型也可以用带导通压降和关断特性的详细IGBT模型。我建议分两步走第一步用理想模型验证控制算法逻辑波形干净仿真速度快适合调零序求解模块的正确性。第二步再切换成详细IGBT模型观察死区、导通压降、反向恢复对中点平衡的影响。加了死区之后中点电流的实际值和理想公式会有偏差仿真里你会发现稳态ΔV会比理想模型时大一点这是正常的。如果偏差过大就要考虑死区补偿或者把死区时间的等效作用计入中点电流模型里。8. 一个值得长期保留的工程化扩展思路复现完成并跑通只是第一步我更想说的是怎么把这个方法放进真实控制器。最优零序电压求解的计算量其实非常小每个载波周期只需要做三次排序、若干次线性求根和端点比较。按10kHz控制频率算在TI C2000系列DSP或者国产GD32控制板上跑中断耗时应该在几微秒以内完全不影响其他控制任务。这也是它相比SVPWM小矢量分配更适合工程落地的原因之一。后续如果要扩展我建议顺着三个方向做第一把发生死区后的实际脉冲等效中点电流模型引入求解进一步提升低压大电流工况的平衡精度。第二在速度环和电流环里增加对调制度前馈的补偿让功率急剧变化时v_z的更新不滞后。第三把最优零序注入和无差拍预测结合形成一个两周期预测的平衡器这样动态响应还能再快一点。最后分享一个从这次复现里沉淀下来的习惯论文公式抄到手先不要急着搭仿真模型而是在MATLAB脚本里把调制波和电流固定成一组最简单的工作点手动验证一遍i_np(v_z)的曲线形态和目标v_z解的位置。这个步骤只用三五分钟却能让后续整个Simulink调试过程减少一大半的无效排查。中点电位平衡这件事表面上是在调PWM实际上是在跟电荷守恒打交道方向搞对了剩下的都只是细节。
返回列表