ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Simulink单机无穷大系统两相接地短路暂态稳定仿真

Simulink单机无穷大系统两相接地短路暂态稳定仿真 1. 为什么单机无穷大系统是理解暂态稳定的最佳模型1.1 从“单机无穷大”的假设说起物理意义与建模逻辑刚接触电力系统暂态稳定仿真的人最容易被各种复杂模型吓住——多机系统、网络化简、动态等值听着就头大。但几乎所有教材、几乎所有科研入门工作都会从“单机无穷大系统”开始。这不是偷懒而是这个模型恰好抓住了暂态稳定问题的核心矛盾。所谓“单机无穷大系统”就是一台同步发电机经过变压器和输电线路连接到容量无限大的电力系统。这个“无穷大”的物理含义是无论这台发电机怎么折腾——加速、减速、摇摆、甚至短时失步——系统侧的电压幅值和频率都纹丝不动。相当于你在一艘万吨巨轮旁边踩了一脚巨轮不会有任何反应。这个假设把问题边界变得清爽所有暂态行为的研究焦点全部集中在这台发电机自身的机电暂态过程上。用Simulink做这类仿真首先要理解的不是Simulink怎么操作而是这个模型背后的三套方程发电机的转子运动方程描述转速和功角变化、发电机内部的电磁暂态方程描述定子、转子绕组的电磁过程、以及网络方程描述发电机通过变压器和线路与系统之间的功率传输关系。在Simulink里你可以选择把这三套方程全部用元件模块搭出来也可以自己写状态方程塞进一个S-Function或MATLAB Function模块里。两条路线我都走过各有优劣后面会详细对比。有一点需要提前说明Simulink里的电力系统仿真本质上是用数值积分算法去解一个高阶微分方程组。所以你先要建立这个观念——你写的每一个参数、选的每一个求解器、设的每一步长最终都会反映在微分方程求解的精度和稳定性上。很多新手仿真发散不是模型错了而是求解器设置不合理。1.2 暂态稳定问题的本质功角与转速的摇摆过程要理解发电机转速变化曲线必须先想明白一个物理过程同步发电机在正常稳态运行时转子以同步转速旋转原动机输入的机械功率 ( P_m ) 与发电机输出的电磁功率 ( P_e ) 正好平衡。此时功角 ( \delta ) 保持恒定转速 ( \omega ) 等于同步转速。但故障发生时一切平衡被打破。以两相接地短路为例故障瞬间发电机的电磁功率 ( P_e ) 急剧跌落——因为电压跌落、故障支路分流送出去的功率大幅减少。但原动机那边的机械功率 ( P_m ) 可来不及变汽轮机或水轮机的调速器都有惯性短时间内机械功率基本维持原值。这一下就出现了功率差额 ( \Delta P P_m - P_e 0 )。发电机转子在这个不平衡力矩的驱动下开始加速转速升高。等故障切除后输电线路恢复电磁功率 ( P_e ) 又弹回来了。但如果故障期间转子已经积累了足够大的动能功角冲得很远那么故障切除后 ( P_e ) 可能依然大于 ( P_m )在减速区间转子开始减速。这个过程就像荡秋千——加速冲上去减速荡回来功角和转速呈现周期性的摇摆。如果摇摆的幅度不断衰减最终稳定在新的平衡点或回到原平衡点系统是暂态稳定的如果功角越摆越大转速越偏越多最终失去同步就是暂态失稳。这就是你在Simulink示波器里看到的那条转速变化曲线背后的全部物理意义。所以这篇文章虽然是讲仿真实现但核心还是帮你把物理过程和仿真现象一一对应起来否则你仿真跑出来了也看不懂波形在说什么。2. 两相接地短路故障比想象中更有“学问”的扰动2.1 两相接地短路的故障特征与复合序网很多人做暂态稳定仿真上手就是三相短路。这当然最简单但现实电网里单相接地短路占比最高两相接地短路和两相相间短路也时有发生。两相接地短路比如B、C两相同时接地的物理过程比三相短路复杂得多因为这是不对称故障。不对称故障的分析武器是对称分量法。把故障点的电压、电流分解为正序、负序、零序三组对称分量。两相接地短路的边界条件是故障处B、C相电压为零A相电流为零。由这个边界条件推出的复合序网是正序、负序、零序三个网络在故障点处并联。如果你用Simulink里的Three-Phase Fault模块来设置故障类型模块底层已经替你处理好了这些序网连接你只需要在下拉框里选“Phase B-Ground”和“Phase C-Ground”同时选中就行。但这里有个关键点两相接地短路的负序和零序分量会在发电机定子绕组中产生负序电流和零序电流这些电流会产生反向旋转的磁场和脉动转矩作用在发电机转子上引起二倍频的振荡分量叠加在转速响应上。所以你会在转速波形上看到两相接地短路情况下的转速曲线比三相短路情况的曲线多了一层高频“毛刺”或波纹。这不是数值噪声而是负序分量真实作用的物理反映。看波形时不要把它误认为求解误差。我在最初做这个仿真时就犯过这个错。当时转速波形上有明显的二倍频振荡我以为是步长太大导致数值不稳定拼命减小步长结果毛刺还在。后来查了文献才明白这就是不对称故障的负序效应。所以做这类仿真务必对“哪些现象是物理真实、哪些是数值引入”有基本判断力。2.2 故障对发电机电磁功率的影响等面积定则的视角要预判转速会冲到多大、系统能不能维持稳定最经典的工具是等面积定则。它可以在不做仿真的情况下粗略估算出极限切除角——也就是最晚必须在功角摆到多大之前切除故障否则系统失稳。正常运行时发电机送到无穷大系统的电磁功率为[ P_e \frac{EU}{X_{\Sigma}} \sin\delta ]( E ) 是暂态电抗后的电势( U ) 是无穷大系统母线电压( X_{\Sigma} ) 是发电机暂态电抗、变压器电抗、线路电抗之和。正常运行时 ( X_{\Sigma} ) 较小( P_e ) 曲线较高。发生两相接地短路时故障点相当于经过一个不对称阻抗接地复合序网中故障点的等效阻抗是 ( X_2 ) 与 ( X_0 ) 并联后再串入网络。此时从发电机看进去的等效总电抗 ( X_{\Sigma}^{(2)} ) 明显大于正常值。电抗一大功角特性曲线的幅值就变低——同样一个功角下能送出去的电磁功率变小了。这就是加速面积产生的原因。有意思的是两相接地短路时功率曲线虽然比正常低但通常比三相短路时的功率曲线高。因为三相短路时故障点三相对称短路从发电机看进去的等效电抗更大功率曲线压得更低加速面积更大极限切除角更小。换句话说三相短路是更严苛的故障类型两相接地短路的暂态稳定裕度通常比三相短路大一些。所以做“两相接地短路”研究时你会发现同样的故障切除时间下转速摇摆的幅度比三相短路小系统更容易保持稳定。这个认知对后续仿真参数设计很有用——你需要把故障切除时间设置得更接近临界值才能观察到转速的显著变化。等面积定则在Simulink里的价值不是用来精确计算而是用来验证仿真结果。你先用等面积定则估算一个大概的极限切除角再在仿真里扫描故障切除时间理论上两者对应的临界切除时间是吻合的。如果差太远要么等面积定则算错了要么Simulink模型哪里有问题。这种交叉验证的做法能让你的仿真实力提升一个台阶。3. Simulink仿真实现两种路线与选型建议3.1 元件级建模路线Simscape Electrical方案第一条路线是用Simscape Electrical早期叫SimPowerSystems里的元件模块搭模型。这是大多数人首选的方案因为模块化程度高不需要手推微分方程。你需要用到的模块大致有同步发电机模块Synchronous Machine pu Standard选标幺制模型原动机与调速器模块比如Steam Turbine and Governor或Hydraulic Turbine and Governor取决于你模拟的是哪种电厂变压器模块Three-Phase Transformer Two Windings输电线路模块Three-Phase PI Section Line你需要用两回并联线路来模拟一个简化的输电通道无穷大系统模块Three-Phase Source设大短路容量相当于无穷大母线故障模块Three-Phase Fault断路器模块Three-Phase Breaker或直接用故障模块本身的时序控制来模拟故障切除这种搭法的好处是直观物理结构跟实际系统一一对应变压器、线路、发电机内部绕组结构全部可视化。而且模块内部自带完整的Park方程磁链模型负序、零序效应、定子瞬变过程都会自动算出来不需要你自己写方程物理精度有保证。代价是模型计算量大仿真速度慢而且参数设置繁琐。每个模块都有十几甚至几十个参数每个参数都要填得合理否则仿真结果就会很奇怪。我见过很多同学直接把同步发电机模块默认参数一放跑出来的转速曲线跟心电图一样乱跳根本没法用。3.2 方程级建模路线自建微分方程方案第二条路线是用MATLAB Function或S-Function把发电机转子运动方程和电磁功率方程直接写出来。最核心的就是二阶转子运动方程[ \frac{2H}{\omega_0} \frac{d^2\delta}{dt^2} P_m - P_e ]或者写成两个一阶方程[ \frac{d\delta}{dt} \omega - \omega_0 ][ \frac{2H}{\omega_0} \frac{d\omega}{dt} P_m - P_e ]( H ) 是发电机的惯性时间常数单位秒( \omega_0 ) 是同步转速rad/s( P_m ) 是机械功率( P_e ) 是电磁功率。这里的 ( P_e ) 分三段按故障状态切换正常时用正常电抗算故障时用故障状态下的等效电抗算故障切除后按切除后网络算。这种做法的好处是轻量、快速、参数透明。修改一个电抗值就像改一个常量一样简单物理过程的信息完全在你的掌控中。而且因为没有变压器、线路等模块的动态过程干扰转速曲线的物理规律显示得特别干净适合用来做理论验证和研究。坏处是模型考虑的因素有限比如负序电流引起的二倍频转矩、定子电磁暂态过程这些在简化模型中体现不出来。而且如果你对电力系统分析理解不深很容易在故障状态电抗计算上出错——比如两相接地短路时的等效电抗是负序和零序电抗并联后再与正序网络串联少算一个并联步骤结果就差很远。3.3 为什么不推荐直接拿三相短路改参数来模拟两相接地短路顺便提醒一个常见操作误区。有人图省事把三相短路故障模块改两相然后其他参数不动——这是错的。两相接地短路和三相短路对应的复合序网完全不同故障期间发电机的电磁功率曲线也不一样。如果你只是把故障类型从“三相”改成“两相接地”而故障阻抗、接地阻抗、序网参数都没做相应调整那你仿真出的转速曲线既不是两相接地的结果也不能反映三相短路的特征两头都不靠。正确的做法是故障模块里明确选择两相接地B相和C相同时接地并且设置合理的故障电阻 ( R_f ) 和接地电阻 ( R_g )。注意接地电阻的大小对零序网络影响很大直接决定零序电流幅值进而影响故障期间电磁功率跌落的程度。我建议一开始设置较小的故障电阻比如0.001Ω先把故障当作金属性短路来处理再逐步加大故障电阻观察转速摇摆幅度的变化规律。4. 仿真模型搭建全流程拆解4.1 第一版用Simscape Electrical搭出完整单机无穷大系统如果走元件级路线我建议按下面这个顺序搭建这个顺序是我踩过不少坑后总结出来的能最小化排查成本。第一步放置同步发电机模块。双击打开参数界面在“Parameters”标签下选择“pu Standard”类型。额定参数设置为额定视在功率 ( S_n 100 )MVA额定线电压 ( U_n 13.8 )kV额定频率 ( f_n 50 )Hz。然后填暂态电抗 ( x_d 0.3 )pu、次暂态电抗 ( x_d 0.2 )pu、惯性时间常数 ( H 3.5 )s 这些经典值。这里最关键的是惯性时间常数它直接决定转速摇摆的周期和衰减特性—— ( H ) 越小转子越“轻”故障时加速越快转速偏移越大。第二步放置变压器。升压变压器容量100MVA变比13.8kV/230kV短路电抗 ( X_T 0.1 )pu。这里要说一个细节变压器模块中的“连接方式”选Yg-Delta还是Y-Y决定了零序网络是否连通。做两相接地短路仿真零序通路必须正确。一般推荐发电机侧用三角形接线阻断零序电流进入发电机内部而系统侧用中性点接地的星形接线为零序电流构成通路。这个如果不设置对故障电流和转速波形都会有问题。第三步放置双回线路。用两个Three-Phase PI Section Line模块并联模拟双回线运行。每回线路长度100km单位长度正序电阻 ( R_1 0.01273 )Ω/km正序电感 ( L_1 0.9337 )mH/km正序电容 ( C_1 0.01274 )μF/km零序参数约为正序的3倍左右。这些参数可以直接用线路模块自带的默认值修改得到。第四步放置无穷大系统。用一个Three-Phase Source模块电压230kV频率50Hz关键是短路容量要设得很大比如10000MVA相当于一个强系统。如果短路容量设置得和发电机容量一个量级无穷大系统就不再“无穷大”两侧都会摇摆模型含义就变了。第五步放置故障模块和断路器。Three-Phase Fault模块支持编程控制你可以直接在这个模块里设置故障开始时间和结束时间在结束时间点就实现了故障切除。但如果你还想模拟故障后线路跳闸就需要用Three-Phase Breaker配合Control信号来实现。全部连好之后在发电机模块输出端口上接一个转速测量通道。推荐直接使用发电机模块输出端的“wm”物理信号机械转速单位是pu再乘以同步转速 ( \omega_0 2\pi f_n 314.159 )rad/s 就能得到实际值也可以用bus selector把转速信号引出来看。我给一个具体的故障时序建议0~1秒系统正常运行让发电机达到稳定1.0秒时在双回线其中一回的50%处发生B、C两相接地短路1.1秒时切除故障1.1秒后观察转速的摇摆过程直至仿真结束比如5秒。这样你能看到完整的“正常运行—故障扰动—故障切除—转子摇摆—趋于稳定”全过程。4.2 第二版自建状态方程模型发电机组微分方程如果你选方程级路线搭建过程就完全是另一种画风。打开一个新的Simulink模型拖入一个MATLAB Function模块在里面写转子运动方程和电磁功率计算逻辑。我提供一个简化但物理正确的模型框架。经典二阶模型状态变量为功角 ( \delta ) 和转速偏差 ( \Delta\omega )function [delta, omega, Pe] swing_eqn(Pm, tf_type) % 单机无穷大系统二阶转子运动方程 % 输入: Pm 机械功率(pu), tf_type 故障类型(0-正常,1-两相接地,2-切除后) % 输出: delta 功角(rad), omega 机械转速(pu), Pe 电磁功率(pu) global Xd H omega0 E U delta0 omega0 % 根据故障类型确定等效电抗 switch tf_type case 0 % 正常: Xd1 XT XL/2 Xeq 0.3 0.1 0.2; case 1 % 两相接地短路: 正序电抗 负序与零序并联 X2 0.2; X0 0.1; Xeq 0.3 0.1 0.2 (X2*X0/(X2X0)); case 2 % 故障切除后单回运行 Xeq 0.3 0.1 0.4; end % 电磁功率(暂态电抗后电势恒定模型) Pe E * U / Xeq * sin(delta); % 转子运动方程 d_delta omega0 * (omega - 1); % 功角导数 d_omega (Pm - Pe) / (2*H); % 转速导数 end当然实际在MATLAB Function里直接写微分方程不方便你需要配合积分器模块Integrator搭建一个反馈回路——把转速积分得到功角功角反馈进函数算电磁功率功率差再驱动求和模块形成闭环。这里不再展开每个模块的连线核心思想是把二阶微分方程降阶为两个一阶微分方程用积分器串联实现。这种模型的优势是你可以在同一套框架下任意修改故障类型对应的电抗表达式快速对比三相短路、两相接地短路、单相接地短路等不同故障类型的转速摇摆差异特别适合用来做机理分析和论文里的参数扫描图。4.3 故障时序与参数设置暂态稳定仿真的“灵魂”无论走哪条路线故障时序设置都是整个仿真成败的关键。我强烈建议你建立一套“统一时序约定”比如( t 0 \sim 1.0 )s系统空载或带载稳定运行。这段时间要留够让发电机功率角、励磁电压等变量收敛到稳态。( t 1.0 )s投入故障两相接地短路。( t 1.1 )s切除故障跳开故障线路或断开故障点。( t 1.1 \sim 5.0 )s观察转子摇摆过程。故障持续时间 ( t_f ) 我在文章开头提过它与极限切除时间 ( t_{cr} ) 的关系至关重要。你可以在保持其他条件不变的前提下把 ( t_f ) 从0.1s逐步增加到0.3s会看到一个有趣的临界现象较短的故障时间下转速经过几次衰减振荡后回到同步转速当 ( t_f ) 超过某个阈值后转速振荡不再衰减甚至持续发散——这个阈值就是仿真得到的极限切除时间。这里有一个容易被忽略的参数仿真步长。Simulink默认的变步长求解器ode23tb或ode15s在电力电子类仿真中有一定优势但暂态稳定仿真属于机电暂态时间尺度在几百毫秒到几秒频率成分相对较低。我个人经验是用固定步长求解器、设置最大步长为0.1ms到1ms就足够了。如果步长取得太大比如10ms电磁暂态过程的分辨率不够转速波形的高频细节会失真如果小到微秒级计算时间急剧增加除非你关心的是故障瞬间的电磁暂态细节否则没必要。土办法是“步长敏感性测试”先用1ms步长跑一遍再用0.1ms跑一遍如果转速曲线的包络线基本一致说明1ms足够如果两条曲线差异明显继续减小步长直到曲线重合。4.4 波形观测与数据导出很多人仿真跑完就在Scope里看一眼波形觉得差不多了。但做暂态稳定研究光用Scope看是远远不够的。你要记录精确的转速数值、功角极值、振荡频率、衰减时间常数这些都要靠数据导出做进一步分析。在Simulink里推荐用“To Workspace”模块把转速、功角、电磁功率等信号以数组形式导出到MATLAB工作区。然后再写几行脚本做后处理% 判断系统是否暂态稳定检查转速偏差是否收敛 omega_pu omega_signal; % 导出的转速信号(pu) omega_dev abs(omega_pu - 1); [t_peak, idx_peak] findpeaks(omega_dev); % 找振荡峰值 if t_peak(end) t_peak(end-1) * 0.9 disp(系统暂态失稳); else disp(系统暂态稳定); end % 计算最大转速偏差 [max_dev, idx_max] max(omega_dev); fprintf(最大转速偏差: %.4f pu\n, max_dev); fprintf(发生时间: %.4f s\n, t_out(idx_max));这段脚本的价值在于把“看到波形能感觉到不稳定”变成“用指标判断是否稳定”。你可以把“最大转速偏差小于某个阈值比如0.002pu且振荡衰减到一定范围”作为稳定判据。学术论文里写“系统在故障切除后2秒内恢复同步转速”就靠这个数据支撑。5. 发电机转速变化结果解读从波形看暂态稳定本质5.1 典型转速响应曲线加速、减速、再同步的过程当你仿真跑完把转速波形调出来你会看到一条非常典型的曲线。正常运行时转速是一条水平直线等于同步转速pu值下就是1.0。故障发生的瞬间转速开始上升——这个上升不是瞬时的而是有一个斜率逐渐增大的过程因为转子有惯性加速需要时间。故障期间转速一直上升直到故障切除时刻。故障切除后转速并不会立刻掉头下降而是会继续冲高一段距离。原因很简单故障切除的瞬间转子转速已经高于同步转速转子里的动能不可能瞬间消失。功角继续向前冲直到减速功率做的功抵消了多余动能转速才到达峰值开始回落。转速峰值的位置出现了一个明显的“拐点”。然后转子进入减速阶段转速下降。但下降过头之后转速又会低于同步转速——因为功角冲过头电磁功率大于机械功率转子在减速区间被“拉过头”。于是转速在同步转速附近来回摆动形成一条衰减振荡曲线。振荡的包络线逐渐收窄最终转速回到同步转速系统恢复稳定。这就是单机无穷大系统暂态稳定的标准叙事。整个过程中转速变化曲线的形状由三大因素决定故障期间加速面积的大小取决于故障类型和时长、故障切除后的减速能力取决于系统电抗和电压水平、以及转子惯性取决于H常数。你在解读波形时脑子里一定要有这三条线索它们会在后续的每个参数分析场景中出现。5.2 判断系统是否暂态稳定的三条标准看波形不能靠“感觉”。我总结了三条可量化的稳定判据你可以直接用MATLAB脚本计算第一转速偏差是否收敛。暂态稳定系统的转速偏差应该随时间衰减最终趋近于零。具体判据可以是仿真结束时转速偏差的绝对值小于0.001pu且振荡包络线单调递减。如果转速偏差越振荡越大或者最后稳定在某个非同步转速上说明系统失去稳定。第二最大功角是否不超过失稳门槛。单机无穷大系统有一个典型的失稳模式功角在向 ( \delta 90^\circ ) 甚至 ( \delta 180^\circ ) 方向持续摆动就基本宣告失步了。你可以记录每个振荡周期的功角峰值如果峰值呈现增长趋势且超过 ( 180^\circ ) 之后转速不再按同步规律来回穿越系统失稳。第三振荡是否具有等幅或增幅特征。稳定系统的振荡是减幅振荡相邻两个周期的振荡峰值之比小于1。你可以用信号处理的方法从导出的转速数据中提取每个周期峰值计算衰减率。如果衰减率为正峰值不断增长不管当前转速偏差有多大系统终究要失稳。这三个判据各有侧重建议组合使用。单纯看转速偏差可能在某些特殊的临界切除时间下误判——比如系统处于临界失稳状态时转速波形可能先衰减几拍后续再重新发散。这时候只看最终值不够必须检查振荡趋势的方向。5.3 故障持续时间与临界切除角的关系聊完稳定判据再来做一个特别有价值的仿真小实验改变故障持续时间扫描 ( t_f ) 从0.05s到0.30s每隔0.02s跑一次仿真记录最大转速偏差和最终是否稳定。你会发现一个非常清晰的规律故障时间短时比如0.05~0.12s转速最大偏差随故障时间近似线性增长但系统都能恢复稳定最终转速回到同步转速。故障时间到了某个临界值附近比如0.16s左右系统反应变得敏感——故障时间微小增加最大转速偏差却大幅跳升。超过这个临界值转速曲线彻底发散系统失稳。这个临界值在物理上对应于“极限切除时间”在功角平面上就对应于“极限切除角”。你可以把每次仿真的最大功角和故障切除功角记录下来画在等面积定则的 ( P-\delta ) 图上会直观看到加速面积和减速面积的关系切除角小于极限值时减速面积大于加速面积多余动能可以被消耗掉切除角超过极限值即使动用了整个减速区间也不足以消耗故障期间积累的动能转子带着剩余动能冲过失稳点。这个实验强烈推荐做。它不需要修改模型结构只需要用脚本循环改变故障模块中的切除时间参数自动批量跑仿真并记录结果。一张“故障切除时间—最大转速偏差”的关系曲线图几乎可以当成整个暂态稳定研究的核心图表。6. 常见问题与排查技巧实录我把自己做这个仿真实操时遇到的问题以及周围同学常踩的坑整理成了一份速查表。问题现象可能原因排查与解决方法仿真一开始就报“Singularity”或“Division by zero”变压器、线路参数不合理或无穷大系统短路容量设置太小导致潮流计算不收敛检查所有标幺值参数是否在合理范围无穷大系统短路容量调到发电机容量的50倍以上尝试更改求解器为ode23t转速波形有高频毛刺且不随步长减小消失两相接地故障的负序/零序分量引起的二倍频振荡这不是数值错误是物理现象。若要验证对比三相短路波形毛刺消失即可确认转速波形一直在漂移回不到同步转速机械功率和电磁功率初始不匹配发电机没有处于平衡点运行在故障前给足够的稳定时间或先做一次不带故障的仿真确认稳态运行正常检查Pm设定是否等于Pe的稳态值故障模块不起作用波形的故障段和正常段没有差别故障时间设置错误或故障类型选择成了“故障持续时间无穷小”检查Three-Phase Fault的Transitional Behavior设置确认故障开始时间大于仿真开始时间且小于结束时间仿真极慢几步就卡死步长太严苛或模型中存在高频电磁暂态迫使求解器用极小步长推进换固定步长1ms试如果还慢在一些无关紧要的环节加上“Powergui信噪比”近似选项无法同时看到功角和转速的对应变化没有把正确的物理信号接到Scope用Bus Selector从发电机测量模块中选wm转速和delta功角信号如果功角信号不可用用电压和电流相位差自己计算状态变量初始化不收敛方程组初始值猜的离平衡点太远先做“稳态初始化”把故障时间设为无穷大不触发先跑一遍得到稳态潮流或者用Powergui的“Load Flow”工具初始化再开启故障时序这里最想展开说的一点是关于“仿真发散”这件事。Simulink的仿真发散往往不是模型数学上无解而是数值积分算法在某个突变点比如故障投入、切除的瞬间遇到了不连续跳变步长适应机制反复尝试导致步长缩到极小或者算法在刚性方程上失效。解决办法有三个层次第一个层次是换求解器。Simulink默认的ode45在光滑问题上很好用但电力系统这种强非线性频繁开关切换的场景里ode15s、ode23t这类刚性求解器明显更稳。第二个层次是切换故障和切除瞬间的步长设置Simulink允许在模型中插入“Solver Configuration”或通过“Zero-Crossing Detection”选项来控制事件检测精度。第三个层次是给功率信号加上“Slew Rate Limiter”之类的限速模块人为限制信号的跳变率减轻数值冲击。当然加限速模块是不得已的下策它会稍微改变真实的物理动态能不用就不用。再说一个独家小技巧。如果转速波形在故障切除后出现数值振荡但你又无法确定是物理还是数值问题用“步长减半对比法”验证把步长从1ms改成0.5ms如果振荡幅度基本不变说明是物理现象如果振荡幅度明显下降或消失说明是数值引入的伪振荡需要调整求解器设置。这个方法花不了几分钟但能帮你避免很多误判。7. 扩展玩法从单机到多机从短路到重合闸7.1 加入自动重合闸时序两相接地短路仿真做完我建议你再往前走一步把故障切除改成“故障切除—无流时间—自动重合闸”的完整时序。实际电网输电线路绝大多数都配置自动重合闸因为瞬时性故障特别是单相接地占了绝大多数重合闸能显著提高供电可靠性。在Simulink里实现这个时序很简单用两个断路器模块叠加控制信号。第一个断路器在故障后0.1s跳开隔离故障等待0.5s的无流时间让故障点电弧去游离第二个断路器或同一个断路器再合闸在跳开0.5s后重合。如果是瞬时性故障重合成功系统恢复如果是永久性故障重合后再次跳开系统可能失稳。你会在转速波形上看到比单次切除更复杂的摇摆过程第一次跳闸引起一波振荡重合闸瞬间又叠加一次冲击。有时候单次切除系统是稳定的但重合闸后的二次冲击反而导致失稳。这个现象叫“重合闸冲击下的暂态稳定问题”在工程实际中非常重要。做个自动重合闸仿真你的单机无穷大模型就从一个教学示例变成了一个小型工程研究平台。7.2 励磁系统与调速器的协同影响我前面建议用的发电机模型是经典二阶模型——暂态电抗 ( x_d ) 后电势恒定。这种模型忽略了励磁系统的动态调节作用。现实中发电机都装自动电压调节器AVR故障时电压跌落会触发强励提高暂态电势从而增大电磁功率上限改善暂态稳定。如果你想更贴近实际可以在Simulink里给发电机加上励磁系统模块比如IEEE Type I Excitation System和调速器模块比如Hydraulic Turbine and Governor。你会发现两个有趣的现象加了励磁系统后同样的故障情况下转速振荡幅度变小系统极限切除时间变长——稳定裕度提高而调速器虽然主要管频率恢复但也在故障过程中缓慢调节机械功率影响摇摆曲线的末期衰减特性。这里有个建模上的提醒加了励磁和调速器后模型时间常数跨度变大从毫秒级到秒级数值求解的刚性增强。你要特别注意求解器的选择建议用ode23t或ode15s并适当放宽仿真步长否则计算时间会明显增长。7.3 向多机系统扩展的思路单机无穷大系统的一切分析都建立在“无穷大系统纹丝不动”的假设上。但真实电网是很多台发电机互相摇摆、互相影响的。多机系统的暂态稳定分析复杂度大增因为每一台发电机都有自己的转子运动方程彼此通过网络方程耦合功角之间的相对运动取代了绝对功角成为观测量。在Simulink里做多机扩展最简洁的方式是在现有单机模型基础上把无穷大系统模块替换成另一台同步发电机模型带自己的原动机、励磁两台发电机之间用线路连接。然后你可以在某台发电机附近设置两相接地短路故障观察两台发电机的转速偏差曲线——你会发现它们不是一起摇摆而是相对摇摆功角差来回振荡。两个机群的相对功角才是判断多机系统暂态稳定的关键指标。这个扩展方向做成之后研究问题的深度和广度会完全不同因为两机系统是所有多机稳定性的最小原型两机搞懂了多机系统只是规模和网络拓扑的进步。你现在的单机模型完全可以作为搭建多机模型的基础素材——变压器、线路、故障模块直接复用只需要新增一台发电机模块及其控制信号就行。我个人在实际操作中最大的体会是单机无穷大系统之所以经典不是因为它简单而是因为它把“什么因素影响暂态稳定”这个问题拆解得足够干净。做完两相接地短路仿真如果你能不看示波器、只靠等面积定则估算出大概的临界切除时间再看仿真波形验证自己的判断那你对这个领域的理解已经上了一个台阶。还有个小建议做这类研究时养成“每改一个参数就单独导出数据并做记录”的好习惯。不要只在Scope上看一眼觉得像了就过——把转速峰值、振荡周期、衰减率这些量化指标存下来建立自己的仿真数据表。后面写报告、写论文、做对比分析这套数据就是你最可靠的素材。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进