做背靠背MMC的Simulink仿真,一直是电力电子、柔直输电方向学生和工程师绕不开的课题。这个题目看起来很长,拆开其实就三件事:把MMC的拓扑和控制逻辑搭明白,把背靠背两端的功率交换跑通,再把它当作电能质量调节系统来验证效果。很多人一上来就堆模块,结果直流电压建立不起来、电容电压发散,卡了一两周找不到原因,最后就放弃了。这篇文章把我做过的模型、踩过的坑、调参的经验全部写出来,从系统设计说到控制器整定,再到Simulink建模的具体操作,最后附上常见问题的排查方法,希望能帮你少走弯路。
这个模型适合谁参考?如果你是研究生在做MMC方向的课题,或者工程师想评估背靠背MMC在配网电能质量治理中的效果,又或者刚接触Simulink想做柔性互联仿真却不知道怎么下手,这篇文章正好对应你的需求。我会把所有关键参数的计算逻辑、控制器的搭建细节、仿真结果的观察方法都展开,保证不是那种只给框图不给步骤的科普文。
1. 背靠背MMC的系统结构与电能质量调节思路
1.1 为什么选背靠背MMC而不是传统变流器
背靠背MMC本质上就是两台MMC换流器通过直流母线直接相连,一端接电网A,另一端接电网B(或者接负载),有功功率可以通过直流母线双向流动。之所以选用MMC拓扑,是因为它在电能质量调节上有几个天然优势。
第一,模块化结构带来极低的谐波输出。单个子模块的开关频率不需要太高,通过多电平合成就能输出接近正弦的电压波形,这意味着滤波器容量可以大幅缩小,在某些场景下甚至可以不用交流滤波器。第二,MMC的公共直流母线天然隔离了两侧交流系统,电网A的电压暂降、谐波污染、频率波动不会直接传递到电网B,这就是“背靠背”结构最核心的价值——解耦。第三,MMC可以独立控制两端的有功和无功,相当于把两个STATCOM背靠背拼在一起,既能补偿无功、抑制谐波,又能实现有功的定向输送和动态调节。
从电能质量调节的角度看,这个系统可以完成的事情非常多:维持交流母线电压稳定、补偿负载无功、抑制谐波电流、消除三相不平衡带来的负序分量、甚至在电网电压暂降时提供动态电压支撑。如果单纯用无源滤波器或单个STATCOM,这些功能是割裂的,而背靠背MMC把它们统一在一个平台里。
1.2 整个系统的框架和数学模型
系统的基本构成是:MMC1通过连接电抗器和变压器接入电网1,MMC2接入电网2(或负载侧),两台换流器通过直流母线相连。每台MMC有六个桥臂,每个桥臂由N个子模块和一个桥臂电感串联组成,每一相的上、下桥臂构成一个相单元。
从数学角度看,MMC的交流侧特性可以简化为一个受控电压源。定义某相上桥臂投入的子模块数为n_p,下桥臂投入为n_n,则有关系n_p + n_n = N。交流输出电压由上下桥臂投入数量的差值决定,而直流电压由两者之和决定:
- Udc = N × Vc,其中Vc是单个子模块电容的额定电压。
这个约束关系是整个控制策略的基础。交流侧电压控制本质上是控制上、下桥臂投入子模块数量的分配,同时保证上下桥臂总投入数量恒定,否则直流母线电压就会波动。另外还有一个容易忽略的物理量——桥臂环流,它是流经上下桥臂却不流入交流侧的电流,主要包含二倍频负序分量。环流不控制会明显增大桥臂电流有效值,让电容电压波动加剧,这也是后续控制器设计中的重点。
1.3 电能质量调节的典型工作场景
在仿真中,我会把MMC1设为整流端,采用定直流电压和定无功控制,相当于给直流母线提供稳定电压;MMC2设为逆变端,连接一个非线性、三相不平衡的负载,采用定有功功率和定交流电压控制。这时候MMC2就相当于一个电能质量补偿器:它既向负载提供所需的有功电流,又能动态补偿负载产生的无功和谐波,从而保证电网侧的电流质量。
这种场景非常贴近实际工程,例如城市配电网的馈线互联、敏感负荷供电、分布式电源接入等。你也可以在仿真里设置极端工况,比如电网1发生短时电压跌落,观察背靠背MMC如何维持电网2电压的稳定——注意,这里如果真的接了一个普通负载,电网2的电压会直接跌落,但有了MMC2的有功支撑,电网2侧电压几乎不受影响。
2. 控制系统设计:从外环到阀级的分层结构
2.1 控制系统的整体架构
MMC的控制通常分成三个层次:系统级、换流器级和阀级。建模时我建议也按这个层次来拆模块,方便调试和排查问题。
系统级控制决定功率目标。MMC1定直流电压和无功,MMC2定有功和定交流电压(或者是定无功,根据场景决定)。换流器级控制负责把功率/电压目标转化为内环电流参考值,并在dq旋转坐标系下对电流进行解耦控制,输出期望的交流电压。阀级控制包含最近电平逼近调制(NLM)、子模块电容电压排序均压,以及环流抑制,这三部分直接决定每个IGBT的触发脉冲。
有人会问,为什么非得用dq旋转坐标?因为三相交流量在静止坐标下是正弦周期量,用PI控制器会有稳态误差,而变换到与电网频率同步旋转的dq坐标下,基波正序分量变成直流量,PI就能实现无静差跟踪。对负序分量和谐波分量,也可以分别做反旋转变换或者增加谐振控制器,这个后面讲。
2.2 内环电流控制器设计
内环采用经典的电压前馈解耦控制策略。在dq坐标系下,MMC交流侧的电压方程为:
- L × (di_d/dt) = u_d - v_d - R×i_d + ωL×i_q
- L × (di_q/dt) = u_q - v_q - R×i_q - ωL×i_d
其中v_d、v_q是电网电压,u_d、u_q是MMC输出电压,L和R是连接电抗和等效电阻。为了消除dq轴之间的耦合,控制器输出采用如下形式:
- u_d* = v_d + ωL×i_q - (Kp + Ki/s)(i_d* - i_d)
- u_q* = v_q - ωL×i_d - (Kp + Ki/s)(i_q* - i_q)
前面两项v_d和ωL×i_q分别是电压前馈和解耦补偿,让有功轴和无功轴可以独立控制。PI参数怎么整定?一般按典型I型系统设计,带宽取几百赫兹。经验上Kp取在0.5到5之间,Ki取在10到100之间,具体要结合模型里的电抗值来调。调试时如果一个轴响应慢、另一个轴超调量大,不要盲目加大Kp,先检查解耦项符号是否搞反,这是很常见的错误。
2.3 外环功率/电压控制器
外环控制器生成内环的电流参考值,通常也使用PI控制。定直流电压控制时,直流电压偏差经过PI后产生有功电流参考值i_d*;定无功/定交流电压控制则产生i_q*。
这里有个操作细节:定直流电压的外环PI响应速度必须比内环慢,否则两个环互相影响会出现振荡。一般把外环带宽设置为内环的1/5到1/10。我在调试时习惯先把内环单独给定i_d和i_q做阶跃测试,确认快速性之后再把外环接上,这样可以明显降低联调难度。
对于定交流电压控制,要特别留意公共连接点的电压采样位置,必须采在MMC出口与负载之间的节点上。如果误采了电网侧电压,控制器会以为电压一直很稳,补偿完全不起作用。
2.4 环流抑制和电容电压平衡算法
环流抑制是MMC控制里最容易被忽略但又非常关键的部分。三相桥臂之间由于直流侧和三相交流电压的差异,会在桥臂内部产生二倍频负序环流。最简单的抑制方法是在桥臂电流中提取出二倍频分量,在负序二倍频旋转坐标系下用PI控制输出一个补偿电压叠加到每个相单元的参考波上。
还有一个更实用的工程做法:直接把三相桥臂电流之和除以3作为环流的近似值(这里的环流是相单元内的平均环流),再通过一个陷波器或者谐振控制器剔除基波分量,用PI控制把这部分压到最小。仿真阶段用后者就够了,效果明显且实现简单。
电容电压平衡采用排序法。每个控制周期采样所有子模块的电容电压,根据桥臂电流方向判断电容当前是充电还是放电:若电流给电容充电,则投入电压最低的若干个模块;若放电,则投入电压最高的若干个模块。这样经过若干周期,所有电容电压会收敛到额定值附近。排序算法可以用MATLAB Function块写,N不大时用冒泡排序就够,N超过100时建议改成快速排序或分治法,否则一个开关周期内算不完。
3. Simulink建模仿真的完整实操流程
3.1 主电路搭建:子模块到整个换流器
Simulink里搭MMC有两种路线。一种是直接用Simscape Electrical(就是原来的SimPowerSystems)里面的通用MMC模块,参数设置简单,适合快速验证;另一种是用半桥子模块自己搭,每个SM包含两个IGBT器件、两个反并联二极管和一个直流电容,外面再用桥臂电感串联。我推荐自己搭,因为你可以随时改子模块内部结构,也能更直观地理解每个物理量的流向。
子模块的内部逻辑是:上管导通、下管关断时,SM输出电压等于电容电压Uc,电容根据电流方向充放电;上管关断、下管导通时,SM输出电压为0,电容被旁路。用Simscape Electrical里的Universal Bridge搭两个桥臂再并联电容,封装成Subsystem,就做好了SM模型。封装时把电容电压测量端口和触发脉冲端口引出来,方便后面接均压控制。
主电路接线顺序建议是:交流电源→变压器→连接电抗→MMC1交流侧,MMC1直流侧的正负极接直流母线的正负极,同时MMC2直流侧也接在这条母线上,MMC2交流侧通过连接电抗接到另一个交流电源(或者负载)。注意两台MMC的直流电容极性不能接反,否则直接短路,仿真会报错。
3.2 触发与控制模块的搭建细节
控制部分我习惯分成四个模块:锁相环PLL、坐标变换、控制器主体、调制与均压。
PLL用Simscape库里的三相锁相环模块,或者自己用αβ变换加PI搭一个。锁相环输出的角度θ要同时用于电网电压定向和电流dq变换。这里有一个非常容易犯的错误:θ用的是MMC交流出口处的电压相位,不是电源侧相位。如果用错了,q轴会多出一个很大的偏置,功率控制就全部乱套。
坐标变换模块自己写也方便。abc到dq的变换矩阵是:
- d = (2/3)[cos(θ)×a + cos(θ-2π/3)×b + cos(θ+2π/3)×c]
- q = -(2/3)[sin(θ)×a + sin(θ-2π/3)×b + sin(θ+2π/3)×c]
Simulink里可以直接用Fcn模块或者MATLAB Function实现,注意乘以2/3系数,否则变换后的幅值不对,PI参数就整定不准。
调制部分我用的最近电平逼近(NLM)。每相上下桥臂的参考电压v_ref_p和v_ref_n由控制器输出生成,单个子模块电容电压均值Vc作为基准,那么上桥臂需要投入的模块数就是round(v_ref_p/Vc),下桥臂是round(v_ref_n/Vc)。这里一定要用取整函数并做限幅,限制在0到N之间,否则会输出负脉冲或者超过N个脉冲,导致SM状态异常。
3.3 关键参数的计算与整定
以一个典型的中压配电网仿真模型为例,交流系统线电压有效值10kV,额定功率5MW,每个桥臂子模块数N=20,直流母线电压按Udc = N×Vc取,Vc=500V,所以Udc=10kV。这些参数之间的匹配关系是:直流电压要能支撑交流输出电压,一般取调制比m约0.85至0.95,也就是交流线电压峰值要小于Udc×m,否则出现过调制,波形失真。
子模块电容的估算公式:
- C = 2P / (3N×Vc×ΔVc%×ω×Vc)
其中P为额定功率,ΔVc%为允许的电容电压纹波比例(一般取5%~10%),ω为基波角频率。代入刚才的数值,C约在3mF到5mF之间。这个电容值偏大会让直流电压更稳,但动态响应变慢,电容值偏小则电压纹波大、均压算法压力大。
桥臂电感的经验取值是0.1~0.15 pu,换算成实际值就是:
- Larm = 0.15 × Udc² / (ω × P)
对应的Larm大约在5mH到7mH之间。桥臂电感过小,二倍频环流抑制不住,电容电压波动也会明显增大;桥臂电感过大,则内环电流响应变慢、直流电压建立过程迟缓。仿真中可以先取0.15pu,后面根据环流波形微调。
3.4 仿真步长与求解器的设置
MMC的仿真里有一个绕不开的坎:仿真速度。半桥SM数量多、开关器件多,如果用连续求解器,Simulink很容易因为开关动作频繁而报“步长太小”或直接卡死。我的建议是使用离散求解器,固定步长,步长取5μs到20μs。步长太大会丢开关动作,导致电容电压波形畸变,步长太小又会拖慢仿真,具体取多少要看NLM的输出频率和系统时间常数。
如果想要更快的调试速度,可以先做一个平均值模型:把每个SM等效为受控电压源,不做NLM也不做排序,只保留外环、内环控制。用平均值模型验证控制参数无误后,再换回详细模型跑最终的波形。这个方法我每次做MMC项目都会先用一遍,能省很多时间。
4. 仿真场景设计与结果分析
4.1 场景1:有功功率双向流动验证
这个场景用来检验背靠背系统最基本的功率传输能力。设置MMC2的给定有功功率在0.5s时从2MW阶跃到-2MW,也就是从整流变成逆变,功率流方向反转。观察三个量:直流母线电压、MMC1输出的有功功率、两侧交流电流的相序变化。
正常的仿真结果是:功率反转瞬间直流电压会出现一个小的跌落或抬升,幅度大概在3%~5%之间,随后在定直流电压控制作用下回到10kV附近。MMC1的有功功率响应速度取决于外环PI参数,一般几十到一两百毫秒内完成。如果直流电压持续振荡不收敛,多半是定直流电压外环PI太激进,或者两台MMC的内环控制存在明显延时差异。
4.2 场景2:无功补偿与母线电压支撑
在MMC2出口接一个感性负载,功率因数0.7左右。启动仿真后,先让MMC2运行在无功补偿模式,给定q轴电流为负载所需的无功电流大小(方向相反)。观察电网侧电流:补偿前电流滞后、无功大,补偿后电网电流与电压同相,功率因数接近1,同时MMC2出口母线电压的电压降落被明显纠正。
这个场景特别能体现MMC作为电能质量调节系统的价值。实际运行中负载变化是随机的,所以在仿真里可以给无功电流参考加一个阶跃变化,观察系统无功跟踪的快速性。如果能在一到两个工频周期内跟上参考,说明内环控制做得不错。
4.3 场景3:三相不平衡负载的电压补偿
这是背靠背MMC作为电能质量调节系统最有说服力的场景。在MMC2出口接一个单相重负载,三相电流明显不平衡,负序分量很大。如果用普通电源供电,负载侧电压会出现严重的三相不平衡,负序电压可能超过额定值的5%。
接入MMC2的双闭环控制后,定交流电压控制会强行把MMC2出口三相电压调节到平衡状态。具体原理是:外环检测到电压负序分量增大后,通过负序电流参考调整MMC2的输出电压,从而抵消负载不平衡带来的负序压降。仿真中观察负序电压幅值,从补偿前的数百伏降到几十伏以内,就算达到了目的。如果你用的MMC模型只做了正序控制,不平衡场景下会有一个明显的缺陷:负序分量无法完全抑制。改进的办法是增加负序电流内环,或者在电流内环中使用比例谐振(PR)控制器,在基波频率处提供足够的增益,同时抑制负序和谐波。
4.4 场景4:动态谐波补偿
把一个三相整流桥作为谐波源负载接入MMC2出口。整流桥会产生5、7、11次等特征次谐波,这些谐波电流流经系统阻抗会造成电压畸变。背靠背MMC如果只做基波控制,谐波补偿效果有限,因为它的输出电压参考只含基波分量,无法产生抵消谐波所需的输出电压。
要真正实现谐波治理,需要把负载电流中的谐波分量提取出来,叠加到内环电流参考上,让MMC主动输出与谐波幅值相等、相位相反的电流。仿真里用陷波器或者移动平均滤波器分离负载电流的基波和谐波就可以。若对比补偿前后的电网电流THD,补偿后应从20%~30%下降到5%以下,效果非常直观。这个功能在电力质量调节系统中属于高配玩法,可以在基础模型跑通后再加进去。
5. 常见问题与排查技巧实录
这部分是我最想写的内容,因为MMC仿真里的坑实在是太集中了,很多问题反复出现,而且一旦方向错了,调试起来非常浪费时间。
电容电压发散是最常见、也最让人头疼的问题。现象是仿真跑了几百毫秒后,某个桥臂的电容电压越来越高,或者六个桥臂电压开始分化。排查顺序是:第一步检查排序均压逻辑的触发频率,均压必须在一个很小的控制周期内执行,如果触发周期和开关频率不匹配,均压效果会大打折扣;第二步检查桥臂电流方向与排序策略是否对应,电容充电时投入低电压模块、放电时投入高电压模块,这个方向接反了电压会迅速发散;第三步检查电容电压的采样是否有延时,SM数量多时采样信号混入了延迟,导致排序结果滞后。我之前有次把桥臂电流方向判断写反了,电压在0.2秒之内直接冲到额定电压的2倍多,IGBT模型差点崩掉。
环流过大表现为桥臂电流明显大于交流侧电流的有效值,波形里能看到明显的二倍频成分。出现这个问题的原因基本就两个:桥臂电感取值太小,或者没有加环流抑制控制。可以先试把桥臂电感从0.1pu加到0.15pu观察效果;如果还不够,必须加环流抑制环。还有一个容易被忽略的点:环流抑制控制输出的补偿电压要加到相单元参考电压上,并且极性不能错,加反了反而会激励环流。
直流电压无法建立。这个问题的原因通常是预充电环节没有处理。MMC在解锁前要利用限流电阻给子模块电容充电,电容电压达到额定值附近后才能解锁换流器。很多初学者跳过预充电直接给触发脉冲,结果直流电压建立不起来、电流冲击特别大。另外,如果PLL没有锁定,控制器输出角频率和实际系统不一致,直流电压也会一直起不来。调试时可以先把PLL输出角度和网侧A相电压相位放在同一个示波器里观察,确认锁定之后再跑。
仿真运行速度极慢甚至崩溃。MMC详细模型中包含的开关器件太多,Simulink在更新导纳矩阵时开销很大。常用的解决办法是:把不必要的故障指示、谐波分析模块全部关掉,只在需要时启用;使用离散求解器并增大固定步长;把IGBT和二极管的Ron、Snubber参数合理设置,过小的杂散电容和电阻会显著增加计算量;最有效的方法是先用平均值模型调控制,再用详细模型出结果。我实际做下来,平均值模型跑完整个场景只要几分钟,详细模型可能要几小时。
还有一个容易混淆的问题:坐标变换的幅值系数。abc到dq变换有等幅值和等功率两种形式,等幅值要乘2/3,等功率要乘根号(2/3)。如果控制系统用了等幅值变换,而PLL内部用了等功率变换,得出的dq分量幅值不一致,PI参数的整定结果就全废了。我的建议是整个模型统一用等幅值变换,并且在验证阶段给一个已知的三相对称电压,检查变换后的d轴是否等于幅值、q轴是否为0,这样能快速确认变换正确性。
下面是常见问题的速查表:
| 问题现象 | 可能原因 | 排查/解决办法 |
|---|---|---|
| 电容电压发散/不均衡 | 排序方向错误、均压频率过低、采样延迟 | 检查充电/放电与投入策略的对应关系,提高均压执行频率 |
| 桥臂环流过大 | 桥臂电感太小、未加环流抑制 | 增大Larm至0.1~0.15pu,增加二倍频环流抑制环 |
| 直流电压建不起来 | 未做预充电、PLL未锁定 | 增加预充电回路与解锁时序,检查PLL输出 |
| 交流电流波形畸变 | NLM取整错误、参考波饱和 | 检查round/floor函数选择,限幅在0~N之间 |
| 仿真速度极慢 | 详细模型开关过多、步长过小 | 用平均值模型调控制,固定步长取5~20μs |
| 功率响应振荡 | 内外环PI冲突、解耦项极性错 | 外环带宽设为内环1/5,检查解耦项符号 |
| 负序/谐波补偿无效 | 只做正序控制 | 增加负序电流内环或PR谐振控制器 |
6. 经验总结:从模型到课题价值
我个人做完这个课题后最大的感受是,背靠背MMC仿真真正难的并不是某个单一模块,而是把所有环节串起来之后那个微妙的时序关系。预充电、PLL锁定、坐标变换、均压排序、环流抑制,每一环单独拉出来都有标准做法,但合在一起就必须有清晰的层次感,知道哪个环节先工作、哪个环节影响谁的输出。建议第一次做的时候,先把后台脚本里的控制使能信号写好:0到0.1s闭锁、0.1s解锁、0.2s再投入环流抑制,分阶段观察每一层的波形变化,这样任何一环出了问题都容易定位。
这个模型做完之后,扩展空间非常大。很多研究就是在背靠背MMC的基础上往电能质量方向深入:比如加入不平衡负载的负序电压补偿,加入低电压穿越策略,或者把两端改成主动配电网模式,让功率能够根据电价信号自动调度。控制策略同样可以升级:用模型预测控制替代传统PI,用滑模控制提高鲁棒性,甚至接入强化学习模块做自适应参数整定。Simulink平台的好处就是所有模块都能换成自己的算法,然后再和平均值模型对比验证,把研究成果落到可复现的仿真层面。
另外再分享一个调试小技巧:一定不要把所有波形都放在一个scope里看,你会被密密麻麻的曲线淹没。把电容电压、桥臂电流、直流电压、交流功率分成四个scope,每个scope里只放相关的几个信号,再加几个To Workspace模块把关键波形存到工作区,方便后期用脚本画图和计算THD。这样做既省内存,也让你对系统的健康状态一目了然。
以上就是我做背靠背MMC电能质量调节系统仿真的一些实际经验和踩坑记录。如果按照这个流程走一遍,我相信你不仅能得到一份能跑的模型,更能把MMC的控制逻辑、参数整定、电能质量评估这些关键环节理解透。动手搭模型去吧,祝你一次跑通。