聊到统一潮流控制器(UPFC),搞电力系统的人都知道它是FACTS家族里功能最全的一个,既能调电压、调相位,又能调无功、调线路阻抗,说它是输电线路上的“全能选手”一点不过分。但真正动手在Simulink里搭一套基于VSC的UPFC模型时,很多人会卡在几个地方:两个电压源换流器怎么协调、直流母线电压怎么稳住、串联侧注入电压怎么和线路潮流捆绑起来。这篇文章就围绕VSC型UPFC的建模与控制,把从原理到参数整定再到常见坑的全过程梳理一遍,适合正在做柔性输电课题的研究生、要用潮流控制器做仿真验证的工程师,以及想把电力电子和电网仿真串起来的Simulink初学者。全程不讲虚的,直接按我平时搭模型的思路来。
1. UPFC的核心原理:为什么要用VSC来实现
1.1 从输电瓶颈说起
电力系统里最头疼的问题,不是没有电,而是电能不能按你想的方向和数量送。潮流这东西,本质上由线路两端电压幅值、相位差和线路阻抗共同决定,而电网运行时这些量并不是完全可控的。传统手段里有并联电容器补偿无功、串联电容器补偿感抗、移相变压器调整相位角,但它们都只解决一部分问题,而且动作速度慢、调节范围有限。UPFC的思路很直接:我不去改电网的物理结构,而是在线路上主动注入一个幅值和相位都可调的串联电压,再配合并联侧的无功调节,相当于给线路装了一个“可控电压源+可控电流源”的组合,从而同时干预有功潮流和无功潮流。
这个思路看起来简单,真正实现起来核心就是换流器。早期用晶闸管构成的电流源型换流器(LCC)也能实现类似功能,但它需要交流系统提供换相电压,响应速度也跟不上现代电网对快速调节的要求。后来IGBT等全控型器件成熟,电压源型换流器(VSC)成了首选。VSC型UPFC的好处在于:有功和无功可以解耦控制,反应速度快,而且不需要外部电网“帮忙”换相,弱系统甚至孤网都能带。
1.2 VSC与传统换流器相比的三个关键优势
VSC能成为UPFC的主流方案,我认为有三个原因必须搞清楚。
第一个是控制灵活性。VSC采用PWM调制,通过控制IGBT的导通和关断时刻,可以独立控制交流侧输出电压的幅值和相位,于是注入电压的d轴、q轴分量就能分别对应到有功和无功的控制目标。第二个是响应速度。IGBT开关频率在几千赫兹,控制带宽能做到几百赫兹,比晶闸管相控方案快一到两个数量级,这对抑制线路功率振荡特别重要。第三个是交流侧特性,VSC输出的电压波形通过PWM逼近正弦,谐波主要集中在开关频率附近,用一组小容量滤波器就能处理干净,不像LCC那样需要庞大的谐波补偿装置。
还有一个容易被忽略的点:VSC的直流侧电压极性不反转,有功功率翻转时直流电流方向改变即可,这为UPFC两个换流器背靠背共享直流母线提供了极大便利。如果换成LCC,直流侧要改变电压极性,串联和并联换流器之间的功率交换设计会复杂很多。
1.3 UPFC的功率平衡与四象限运行
UPFC的结构一句话就能说清:一台VSC并联接在母线上,另一台VSC通过串联变压器串入线路,两台换流器共用一组直流电容。并联VSC的主要任务是维持直流电压,同时可以对母线发无功;串联VSC的任务则是向线路注入一个幅值相位可变的电压相量。
关键来了:串联VSC注入电压后,会与线路电流发生相互作用,产生有功功率交换。这部分有功功率既不能凭空消失,也不能凭空产生,必须由并联VSC从交流电网侧吸收或送回,通过直流母线传递。所以UPFC内部存在一条“有功走廊”:串联侧缺的有功从直流电容取,直流电压下降,并联侧检测到后自动从电网补充;串联侧多余的有功送到直流侧,直流电压升高,并联侧再把多余的有功送回电网。整台装置就像两个背靠背的“水泵”,一个往管道里注水,另一个负责维持水池液位。
控制目标也就清晰了:并联VSC守住直流电压和母线无功,串联VSC跟踪线路有功、无功指令。两者在电气上解耦,在功率上耦合。很多仿真模型调不通,往往就是没理解这个耦合关系,后面我会专门讲这坑。
2. 仿真模型整体设计:从系统拓扑到参数标定
2.1 双端供电系统拓扑怎么搭
我在搭模型时不会一上来就堆模块,而是先画一张系统单线图,把电压等级、线路长度、负荷位置和UPFC接入点标清楚,然后按等值模型的思路在Simulink里实现。先交代我常用的算例:一个220kV双端供电系统,电源E1和E2分别代表两个区域电网,中间两条并联线路L1和L2,其中L2上装设UPFC,负荷集中在一个220kV母线上。
具体参数我列个表,方便你直接抄作业:
| 元件 | 参数值 |
|---|---|
| 电源E1/E2 | 220kV,50Hz,短路容量3000MVA |
| 线路L1 | 80km,R=2.1Ω,L=0.08H |
| 线路L2 | 100km,R=2.6Ω,L=0.10H |
| 负荷 | 200MW+j80Mvar |
| UPFC额定容量 | 100MVA |
| 并联/串联变压器 | 220kV/40kV,漏抗0.1pu |
| 直流母线电压 | 60kV |
| 直流电容 | 1000μF |
| VSC开关频率 | 1980Hz |
电源用Three-Phase Source模块,内阻抗按短路容量折算,220kV等级下基准阻抗是220²/3000=16.1Ω,X/R取10,内阻大约1.6Ω+j16Ω。线路用三相集中参数RLC串联支路,忽略对地电容,因为100km以下的输电线路在潮流分析中电容影响不大。负荷用Three-Phase Series RLC Load,直接设成恒功率负荷。
UPFC的接入点我建议放在L2的受端母线侧,也就是靠近负荷的那一端。这样串联变压器串入线路,并联变压器接在受端母线上,物理意义清晰,控制器设计也直观。
2.2 换流器与变压器参数怎么定
VSC是整个UPFC的核心,我习惯在Simulink里用Universal Bridge模块选IGBT/Diode类型,内部详细开关模型,而不是用平均值模型。原因很简单:既要研究潮流控制,又要看暂态波形,平均值模型虽然仿真快,但PWM谐波、直流电压纹波这些细节全被滤掉了。
变压器变比的选取有个关键逻辑。VSC交流侧输出的线电压有效值Uac与直流母线电压Udc之间满足关系:Uac≈0.612×m×Udc,其中m是调制比,正常范围0.7~0.95。如果我设定Udc=60kV,调制比取0.9,那换流器交流侧线电压大约是33kV,所以我选了40kV作为变压器二次侧电压,留出调制比余量。并联变压器用220kV/40kV,串联变压器同样用220kV/40kV,这样两个VSC的交流侧规格一致,控制器的标幺化处理也省事。
漏抗取0.1pu,这个值既起到限制短路电流和滤波的作用,又不至于让换流器输出电压损耗过大。串联变压器的容量按UPFC额定容量100MVA选,并联变压器可以稍小一些,因为并联侧主要承担的是有功功率传递和无功输出,但我习惯两边取同容量,省得模型里还要单独校验变压器过载。
2.3 控制策略总体架构:外环/内环分工
UPFC的控制架构我把它拆成两层:外环定目标,内环抓落实。并联VSC的外环是直流电压控制和无功控制,直流电压指令设60kV,无功指令设0Mvar(也可以设成向母线发一定无功);外环PI的输出作为内环d轴和q轴电流的参考值。串联VSC的外环则是线路有功潮流和无功潮流控制,P_ref和Q_ref根据你要研究的工况设定,外环PI输出是串联VSC需要注入的d轴和q轴电压参考。
内环一律用电流环,这是VSC控制的经典做法。电流内环的快动作可以抑制电网扰动带来的电流冲击,外环只管慢变量,带宽差5~10倍,这样整个系统不会互相打架。两个VSC的电流内环解耦控制公式是一样的,区别只在参考值来源不同。
控制器里的坐标变换全部用d-q旋转坐标系。电网电压矢量定位在d轴上,q轴超前d轴90°,这样有功电流对应d轴,无功电流对应q轴,PI控制解耦就自然完成了。这个坐标系方向如果搞反,后面所有控制量都会乱,我见过太多模型因为Clark变换矩阵的系数写错导致潮流反向的。
3. 核心环节实现与Simulink细节
3.1 PLL与dq变换:控制的第一步是找到坐标系
VSC控制的第一步不是PID,而是锁相环。电网电压的相位角必须准确锁出来,才能把三相测量量变换到d-q轴。在Simulink里,我直接用Specialized Power Systems库里的PLL模块,输入是母线三相电压,输出是角频率和相位。有一点要注意:PLL输出的是0~2π的斜坡相位,默认初始相位是从A相电压过零点开始计,如果你的变压器接线组别带了30°相移,PLL锁出来的角度也要跟着补偿,否则控制参考坐标系和电网实际坐标系错位30°,潮流指令会莫名其妙偏掉。
d-q变换的搭建,早期版本里很多人自己写函数模块,我建议直接用库里的abc_to_dq0 Transformation模块,省得自己记公式容易错。如果非要用Selector从三相电压数组里取单相信号,一定要确认数组维度和顺序,Simulink里三相测量模块输出的通常是按abc排列的向量,Selector从第1维取就是A相,别取反了。实际测量信号进了控制器之后,我会再串一个低通滤波或者Rate Limiter,因为开关谐波会污染测量值,导致PI控制器输出抖得厉害。
PLL参数整定也有技巧,比例系数初始取50~100,积分系数取比例系数的1/10左右,响应速度对50Hz系统来说足够,又不至于把谐波放大。调好PLL之后,先单独跑一个开环工况,看d轴电压是否等于母线相电压幅值、q轴电压是否趋近0,这两条对上了,坐标系就建对了。
3.2 并联VSC控制:定直流电压与定无功
并联VSC的控制目标很明确:把直流电压Udc稳定在60kV,同时按无功指令向母线提供无功。直流电压外环的误差信号经过PI控制器后输出d轴电流参考id_ref,无功外环的误差输出q轴电流参考iq_ref。为什么直流电压环对应d轴呢,因为直流电压要靠有功功率来调节,而有功功率在电网电压定向的坐标系下正好由d轴电流决定,这个对应关系不能搞错。
电流内环的输出是d轴和q轴的电压参考值,然后需要加入解耦项和电网电压前馈,公式是:Vd_ref = -ωL×iq + Vd_grid + ΔVd,Vq_ref = ωL×id + Vq_grid + ΔVq,其中ΔVd和ΔVq是电流PI的输出。这个解耦补偿如果漏掉,d轴和q轴会互相干扰,电流环的带宽再高也压不住。
我在Simulink里的做法是:电流误差直接进PI控制器,PI输出后做解耦计算,再接一个限幅器,把调制电压限制在±1pu以内,然后做Park逆变换得到三相调制波,送入PWM Generator。并联VSC的无功指令设定时,如果母线电压本身偏高,我会设成0Mvar甚至感性吸收,即负无功,避免并联VSC推高母线电压。
3.3 串联VSC控制:有功/无功潮流调节
串联VSC的控制才是UPFC的精髓。它通过串联变压器向线路注入一个电压相量,线路的传输功率公式可以写成P≈(U1×U2/X)×sinδ,其中δ是两端电压相位差,注入电压改变了等效的电压幅值和相位差,也就改变了线路潮流的自然分布。
控制回路上,我测量串联变压器所在线路的有功P和无功Q,与给定值P_ref、Q_ref做差,分别经过PI控制器得到需要注入的d轴电压Vd_inj和q轴电压Vq_inj。这里的外环PI和被控对象的关系是:注入电压变化→线路电流变化→线路功率变化,本质上是一个电压源对一个R-L对象起作用,所以外环PI的整定不能直接套用电流环的公式,需要把线路阻抗和串联变压器漏抗也折算进去。
我一般先做稳态调试:给一个P_ref增量,观察线路有功是否能平稳跟踪到新指令,同时直流电压不能掉太多。如果P响应慢,加大外环比例;如果出现超调振荡,减小积分作用。调试通过后再做暂态测试,比如在t=2s时把P_ref从200MW提高到250MW,看UPFC能否在0.2s左右完成调节。这里多说一句,串联侧注入电压的最大值要按UPFC容量折算,我100MVA的装置在220kV线路上,最大可注入电压大约按0.15pu去限幅,也就是220kV×0.15=33kV,限幅器必须加上,否则控制器会要求在物理上根本实现不了的注入电压。
3.4 PWM触发与变压器接线细节
VSC最终的执行环节是PWM。Simulink的PWM Generator模块输入三相调制波和载波频率,输出六路门极信号给Universal Bridge。载波频率我取1980Hz而不是2000Hz,是为了避开50Hz的整数倍,防止载波谐波与基波产生拍频现象。
换流器交流侧需要串联一个小的进线电抗器,它与变压器漏抗共同构成电流环的被控对象电感。我习惯把漏抗折算到VSC侧(40kV侧),100MVA下基准阻抗Zb=40²/100=16Ω,0.1pu漏抗就是1.6Ω,换算到电感量是1.6/(2π×50)=5.1mH。进线电抗器再取5mH左右,电流环等效电感大约10mH,这个数值后续整定电流环PI时直接能用。
变压器接线组别我选Ynd11,原边(220kV侧)星形接地,副边(40kV侧)三角形接法,这样可以给换流器产生的零序电流提供通路。接线组别的相移问题前面提过,PLL角度要按变压器相移修正。另外串联变压器的励磁支路在暂态仿真里会产生尖峰电压,变压器模块里记得勾选Saturation,否则励磁涌流工况下仿真容易发散。
4. 参数计算与PI整定经验
4.1 交流侧电抗与直流电容的计算
交流侧电抗的选择有两方面考虑。从电流环角度看,电感值越大,电流纹波越小,但电流环的动态响应越慢;从短路电流角度看,电感又起到限制换流器输出短路电流的作用。工程上取0.1~0.2pu是比较平衡的区间,我取0.15pu总电抗,拆成变压器漏抗和进线电抗器各一部分。
直流电容的选取可以用能量法估算。电容储能与UPFC额定容量之间的关系为:τ=C×Udc²/(2×S),τ是等效时间常数,代表电容储能相对于功率等级的惯性大小。若取S=100MVA、Udc=60kV,要求τ≥3ms,代入公式C=2×S×τ/Udc²=2×100e6×0.003/(60e3)²=166μF。但这个值只是理论下限,实际为了限制直流电压阶跃和纹波,我通常取计算值的5~10倍,所以选1000μF。直流电容太大也有问题,电压环响应变慢,动态工况下电压恢复困难,所以这个值并不是越大越好。
4.2 PI参数整定的土办法加理论校验
我整定PI参数时,先按理论公式给出初值,再在Simulink里微调。电流内环的对象是R-L串联回路,取前面计算的电感L=10mH,电阻R取电抗的0.02pu也就是0.32Ω。按典型I型系统整定,令PI的零点抵消极点,即ki/kp=R/L,则开环传递函数近似为kp/(Ls)。设定电流环闭环带宽ω_bw=500rad/s,则kp=L×ω_bw=0.01×500=5,ki=R×ω_bw=0.32×500=160。
外环带宽取内环的1/5~1/10。电压外环的对象是直流电容,约等于一个积分器,I=C/(2×S/Udc)=1000μF×(60kV)²/(2×100MVA)=?直接说结论,电压环PI我习惯调成Kp=10~20、Ki=100~200,具体值要看直流电压响应波形。无功外环同理,带宽取电流环的1/5。调参的土办法是:先只加比例,从小到大逐步加,直到被控量出现等幅振荡,然后把这个Kp除以2作为最终比例值,再加积分项,积分时间常数取比例项对应时间常数的5~10倍。
4.3 仿真步长与求解器选择
Simulink里电力电子仿真跑不动或跑出来波形怪异,八成是求解器设置问题。UPFC模型里有IGBT开关,属于刚性系统,我建议用离散仿真,Powergui模块里选择离散求解器,仿真步长设为1~2μs。步长太大,PWM开关动作细节丢失,直流电压纹波和电流尖峰全失真;步长太小,仿真时间成倍增加,一个100ms工况可能跑几十分钟。
如果模型里含高频变压器、电缆分布电容等小时间常数元件,离散仿真在电磁暂态上会不准,这时候才考虑用连续求解器和ode23tb这类刚性积分器。但连续仿真在IGBT开关动作瞬间要重新积分,速度很慢,非必要不用。我自己最常用的配置是:离散求解器、步长2μs、仿真时长2~3s,足够观察稳态和暂态过程。
5. 常见问题排查实录
5.1 潮流调不动:坐标系和方向有偏差
群里经常有人问“UPFC搭好了,P_ref从200MW改成300MW,线路功率纹丝不动”,我遇到这个问题的次数最多。先别怀疑PI参数,先用示波器看内环电流指令id_ref和实际id是否跟随。如果id_ref变了而id没跟着变,问题在电流环;如果id和id_ref都变了但线路P不变,那就是测量点或者功率计算方向错了。
我踩过的两个典型坑:一是PLL锁出来的相位角初始值没对准,d轴电压不是幅值而是带了很多q轴分量,控制器的解耦前馈完全失效;二是串联变压器接线组别导致的30°相移没补偿,注入电压的方向算偏了,相当于想把车往北开但方向盘偏了30°。排查手段很直接:把UPFC摘掉,让线路自然送电,记录此时P和Q数值,然后投入UPFC且设定P_ref等于自然功率,看直流电压是否出现有功波动,如果直流电压一直掉,说明串联侧和并联侧的有功功率方向配错了。
5.2 直流电压失控:两个换流器有功没平衡
直流电压往上飙或者往下掉的本质,是串联VSC和并联VSC之间的有功传递失去了平衡。串联VSC注入电压后和线路电流发生有功交换,如果线路潮流大、注入电压大,直流侧会出现大功率波动,而并联VSC的直流电压外环带宽有限,来不及补充或吸收,Udc就会跑偏。
我在做100MW功率阶跃时遇到过Udc从60kV一路涨到75kV的情况,原因就是电压环PI参数太保守。解决办法有两个方向:一是降低功率阶跃幅值,逐步逼近目标;二是加快电压外环响应,把电压环带宽从50rad/s提高到120rad/s左右,对应增加Kp。同时检查直流电容是否有初始电压,Powergui的初始化如果不设Udc=60kV,仿真一开始电容充电就会引发很大的冲击电流,很多“跑几分钟就崩”的问题其实出在这里。
5.3 三相断路器“没反应”怎么办
不少人在给模型加短路工况时,发现Three-Phase Breaker明明触发了,线路电流却没变化,这个问题我特意提一下。断路器模块有一个Switching of internal variables的选项和外部控制端,如果外部控制信号没接对,模块不会执行分合闸。检查两点:控制信号必须是物理信号或者Simulink逻辑信号,且Simulink信号要经过Signal Conversion转成Physical Signal才能接到断路器端口,这个转换模块很多人漏掉;另一个是断路器初始状态和跳闸时间设置,比如你想在t=2s跳闸,模块里要填切换时间表,不是只在外部给阶跃信号就行。
另外,断路器断开线路之后,串联变压器的电流突然变成0,串联VSC会失去功率通路,直流电压瞬间冲高,这时候一定要给串联VSC加限流或旁路逻辑,否则断路器动作后紧接着就是仿真发散。
5.4 波形发散与数值振荡的排查顺序
仿真跑着跑着波形变成“毛刺堆”或者干脆发散,我有一套固定的排查顺序。第一步看步长,把仿真步长从原来的值缩小一半试跑,如果波形明显变好,就是步长过大;第二步看测量模块,Three-Phase V-I Measurement的输出直接进控制器时,开关谐波会混进来,在测量信号后面加一阶低通或使用RMS模块延迟匹配;第三步看解耦项,确认ωL乘的是实际电流值而不是PI输出值,这两处反了电流环会自激;第四步看限幅器,所有PI输出都必须限幅,否则积分饱和后恢复不了。
我调模型时习惯在关键点加To Workspace记录数据,一旦发散能快速定位是哪个环节先爆。用MATLAB脚本批量跑几组PI参数,把Udc波形、线路P波形拉出来对比,比在Simulink界面里一次一次手动试高效得多。
最后再分享一个我做UPFC模型迭代时的小习惯:模型版本按“日期-工况-控制方案”命名,每调通一个工况就另存一版,参数改动记录在模型的Description字段里。这样后面回溯问题时,能清楚知道哪个改动引起了什么变化。官方文档里其实也有UPFC相关demo,直接在MATLAB命令窗口搜索UPFC关键词能看到,第一次搭模型前花半小时把官方demo跑一遍,比从零开始撞坑省太多时间。