同步发电机突然三相短路,算得上电机学里最绕也最经典的一章。磁链不能突变、电流却要突变,这一对矛盾把次暂态、暂态、稳态三个阶段硬生生拉开,也把继电保护整定、断路器开断能力校验这些工程问题全部串了起来。最近我用MATLAB/Simulink把这个暂态过程完整仿真了一遍,从搭模型到看波形踩了不少坑,这篇就把可复现的步骤和心得一次性整理出来。正在做电力系统课程设计、研究生课题,或者刚开始接触Simulink电力系统仿真的同学,看完基本就能从零把“突然三相短路”这个仿真项目完整跑通。
1. 项目背景:为什么要研究突然三相短路
1.1 课题解决什么问题
同步发电机正常运行时,定子电流是对称的三相交流,幅值相对稳定。一旦机端发生三相短路,相当于发电机出口被一条极低阻抗的路径短接,定子电流会在几个毫秒内冲到额定电流的十几倍甚至二十几倍。这个冲击电流不是简单“变大”那么简单,它会带来两个非常现实的工程后果:一个是巨大的电动力,短路瞬间绕组导条之间、绕组与铁心之间会承受几百公斤甚至几吨级的机械力,设计不当直接导致绕组变形;另一个是绕组发热,短路持续几百毫秒,铜损急剧累积,温度快速上升,绝缘可能失效。
所以电力系统设计里有两类硬指标必须用短路暂态过程来校验:一是动稳定,二是热稳定。断路器能不能在短路电流第一个峰值出现之前可靠开断,继电保护的动作电流整定到多少才既灵敏又不会误动,都离不开对短路暂态电流幅值和时间衰减特性的准确把握。这也是为什么几乎所有高校的电机学课程和电力系统分析课程都会把“突然三相短路”单独拎出来讲,并且配合仿真实验来加深理解。
从研究角度讲,三相短路又是所有短路类型里最严重的一种。同一点发生短路时,三相短路故障电流最大,对系统的冲击最厉害。把最严重的情况研究清楚了,单相接地、两相短路这些问题都可以在这个基础上做类比和扩展。这个课题看着是电机学内容,实际落脚点全在电力系统设计和保护上。
1.2 为什么选Simulink做暂态仿真
突然三相短路的理论推导是用dq0坐标变换把定子三相方程解耦,再结合励磁绕组和阻尼绕组的电磁暂态方程来求解的。手算能得出短路电流的解析表达式,但代入具体电机参数之后,计算量非常大,而且波形绘制、频谱分析、参数扫参这些工作手算基本做不动。Simulink的优势在于它把同步电机、输电线路、负载、故障模块都封装成了现成组件,只要参数填对、接线连对,点一下运行就能看见完整的暂态波形。
更实际的好处是Simulink里可以随意改变工况。同一套模型,把故障类型从三相短路改成两相短路,把故障时刻从0.3s改成0.5s,把负载从感性改成容性,几分钟就能拿到一组新结果,非常适合做对比分析和参数敏感性研究。这在手算条件下几乎不可能实现。
我这次用的环境是MATLAB R2021a,需要安装Simscape Electrical工具箱(老版本叫SimPowerSystems,也叫Specialized Power Systems)。没有这个工具箱,Simulink库里找不到同步电机模块,后面所有步骤都无从谈起。安装好之后,电气相关的模块都在Simscape/Electrical/Specialized Power Systems目录下面。
2. 理论基础:突然三相短路的暂态本质
2.1 磁链守恒与电流突变之间的博弈
要理解突然三相短路,必须先理解一个基本物理事实:电感绕组的磁链不能突变。定子绕组和转子绕组都相当于带铁心的电感线圈,短路瞬间外部电路阻抗突然减小,电流有增大的趋势,但磁链就像一个有惯性的系统,它不允许自己突然改变。为了维持短路瞬间的磁链不变,电流必须做出一些“非常规”的调整,这正是所有暂态现象的根源。
具体过程可以这样想象:短路之前,定子电枢反应磁动势与转子同步旋转,相当于一个相对静止的磁场。短路发生的瞬间,定子电流要把自己的幅值突然抬上去,但磁链守恒不允许这种突变,于是定子绕组里出现了一套非周期分量(直流分量),由它产生一个静止的空间磁场,去抵消电枢反应磁链的变化影响。与此同时,转子绕组也不能坐视不理,励磁绕组和阻尼绕组分别感应出相应的电流分量来维持自身磁链不变。这些分量此消彼长,叠加出来的定子电流就是我们在示波器上看到的“先猛冲、再慢慢衰减”的波形。
2.2 三个阶段:次暂态、暂态、稳态
短路电流的衰减不是按一个时间常数单调下降的,而是按多个时间常数分层衰减。这是因为转子上的不同绕组具有不同的时间常数,衰减速度差异很大。
短路发生后的最初几个周波内,阻尼绕组的作用还没有衰减完,它对定子短路电流的影响最显著,此时定子电流交流分量有效值可以用次暂态电抗Xd″来折算,这个阶段叫次暂态期,对应的时间常数是Td″,典型值只有几十毫秒。阻尼绕组电流衰减完了之后,励磁绕组的作用开始主导,此时交流分量有效值用暂态电抗Xd′来折算,这个阶段叫暂态期,对应时间常数Td′,典型值在几秒量级。最终励磁绕组的作用也衰减完毕,短路电流的交流分量进入稳态,此时电抗就是同步电抗Xd。
所以从波形上看,短路电流的周期分量包络线呈现“三段式”衰减:最初段下降最陡,中间段平缓一些,最后趋于水平。这个特征在仿真波形里看得非常清楚,也是检验仿真是否正确的重要标志。
2.3 定子短路电流的三个分量
把突然短路后的定子电流做傅里叶分解,可以看到三个分量叠加:
第一个是基频交流分量,也就是周期分量。它以工频50Hz振荡,幅值按次暂态到暂态再到稳态的顺序逐级衰减,决定短路电流最终能稳定在什么水平。
第二个是非周期直流分量。短路瞬间为了维持磁链不变,定子电流里出现一个随时间衰减的直流偏置,它让短路电流波形对时间轴不对称——正半周峰值比负半周峰值明显更高。这个直流分量按定子侧时间常数Ta衰减,典型值零点几秒。
第三个是倍频分量,也就是100Hz分量。由于发电机转子的直轴和交轴磁阻不一样,直流分量产生的静止磁场被转子旋转调制,感应出二倍频的交流分量,它也按Ta衰减,但幅值通常比前两个分量小,容易被忽略。
这三个分量叠加在一起,才形成我们看到的复杂暂态波形。只靠眼睛看时域波形很难分解它们,所以后面我会专门演示怎么用FFT工具把这几个分量拆出来验证。
2.4 几个关键时间常数和冲击系数
做仿真之前,建议先把几个关键参数的口诀记住:
- Xd″:次暂态电抗,数值最小,决定短路电流头几个周期的幅值上限;
- Xd′:暂态电抗,数值居中,决定暂态阶段电流水平;
- Xd:同步电抗,数值最大,决定稳态短路电流;
- Td″:次暂态时间常数,几毫秒到几十毫秒;
- Td′:暂态时间常数,1秒到几秒;
- Ta:定子非周期分量时间常数,零点几秒到1秒左右。
短路电流最大瞬时值大概出现在短路后半个周波处(约10ms),工程上用一个冲击系数Ksh来估算,一般取1.8~1.9。假设次暂态电流有效值是I″,那最大冲击电流可以近似写成:
$$\hat{i}{sh} = K{sh} \cdot \sqrt{2} \cdot I''$$
如果次暂态电抗标幺值是0.12,短路前为空载额定电压,I″大概是1/0.12约等于8.33(标幺值),冲击电流差不多是1.9乘根号2再乘8.33,约22倍额定电流。这个数字大得吓人,但它就是真实电磁暂态的结果,也是动稳定校验的基础。
3. Simulink仿真模型搭建
3.1 环境与工具箱准备
打开Simulink之后,先在模型里放一个Powergui模块。这个模块不在普通Simulink库里,它在Simscape/Electrical/Specialized Power Systems/Powergui路径下。Powergui相当于整个电力系统仿真模型的“总控台”,模型里没有它,电气模块之间的数据交互就建立不起来,更没法做潮流初始化和FFT分析。我在刚开始搭模型时忘了放这个模块,仿真直接报错,提示缺少Powergui,后来补上才正常。
模型里放好Powergui之后,打开它的设置界面可以看到几个关键选项:仿真的采样时间(Sample time)、是否用相量模式(Phasor simulation)等。做暂态过程研究必须选“Continuous”或者“Discrete with sample time”,不能用Phasor模式,因为相量模式只能看基波稳态,看不到直流分量和倍频分量。
3.2 同步电机模块的参数填写
在Simscape/Electrical/Specialized Power Systems/Machines目录下找到Synchronous Machine模块。如果库里出现多个同步电机选项,优先选Synchronous Machine(标准模型),参数设置面板里有SI单位和标幺值(pu)两种输入模式。我习惯用标幺值,方便直接和理论公式对应。
我这次搭模型用了一套典型的汽轮发电机参数,额定容量50MVA、额定电压10.5kV、频率50Hz。转子类型选Round(隐极机),如果研究凸极机就选Salient,参数会多出交轴相关项。参数面板里需要填的核心电气参数如下:
- 定子电阻Rs:0.002(标幺值)
- 同步电抗Xd:1.0,交轴同步电抗Xq:0.65
- 暂态电抗Xd′:0.25
- 次暂态电抗Xd″:0.15,Xq″:0.18
- 暂态时间常数Td′:2.0秒,次暂态时间常数Td″:0.05秒
- 定子非周期分量时间常数Ta:0.2秒
- 惯性常数H:4秒
参数填写时要注意单位,标幺值模式下所有电抗都填相对值,不是直接填欧姆或亨利,填错了波形形态完全不对。另外电机还有个“Mechanical input”选项,一般选Pm(机械功率)输入方式,然后在外部接一个Constant模块给定机械功率。如果选转速输入,油门、调速器的建模逻辑就不一样了。
在设置面板里还有一个初始状态(Initial conditions)区,可以直接填初始转速、初始功角、初始励磁电流等。但这组数据很难提前估准,更推荐的做法是用Powergui的Load Flow工具自动计算,后面单独说。
3.3 故障模块、测量模块与整体接线
故障模块用的是Three-Phase Fault,在Specialized Power Systems/Faults目录下。测量模块用Three-Phase V-I Measurement,在Specialized Power Systems/Measurements目录下。负载用Three-Phase Series RLC Load,在Elements目录下。
整体接线顺序我是这样搭的:同步电机定子三相输出端(a、b、c)先接到一个三线母线节点,从母线上并联引出三条支路:第一条接Three-Phase V-I Measurement再去接负载;第二条直接接Three-Phase Fault,故障模块另一端接地;第三条留给后续扩展用。测量模块串联在发电机出口和负载之间,测到的就是发电机输出的三相电压和电流。故障模块并联在测量点上,这样它动作时,测量点测到的电流就是包含故障分量的发电机出口电流。
Three-Phase Fault模块的参数设置很关键。故障类型选Three-phase(ABC),这样三相同时短路。故障电阻Rfault不能设成绝对0,否则纯金属性短路在数值求解时容易产生高频振荡甚至不收敛,我习惯填0.001欧姆,物理上可以视为金属性短路,但数值上友好很多。故障接地电阻Rn填一个很大值(比如1e6欧姆),表示这个故障是三相相间短路、没有接地。
接线完成后,有个很容易忽略的细节:同步电机模块的电气输出端口是三相互感形式的,需要确认它和测量模块、故障模块之间的连线是三相线(粗线),而不是单相信号线。如果颜色不对、线变成细线,说明端口类型不匹配,运行时会报错。
3.4 用Powergui做初始化
同步电机模型里有很多初始状态变量,包括功角、励磁电流、定子电流初始值。它们不是随便填的,必须和短路前的稳态运行状态一致,否则仿真一开始就有一个“假暂态”,波形前面会有一段莫名其妙的过程,甚至直接初始化失败。
推荐做法是双击Powergui,在Tools菜单里选择Load Flow工具。Load Flow对话框里先选择要初始化的同步电机,然后指定机端电压幅值(比如1.0标幺)、有功功率和无功功率。点计算之后,Powergui会自动把所有初始状态算好并写回同步电机模块。这个步骤做完,模型的初始化问题基本就解决了。
需要注意的是,如果要研究“空载突然短路”工况,负载功率设成0;如果要研究“带负载短路”,就设成对应负载功率。两种工况下的短路电流表达式差别不小,Load Flow初始化结果也不一样。我在做对比实验时是分两次计算的,一次空载,一次额定负载,避免用同一组初始状态覆盖两种工况。
4. 仿真参数设置与工况设计
4.1 短路工况与故障时序
研究突然三相短路,通常要让发电机先稳定运行一段时间,再在某个时刻突加故障,这样才能保证短路瞬间磁场处于正常稳态,暂态过程才符合理论假设。我这里的故障时序是:0到0.3秒正常运行,0.3秒时刻机端发生三相短路,之后持续短路到仿真结束。
Three-Phase Fault模块的切换时间(Switching times)填成[0.3, 100],表示0.3秒闭合故障、100秒断开故障。后半段填100秒而不是不填,是为了让故障在整个仿真区间内保持接通状态,避免触发故障复归逻辑。如果要研究故障切除后的恢复过程,可以把后半段时间改成实际切除时刻,比如[0.3, 0.45],这样0.45秒后系统切回正常运行,还能看到电压恢复和电流衰减的第二段动态。
仿真总时长我这里设的是2秒。0到0.3秒是故障前稳态,0.3到2秒足够观察次暂态和暂态的完整衰减。如果把仿真时长设太短比如总共只有0.4秒,暂态期的衰减趋势就看不出来,Td′的分析根本做不了。
4.2 求解器与容差设置
电气暂态仿真本质是求解一组带有不同时间尺度的刚性微分方程,定子电感的电磁暂态时间常数在毫秒级,而转子机械时间常数在秒级,二者相差好几个数量级,普通求解器很容易出现数值振荡或者仿真速度极慢。
我的实际经验是:求解器必须选变步长刚性求解器,ode23tb或者ode15s都可以,我倾向ode23tb,它在电磁暂态仿真里表现更稳。相对容差(Relative tolerance)设置在1e-4到1e-5之间,太宽松波形毛刺多,太严格仿真慢到怀疑人生。最大步长(Max step size)限制在1e-3秒左右,如果波形出现明显的高频毛刺,可以进一步压到1e-4秒。
另外我建议在Powergui里把采样时间设置成跟示波器记录步长匹配。如果后面要做FFT分析,采样步长最好取1e-4秒甚至更小,这样才能正确观测到50Hz基波和100Hz倍频分量。采样率太低,高频分量会被混叠掉,波形分析就失真了。
4.3 数据导出与波形观察技巧
示波器Scope直接看波形方便,但做定量分析时需要把数据导出到工作区。两个办法:一个是直接在Scope界面里打开“Logging”属性,把记录数据存成数组变量;另一个更灵活,在模型里加一个To Workspace模块,把测量模块输出的电流电压信号接进去,设定采样周期后,仿真结束数据自动存成MATLAB变量。
我通常把定子三相电流、机端电压、励磁电流、转速、电磁转矩五个信号全部导出。导出之后就可以用MATLAB脚本做后处理:找峰值、算包络线、拟合时间常数、画对比图。这一步在纯Scope界面里是做不到的。比如要确定短路电流最大瞬时值出现的时刻,直接对电流数组用find函数找最大值就行,比肉眼盯示波器准确得多。
5. 仿真结果分析与理论验证
5.1 定子三相电流波形解读
仿真跑完之后,第一个看的就是定子三相电流波形。短路发生在0.3秒,波形从0.3秒开始剧烈变化,A相电流瞬间冲到很高的幅值,然后在约10ms左右达到最大峰值。
从波形上能明显看到三个典型特征。第一个特征是波形整体关于横轴不对称,正半周幅值显著大于负半周,这就是非周期直流分量的作用。第二个特征是幅值不是匀速衰减的——短路后最初几个周波衰减得很快,这是次暂态过程;随后衰减速度放慢,进入暂态阶段;最后波形基本稳定在一个不再变化的幅值上,对应稳态短路。第三个特征是三相电流的直流偏置大小各不相同,这是由短路瞬间各相电压相角不同决定的。
把A相电流单独画出来,用MATLAB的envelope函数或者手动提取上下包络线,然后对周期分量的幅值做对数拟合,能直接拟合出衰减时间常数。我在仿真结果上做了一遍,拟合出来的暂态时间常数和电机参数面板里填的Td′基本吻合,误差不到百分之几,这说明模型参数设置和求解过程都是对路的。
5.2 励磁电流与电磁转矩的变化
研究突然三相短路不能只看定子电流,转子侧的励磁电流变化同样值得观察。短路瞬间,励磁电流会突然增大,出现一个明显的冲击尖峰,随后按照转子绕组的时间常数慢慢衰减回原来的水平。这个现象的背后也是磁链守恒——定子突然增大的短路电流试图改变励磁绕组的磁链,励磁绕组就感应出额外的直流电流来抵抗。
电磁转矩波形则是另一番景象。短路瞬间电磁转矩会出现大幅振荡,振荡幅度可能达到额定转矩的数倍。这个振荡转矩作用在转子上,如果不加考虑,可能对轴系产生疲劳损伤。观察转矩曲线还会发现它叠加了一个随时间衰减的振荡分量,振荡频率与转差和系统参数有关。对于只研究电气暂态的课题,电磁转矩观察可以放到次要位置;但如果涉及次同步振荡和轴系扭振研究,这段波形就是重点分析了。
5.3 用公式核算短路电流峰值
仿真波形出来了,得拿理论公式核算一下,确认数量级是合理的。假设短路前为空载额定电压,用次暂态电抗估算短路电流初始值:
$$I'' = \frac{E}{X_d''}$$
代入我填的参数,E取1.0,Xd″取0.15,算出来I″标幺值约6.67。再乘以冲击系数1.9和根号2,最大冲击电流约18倍额定电流。回看仿真波形里A相电流的最大瞬时值,数量级完全对得上。这个核算虽然粗糙,但足以快速判断仿真结果是否可信。
如果短路前带额定负载,初始功角不为零,短路电流的计算会比空载情况复杂,需要同时考虑交轴和直轴电抗的差异。但数量级不会差太多,仿真的价值就在于把这一整套复杂的衰减过程精确呈现出来。
5.4 FFT辅助验证频率构成
为了验证前面理论部分讲的三分量结构,可以对短路后的一段电流波形做FFT分析。Powergui里自带FFT Analysis工具,在Tools菜单下可以打开。选择要分析的信号、设定分析窗口起点和基波频率,工具会输出各频率分量的幅值谱。
我做了一次FFT分析,频谱图上清楚地出现四个主要峰值:直流附近的零频率分量、工频50Hz分量、倍频100Hz分量。50Hz分量幅值最大,直流分量次之,100Hz分量幅值相对小但清晰可辨。这个结果和理论推导中“定子短路电流由基频交流、非周期直流、倍频分量叠加而成”的描述完全对应。看到这一张频谱图,整个仿真项目的正确性基本就得到了确认。
6. 常见问题与调试实录
6.1 初始化失败与空载启动异常
仿真一运行就报错,提示初始状态不一致或者“Initial conditions are inconsistent”,这是我认为最常遇到的问题。原因基本都在于同步电机的初始状态没有正确计算,或者负载功率和电机机械功率没匹配上。
解法就是前面说的Powergui Load Flow工具,先把模型里的负载、发电机功率参数全部设好,再运行初始化计算。这里有个小技巧:Load Flow计算前,先确认机械功率输入已经给了一个合理的初值。比如目标是带20MW负载,机械功率Pm就要填20MW左右,不能差太远,否则Load Flow算出来励磁电流和功角是负的,模型一样跑不起来。
还有一种情况是短路前空载运行,负载功率为0,但机械功率模块还给了很大的功率值,发电机转速会一直往上升,仿真出来的“稳态”根本不是稳态。这种情况下要把机械功率设成0或者很小,让发电机处在空载状态。
6.2 波形毛刺严重或仿真不收敛
波形上出现密密麻麻的高频毛刺,或者仿真跑到短路瞬间直接报“Solver could not converge”,通常是求解器设置问题。同步电机短路模型里包含大量快速电磁分量,如果最大步长过大,在电流冲击最剧烈的几个毫秒内无法准确采样,毛刺和不收敛就会集中出现。
我的解决办法是三步走:先换求解器,从默认的ode45改成ode23tb;再把相对容差从默认值调严到1e-5量级;最后把最大步长限制在1e-4秒以下。大多数毛刺问题在跑完这三步都能解决。如果还有问题,检查故障模块的接地电阻是不是太小,短路电阻设成0容易导致数值奇异,改为0.001到0.01欧姆通常能消掉最后那点振荡。
6.3 故障模块未按预期动作
有一种很奇怪的情况:仿真跑完了,波形上看不到短路冲击,电流完全正常,就像故障模块没生效一样。第一次碰到时我也懵了一下。排查之后发现问题是“Timed fault”的切换时间没填对。Three-Phase Fault模块的Switching times必须在故障类型设为“Timed fault”的配置下才生效——如果External control或Manual switch被勾选了,模块就不会按时间自动切换。
另一种更隐蔽的情况是故障模块接在了负载后面而不是发电机出口,导致故障时发电机到故障点之间的阻抗还是很大,短路电流没有被限制在机端直接就进入故障支路。做短路暂态仿真,故障点一定要放在发电机出口母线上,或者至少放在测量点的电源侧,才能反映真正的“机端短路”。
6.4 仿真结果与理论偏差大
波形形态看着像那么回事,但算出来的短路电流峰比理论值小了百分之三四十。这种情况一般是电抗参数单位搞错了。同步电机模块如果选了SI单位模式,就要填亨利、欧姆、秒这些实际值,不能把标幺值直接怼进去。同一台电机,标幺值模式下填Xd=1.0,SI模式下可能填的是0.01亨利这样的实际电感值,差一个数量级。
还有一个容易被忽视的因素是短路前负载水平。理论公式中如果直接用空载电动势和次暂态电抗算短路电流,那对应的是空载短路工况;如果仿真里带了大负载,机端电压在故障前可能已经被负载拉低,短路初期电流自然会小一些。做对比时一定要保证理论计算的前提和仿真工况一致,否则就是拿苹果比橘子。
下面整理一个速查表,方便后续调试时快速对照:
| 现象 | 常见原因 | 解决办法 |
|---|---|---|
| 初始化报错 | 初始状态未计算或机械功率不匹配 | 用Powergui Load Flow重新初始化 |
| 波形高频毛刺 | 求解器刚性不足或步长过大 | 换ode23tb,容差1e-5,步长1e-4 |
| 短路波形缺失 | 故障模块切换时间未设置 | 确认Switching times并选择Timed fault |
| 峰值偏小 | 电抗参数单位填错 | 检查用的是SI单位还是标幺值 |
| 仿真速度极慢 | 容差过严或采样步长过小 | 容差放松到1e-4,步长放宽到1e-3 |
| 励磁电流异常 | 励磁电压源设置错误 | 检查励磁端接的是电压源还是电流源 |
这个项目做完之后,我最大的体会是:突然三相短路仿真最大的难点不在搭模型,而在“理解你看到的波形”。模型搭建只要按部就班做,参数填对、初始化做好,双击运行就能出结果。但要把波形里的次暂态衰减、暂态衰减、直流偏置、倍频分量一项项和理论对起来,才算是真正掌握了这个课题。
最后分享一个小扩展方向:把Three-Phase Fault的故障类型从三相改成两相短路或者单相接地,其他什么都不动,再跑一遍仿真,对比短路电流幅值和波形特征的变化。这个对比实验能非常直观地帮你理解不同短路类型对系统的冲击差异,而且只改一个参数就能完成,强烈建议试一次。