模块化多电平换流器(MMC)仿真。 采用cps-spwm(载波相移调制)的mmc调制技术,有子模块的电容电压平衡策略。 通过结果可以看出来电压电流的相位补偿一致了。 提供总结pdf和参考文献。
咱们先来点硬核的——MATLAB里生成相移载波的骚操作。传统SPWM的载波阵列生成,用repmat函数就能搞定,但CPS-SPWM需要给每个载波加上相位差:
N = 6; % 子模块数 carrier_shift = 2*pi/(N); for k = 1:N phase_shift = (k-1)*carrier_shift; carrier(:,k) = 0.5*sawtooth(2*pi*fs*t + phase_shift, 0.5) + 0.5; end这个相位差的计算暗藏玄机:当N=6时,相邻载波有60度相移。仿真时发现,这种错位叠加能有效提升等效开关频率,就像把多个齿轮错位咬合,运转起来反而更平稳。
电容电压平衡策略才是真正的战场。某次仿真中子模块电压偏差超过20%,活生生把正弦波削成了梯形。后来在控制循环里加了这么一段:
[~, sort_idx] = sort(cap_voltages, 'descend'); active_modules = sort_idx(1:ceil(insert_num));这种排序法看似简单粗暴,实测效果却意外地好。就像玩扑克时不断把大牌放到前面,动态保持电容能量均衡。不过要注意排序频率不宜过高,否则容易引发高频震荡——这个坑我踩了三次才明白。
仿真结果中最爽的时刻,是看到输出电压与电流波形相位差趋近于零。图1的FFT分析显示,采用CPS-SPWM后谐波主要集中在6倍频附近,总谐波失真(THD)从7.2%降到3.8%。这感觉就像给电磁噪声戴上了降噪耳机,整个频谱都变得清爽起来。
调试过程中有个诡异现象:仿真步长设为50us时波形正常,但10us时反而出现畸变。后来发现是电容电压采样与PWM更新不同步导致的,解决方法是在事件触发中增加:
Zero-Order Hold模块的采样时间设为PWM周期整数倍这提醒我们,离散系统仿真中时序对齐比想象中更重要。就像地铁车门与屏蔽门的同步,差之毫秒都会引发灾难。
完整实现代码和参考文献已打包成PDF(包含测试波形对比和THD数据表),需要的小伙伴可以留言。最后放个彩蛋:尝试在子模块电容并联虚拟电阻,你会发现电压平衡速度提升30%——不过要小心影响系统效率这个跷跷板。