一台发电机经双回输电线路往大电网送电电网侧的电压和频率几乎纹丝不动——这种“单机无穷大系统”虽然模型简单却是电力系统暂态稳定性仿真里最经典的一块试金石。我这里要研究的场景很具体线路发生两相接地短路时故障持续几百毫秒发电机的转速会怎么变系统能不能在这段时间之后重新恢复稳定。这个仿真用Simulink来做最直接不用自己从零推导和求解微分方程图形化搭电路、配置故障模块、看波形一套流程下来你就能直观感受到“暂态稳定”这四个字到底意味着什么。这篇文章面向两类人一类是正在学电力系统分析、需要完成课程设计或毕业设计的学生另一类是刚接触电力系统仿真的工程师想快速掌握用Simulink研究暂态稳定性的完整思路。我会从模型背后的物理逻辑讲起再逐步拆解Simulink的搭建细节、参数设置、故障配置、结果分析和常见坑尽量做到你照着走一遍就能跑出转速变化曲线。1. 单机无穷大系统与暂态稳定性先想明白再动手1.1 无穷大母线到底“无穷大”在哪里很多初学者第一次听到“单机无穷大系统”都会觉得奇怪世界上哪有真正无穷大的电网这里说的是一种工程近似。在研究一台发电机对电网的影响时如果电网容量比这台发电机大得多那么无论这台机怎么折腾电网侧的电压幅值和频率几乎都不变就像一条河往大海里注水海平面不会因此上涨。Simulink里模拟这个“大海”很简单用一个Three-Phase Source交流电压源就能实现电压设为1.0 pu频率固定内阻抗设得极小即可。你不需要真的把整张电网搭进去因为它不是我们要研究的对象。我们要研究的对象是这一台发电机在扰动下的动态行为转子会不会失步、转速会不会越摆越大、多长时间能平息下来。抓住主要矛盾忽略次要因素这正是单机无穷大系统能被广泛使用的原因。模型的基本拓扑是同步发电机出口接升压变压器变压器高压侧经双回输电线路接到无穷大母线。这四条链路缺一不可。发电机是扰动发生的源头也是被观察的对象变压器决定了发电机侧和线路侧的电压等级双回线路是短路故障的发生位置无穷大母线则是整个系统的“定海神针”。1.2 两相接地短路一种“不对称”的硬故障两相接地短路规范叫法是Two-Phase-to-Ground fault常见缩写LLG。从名字就能看出来三相当中任意两相同时对地短接另一相保持正常。比如A相正常B、C两相同时接地这就构成B-C两相接地短路。它是电力系统里不对称故障的一种故障电流除了正序分量外还会产生负序分量和零序分量。这一点和三相短路有本质区别——三相短路是对称故障只存在正序分量。故障的物理后果是短路点电压迅速跌落发电机机端电压跟着下降电磁功率P_e急剧减小。可汽轮机或水轮机输入的机械功率P_m是由原动机决定的短时间内根本来不及变化。这一瞬间出现了“输入大于输出”的功率失衡多出来的功率全部作用到发电机转子上变成加速转矩推动转子转速升高。转速变化的幅度和速度取决于功率缺额有多大、转子惯性有多大。在这里我要多说一句正是因为两相接地短路是不对称故障所以仿真结果里你可以去观察负序和零序分量。Simulink的Sequence Analyzer模块可以直接从三相电压电流里分解出正序、负序、零序波形。做控制策略研究时这些序分量往往是重点关注的量后续扩展很有用。1.3 转子运动方程与“转速变化”的物理本质转速变化的背后是经典的转子运动方程也就是摇摆方程形式是2H/ωs × dω/dt P_m - P_e。H是惯性时间常数ωs是同步电角速度P_m和P_e是标幺化的机械功率和电磁功率。这个方程的思想很朴素转子就是一个旋转的刚体转矩不平衡就会产生角加速度。故障发生那一刻P_e骤降P_m还没来得及变于是P_m减去P_e变成一个正数dω/dt大于零转速开始上升。故障切除后线路恢复送电P_e重新变大如果P_e超过了P_m转子又开始减速。但转子不是马上就能停下来因为故障期间积累的动能还在推动它继续向前摆。这就像跑步时突然有人推了你一把你停下来需要时间跑得越远回稳越难。转速曲线因此会呈现“先加速上升、到达峰值、再回落振荡”的形态。如果故障切除时间太晚转子积累的动能太大故障切除后即使电磁功率恢复也无法把转速拉回到同步速系统就失稳了。这也是为什么标题里把“发电机转速变化”作为观察指标的深层原因转子转速直接对应着暂态稳定的核心物理量——转子动能。看转速的波形就等于在看系统在暂态过程中的“体力”变化。2. Simulink仿真模型搭建模块选型与参数整定的门道2.1 整体拓扑六个模块搭出经典SMIBSimulink里我习惯把模型分成六块发电机、变压器、双回线路、无穷大电源、故障模块、测量模块。这些模块绝大多数都在Simscape Electrical库的Specialized Power Systems里面旧版本叫SimPowerSystems新版改了个名字但用起来思路一样。发电机模块我推荐先用Simplified Synchronous Machine也就是简化同步电机模型。这个模型把同步电机等效成内电动势加内阻抗内部自带转子运动方程你只需要给它机械功率P_m它就会输出三相电动势。好处是参数少、收敛快特别适合第一次做暂态稳定研究。等你要研究励磁系统、阻尼绕组这些细节的时候再换成Detailed Synchronous Machine也来得及。升压变压器用Simscape Electrical里的Three-Phase Transformer (Two Windings)模块双绕组变压器就够了设置好额定功率、变比和漏抗。输电线路用Three-Phase Series RLC Branch每回线是一组RL串联支路双回线就并联放两组。无穷大电源直接用Three-Phase Source电压1.0 pu频率50 Hz内阻抗设得很小。故障模块用Three-Phase Fault这是整个模型的核心部件两相接地短路的设置全靠它。测量方面在发电机出口附近接一个Three-Phase V-I Measurement把三相电压电流送到Scope或者To Workspace模块。转速信号直接从发电机模块的速度输出口引出功率信号可以从发电机模块的电功率输出口引出也可以利用Multimeter去读取。2.2 核心参数设计一组可复用的标幺值参数仿真能不能复现真实的暂态过程参数占七成。我给一组我常用的典型参数完全按标幺值体系来方便你替换成自己的系统。系统基准容量500 MVA发电机侧电压基准20 kV线路侧电压基准230 kV频率50 Hz。元件参数项设定值发电机简化模型额定功率500 MVA额定电压20 kV内部阻抗X0.20 p.u.内部电阻R0.003 p.u.惯性时间常数H3.5 s升压变压器变比20 kV/230 kV漏抗X0.10 p.u.双回线路每回线正序电阻R0.01 p.u.正序电抗X0.15 p.u.无穷大母线基准电压230 kV电压幅值1.0 p.u.相角0°机械功率P_m我习惯给0.8 p.u.意味着发电机出力400 MW留出20%的裕量。这组参数下系统正常运行时能稳定送出功率故障发生后转速变化又足够明显不会出现那种“转速根本看不出来动了”的尴尬局面。需要说明的是线路阻抗的标幺值要以500 MVA和230 kV为基准去折算。比如你想模拟一条100公里的220 kV线路典型正序电抗大约0.4 Ω/km换算成标幺值就在0.15左右。如果你不用标幺值直接用国际单位也行但不同电压等级的电气量混在一起参数数量级差得太远容易设错。我一直建议坚持标幺值这是电力系统仿真调试效率大幅提升的一个习惯。2.3 Powergui配置决定了仿真跑得快还是跑得准每个Simulink电力系统模型顶层都必须放一个Powergui模块很多人忽略它的重要性仿真跑不起来或者结果不对相当一部分原因就是Powergui配置不对。Powergui里有四种仿真类型Continuous、Discrete、Phasor和External。做暂态稳定性研究关键是搞清楚Continuous和Phasor的区别。Phasor模式是把网络方程放到相量域里求解速度快、内存少适合看中长期动态和中长期稳定但它对不对称故障的支持有限因为两相接地短路产生了负序和零序分量相量模式内部主要按正序网络求解用来观察故障瞬间的细节并不合适。所以我的建议是为了确保两相接地故障的波形准确首选Continuous模式配合刚性求解器虽然慢一点但结果可靠。Powergui还有一项重要功能是“Load Flow”潮流初始化。点击Powergui里的Load Flow工具把发电机设为PV节点给P0.8 p.u.、V1.0 p.u.无穷大母线设为Slack节点然后Compute再Apply。这一步的作用是提前计算好系统初始运行点把发电机初始转子角、内电动势初值都设置到位。很多初学者省掉这一步仿真一开跑波形就开始剧烈的初始摆动还以为故障发生了实际上那是数值初始化过程造成的假象。经验就是任何电力系统仿真模型搭建完成之后第一件事就是做潮流初始化没有例外。关于求解器连续模式配ode23tMax Step Size设成1e-3相对容差设1e-3这是我在类似系统上实测很稳的组合。故障时刻是硬开关事件Three-Phase Fault模块内部本身带过零检测用ode23t这类刚性求解器能顺利跨过突变点。3. 故障设置与仿真运行两相接地故障怎么“演”出来3.1 故障时序何时短路、何时切除是灵魂暂态稳定仿真最核心的就是故障时序设计。故障何时发生、持续多久、何时切除这三个时间点直接决定了系统是稳定还是失稳。我的典型安排是仿真总时长5秒故障前先让系统稳定运行1秒给潮流初始化后的暂态过程一个缓冲1秒时刻投入故障让故障持续0.2秒1.2秒时刻切除故障然后继续观察3.8秒的振荡过程。Three-Phase Fault模块的设置并不复杂但有一个关键点要特别说两相接地短路的相选择。在模块参数里故障类型选择“Two phases to ground”这一档并勾选对应故障相比如A相、B相以及Ground这样构成A-B两相接地短路。或者勾选B、C相和Ground构成B-C两相接地。我见到过很多次错误案例有人想模拟两相接地却只勾了两相而没有勾Ground结果实际模拟出来的是两相相间短路波形不对还找不到原因。故障电阻设为0.001 Ω代表金属性短路如果你想研究经过渡电阻短路的情况可以设为几欧姆甚至几十欧姆但过渡电阻会大幅减小故障电流转速变化也会更温和。Three-Phase Fault的开关动作是通过“Switching times”参数控制的。它是一个时间向量例如[1.0 1.2]含义是1.0秒开关闭合故障发生1.2秒开关断开故障切除。注意这个时间是以秒为单位别和仿真时长搞混。3.2 仿真运行策略步长、求解器与测量通道仿真之前把测量信号想清楚。我的通则是用To Workspace模块把关键量导出到MATLAB工作区而不是只盯着Scope看。因为Scope里波形是动态刷新的光标读取数值不够精确导出到工作区之后可以放大、对比、算指标一切可控。需要导出的量至少有四个发电机的转速ω、电磁功率P_e、机械功率P_m、机端电压V_t。转速从发电机速度输出口接出来单位是p.u.同步速对应1.0功率从发电机模块输出或者通过Multimeter读取机端电压从V-I Measurement模块取。采样时间设0意思是跟求解器步长保持一致波形最完整。Scope模块建议开启Logging to Workspace功能这样省掉额外To Workspace模块仿真结束后在MATLAB工作区直接拿到timeseries格式的数据。求解器方面我在2.3节已经给了建议配置。如果你用的是Discrete模式采样周期建议设50微秒太大会导致故障瞬间波形失真。另外仿真开始前务必确认模型里没有代数环警告。所谓代数环简单说就是某个信号的输出直接参与了同一步的输入计算形成循环依赖。出现代数环时Simulink会给出警告提示严重时仿真速度极慢甚至发散。最常见的解决方法是给测量信号后面串一个Memory或Unit Delay模块稍微延迟一个仿真步长打破这个环。3.3 从波形看物理转速曲线的四阶段深度解读转速曲线是整个仿真最值得反复看的一条线它天然分成四个阶段。第一阶段是故障前稳态转速稳稳压着1.0 p.u.没有任何波动这代表系统运行在初始平衡点。第二阶段是故障持续阶段转速开始上升上升的速度近似等于加速功率除以两倍惯性时间常数。按前面那组参数故障瞬间电磁功率从0.8 p.u.掉到大约0.1 p.u.加速功率就是0.7 p.u.转速变化率约为ΔP/(2H)0.7/70.1 p.u./s。故障持续0.2秒转速偏差累计接近0.02 p.u.折算到1500 rpm的机组大约就是30 rpm。这个量级既看得清楚又不至于失真做课程设计或者工程演示都很合适。第三阶段是故障切除后的最初摆转速继续冲高一段时间因为转子有惯性故障期间积累的动能不会因为开关断开就立刻消失。当P_e重新大于P_m转子开始减速转速曲线形成第一个峰值。第四阶段是故障切除后的振荡衰减转速以同步速为中心来回摆动幅度逐渐缩小说明系统阻尼在起作用最终回到1.0 p.u.如果转速振荡幅度不减反增甚至越摆越大那就是系统已经失稳了。把转子角曲线也画出来的话转速是功角的导数看转速曲线可以判断转子运动趋势看功角曲线可以判断是否越过不稳定平衡点。两个量配合着看暂态稳定性就一目了然。4. 一个可以直接照抄的完整仿真步骤含脚本4.1 模型搭建七步走从零新建模型到跑出完整波形我梳理成七个步骤每一步都能直接落地。第一步新建一个Simulink模型命名存盘文件名建议用英文比如SMIB_stability.slx。中文文件名有时候会引起一些路径问题别在这上面浪费时间。第二步从Simscape Electrical里拖入以下模块Three-Phase SourceThree-Phase Transformer (Two Windings)Three-Phase Series RLC Branch×2Simplified Synchronous MachineThree-Phase FaultThree-Phase V-I MeasurementPowergui。再拖入必要的Simulink常规模块Constant给机械功率0.8、To Workspace×4、Scope。第三步连线。发电机端子接变压器低压侧变压器高压侧分成两条并联线路每条线路上串一组Series RLC Branch线路末端汇合后接到Three-Phase Source。Three-Phase Fault模块并联在其中一条线路的起始位置也就是靠近变压器高压侧出口的地方这个位置发生故障对系统冲击最大也是最有研究价值的工况。第四步配置发电机参数。Simplified Synchronous Machine设置额定功率500 MVA、额定电压20 kV、内部阻抗0.20 p.u.、惯性时间常数H3.5 s。机械功率P_m输入口接Constant值为0.8。第五步配置变压器和线路。变压器变比20 kV/230 kV漏抗0.10 p.u.连接方式是Yg-Delta中性点接地方式根据实际系统设定。线路阻抗设置R0.01 p.u.L由X0.15 p.u.换算得到换算公式LX/(2πf)f取50 Hz。第六步配置故障模块。故障类型选两相接地勾选任意两相Ground故障电阻0.001 ΩSwitching times设为[1.0 1.2]。第七步配置Powergui和求解器。Powergui选ContinuousSimulink求解器选ode23tMax Step Size填1e-3仿真时长Stop Time填5。完成Powergui里的Load Flow潮流初始化Compute之后点Apply。这一步做完模型就能跑了。4.2 用MATLAB脚本批量扫描故障切除时间单次仿真只是入门真正有价值的是批量扫描。暂态稳定研究里最经典的问题就是故障切除时间到底多久算晚对应概念是临界切除时间CCT。你不需要设定一次仿真看一个结果完全可以写个循环把切除时间从0.10秒一直扫到0.50秒观察转速首摆峰值的变化趋势。%% 扫描故障清除时间对转速首摆峰值的影响 % 模型文件: SMIB_stability.slx clear; close all; clc; clearTimes 0.10:0.05:0.50; peakW zeros(size(clearTimes)); for i 1:length(clearTimes) tc clearTimes(i); % 故障在1.0s发生切除时间为1.0tc set_param(SMIB_stability/Three-Phase Fault, ... switching_times, sprintf([1.0 %.3f], 1.0 tc)); simOut sim(SMIB_stability, StopTime, 5.0); t simOut.w.Time; w simOut.w.Data; % 发电机转速单位 p.u. peakW(i) max(w - 1.0); % 转速最大正向偏移 end figure; plot(clearTimes, peakW * 100, -o, LineWidth, 1.2); grid on; xlabel(故障清除时间 (s)); ylabel(转速最大偏移 (%)); title(两相接地短路下转速首摆峰值随清除时间变化);这段脚本的核心是set_param那一步它直接修改了故障模块的切换时间从而实现批量扫描。你可以看到当清除时间比较短时转速峰值很小随着清除时间增长转速峰值快速上升。当清除时间超过临界值转速峰值不再形成一个有限的回落而是直接一路飙上去曲线在图像上表现为“跳崖”式的突变这个突变点附近的清除时间就是临界切除时间。用这段脚本把CCT找出来你的暂态稳定仿真就算真正研究明白了。4.3 波形后处理把Scope里的数据变成论文级曲线仿真跑完之后你会得到一组原始数据。直接截图Scope的波形也能用但要做课程设计或者写报告我建议统一到MATLAB里再绘一次图这样坐标轴范围、标签、线宽都可以精细控制。从To Workspace导出的是timeseries数据结构绘制标准转速偏差曲线的示例代码如下。figure; plot(t, (w - 1.0) * 100, b-, LineWidth, 1.5); xlabel(时间 (s)); ylabel(转速偏差 (%)); grid on; xlim([0.9 5]); title(两相接地短路时发电机转速偏差响应);同样把电磁功率P_e和机械功率P_m画在同一张图上你会非常直观地看到故障期间P_e跌落到几乎为零、P_m保持0.8 p.u.不变的过程也就能理解为什么转子会有净加速。这条“功率缺口曲线”是解释转速变化最好的辅助材料。5. 常见问题与排查经验那些Simulink不告诉你的坑5.1 常见错误与解决办法速查表做仿真几年下来我总结过一张故障速查表覆盖了这个项目里九成会遇到的报错。报错或异常现象根本原因解决办法提示找不到Powergui模型顶层没有Powergui模块确认Powergui放在模型最上层不在子系统内部求解器不收敛、仿真发散步长过大Max Step Size调到1e-3或更小代数环警告测量信号直接参与同一步控制计算加Memory或Unit Delay模块打破循环发电机初始化失败潮流初值不合适用Powergui Load Flow重新Compute并ApplyScope里转速像一条直线转速变化只有1%~2%坐标轴尺度太大显示转速偏差(w-1)或者导出后在MATLAB里绘图故障总是不发生Switching times设错或故障电阻过大记住格式[闭合时间 断开时间]电阻用0.001Ω故障类型不对模拟两相接地时忘记勾Ground勾选两相之后务必勾Ground选项5.2 简化电机与详细电机的选择纠结我在第2章推荐了Simplified Synchronous Machine但很多做研究的人会纠结要不要直接用Detailed模型。我的建议很明确先简后详分层推进。Simplified模型只保留同步电机最核心的机电暂态特性内电动势、内阻抗、转子运动方程。它看不到励磁绕组的暂态过程但用来研究转速变化和首摆稳定性完全够用参数的获取也容易得多你只要知道Xd、H这些常规参数就行。Detailed模型把d轴和q轴的多个绕组、励磁系统、阻尼绕组全部考虑进去结果更接近真实电机但相应的参数要求非常苛刻比如Xd、Xq、Xd、Xq、Tdo、Tqo这一堆。初学者通常凑不齐这些数据模型还没跑起来先被参数淹没。我的路线图是先用Simplified模型把暂态稳定性研究透搞明白故障、切除时间、转速摆动的逻辑再逐步升级成Detailed模型加入励磁系统、调速器、PSS然后观察这些控制器对转速振荡的阻尼作用。5.3 仿真结果“看起来不合理”的三个排查方向我遇到过不少次结果明显不对的情况总结下来有三个高频原因。第一转速一直上升从不回落。先看故障切除是不是真的生效了把故障模块的输出波形拉出来确认开关已经断开再检查清除时间是不是太晚超过了临界切除时间系统已经真失稳了。第二转速高频振荡或者波形毛刺严重。这是数值问题大概率是Max Step Size太大或者用了非刚性求解器改成ode23t并缩小步长基本能解决。第三故障瞬间转速毫无反应。检查故障相设置、故障电阻、Switching times这三个参数我遇到最多的情况是故障电阻没有改还留着默认的很大的值那样故障电流根本没有形成短路等于没短。5.4 扩展思路从转速曲线到更深的暂态稳定研究这个仿真做完你手里已经有了一台完整的单机无穷大系统模型。它的扩展空间非常大。想研究励磁调节器对暂态稳定的影响就在发电机电压输出上接一个IEEE Type 1励磁系统替换掉原来恒定励磁的思路你会看到故障后转速振荡的衰减明显变快。想研究负序、零序分量对保护和控制的影响加一个Sequence Analyzer模块把两相接地故障下的正负零序电流分别拉出来看。想更贴近工程可以把模型生成C代码部署到实时仿真器上做硬件在环。Simulink本身就是这么一套生态建模仿真、代码生成、联合验证一条链都打通了。其他领域里和Carsim这类工具做联合仿真本质也是从“模型到验证”的同一套逻辑。最后聊几句实操体会单机无穷大系统这个仿真看起来基础但把它跑透了对理解暂态稳定特别值。我个人的习惯是故障切除时间从0.10秒一路加到0.30秒每个工况跑一遍认真观察转速的首摆峰值什么时候开始“不回头”。亲手看到那个转折之后再回头看等面积法则感觉完全不一样——书上那些积分公式突然就有了物理画面。另外一个小建议所有参数统一用标幺值测量模块的输出也统一以p.u.记录调试效率真的能提升太多。先跑通再优化最后再往模型里加控制器这条路线对新手是最友好的。