刚接触模块化多电平变换器(MMC)那段时间,我最常干的事就是在三相对称电网工况下搭仿真模型,觉得只要把均压、环流和功率控制调顺了就算完事。直到有次拿真实电网数据做回放,A相电压短时跌落后,整套系统出现明显的二次谐波电流和电容电压发散趋势,才意识到对称工况掩盖了太多问题。三相不平衡工况,才是中高压柔性直流接入弱电网时躲不开的挑战。这次要分享的项目,就是围绕MMC在三相不平衡工况下的仿真模型展开,并重点讲清楚三种控制目标怎么实现,控制器以PI为主,也补充比例谐振、无差拍等工程常用改进思路。适合正在做MMC仿真、被负序分离、环流抑制、电容电压不均衡折磨的工程师和研究生参考。
1. 为什么要把MMC仿真拉到三相不平衡工况下去
MMC的全称是模块化多电平变换器,它通过多个半桥或全桥子模块串联堆叠,在桥臂上直接合成逼近正弦的阶梯波。与传统两电平或三电平变流器相比,它在中高压领域优势明显:波形质量好、开关频率低、扩展容易,而且桥臂电抗天然限制了短路电流上升速率。因此柔性直流输电、静止同步补偿器、中高压电机驱动这些场景,现在几乎是MMC的主场。
但是我发现一个普遍问题:很多资料里的MMC仿真教程默认电源三相对称,控制策略也只在正序dq坐标系下搭一套电流内环就完事。对称工况下,负序分量不存在,零序在三相三线制里也流不通,三相电流彼此差120度,电容电压排序做对了,整个系统看起来非常完美。可实际电网不是这样的,单相接地故障短时不能切除、大功率单相负荷投切、山区弱电网谐波严重,都会让公共连接点电压变成三相不平衡状态。电压不平衡一旦出现,正序分量、负序分量同时存在,关键在于负序分量会在工程上产生一系列连锁反应。
从对称分量法看,任意三相不对称电压都可以分解成三组对称向量:正序、负序、零序。对MMC这种三相三线制拓扑,零序电流没有通路,影响可以不管,但负序分量躲不掉。负序电压加在换流器端,会迫使交流侧出现负序电流,这个负序电流与正序电压相互作用,产生二倍频的瞬时功率振荡;振荡进入直流侧,直流电压和直流电流都开始出现100Hz波动。与此同时,桥臂内部还本来就有固有的二倍频环流,负序分量会让环流进一步恶化,子模块电容电压纹波变大,器件应力增加。更麻烦的是,三个相单元在负序功率作用下会出现平均传输功率不一致,如果不做处理,某一相电容电压会缓慢上升、另一相缓慢下降,最后排序均压算法也拉不回来。
所以做MMC仿真不能只盯着对称工况。三相不平衡工况下的控制目标,实质上就是在拓扑、均压、调制这些基本框架都建立好之后,再增加针对负序电流、环流、相间功率平衡的专门控制器。这篇博文里的模型,就是在这样一个思路下搭出来的:先用平衡工况把基础模型调到稳定,再人为制造不平衡度,逐步把三种控制目标加上去。每一步都能从波形里看到差异,这也是我比较推荐的MMC学习路径。
2. 三相不平衡的挑战与MMC仿真模型整体设计
2.1 用对称分量法看清负序到底带来了什么
对称分量法的数学基础很简洁:把一组三相相量分解成正序、负序、零序三组对称相量。正序按A-B-C顺序相位差120度,负序按A-C-B反向相位差,零序三相同向。对工程设计来说,不需要把矩阵推导背得滚瓜烂熟,但要听得懂负序在dq坐标系里的行为。
假设电网电压基波角频率是ω,正序分量在同步旋转坐标系里是恒定直流量,常规PI控制器作用得很好。负序分量在正序同步率坐标里会变成二倍频交流量,也就是说,如果你只搭了一套正序dq电流环,负序电流会在电流内环反馈里表现为100Hz抖动,PI控制器对交流干扰的抑制能力有限,压不住它。反过来,如果想抑制负序,就得再搭一套旋转方向相反的负序dq坐标系,让负序量在里面变成直流量,单独用PI控制。
三相不平衡对MMC的影响,我在仿真里用两组波形就可以说清楚。一组是不加负序控制,只保留正序电流内环,此时即便电压源只有10%的负序分量,交流侧电流三相幅值明显不对称,畸变也不小。另一组是开启负序电流抑制,把负序dq参考值设置为零,交流电流重新回到三相平衡状态。但要注意,让交流电流平衡并不意味着瞬时功率平衡,负序电压仍然存在,所以有功功率和无功功率都会出现二倍频振荡,这个振荡主要落在直流侧和电容电压上。因此三相不平衡工况的完整控制体系,必须把交流电流平衡、环流抑制、功率平衡这三件事放在同一个框架里协调。
2.2 MMC主回路拓扑和控制分层架构
我搭的仿真模型采用经典半桥子模块MMC,每相由上桥臂和下桥臂组成,每个桥臂里串联若干个半桥子模块并配一只桥臂电抗。相单元中点的连接方式,决定了交流电流在上、下桥臂之间是平分流动的。上桥臂电流和下桥臂电流可以写成:
上桥臂电流 = 交流电流的一半 + 环流 下桥臂电流 = 交流电流的负一半 + 环流
环流 = (上桥臂电流 + 下桥臂电流) / 2
这里的环流包含直流分量、基波分量和二倍频交流分量。直流分量是正常运行必须有的,用来传输直流侧功率;二倍频分量是MMC本征特性,由于三相瞬时功率之和不是常数,能量会在三个相单元之间来回流动,形成二倍频环流。负序分量进来后,环流里还会额外增加基波分量,这个分量对应相间功率交换。
控制架构上我分了四层。最外层是功率和直流电压控制,负责生成有功电流参考值;中间层是并网电流控制,在正序和负序两套dq坐标系里分别调电流;再往内是环流抑制控制,专门处理桥臂环流;最底层是子模块电容电压排序和调制。实际软件实现时,每一层都要限幅,尤其是电流内环的输出限幅和积分抗饱和,否则三相不平衡工况下控制器很容易饱和,波形反而发散。
2.3 仿真模型配置与参数选型参考
三相不平衡仿真模型不需要一开始就追求超高电压等级或超大子模块数量。子模块数量越多,波形越接近正弦,但仿真步长和排序计算量会成倍上涨。我建议首版模型把每桥臂子模块数控制在6到10个之间,既能体现多电平特征,又能保证调试效率。
我用于调试的首版参数大致如下:
| 参数 | 数值 | 说明 |
|---|---|---|
| 交流侧线电压有效值 | 10 kV | 三相三线制 |
| 直流母线电压 | 20 kV | 满足每桥臂6个子模块的平均电压要求 |
| 每桥臂子模块数 | 6 | 电压等级足够,电平数适中 |
| 子模块电容 | 2 mF | 根据能量波动估算 |
| 桥臂电抗 | 5 mH | 兼顾限流和环流抑制 |
| 桥臂等效电阻 | 0.05 Ω | 主要来自电抗器内阻和线路损耗 |
| 额定有功功率 | 5 MW | 用来确定额定电流与PI参数基准 |
| 控制周期 | 50 μs | 对应20 kHz控制频率,实际工程也可采用10 kHz |
子模块电容取值可以这样粗算:单个子模块承担的平均电压约3.33 kV,额定功率5 MW时,交流电流额定值约288 A。子模块电容电压波动如果有设计目标,比如控制在5%以内,所需的电容储能与功率和电压有关,工程上常用桥臂电抗器配合电容一起限制能量波动。我首版取2 mF,在对称工况下电容电压纹波大约在3%左右,换到三相不平衡工况后纹波明显变大,正好用来观察负序的影响。
桥臂电抗的作用有两方面:一是限制上下桥臂之间由于瞬时电压差产生的短路电流变化率,二是参与抑制环流。5 mH的电抗对应工频阻抗约1.57 Ω,在额定电流下压降不到3%,不会对功率传输造成明显影响,但二倍频分量下等效阻抗约3.14 Ω,对100Hz环流能形成自然的抑制能力。
3. 三种控制目标的实现思路与关键调试
3.1 控制目标一:负序电流抑制,先把并网电流拉回对称
三相不平衡工况下最先要处理的,是交流侧电流不要跟着电网电压一起变得不对称。对MMC来说,并网逆变器级联在电网上,如果控制不干预,负序电压会在换流器阻抗上产生较大的负序电流,这个负序电流会加剧电网末端电压失衡,也可能触发保护。
负序电流抑制的工程实现,比较好用的是双同步坐标系PI控制。简单说,就是除了常规的正序dq电流环之外,再搭一套以负序角频率旋转的dq坐标系,负序dq轴的参考电流设置为零,这样控制器输出就会产生一个与负序电压对应的补偿电压,把负序电流抵消掉。
实际建模时有几个点特别容易出错。
第一是正负序分量的提取不能只用低通滤波器硬滤。低通滤波会把负序dq里的二倍频信号滤掉,但相位延迟很大,控制系统带宽会被拖慢。我采用的办法是静止坐标系下的延迟对消法,把当前信号和四分之一周前的信号做组合运算,可以快速把正序、负序解耦开,实现起来也不复杂。要是想更稳,可以用二阶广义积分器构造正交信号,再做正负序分离,抗电网频率偏移能力会更强。
第二是两套dq电流环的交叉解耦符号有区别。正序dq坐标下,d轴和q轴之间存在ωL的交叉耦合项,负序坐标旋转方向相反,交叉耦合项的符号要取反。我有一版模型把正序的交叉解耦直接复制到负序回路里,结果负序电流不仅没被压下去,反而出现了明显的振荡。后来把负序d轴的耦合项从+ωL改成-ωL,波形立刻恢复正常。
第三是锁相环必须锁住正序电压相位,不能受负序分量干扰。三相不平衡时直接用锁相环锁到不平衡电压上,得到的相位会包含二倍频波动。我这里给锁相环的输入做了正序提取,锁相环看到的输入信号是纯正序电压,相位才稳定。锁相环带宽不要设太高,不然对谐波太灵敏,一般取20到50 Hz的自然频率就能兼顾动态和抗扰。
做完负序电流抑制后,交流电流波形会很好看,三相对称、正弦度也很高。但这时候别急着认为系统已经合格,因为直流侧往往还有二倍频功率振荡。这就是为什么要继续看目标二和目标三。
3.2 控制目标二:内部环流抑制,把二倍频环流压下去
MMC内部环流是所有采用MMC拓扑的装置绕不开的问题。环流本质是三个相单元之间的能量交换,它在桥臂内部流动,不会出现在交流侧,所以从并网电流波形里看不到,但会造成桥臂电流额外增加谐波,子模块电容电压产生二倍频振荡,还让桥臂电抗发热加剧。
环流抑制不能把整个环流都控掉。我一开始犯过一个典型的理解错误:把环流参考值也设成零,结果每个桥臂电流严重失真,均压也崩了。后来想明白,环流里的直流分量是必须存在的,它承担直流侧到交流侧的功率传递。真正需要抑制的,只是环流中的二倍频交流分量,还有三相不平衡工况下新增的基波环流分量。
工程上我的做法是:先实时计算环流,得到上、下桥臂电流之和的一半;再利用陷波滤波器或者谐振观测器,把二倍频分量单独提取出来作为反馈量;然后对这个交流环流做比例谐振控制,或者把它变换到以二倍频旋转的dq坐标系再做PI控制。比例谐振控制在固定电网频率下实现起来更简单,只用把谐振频率设成100Hz,增益给到100倍左右,效果就很直接。
谐振控制器的参数不要一上来就给很大。我在调参时遇到过把谐振增益调到300,结果环流波形出现了高频振荡,原因是在离散化实现后,谐振器在数字控制延时下出现了相位滞后,增益越大越容易不稳定。后来我在谐振器外串联一个低通项,把高频段增益压住,同时把谐振带宽设得窄一点,系统才稳定。这也是比例谐振控制器实现时需要留意的稳定性问题。
环流抑制带来的收益在仿真里非常直观。开启前,桥臂电流波形里能清楚看到叠加的二次谐波包络;开启后,桥臂电流波形平滑很多,子模块电容电压的纹波也明显下降。这个目标一旦做好,整个系统的鲁棒性会上一个台阶。
3.3 控制目标三:电容电压均衡与相间功率平衡
子模块电容电压均衡是所有MMC控制里最底层、最不能少的一环。半桥子模块的电容器只在投入时参与能量交换,如果某个子模块一直多投入或者少投入,电容电压就会偏离额定值。排序均压算法的核心思想很简单:每当需要变换投入子模块数量时,根据桥臂电流方向,选择投入电容电压最高或最低的那几个子模块。
具体规则是:如果桥臂电流是充电方向,就优先投入电容电压最低的子模块,把电压低的先充上去;如果桥臂电流是放电方向,就优先投入电容电压最高的子模块,把电压高的先放下来。这样循环排序,所有子模块电压就被约束在额定值附近。需要注意:排序频率不是越高越好,过高会导致单个子模块频繁投切,IGBT开关损耗很大。我实际做法是在每个控制周期做一次排序计算,但限制每个子模块的投切状态变化次数,给模块加一个保持时间,这样电压均衡效果几乎不变,开关次数却能降下来不少。
但是三相不平衡工况下,仅仅靠排序均压并不够。负序电压会引起三个相单元之间平均有功功率不一致,A相功率偏大的时候,A相所有子模块电容电压整体偏高;B相和C相则偏低。排序均压只能解决同一个桥臂内部子模块之间电压不平均的问题,解决不了相与相之间整体电压漂移的问题。
要处理相间功率平衡,常用的办法是叠加零序电压注入,或者控制环流里的基波分量,把多余功率从一相转移到另一相。零序电压在三相三线制系统里不会产生零序电流,但它与三相电流相互作用后可以改变各相的有功分配。这部分控制器不需要做得很复杂,一般采用一个慢速PI调节器,以三相平均电容电压的偏差作为输入,输出零序电压补偿量,叠加到三相调制波上。
我把这个目标排在第三位,是因为它在波形上最隐蔽。交流电流平衡、环流抑制都做好了,电容电压排序也在跑,但如果相间功率平衡缺失,仿真运行几百毫秒后电容电压整体漂移才会慢慢显现。这也是很多人在三相不平衡仿真里最后才发现的问题。
4. 实操记录:PI参数整定、不平衡工况设置与仿真坑点
4.1 电流环和环流抑制器的PI参数从哪里来
很多刚上手的朋友一提到PI就头疼,觉得Kp和Ki只能盲目试。其实MMC的控制对象相对清晰,可以用简化模型先算出一组基准值,再在仿真里微调。
电流内环的对象可以近似成一阶惯性环节,电抗器电阻和电感串联。取电流环期望带宽ωc,通常500到1000 rad/s,那么:
电流环比例系数 Kp ≈ 电感L × ωc 电流环积分系数 Ki ≈ 电阻R × ωc
按我上面给的5 mH、0.05 Ω参数,取ωc=700 rad/s,得到Kp约3.5,Ki约35。这个数值作为初值直接放进去,系统一般能稳住,再根据超调量和跟随速度微调。Kp调大会让响应变快,但过大时会放大噪声并引起振荡;Ki的主要作用是消除稳态误差,不要设到Kp的几十倍以上。
直流电压外环的带宽要远低于电流内环,否则外环输出会和内环产生谐振。我一般把直流电压环带宽设置在30到50 rad/s附近,PI参数用直流侧等效电容估算,再在仿真里根据直流电压动态波形调整。外环输出经过限幅后作为有功电流参考,这个限幅必须按系统允许的最大电流来取,不能给得太宽。
环流抑制器的参数不能用基波电流环那套直接套。二倍频环流在桥臂电抗上的等效阻抗约为2ωL,也就是3.14 Ω。比例控制时可以先用较小的Kp做基础,比如5到10,再并入谐振控制器提升100Hz增益。谐振项系数我通常从500试到2000,观察环流波形收敛情况,选择临界值附近再回退一点,做到“有抑制但不振”。
4.2 三相不平衡工况怎么设置,怎样判断控制效果
仿真里制造三相不平衡,不需要真的搭建复杂的故障模型,直接修改三相电压源的幅值和相位就够了。我首版设置的典型工况是A相电压幅值跌落到额定值的80%,B、C两相保持额定不变。这样不对称度大约在20%,既能明显看到负序影响,又不会让控制器在强不平衡下完全失去工作点。
电压源参数设置好以后,先从波形上做三件事来判断模型是否进入不平衡状态。第一,检查交流侧三相电流幅值是否一致,不一致说明负序电流没有被压住。第二,检查直流电压是否出现明显的100Hz波动,波动幅度越大说明负序功率冲击越严重。第三,检查三相子模块电容电压平均值是否存在系统性分离,分离明显说明相间功率平衡没有起作用。
更严谨的判断方法是用对称分量法在线计算并网电流的正序和负序分量,看负序dq电流的稳态值是否被控制到接近零。我习惯在模型里加一个监测模块,实时输出正序d/q电流和负序d/q电流,效果一目了然。负序电流抑制正常时,负序dq电流稳态值应该趋近于0,动态过程应在几个毫秒内收敛。
在调试顺序上,强烈建议先做对称工况整定,再把不平衡度加上去。对称工况下波形都调不好,直接上不平衡工况只会得到一堆叠在一起的振荡,根本分不清是电流环参数问题、锁相环问题、环流抑制问题还是均压排序问题。我自己的流程是:先空载调直流电压;再带载调正序电流环;然后叠加负序控制器;最后加环流抑制和相间功率平衡。每一步都有明确参照波形,出了问题也容易定位。
4.3 离散化、限幅与抗饱和的仿真细节
三相不平衡工况下的MMC模型对仿真设置比较敏感。首版建议采用固定步长离散仿真,控制代码也按离散系统来实现,比如电流环计算放在定时器中断里,每个控制周期触发一次。控制周期选择50微秒左右,对IGBT和电容电压控制来说是合理的,如果再用20微秒也能跑,但计算量会明显增加,调试效率下降。
离散化最大的坑是数字控制延时。实际控制系统从采样到PWM更新至少有一个控制周期的滞后,仿真模型如果完全忽略这个滞后,控制器参数边界会比真实系统宽很多,看起来调得很好的参数,上硬件后却振荡。因此我会在控制回路里显式加入一个单位延时环节,模拟“当前周期采样、下一周期输出”的效果,这样仿真结果更接近真实硬件。
限幅和抗积分饱和不能只在输出端做。电流环PI调节器的输出直接控制调制电压,如果不对输出限幅,负序分量叠加后很容易瞬间超出调制范围,波形发生削顶。更隐蔽的是积分器在限幅状态下继续累积,恢复后控制器要很长时间才能甩开饱和。解决办法是给积分器引入跟踪背计算:当PI输出到达限幅值时,暂停积分累加,或者把积分器反馈到限幅边界。我在三相不平衡仿真里反复栽过这个跟头,后来把每一层PI都做了抗饱和处理,波形才干净。
调制部分我采用最近电平逼近,子模块数只有6,电平数有限,波形会带少量阶梯谐波,但足以用来验证控制策略。子模块均压排序在每个控制周期执行一次,NLM和排序算法天然配合,不需要额外生成多路PWM载波,这也是初学者快速搭建MMC模型时比较推荐的方式。
5. 常见问题排查速查表与避坑心得
下面这张表是我做三相不平衡MMC仿真时踩过的问题和对应处理办法,直接整理成速查表,遇到类似现象可以先对号入座。
| 现象 | 可能原因 | 处理办法 |
|---|---|---|
| 交流电流三相幅值明显不对称 | 负序电流未抑制 | 增加负序dq电流环,参考值设0 |
| 正序dq电流出现100Hz脉动 | 正负序分离不彻底 | 改用延迟对消法或二阶广义积分器重构正序 |
| 锁相环输出相位抖动 | 锁相环输入混入负序分量 | 先提取正序电压再过锁相环 |
| 桥臂电流包络有100Hz振荡 | 环流抑制不足 | 加入100Hz谐振控制器,提高谐振点增益 |
| 环流谐振控制器高频振荡 | 谐振增益过大或数字延时未补偿 | 串联低通项,收敛谐振增益 |
| 同一桥臂内部分子模块电压发散 | 排序算法未结合电流方向 | 按充电/放电方向选择最低/最高电压模块 |
| 三相电容电压整体漂移 | 相间功率不平衡 | 叠加零序电压注入或调整基波环流 |
| 调试时不平衡度一加大就发散 | 控制器逐层未整定 | 先从对称工况调基础环,再逐步加不平衡 |
| 仿真运行一段时间电压缓慢爬升 | 积分器饱和或一致性误差 | 增加抗饱和逻辑,检查子模块损耗设置 |
还有一个很容易忽略的问题是封锁谐波观测下的环流基波分量。三相不平衡工况下,负序功率会导致相间交换附加基波环流,这个分量不是二倍频,如果只做100Hz谐振抑制,它仍然存在,相间电容电压照样会漂移。所以目标三中的相间功率平衡不能省,哪怕波形上看不明显,长时间运行后总会暴露出来。
最后分享一个小技巧:仿真中观察电容电压,不要只盯着瞬时值波形,而是分别计算每相六个子模块的平均电压,再三相放在同一个坐标显示。如果三条曲线趋势重合,说明相间功率平衡正常;如果三条曲线逐渐分开,问题基本锁定在负序功率分配。用这个视角去调试目标三,比看乱七八糟的毛刺波形要直观得多。
我个人做完这个项目的体会是,三相不平衡下的MMC控制,难点不在某一个独立控制器,而在多个控制目标之间的优先级协调。交流电流平衡、环流抑制、电容电压均衡,每一项单独拿出来都有成熟方法,但放到同一个系统里,它们会在桥臂电流、调制波、功率分配上互相影响。调试时不要贪心,把一个目标锁住了再动下一个,波形上的每一处异常都值得追问一句“它是哪种物理量在什么频率下的表现”。能把这个问题回答清楚,MMC仿真基本就算真正入门了。