基于Matlab的UPFC统一潮流控制器仿真建模与调参实战
做柔性交流输电系统FACTS仿真的朋友应该都有体会UPFCUnified Power Flow Controller统一潮流控制器是这一类装置里最不好啃的模型。它和SVC、STATCOM不一样SVC本质上是并联阻抗补偿STATCOM是并联电压源SSSC是串联电压源而UPFC把并联换流器和串联换流器通过直流母线背靠背耦合在一起既能给母线提供电压支持又能往线路上注入幅值和相角都可控的串联电压从而独立调节线路的有功潮流和无功潮流。这篇博文会用我在Matlab 2019a版本里搭建UPFC模型的完整经历把模型架构、控制策略、仿真参数和调试中踩过的坑从头到尾捋一遍。如果你正在做电力系统稳定分析、柔性输电方向的研究或者需要给论文补一个能跑出漂亮曲线的UPFC算例这篇文章应该能帮你少走不少弯路。我会尽量把每一步的思路和参数选择逻辑讲清楚而不是简单丢给你一个模型文件。1. 为什么碰这个模型UPFC的定位与建模前的思路梳理1.1 UPFC到底解决什么问题电力系统里有一个非常经典的问题并联输电线路之间的潮流分布不均衡。两条线路阻抗不同自然分配的潮流就不同阻抗小的那条容易过载阻抗大的那条又送不出电。传统手段无非是串联电容器、移相变压器、调压变压器这些但每一种都只能解决某一方面的问题——串联电容主要改变线路等效电抗移相器主要改变相位角调压器主要改变电压幅值。UPFC厉害的地方在于它把这些功能全包了。从原理上看UPFC可以等效成一个串联在线路中的可控电压源电压的幅值可以任意调相位可以在0到360度变化。只要这个注入电压存在线路两端等效的电压幅值差和相位差都会被改变于是有功潮流和无功潮流就能被独立控制。换句话说UPFC能做三件事调电压幅值、调相位角、调线路阻抗而且是连续、快速、双向的。做仿真研究时我们通常关注两个层面的价值一是稳态下把某条线路的功率精确控制到目标值比如让双回线各送一半功率二是动态过程中帮助系统快速恢复电压和功率平衡比如负荷突变或者线路故障后UPFC能撑住母线电压。理解了这两个目标模型怎么搭、控制器怎么设计就都有了方向。1.2 为什么选择Matlab 2019a做这件事我选用Matlab 2019a而不是更新的版本原因其实很务实。2019a的Simscape Electrical当时还叫SimPowerSystems/Specialized Power Systems对UPFC这种背靠背换流器结构支持非常成熟模块库里的VSC桥臂、耦合变压器、PLL、dq变换这些基础件都齐全而且网上能找到大量基于这个版本的教学模型和论文算例可以直接对照。新版本功能更多但模型封装方式和部分模块接口有变动在一些旧代码上反而容易出现兼容问题。另外一个原因是计算效率。Matlab 2019a在电力电子仿真上比较稳定ODE求解器对这类含开关器件的刚性系统支持不错而再早的版本比如2016、2017某些VSC模块的初始化逻辑不够完善容易在启动瞬间跳变。2019a这一代刚好处于一个成熟稳定的状态。如果你是学生或者研究所的工程师拿2019a跑UPFC仿真基本不会因为平台本身浪费太多时间。1.3 建模前需要想清楚的整体架构在打开Simulink之前整个模型的结构必须先在脑子里定下来。UPFC模型通常可以分成四块电网与输电线路、UPFC主电路两个VSC加直流电容、并联侧控制系统、串联侧控制系统。网格和线路是被控对象它的参数决定了UPFC需要多大的容量和电压等级。UPFC主电路是执行机构并联VSC通过耦合变压器接在母线上主要负责维持直流母线电压稳定同时可以对母线提供无功支持串联VSC通过串联变压器注入线路负责把线路潮流调节到参考值。控制系统的关系则是一外一内外环给出功率和电压的参考指令内环跟着指令调节电流。我最初犯过一个错误上来就把两个VSC的控制器混在一套逻辑里结果直流电压飘得不忍直视。后来才意识到UPFC能工作的核心前提是背靠背结构传递有功功率并联侧从电网吸收有功给直流电容充电串联侧从直流电容取有功注入线路。所以两个控制器必须各司其职并联侧优先管住直流电压和交流母线电压串联侧才去管潮流。这不是控制系统复杂不复杂的问题而是装置物理特性决定的。2. 模型拆解从主电路到控制系统的三层递进2.1 主电路拓扑的三种可选方案建UPFC模型主电路层级的选择直接决定了仿真速度和精度。我试过三种做法方案结构形式优点缺点适用场景A两个两电平VSC背靠背用IGBT开关模型PWM调制波形真实能看谐波和开关动态仿真速度慢控制器参数敏感研究谐波特性、阀组应力、调制策略B两个受控电压源替代VSC只保留直流电容动态算得快稳定性好忽略开关谐波动态精度略差研究潮流控制、功率调节和系统级交互C在B的基础上把直流电容简化成常数电压源速度最快无法模拟直流电压波动对控制的影响控制策略级快速验证和教学演示我最终的模型选择是方案A和B结合先用B方案验证控制策略和参数确认逻辑没问题后再换成A方案跑精细结果。真正陷入麻烦的往往是方案A的启动阶段这个后面在常见问题里详细说。两条VSC的容量分配也值得注意。并联侧VSC的容量通常设计得比串联侧大一些因为并联侧除了要提供串联侧所需的有功功率还要支撑母线无功。常见的容量配比是并联侧容量等于系统额定容量的40%50%串联侧容量在20%左右。我的测试系统设定并联侧VSC容量为30MVA串联侧为20MVA这样既保证直流电压有足够的调节余量又不至于让模型过于笨重。2.2 并联侧控制稳住直流电压和交流电压并联侧控制器的目标有两个维持直流母线电压恒定以及维持并联母线交流电压恒定。这两个目标本质上对应着换流器与电网交换的有功和无功交换有功控制直流电压交换无功控制交流电压。控制结构是典型的双环。外环是两个PI调节器直流电压参考值与实测值的偏差经PI后输出d轴电流参考值交流电压参考值与实测值的偏差经PI后输出q轴电流参考值。内环则是电流解耦控制把d轴和q轴的电流误差经PI后生成调制电压指令并且加上电网电压前馈和交叉耦合补偿项。最终得到的d、q轴调制电压经过反Park变换和PWM调制生成VSC桥臂的开关信号。整套控制在dq同步旋转坐标系下进行基准角度来自PLL锁相环。这里有一个关键的参数选择逻辑外环响应速度一定要慢于内环通常内环带宽是外环的5到10倍。否则内环跟不上外环的指令变化整个控制会震荡。我用的一组典型参数是以标幺值系统为基础的内环Kp5、Ki500直流电压外环Kp0.8、Ki40交流电压外环Kp1.2、Ki60。这组参数在多数中等容量模型里都能稳定工作需要微调时先调外环Kp再动Ki不要一上来就乱改内环。2.3 串联侧控制独立调节有功与无功潮流串联侧是UPFC最有特色的部分。它通过串联变压器向线路中注入一个可控的串联电压改变线路潮流。现实中控制目标有两种实现思路一种是直接控制注入电压的幅值和相角开环式另一种是功率闭环控制。我推荐做功率闭环因为更贴近实际工程需求。给定线路有功参考值Pref和无功参考值Qref用线路实测的有功P和无功Q与之比较两个偏差分别经过PI调节器输出串联电压在d轴和q轴的参考分量。这个电压参考值再经过限幅、反变换和PWM调制控制串联VSC的输出。注意这里有个非常容易搞错的点线路有功P和无功Q的测量位置选在哪里直接决定了控制器的稳定性。如果测量点选在串联变压器之前线路潮流中包含了UPFC注入的影响控制会有一定滞后如果选在串联变压器之后则是纯线路本身的功率。我在实际调试中发现测量点取在线路受端远离UPFC一侧效果最好因为那才是电网调度真正关心的关口功率。测量位置一旦改变PI参数也要跟着重调不要指望一组参数走天下。串联侧PI参数也给一个参考基准有功外环Kp0.02、Ki1.0无功外环Kp0.02、Ki1.0内环电流参数与并联侧一致。这个参数的物理含义是线路功率的稳态误差为零但动态过程不允许太快因为串联注入电压幅值有限。限幅器一般限制在额定注入电压的1.1倍左右超过这个幅值不仅没有实际意义还会让PWM过调制波形严重畸变。3. 实操过程在Simulink里一步步搭出UPFC3.1 全局环境与求解器设置搭建的第一步先建一个空的Simulink模型配置仿真环境。用Matlab 2019a的Simscape Electrical模块库时在Simulink模型窗口里打开Model Configuration ParametersSolver选择ode23tb最大步长设成0.5ms相对容差设为1e-3。不要用默认的变步长ode45那种求解器在含IGBT开关的模型里几乎必然卡死或者发散。同样的原因我建议在模型开发阶段先跑离散模式。选择discrete solver固定步长50微秒PWM载波频率设为2000Hz。离散模式速度快、结果确定性好调试起来心智负担小。把控制策略验证得差不多了需要精细谐波分析时再转回连续求解器ode23tb把最大步长缩到10微秒以下这样仿真结果更细腻但耗时明显增加。还有一个细节是单位系统。模型里强烈建议使用标幺值pu系统。电源、变压器、线路都按pu设定控制器里的PI参数也是基于pu的这样参数整定才能有通用性。直接用国际单位制V、A、Ω搭建也不是不行但每次换一个系统容量都要重新算PI参数非常痛苦。我在第一次搭建时就用SI单位结果从300MW系统换到500MW系统整套控制器参数又要重新调浪费了大量时间后来全部改成pu才一劳永逸。3.2 主电路搭建要点电网部分我用Three-Phase Source模拟送端和受端系统送端电源220kV、50Hz受端电源220kV、50Hz相位差30度。这个相位差代表线路传输约300MW的初始功率给UPFC一个明确的调节空间。两条线路用PI Section Line模块单回长度100km正序电阻0.02Ω/km、电感1mH/km、电容10nF/km。UPFC主电路按背靠背拓扑搭建并联换流器通过耦合变压器接在送端母线串联换流器通过串联变压器串入线路。两个VSC用Universal Bridge模块三相桥IGBT/Diodes选项直流侧公用一个电容组。直流电压参考值我设定为40kV直流侧电容选择3000μF。电容值的选取不是拍脑袋的。经验公式大概是这样电容需要支撑直流电压在功率阶跃时保持稳定波动范围一般控制在5%以内。能量关系是0.5C(Vdc_max^2 - Vdc_min^2) P_seΔt_step。以串联侧传输20MW、动态响应时间常数约50ms、直流电压允许跌落到38kV计算0.5C*(40k^2 - 38k^2) 20M*0.05解出来C约为2600μF取整选3000μF是合理的。电容太小动态压降大控制容易失控电容太大成本高且充电时间变长。变压器参数上耦合变压器并联侧和串联变压器都是220kV/35kV漏抗0.1pu接线组别D11/Yg。串联变压器的变比不能随便设它决定了串联注入电压能达到的最大幅值我按串联侧VSC直流电压40kV、采用SPWM最大调制比为1推算出35kV交流侧电压留了20%的补偿裕量。3.3 控制系统搭建与封装细节控制系统我分别封装成两个子系统Shunt Control和Series Control然后在每个子系统内部再分内外环子模块。这样搭建的好处是便于调试还能避免Simulink里信号线缠绕成蜘蛛网。并联控制子系统的实现流程是用Three-Phase V-I Measurement测母线电压和VSC进线电流先经Park变换转成d、q分量。PLL模块Simscape Electrical自带的Three-Phase PLL输出θ作为坐标变换基准角。外环模块把Vdc_ref与Vdc实测的误差以及Vac_ref与Vac实测的误差分别送进两个PI调节器得到id_ref和iq_ref。内环模块计算Vd_mod (id_ref - id)PI Vd - ωLiqVq_mod (iq_ref - iq)PI Vq ωLid实现前馈解耦。Vd_mod和Vq_mod反Park变换成三相调制波送Three-Phase PWM Generator载波2000Hz输出6路脉冲给并联VSC。串联控制子系统的流程类似区别在于外环输入是Pref和Qref与线路实测P和Q的误差输出的是串联电压的Vd_se_ref和Vq_se_ref然后再加上限幅器、反变换和PWM。这里有一个提示串联侧PWM的调制波必须有合理的幅值限制限幅器我设在1.1pu超过就饱和防止PI积分饱和导致控制发散。另外串联侧的d、q轴基准也需要和PLL角度一致但要注意串联电压参考坐标和线路电流坐标之间的相位关系方向搞反了会出现正反馈。% 下面是我在Matlab命令行里设定控制器参数时写的一段脚本方便整体管理 Vdc_ref 40e3; % 直流电压参考值 Vac_ref 1.0; % 并联母线电压参考值(pu) Pref 2.8e8; % 线路有功目标值 280MW Qref 0; % 线路无功目标值 0Mvar Kp_idc 5; Ki_idc 500; % 并联内环电流PI Kp_vdc 0.8; Ki_vdc 40; % 直流电压外环PI Kp_vac 1.2; Ki_vac 60; % 交流电压外环PI Kp_ise 5; Ki_ise 500; % 串联内环电流PI Kp_pref 0.02; Ki_pref 1.0; % 有功功率外环PI Kp_qref 0.02; Ki_qref 1.0; % 无功功率外环PI3.4 跑出来的典型仿真结果模型搭好后仿真时间先设为1.0s在t0.2s投入并联侧控制t0.4s投入串联侧控制。这样分步投入的目的是避免两台换流器同时启动导致直流电压剧烈振荡。投入并联侧控制后直流电压在0.2s处开始上升大约0.25s后稳定在40kV附近稳态误差几乎为零。母线电压保持在1.0pu说明并联侧的无功补偿功能正常。在t0.4s投入串联侧控制后线路有功从初始自然潮流约250MW爬升到参考值280MW调节过程大约0.1s没有明显超调。无功Q从初始约20Mvar被压到接近0Mvar说明无功也实现了独立控制。看波形时有一个值得注意的点有功和无功并非完全解耦有功阶跃瞬间无功也会跟着抖一下这是由线路阻抗特性和dq轴耦合决定的完全解耦在实际系统中不可能达到完美。曲线里有一点短暂的小波动很正常只要在0.2秒内恢复到稳态即可不必追求教科书式的理想解耦波形。4. 仿真中的坑与排查方法4.1 不收敛问题一半以上的时间都耗在这了UPFC仿真中遇到最多的就是数值不收敛。总结下来大概有四种典型表现仿真直接报错停止、波形剧烈发散、直流电压初始化失败、或是PWM输出异常。我遇到最典型的一次是模型在t0处就报Differential algebraic loop检测错误。原因是我在测量电压电流后没有加延迟单元又直接用于PWM调制形成了代数环。解决方法是在测量信号和控制信号之间加一个Memory模块或者把离散求解器的采样时间设成固定值。另一种常见情况是变压器和VSC开关组合产生数值突变导致ode23tb被迫缩小步长到纳秒级仿真几乎走不动。这时先检查并联变压器和串联变压器的激磁支路参数把激磁电阻和电感设为默认的1e6和1e6即可不要为了追求精确而设置过小否则高频数值分量会让求解器崩溃。直流电容的初始电压设置也极其重要。如果直流电压初始值为0启动瞬间PWM调节器会试图瞬间建立40kV产生的冲击电流可能让仿真直接发散。我在电容模块的Initial Voltage参数里直接设成0.9倍的参考值也就是36kV让控制器从比较接近工作点的地方开始跟踪启动过程会平滑很多。4.2 参数整定的经验流程UPFC这么多PI调节器参数怎么整定是个大问题。我的经验是从内环往外环先电流环后电压/功率环逐个投入而不是一次性全部加上。先把所有外环的参考值设成常数手动给id_ref和iq_ref一个测试值观察电流内环能不能快速跟踪。电流环PI的整定可以用经典的对称最优法估算零点和极点位置但实际在仿真里直接看阶跃响应更快Kp调大到电流出现小幅振荡时再回调40%Ki再慢慢加到稳态无差。电流环稳定后再投入外环。直流电压外环整定时给一个直流电压参考值阶跃观察超调量一般控制在10%以内调节时间在0.1~0.2秒。如果直流电压振荡优先降低外环Kp如果稳态误差去不掉再提高Ki。串联功率外环是最难调的因为它和被控的线路参数强相关。我这里提供一个实用的调参顺序先开环手动设置一个串联注入电压观察线路潮流对注入电压的响应用这个响应的稳态增益来估算功率环的Kp初值然后投入闭环观察Pref阶跃响应微调。直接拍脑袋给参数往往会导致功率环发散。4.3 常见故障现象速查表故障现象可能原因处理办法仿真一开始就代数环报错测量信号与控制信号直接相连形成循环加Memory或单位延迟模块直流电压发散无法建立电容初始电压为0、并联侧未先启动设初始电压为参考值90%分步投控制直流电压振荡衰减不掉直流电容偏小或电压外环Kp过大增大电容值或降低KpKi保持线路有功跟踪不上参考值串联注入电压到限幅值、功率外环PI不合适检查限幅器是否饱和按前述顺序重调PI有功阶跃时无功剧烈摆动测量点位置不当或d轴q轴解耦不足测量点改到线路受端检查前馈项符号PWM波形明显削顶畸变调制波幅值超过载波幅值增加限幅检查直流电压是否偏低串联侧投入后反而送不出功率串联变压器变比或同名端接线方向错误核对注入电压极性和线路潮流的相位关系模型运行极慢连续求解器步长太小或开关数量过多转离散50μs低压器件用平均模型代替这张表里的每一条都来自我实际踩过的坑不是从文档里抄来的。特别是最后一项串联侧投入后反而送不出功率这个案例我印象很深变压器接线同名端标错串联电压反相180度理论上应该助增潮流的注入电压反而变成了制动电压。排查时在波形里看到P大幅下降还以为控制器参数错了后来逐相核对电压相量才发现是接线方向反了。搭模型时一定要把变压器同名端标识看仔细对比设计图一步步核别凭感觉接。5. 后续还能往哪扩展模型跑通之后我建议你在这个基础模型上继续做一些扩展研究。比如把固定参考值改成动态参考值模拟风电出力波动或者负荷突变时UPFC对潮流的实时调节效果再比如叠加一个三相短路故障观察UPFC在暂态过程中的响应特性也可以进一步把两个VSC替换成MMC模块研究模块化多电平结构下的UPFC控制策略。我个人实际使用中最有价值的一个扩展是把UPFC模型接入一个双馈风机并网系统看它能不能压制风机出力波动引起的母线电压闪变和线路功率振荡。这个方向做起来工作量不小但会极大提升模型的工程实用价值。如果你的时间有限至少把两个VSC的控制器模块封装成可复用的库文件这样后面任何项目要用UPFC都能直接拖进来改参数不用再搭一遍。另外Matlab 2019a环境下的PWM发生器性能一般如果你对波形质量有更高要求可以自己写一个SVPWM模块替代默认的SPWM。我在对比实验中发现SVPWM的直流电压利用率比SPWM高约15%这意味着同样的直流电压能支撑更高的串联注入电压幅值UPFC的功率调节范围会进一步扩大。这个改动带来的收益还是比较明显的。