资讯详情

MMC整流器Simulink仿真:双闭环控制与载波移相调制实战解析

📅 2026/9/9 22:25:13 | 华诺云谱 👁 阅读
MMC整流器Simulink仿真:双闭环控制与载波移相调制实战解析
1. 为什么选MMC整流器拓扑优势与场景选择1.1 MMC整流器解决什么问题在我做MMC整流器仿真之前很长一段时间都在跟两电平PWM整流器打交道。两电平整流器结构简单、控制成熟但一旦电压等级往中高压走单个IGBT的耐压就成了绕不过去的坎。要么选高压大功率器件价格贵、驱动复杂要么做器件串联但动态均压问题能让人调到头秃。模块化多电平变换器MMC也就是Modular Multilevel Converter换了一条路它把一堆标准半桥子模块串起来每个子模块只承受很小的电压靠增加子模块数量就能往上扩展电压等级。这个思路在工程上非常优雅所以MMC成了高压直流输电、中压变频驱动、STATCOM、储能功率变换等场景的主流方案之一。我们常说MMC整流器其实重点在“整流”这两个字上——它能把交流电变成稳定的直流电并且功率因数可以控制能量还可以双向流动。对做仿真的同学来说用MATLAB/SIMULINK搭一个MMC整流器不只是为了课程设计交差而是想通过仿真真正理解多电平拓扑和双闭环控制的配合逻辑。这个模型把主电路、控制算法、PWM调制三块东西串在了一起学完一遍很多电力电子设计思路都会打通。1.2 为什么控制方案选双闭环CPS-PWM双闭环控制在整流器领域几乎是工业标准做法外环负责直流电压或者功率内环负责电流波形一层管稳态一层管动态拆开调试也很方便。MMC整流器沿用这套架构非常自然不需要另搞一套很玄的控制理论。问题在于调制方式。MMC的调制方案主要有最近电平逼近NLM和载波移相调制CPS-PWM两类。NLM适合子模块数特别多的场合比如一个桥臂几百个子模块的高压直流输电靠每个子模块投切近似逼近正弦波。但仿真学习用N4到N10个子模块时NLM的电平数太少波形质量不够好而CPS-PWM可以在比较低的子模块数量下获得很高的等效开关频率输出波形更接近正弦电流谐波也更小。所以我的选择是子模块数不多、想在仿真里看到清晰正弦波结果、同时想理解PWM细节的优先走CPS-PWM路线。需要说明的是这只是常用做法之一。实际工程里如果子模块数量很大比如换流站上百个子模块一相NLM反而是更合适的因为它每个控制周期只切换少量子模块损耗低、执行简单。仿真学习阶段把CPS-PWM和双闭环结合起来能让你同时掌握多电平调制和矢量控制的配合逻辑打好这个底子很重要。2. 仿真前必须想清楚的6个核心参数2.1 主电路拓扑与子模块数N动手搭Simulink模型之前先定主电路拓扑和子模块数量。MMC整流器三相拓扑很固定每一相分上下两个桥臂每个桥臂由N个子模块和一个桥臂电感串联交流侧通过交流电感接入电网。子模块是半桥结构由一个IGBT对和一个直流电容组成开关状态决定电容是被接入还是被旁路。N的选择直接影响仿真速度与波形质量。输出相电压的电平数是N1N取4时已经能看到明显的多电平台阶N取8波形就更细。但N每增加一个整个模型里的开关器件数量成倍往上走仿真时间会肉眼可见地变长。我的建议是验证控制算法用N4想看更细波形用N8一般不要超过10。用N4的时候每个桥臂4个子模块三相一共24个IGBT管和12个电容模型规模在离散仿真下还算可控。以一套典型的小功率实验平台为例交流侧线电压有效值380V直流母线目标值750VN4单个子模块电容电压参考约375V。这个搭配下每个子模块承受的电压不到400V用仿真里的理想开关模型跑基本能复现实际平台的绝大部分特性。2.2 直流电压、电容电压与子模块电容设计子模块电容的取值是MMC设计里的关键一步。电容太小电压波动大波形难看电容太大体积重量成本全部上升仿真里也会拖慢动态响应。工程上有个常用思路按桥臂能量波动来估算电容。简化公式可以写成C ΔE / (2 · N · ΔU_c · U_c)其中ΔE是单个桥臂在一个基波周期内的能量波动ΔU_c是允许的电容电压纹波峰值U_c是电容电压平均值。实际计算时ΔE和交流侧功率、功率因数都相关推导比较复杂。我自己的做法是先用时间常数估一个初值再在仿真里微调。经验时间常数取10ms到40ms之间对应公式为C τ · S / (2 · N · U_c²)S是每相额定容量。算出来数值往往在毫法量级。仿真平台里我常用的子模块电容值是4.7mF左右系统容量10kVAN4直流750V电容电压纹波能控制在5%以内。电容加大后纹波自然更小但动态响应会变慢直流电压环的PI参数也会受影响所以不要一味调大电容来掩盖问题。2.3 桥臂电感与交流电感桥臂电感是MMC里面存在感很强的一个元件。它一方面限制桥臂之间的环流另一方面在故障时限制电流上升率。环流主要是二倍频负序分量桥臂电感越大抑制效果越好但太大会造成电压降和成本问题。工程上桥臂电感标幺值常在0.1到0.3之间。以10kVA、380V系统为例桥臂电感取2.5mH是一个比较合理的起点。交流电感的作用是滤波和支撑电流环控制取值一般在0.05到0.15 p.u.之间。它太小的话电流谐波大电流环也不稳定太大的话交流侧压降明显无功需求上升。仿真里初步取2mH左右后面根据电流波形再微调。有一个容易踩的坑桥臂电感和交流电感在实际电路里有耦合关系桥臂电感变大对环流抑制更好但同样会降低电流环的响应速度。所以调参数时不要只看某一个波形而是整体观察直流电压、交流电流和环流三个指标的平衡。2.4 载波频率与移相角载波移相调制这个名字已经透露了核心思想每个子模块都有自己的三角载波这些载波频率相同但相位依次错开一个角度。相邻载波的相位差是360°/N子模块N4时移相角90°N8时移相角45°。为什么要错开因为错开之后各个子模块的PWM输出叠加起来等效开关频率变成了原来的N倍。也就是说单个IGBT可以在2kHz的低开关频率下工作而整个桥臂的等效开关频率能达到8kHz波形质量和开关损耗取得了一个很好的平衡。调制波是三相正弦波由控制环生成经过归一化后分别与各子模块的三角载波比较产生PWM脉冲。仿真里我一般把子模块三角载波频率设为1到2kHzN4时等效频率就是4到8kHz。这个等效频率已经能保证网侧电流波形比较平滑同时仿真步长又不至于太苛刻。需要说明的是实际工程里CPS-PWM的载波移相方式还有一个细节上下桥臂的载波初始相位可能采用同相或反相两种方案。两种方式在输出电平数和谐波分布上略有差别仿真学习阶段先用同相方案即可理解原理后再去对比反相方案会发现不少有意思的差异。2.5 控制周期与仿真步长双闭环控制是数字控制仿真里需要设定控制周期。常规做法是电流环和电压环放在同一个控制周期里跑控制周期取为载波周期的整数分之一常见取1e-4s到5e-5s。调制部分则需要更精细的仿真步长来表征PWM波形否则载波的边缘不清晰占空比误差会变大。仿真步长和载波频率的关系我总结了一个经验式步长Ts最好小于等于1/(50·fc)到1/(100·fc)。fc2kHz时步长取1e-6s比较稳妥fc1kHz时步长可以放宽到2e-6s。这样既能保证PWM波形分辨率又不至于让整机仿真慢到怀疑人生。从另一个角度说控制周期和仿真步长不是一回事。控制周期是算法定时执行的间隔仿真步长是解算微分方程的时间分辨率。Simulink里通过离散PWM生成模块和离散PI控制器来区分这两件事这一点新手非常容易搞混。3. 双闭环控制器搭建与载波移相调制实现3.1 外环直流电压环与无功参考外环的首要任务是稳住直流母线电压。它的输入是直流电压参考值和实际测量值的偏差经过PI控制器后输出d轴电流参考值。直流电压参考值一般按子模块电容电压之和来设定N4、每个375V时就是1500V吗这里要注意直流母线电压是上下两段桥臂叠加的结果。对于每相上下两个桥臂串联的结构直流侧电压参考值约等于每相投入子模块数乘以单个电容电压。以N4为例如果额定电容电压375V且每相满载时投入4个子模块直流电压参考值就在1500V左右。所以我之前举例的750V其实对应的是N2的场景或者额定电容电压约375V、N4但直流参考为1500V。这里在不同文献里设计会有差异我自己的习惯是先明确单臂子模块数和额定电容电压再推导直流参考值避免张冠李戴。外环PI参数整定有个常用套路先设计内环电流环再把电压环带宽取为电流环的1/5到1/10。这样电压环响应比电流环慢控制上不容易产生振荡。仿真里初始参数可以先给Kp0.5到2、Ki20到50然后观察直流电压的阶跃响应再细调。Kp太大直流电压会有明显超调Ki太大系统容易低频振荡。启动阶段还有一个很实用的技巧不要直接用阶跃参考值否则电容从零开始充电启动电流会非常难看。给直流电压参考加一个斜坡斜坡时间0.1到0.2秒让电容缓慢建压电流冲击就小很多。这个做法在仿真和实际平台上都有效几乎可以算MMC整流器调试的第一步。3.2 内环电流环d-q解耦与电网电压前馈电流内环在同步旋转坐标系下完成电网三相电流经过Park变换得到d轴和q轴分量。d轴电流控制有功并支撑直流电压q轴电流控制无功。整流器一般希望单位功率因数运行所以q轴参考值设为0。如果要参与无功补偿q轴参考值就按目标功率因数算出来送给电流环。电流环的方程里有一个绕不开的麻烦d轴和q轴之间存在交叉耦合表达式是ωLi_q和-ωLi_d。如果不做解耦d轴电流一变q轴也跟着抖控制不稳。解耦方式是把这两项作为前馈补偿加到PI输出上同时把电网电压的前馈项也加进去。这样电流环的等效模型就接近两个独立的一阶惯性系统PI参数可以按经典方法设计。关于电流环PI参数一个常用思路是把期望闭环时间常数设为τ电感L和电阻R分别为交流回路参数那么Kp L/τKi R/τ。比如L2mH、R0.1Ω、τ1ms时Kp2Ki100。这个算出来的值只是初值仿真中还要根据电流波形微调但作为起点比盲试高效很多。3.3 载波移相调制与PWM生成细节搭建CPS-PWM调制模块的关键在于生成N路相位相差360°/N的三角载波。在Simulink里有几种实现方式一是使用Repeating Sequence模块在每个模块的参数里设置不同的载波相位偏移二是用Repeating Sequence Staircase生成锯齿波再配合相位延迟三是直接通过MATLAB Function把三角载波函数写成代码。我自己的习惯是用Repeating Sequence模块加Phase参数配置因为直观、调试方便。生成N4路载波时每路三角波的频率相同Start Time分别设0、1/(4fc)、2/(4fc)、3/(4fc)自然就得到了90度相位差。调制波的生成则要结合控制环输出。电流环输出的是dq轴电压指令经过反Park变换得到三相调制波但这个调制波不能直接拿去和三角波比较。子模块电容电压和直流母线有一个确定的配合关系调制波需要除以一个基准值把幅值归一化到[-1,1]范围。归一化之后再加入载波移相调制每个子模块的PWM比较器输入就是同一路正弦调制波与各自的三角载波比较得到0/1逻辑脉冲。这个逻辑脉冲只确定了子模块投入还是切除还不能直接给上下管用这里要加死区逻辑。上下两个IGBT管的驱动信号之间必须留一个死区时间防止直通短路。在离散仿真中可以用On-Off Delay或者自定义状态逻辑来实现几微秒的死区。我见过不少初学者忽略死区结果仿真波形出现高频振铃或者无源器件损坏报警其实就是上下管同时导通造成的。3.4 子模块电容电压均衡与环流抑制CPS-PWM最容易被忽略、也最影响成败的就是电容电压均衡。如果不做任何均衡控制仿真跑一会儿就能看到各个子模块电容电压开始分家有的高有的低。为什么会这样因为每个桥臂的电流在充放电时各个子模块的投切时序不同累积电荷量就不一样。所以必须在控制里注入均衡修正。我采用的方案是基于能量均衡的修正思路每个子模块的调制波在公共正弦波基础上叠加一个与该子模块电容电压偏差成比例的小修正量。偏差为正说明这个电容电压偏高就让它多放一点电修正量取负偏差为负说明电压偏低就让它少放电或者多充电。比例增益要合适太大会让调制波失真太小则均衡速度慢。实际调试中我先取增益为0.1到0.3观察各电容电压的动态分散程度再微调。环流抑制是另一个工程问题。桥臂环流主要是二倍频负序分量在交流侧电流里不会体现但会在桥臂电感上产生很大的损耗和热量。抑制方法是在双闭环外加一个环流抑制控制器CCSC检测上下桥臂电流之差作为环流信号将其与二倍频参考值比较PI输出叠加到调制波上。如果只是做基础仿真验证桥臂电感够大、环流不明显时也可以先不加CCSC把模型调通后再加上去对比效果。4. 从波形到问题仿真调试实录与排查技巧4.1 启动冲击与电容预充电我第一次搭好MMC整流器模型满怀期待地点了运行结果波形惨不忍睹直流电压过冲接近两倍网侧电流直接顶到几十倍额定值看起来像短路了。排查了半天罪魁祸首就是电容初始电压为零而直流电压参考直接给到了额定值。PI控制器一上来就以最大出力去给电容充电电容充电电流只受小电感和线路电阻限制不炸才怪。解决思路是分两步走。第一步让PWM先不工作把IGBT全关断或者只让反并联二极管工作电网通过二极管给子模块电容预充电到接近额定的水平。第二步达到预定电压后切换成PWM整流模式双闭环开始工作。在仿真里更简便的替代方案是给子模块电容设置合理的初始电压。在Simulink的电容模块参数里可以直接设置Initial Voltage省去预充电电路但我更推荐保留斜坡启动方式因为更接近实际工况后面切换到实物平台时也能直接沿用这套逻辑。注意即使在仿真里可以设置初始电压也一定要给直流电压参考加斜坡或者限幅否则PI输出饱和后同样可能引发电流冲击。4.2 电容电压发散与均压调试有一次我把均压环关了想看CPS-PWM能不能靠自然特性维持电容均衡结果跑了0.3秒四个子模块电容电压差到了几十伏而且还在逐渐拉开。这说明CPS-PWM单靠PWM自身的对称性并不能保证均衡必须依赖控制层面的修正。调试均衡环时最典型的错误是增益太大引起PWM调制波局部过调制。均衡修正量不应该在整个周期内无限制叠加最好加一个限幅最大值限制在调制波幅值的5%到10%以内。否则调制波可能超过[−1,1]范围PWM进入过调制区电流波形出现明显削顶。另一个细节是采样同步。均压调节量计算使用的电容电压最好是在PWM载波顶点处采样这样能避免开关动作瞬间带来的噪声。仿真里如果直接用连续测量信号数值波动会很大但加了离散采样器后会稳定很多。4.3 交流电流畸变与THD问题交流电流波形不干净是最容易让人焦虑的问题之一。谐波来源通常有几个方向载波频率不够高导致PWM边带谐波大这种情况提高载波频率或者增加子模块数等效提高频率即可交流侧电感太小导致纹波大这种情况加大电感数值死区时间设置太大会引入低次谐波这种情况在死区补偿或者调整死区时间上下功夫。判断谐波不能只靠眼睛看波形我用Powergui里的FFT Analysis工具分析网侧电流THD看具体谐波次数。二倍频纹波一般不体现在网侧电流里而是体现在直流电压或者环流上如果FFT里3、5、7次谐波偏大优先检查死区和电感参数如果在开关频率倍频处有尖峰那就是PWM边带谐波靠滤波网络来解决。仿真中THD做到5%以下基本就算合格但不要为了追求低THD而把载波频率设得特别高。载波频率提高后仿真步长必须跟着缩短计算量成倍上升。更好的做法是在合理的载波频率下保证交流电感和控制带宽匹配再考虑滤波。4.4 锁相环与电网相位跟踪双闭环电流控制依赖Park变换而Park变换需要电网电压相位信息这一环由锁相环PLL完成。在Simulink中可以使用Simscape Electrical自带的PLL模块也可以自己搭SRF-PLL同步旋转坐标系锁相环。PLL调参的常见问题是初始相位不对导致锁相失败表现为dq轴电压一直在振荡而不是稳定的直流量。解决的笨办法是先设置三相电压源的初始相角为0让PLL的初始积分器状态也为0跑起来就正常了。PLL的带宽不能太高否则电网电压谐波会被放大相位抖动严重。一般PLL带宽设在几十赫兹到一百赫兹之间具体看电网质量。仿真中如果电网是理想正弦PLL很容易锁住如果后面想研究电网不平衡或者谐波畸变下的控制性能PLL才是真正的重点难点这里可以先按下不表。4.5 仿真速度慢与实时性优化MMC整流器仿真最大的痛点就是慢。我曾经用连续求解器跑一个N8的模型simulation speed慢到让人以为电脑死机了。后来我把Powergui设为离散化模式固定步长2e-6s模型跑起来流畅多了。要提高仿真速度核心思路是减少需要高精度求解的电路节点数量以及减少数据记录开销。我常用的优化手段有几种一是把示波器数据记录改成To Workspace模块只在需要时保存特定信号二是关闭不必要的信号线显示减少Scope的刷新开销三是在模型验证完成后把部分测量模块去掉四是用MATLAB Function实现逻辑控制来代替庞大的电路网络模块。如果这些手段还不够可以考虑使用平均模型来替换完整的开关模型用受控电压源和电流源等效子模块行为速度可以提升一个数量级。5. 对速度、精度的妥协求解器与步长选择经验5.1 连续、离散还是相量法MMC整流器仿真里求解器的选择直接决定成败。连续求解器在小规模电路里很精确但多电平MMC模型包含大量开关器件连续求解器会在每次开关动作时执行小步长求解导致仿真时间急剧膨胀。我强烈建议一上来就用离散化模式把开关器件和电容都用离散模型表示仿真速度能够提升一个量级。相量法不能用于这里因为CPS-PWM的本质是高频开关动作相量法只适用于工频稳态分析完全捕捉不到PWM细节。如果只是研究MMC整流器的工频功率传输特性不考虑调制细节和电容电压纹波相量法可以作为一个极简验证工具但CPS-PWM就免谈了。5.2 步长与载波频率的约束关系步长和载波频率之间有一个硬性约束步长必须足够小才能分辨载波的每个上升沿和下降沿。经验法则是步长不超过载波周期的1/50到1/100。载波频率2kHz时载波周期500μs步长建议5μs以下载波频率5kHz时步长必须压到2μs以下。载波频率再上去仿真时间直线上升所以工程仿真中很少把载波频率设得太高。我的偷懒技巧是先用较小的子模块数N4、载波频率1kHz、步长2e-6s把控制逻辑调通这时候等效开关频率4kHz波形就足够看了。调通之后再逐步加大载波频率到2kHz步长同步换小验证谐波指标是否满足要求。这样能避免从一开始就在大模型上死磕步长浪费大量时间。5.3 数据记录与工作区管理仿真里最容易拖慢速度的其实是Scope窗口的实时刷新。我经常看到有人模型一跑屏幕上十几个Scope同时开着每步刷新一次再好的电脑也扛不住。正确做法是所有Scope只保留有限数据长度或者干脆用To Workspace把关键信号存到MATLAB工作区仿真结束后统一用plot命令画图。另外MMC整流器模型里来自不同桥臂的信号特别多建议用Goto/From模块做信号总线管理而不是用大量交叉连线。交叉连线在模型复杂以后非常容易出错找问题都要翻半天。合理使用Bus Creator和Bus Selector把控制信号、PWM信号、测量信号分开管理维护成本会低很多。6. 给后续扩展的几点建议6.1 从整流到逆变、从三相到多相MMC整流器这套模型并不会在整流器这个点上止步。你把直流侧电压控制的参考方向倒过来把功率流向改成从直流到交流同样一套双闭环框架就变成了MMC逆变器。如果有背靠背输电或者储能变流的需求可以把两个MMC背靠背接在一起共用一条直流母线一端控制直流电压一端控制功率双闭环结构继续复用。从三相拓扑扩展到大功率多相拓扑控制思想基本一致只是Park变换和调制波生成路数会相应增加。6.2 与电池储能模型结合想往储能方向延伸的话Simscape Battery工具箱是个值得关注的工具。它可以用参数化的单体电池模型替换子模块电容或在直流侧接入电池簇然后研究SOC均衡、充放电切换、直流电压波动等问题。这类仿真在前沿论文里很常见工程上也确实有把MMC与电池储能结合的应用场景因为每个子模块独立可控天然适合做分布式电池管理。从现有MMC整流器模型扩展过去我的建议是不急着把全部模型都替换成电池。先把单个子模块的电容换成电池模型观察桥臂电流和SOC的动态关系确认控制策略没有冲突再逐步扩展到所有子模块。一次性全换往往会带来很多意料之外的交互问题排查起来非常痛苦。6.3 硬件在环与快速原型仿真做到最后总会有人问你“这个控制算法能不能直接上实际控制器”。答案是可以但中间需要过一道硬件在环HIL测试。简单说就是把控制算法用Simulink的代码生成工具转成C代码部署到DSP或者FPGA控制器里让它去控制一个实时仿真器里跑的MMC主电路模型专门验证控制器逻辑有没有问题。前期在纯仿真阶段把双闭环和CPS-PWM都调稳功能验证充分后再进入HIL阶段会非常顺畅。我个人的实际体会是在纯仿真阶段多花点时间把模型参数、控制器结构、调制逻辑整理清楚后续转实时仿真和硬件测试能节省大量调试时间。仿真不是终点但它一定是整个开发链条里风险最低、性价比最高的起点。我在实际调试中的另一个体会是不要过分追求参数一次到位MMC双闭环和CPS-PWM的配合确实需要几轮反复。先把电容参考电压、载波相位、PI初值这些基础参数定好再把均压环和环流抑制逐个加进去一步一步观察波形变化很快你就能建立对这套系统的直觉判断。后面再遇到参数异常扫一眼波形基本就能定位问题出在哪个环节。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。