多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

基于Simulink的MMC开环仿真:N=6载波移相调制模型详解

基于Simulink的MMC开环仿真:N=6载波移相调制模型详解 做模块化多电平换流器MMC仿真最绕不开的一道坎就是拓扑理解。很多人一上来就堆二十个子模块模型复杂、仿真慢、波形还不一定对最后查了一晚上发现是载波移相没对齐。这次我搭了一套N6的开环MMC模型用Simulink完整实现把调制策略、桥臂电容参数、载波分配这些事一次性讲清楚。这套模型不算复杂每相上下桥臂各6个子模块三相一共36个半桥子模块采用载波移相正弦脉宽调制不接闭环控制器也不做环流抑制直接观察交流侧输出电压和子模块电容电压的动态响应。适合刚接触MMC的同学拿来理解工作原理也适合想快速验证某个调制策略的从业者做对照测试。1. 整体设计思路为什么先做N6开环模型1.1 MMC的桥臂结构到底是怎么回事模块化多电平换流器的核心思想是用大量半桥子模块串联构成一个可控电压源。每个半桥子模块由一个电容和两个IGBT及其反并联二极管组成通过控制IGBT的通断让电容要么投入、要么旁路。三相MMC一共有六个桥臂每相由上桥臂和下桥臂组成上下桥臂各串联N个子模块再通过桥臂电感连接到直流侧。交流侧输出电压从上下桥臂的连接点引出也就是交流出口在每相上下两个桥臂的正中间。以一个相单元为例上桥臂电压加下桥臂电压之和近似等于直流母线电压Vdc。而交流输出电压则反映了上下桥臂之间的电压差。用公式表达就是上桥臂参考电压u_p Vdc/2 - u_ac下桥臂参考电压u_n Vdc/2 u_ac其中u_ac是交流输出电压的瞬时值。换句话说MMC通过调整上下桥臂投入子模块的数量在直流电压恒定的前提下构造出一个任意形状的交流电压波形这就是它能输出多电平电压的根本原因。N6意味着每个桥臂有6个子模块每相上下加起来12个子模块三相一共36个子模块。这个规模在中高压电力电子仿真里属于非常友好的配置既能体现多电平波形的阶梯特性又不会因为子模块数量太多导致开关器件模型计算量爆炸。1.2 开环不是偷懒而是为了把调制策略看透开环控制的意思是不采集输出电流或电压反馈不给控制器任何闭环调节指令直接用预设的调制波去驱动对应子模块。很多人觉得开环是简化版其实它恰恰是分析MMC最有利的手段。闭环控制里有环流抑制、有功无功外环、电流内环等多个控制层叠在一起一旦波形不对很难判断是调制策略的问题、参数的问题还是控制器参数没调好。而开环模型把所有可能掩盖问题的控制器全部去掉只用调制波直接驱动开关管这样任何异常都能直接归结到拓扑本身或调制算法本身。用开环模型验证清楚调制策略之后再往里面嵌套闭环控制器定位问题会快得多。这个思路和搭电路先做开环测试再上闭环调试是同一个逻辑先在静态工况下把系统行为摸清楚再去做动态控制。1.3 N6的价值阶梯清晰、谐波可观测、仿真速度合适子模块数量N的选择直接影响输出波形的谐波含量和仿真速度。N2时波形只有三电平谐波含量偏高看不出MMC“模块化”的真正优势。N10以上输出波形更接近正弦但开关器件数量成倍增加仿真时间也会明显拉长。N6正好处在两者之间的甜点区输出相电压有13条电平阶梯交流侧线电压则有25个电平的轮廓。用示波器观察时可以明显看到阶梯波逼近正弦波的过程也能清楚观察载波移相带来的纹波消除效果同时仿真耗时还在可接受范围内普通电脑几分钟内就能跑完一个工频周期。这套模型后续很容易扩展把N改成8、10、12只需要修改子模块数量参数和载波移相角度模型架构完全不需要改。2. 核心原理与参数计算调制策略和电容电压的关系2.1 载波移相调制的移相逻辑载波移相正弦脉宽调制CPS-SPWM是MMC最常用的调制方案之一。它的思路是每个桥臂的N个子模块各配一个三角载波这些三角载波的频率和幅值完全相同但相位彼此错开。对N6来说载波相位差是θ 360° / N 360° / 6 60°每个三角载波的周期T_c 1 / f_c对应的移相时间是T_c / 6。比如载波频率选1kHz周期1ms那相邻子模块载波之间的时间延迟就是1ms / 6约166.7微秒。这样做的效果是N个子模块的PWM脉冲在时间上均匀错开它们的开关动作产生的谐波会相互抵消一部分等效开关频率被抬高到N倍。对N6、载波1kHz来说等效开关频率就是6kHz输出滤波难度大幅降低。调制波方面上桥臂和下桥臂的调制波不同。设调制度为m基波角频率为ω则上桥臂归一化调制波u_p_ref (1 - m × sin(ωt)) / 2下桥臂归一化调制波u_n_ref (1 m × sin(ωt)) / 2调制波范围在0到1之间。当m0.9时上桥臂调制波最小值为0.05最大值为0.95不会出现负值也不会超过1这正是保证子模块电容电压稳定的前提。把每个桥臂的参考调制波与各自对应的三角载波比较就能生成子模块的投入信号。调制波大于载波时投入子模块否则旁路。2.2 子模块电容电压和桥臂电流的关系电容是MMC子模块的核心储能元件也是决定系统能否稳定运行的关键。半桥子模块在投入时电容与桥臂电流直接相连电流会给电容充电或放电。桥臂电流方向决定了电容是被充电还是被放电。以整流工况为例当桥臂电流为正时投入电容电容充电电压上升当桥臂电流为负时投入电容电容放电电压下降。由于MMC中桥臂电流同时包含直流电流分量和交流电流分量电容电压的波动不可避免。工程上通常要求电容电压纹波控制在标称值的5%到10%以内。比如子模块标称电压2kV5%的纹波就是±100V。如果电容太小电压波动过大会导致IGBT承受超额电压应力严重时还会使调制波超出范围引发系统失控。电容容值的选择参考一个常用估算公式C ≥ I_arm / (2 × N × f × ΔV_c)。这里I_arm是桥臂电流中一个基波周期内的有效充放电电流f是基波频率50HzN是子模块数6ΔV_c是允许的电压波动范围。代入典型值I_arm约700AΔV_c取100V得到C约12mF。实际搭建中取10mF并配合适当初始电压可以得到比较合理的结果。2.3 环流分量对开环模型的影响很多初学者容易忽略的问题是桥臂电流中除了基波电流之外还有一个二次谐波环流分量在三个相单元之间流动。这个环流不流向交流侧只在输入相内循环它会让桥臂电流峰值升高增加损耗也会影响电容电压的波动。在开环模型中我没有加专门的环流抑制控制这是刻意为之。因为开环模型的价值在于暴露MMC的原始物理特性加了环流抑制反而会掩盖部分问题。只要观察到桥臂电流包含二倍频波动说明系统行为符合理论预期。如果后续要接闭环控制环流抑制是必须要做的一步。通常采用二倍频负序坐标变换把环流分量提取出来再通过调节器叠加到调制波上。3. 实操搭建Simulink里的具体实现过程3.1 顶层模型框架打开Simulink后我建议先新建一个Simulink模型然后按功能分区搭块主电路区域、调制波生成区域、载波生成区域、脉冲分配区域、测量显示区域。主电路使用Simscape Electrical里的元件搭建。直流侧用一个理想直流电压源电压设定为12kV。每个桥臂串联6个子模块再串一个桥臂电感。桥臂电感的作用是抑制环流和限制电流突变电感值取5mH比较合适。子模块的搭建直接使用两个IGBT加反并联二极管再并联一个电容。每次创建子模块时都要设置好参数电容值10mF电容初始电压按2kV设定。搭建完第一个子模块后必须封装成Subsystem这样后续复制起来方便也方便单独查看每个子模块的电容电压波形。顶层结构大致是直流源正极接上桥臂顶端上桥臂末端接下桥臂顶端这个连接点就是交流输出端。下桥臂末端接直流源负极。三相完全对称只是调制波的相位分别相差120度。3.2 调制波生成与三角载波移相调制波生成部分是这套模型最容易出错的地方。我建议用常量模块和正弦波模块组合先构造出标准的调制波。对于A相上桥臂调制波公式是(1 - msin(ωt))/2。具体做法是正弦波模块amplitude设为0.9bias设为0频率设为50Hz相位设为0然后通过增益和常数模块组合成(1 - msin(ωt))/2的形式。下桥臂则是(1 m*sin(ωt))/2。B相和C相的正弦波相位分别偏移-120度和120度其余结构完全相同。三角载波直接使用Repeating Sequence模块。载波周期为1ms幅值范围在0到1之间。六个子模块的载波需要分别设置相位偏移。具体做法是第一个子模块载波从0开始第二个子模块载波开始时间延迟166.7微秒第三个延迟333.3微秒以此类推。在Simulink里实现这种延迟可以直接在Repeating Sequence模块的Time values参数里把起始时间偏移。比如第二个子模块载波的Time values是[0.0001667, 0.0011667, 0.0021667]这样的序列Out values保持[0,1,0]。这样三个载波在时间轴上自然错开60度。3.3 脉冲分配机制脉冲分配是开环MMC仿真中最关键也最容易出错的一环。每个子模块的触发信号由调制波和对应三角载波比较得到。用Relational Operator模块将调制波信号和三角载波信号输入比较器。当调制波大于载波时输出1否则输出0。这个信号直接作为子模块上管的门极驱动信号。下管的驱动信号需要特别注意半桥子模块的上下管必须互补导通否则会出现直流母线直通短路仿真会直接报错。所以下管驱动信号应该是上管信号取反用Logical Not模块实现即可。这样处理完后每个子模块的驱动信号都独立生成不存在互相依赖的情况。触发信号生成后接入IGBT的Gate端口同时用Goto标签把信号传递到主电路对应子模块。3.4 参数配置汇总下面是这套模型的主要参数可以作为参考值直接套用参数项数值说明直流母线电压12 kV每个子模块标称2kV子模块数N每桥臂6上下桥臂各6个子模块电容10 mF初始电压2kV桥臂电感5 mH抑制环流载波频率1 kHz等效开关频率6kHz基波频率50 Hz交流侧输出调制度m0.9输出电压幅值9kV载波移相60度360°除以N仿真算法方面我推荐使用离散求解器步长设置在10微秒左右。这样既能精确捕捉IGBT的开关动作又不会因为步长太小导致仿真过慢。4. 调试中遇到的常见问题和解决办法4.1 电容电压发散崩溃这是开环MMC仿真里出现频率最高的问题。现象是运行几毫秒后某个子模块电容电压迅速上升或者一直下降最终导致波形发散仿真报错终止。最常见原因是电容初始电压设置不当。模型启动瞬间调制波需要立刻驱动子模块投入或切除如果电容初始电压不是接近标称值2kV会出现很大的冲击电流持续充放电最终把电容电压推离正常范围。解决办法很简单每个子模块电容的Initial voltage参数设为2000V。仿真开始前系统就已经处于正常的电压状态避免了充电启动过程。还有一种情况是调制波超出正常范围。当m大于1时调制波峰值超过三角载波峰值子模块会在一段时间内持续投入电容电压被持续充放电很快发散。保证调制波范围在0到1之间是开环模型的基本前提。4.2 输出波形出现半周畸变输出相电压波形出现上半周正常、下半周畸变的现象我调试时也遇到过。原因通常是上下桥臂的调制波极性搞反了。正确的关系是上桥臂电压和下桥臂电压之和等于直流母线电压。所以当上桥臂调制波减小时下桥臂调制波必须增大。如果上下桥臂用了完全相同的调制波那么交流输出中点电位会直接偏移导致输出波形被直流偏置淹没表现就是半周畸变。排查方法是把上桥臂和下桥臂的调制波信号同时用Scope观察确认它们是以0.5为中心对称变化的。上桥臂是(1 - msin(ωt))/2下桥臂是(1 msin(ωt))/2两者相加恒等于1这是自检时最直观的判断标准。4.3 仿真运行速度太慢36个子模块、每个子模块两个IGBT如果全部用Simscape的连续时间模型仿真速度会很感人。我的做法是能离散就离散。首选把求解器设为Discrete步长取10微秒到50微秒之间。10微秒步长在工频50Hz下一个周期有2000个采样点对观察波形细节足够了。如果想跑多个工频周期看稳态可以把步长放宽到50微秒精度略降但速度会快很多。另外Scope模块不要直接连每个子模块的电容电压不然记录的数据量会拖慢仿真。我通常在调试阶段只监控A相上下桥臂各一个子模块的电容电压其他子模块电压通过平均值封装来观察。等需要详细分析时再单独展开。4.4 载波移相方向错误导致特定谐波放大载波移相的相位顺序如果搞反理论上谐波抵消效果会失效输出波形PWM纹波会比预期大很多。排查时先确认载波之间的延迟时间是否为T_c/N也就是166.7微秒。如果N6却用了120度移相相当于把3个子模块的载波相位对齐了谐波会明显增大。我测试过一个便利方法把所有子模块的投入信号汇总看等效开关频率是否抬高到6kHz。用FFT分析交流输出电压如果边带谐波出现在6kHz附近而非1kHz附近说明载波移相逻辑正确。5. 波形结果分析这套模型能给你什么仿真运行稳定后重点观察三个波形交流输出电压、子模块电容电压和桥臂电流。交流输出电压波形会呈现明显的阶梯状多电平结构N6、调制度0.9的情况下相电压峰值约9kV波形包络逼近正弦。PWM纹波集中在6kHz附近的高频段整体波形质量远好于两电平逆变器。子模块电容电压会围绕2kV上下波动波动幅度取决于电容容值。10mF电容下波动约在±80V到±120V之间符合5%左右的设计预期。电容电压的波动频率主要包含基波和二倍频分量这对应了MMC电容电压的典型波动规律。桥臂电流波形中包含明显的二倍频环流分量这正是没有加环流抑制的结果。后续如果做闭环研究环流抑制效果的好坏可以通过对比这个波形的变化来验证。从这套N6开环模型往下走你可以做三件事。第一把N增大到8或10观察输出电平数增加带来的谐波改善顺便验证载波移相角度是否需要同步调整。第二把开环模型改造成闭环加入电流内环控制和环流抑制控制观察动态响应。第三把半桥子模块替换成全桥子模块研究故障穿越能力。这是我实际调试中踩过不少坑之后的一点体会送给你参考。
返回列表