
1. 三相短路仿真里那个“歪掉”的波形才是真正值钱的现象做电力系统仿真的朋友应该都有体会用Simulink搭一个三相短路模型跑出来Scope里看到的故障电流波形往往不是教科书上那种干干净净、对称的正弦波而是整体偏离零轴、甚至有的相朝上偏、有的相朝下偏看起来“歪歪扭扭”的。很多教程会直接忽略这个问题或者一句“这是暂态过程”带过。但如果你真做过断路器选型、做过保护定值校验就会知道这个“歪”恰恰是三相短路里最要命的东西——它叫非周期分量也就是大家常说的直流分量。标题里提到的“三相直流逆差”在我理解并实际验证过之后指的正是这个现象三相短路电流中直流分量的大小和方向在三相之间并不一样有的相直流分量接近交流幅值有的相几乎为零甚至正负方向都各不相同。这个差异直接决定了短路冲击电流峰值、断路器开断难度、电流互感器是否会饱和以及保护装置会不会误判。这篇文章就围绕一件事展开如何用Simulink把三相短路仿真做对、做透并重点把“三相直流逆差”这个容易被忽略的细节量化出来。内容包含模型选型、参数设置、故障模块使用、波形分析和工程影响适合正在做课程设计、毕设或者刚接触电力系统仿真的工程师参考。我尽量把每一步讲清楚包括为什么要这样设置而不是那样设置。2. 先搞懂短路电流里那根“直流尾巴”是怎么来的2.1 短路电流的数学形态稳态正弦之上叠加的暂态直流要理解仿真里看到的“歪波形”必须先回到最基本的电路原理。一个三相短路故障发生时系统从正常负载状态突变到一个近乎金属性短接的状态。在这个过程中由于电感中电流不能突变短路电流不能从故障前的负载电流一步跳到故障后的稳态短路电流它会经历一个暂态过程。拿A相来写短路电流的完整表达式大致是[ i_a(t) I_{m}\sin(\omega t \alpha - \varphi) - I_{m}\sin(\alpha - \varphi)e^{-t/T_a} ]第一项是稳态交流分量按正弦规律变化第二项就是直流分量也叫非周期分量。它的大小取决于故障发生的瞬间电压相位角 (\alpha) 和短路回路阻抗角 (\varphi)衰减快慢取决于时间常数 (T_a L/R)。用大白话翻译一下这条公式短路瞬间电感里的电流不能突变但交流稳态分量要求它立刻变到一个新的正弦值中间的差额怎么办只能靠一个逐渐衰减的直流分量来“垫着”。这个直流分量一段一段地补差额直到衰减到零电流波形才变成标准的对称正弦。2.2 “三相直流逆差”到底逆在哪里每一相补的“差额”都不同现在关键点来了三相电压相位角 (\alpha) 彼此相差120度所以三相各自的直流分量初始值 (I_m \sin(\alpha - \varphi)) 天然就不同。也就是说三相短路电流中每一相需要“垫”的差额是不一样大的方向也可能不一样。举个具体的数值例子。假设一个中压10kV系统短路容量200MVA等值阻抗大概是0.5Ω电阻0.05Ω、电感约1.59mH阻抗角约84度。若A相电压初相角为0B相为-120度C相为120度那么三相直流分量的初始值分别是A相(-I_m \sin(84^\circ) \approx -0.995 I_m)几乎达到交流幅值方向为负B相(-I_m \sin(-120^\circ - 84^\circ) \approx 0.41 I_m)方向为正量级不到A相的一半C相(-I_m \sin(120^\circ - 84^\circ) \approx -0.59 I_m)方向为负量级居中。这意味着同一时刻A相电流波形被强有力地往下拽C相被中等程度地往下拽而B相反而被往上抬。在示波器上看到的画面就是三相短路电流波形不但不对称而且彼此之间的偏移方向和幅度都各不相同——这就是“三相直流逆差”最直观的形态。2.3 为什么这个“逆差”比稳态短路电流大小更值得关注绝大多数教材和仿真教程告诉你的都是“短路电流有多大”“怎么算稳态短路电流”。但在真实工程里决定设备破坏程度和保护动作行为的往往是暂态过程中的非周期分量。最典型的例子断路器开断短路电流时如果直流分量还没衰减完电流波形不穿越零点或者过零延迟灭弧就困难。再比如电流互感器直流分量会使铁心磁通单方向偏移很容易饱和饱和后二次电流畸变保护装置可能拒动或者误动。我在做保护动模试验时就遇到过CT饱和导致差动保护误动的情况波形里那根直流尾巴就是元凶之一。所以做三相短路仿真如果只盯着稳态幅值看等于只看到了冰山一角。把直流分量及其三相差异量化出来才是仿真的真正价值所在。3. Simulink建模前的关键设定选对模型层次和参数坐标系3.1 模型选型无穷大电源加RL等值足以支撑暂态研究Simulink里做电力系统仿真模型层次可以差很多。有的人直接用Simscape Electrical里的Three-Phase Source搭一个无穷大理想电源然后接一段Three-Phase PI Section Line有的人会把同步发电机模型也搭进去用机械功率、励磁系统、调速器全套。这两种做法面对同一个三相短路问题结果差异很大。我个人的建议是如果你的研究重点是“短路电流暂态过程、直流分量、冲击电流”那用无穷大电源加集中RL等值阻抗就够了别急着上同步电机模型。原因有两点其一无穷大电源假设系统频率和电压幅值恒定短路电流的交流分量不衰减这能最大程度凸显直流分量的影响便于单独分析其二同步发电机模型带出励磁衰减时间常数和次暂态/暂态过程波形会叠加多个衰减分量初学者很难从波形里区分哪部分是“直流逆差”哪部分是电机内部的暂态过程。当然如果你的课题明确要求研究发电机内部的短路特性那另当别论模型必须上发电机。但在那之前先把无穷大电源模型下的现象吃透后面的分析会轻松很多。3.2 阻抗参数的设置逻辑从短路容量反推R和L模型里阻抗参数不是随便填的。最合理的做法是从电网的短路容量反推。假设系统短路容量 (S_k) 为200MVA额定线电压 (U_L) 为10kV那么等值阻抗模值为[ Z \frac{U_L^2}{S_k} \frac{(10kV)^2}{200MVA} 0.5Ω ]然后根据系统X/R比来拆分电阻和电抗。X/R比通常取520之间中压系统取10比较典型。已知总阻抗0.5Ω、X/R10可以算出[ X Z \cdot \frac{10}{\sqrt{110^2}} \approx 0.498Ω,\quad R X/10 \approx 0.05Ω ]50Hz下对应电感 (L X/(2\pi f) \approx 1.59mH)。把这个R和L填到Three-Phase Series RLC Branch里短路电流稳态幅值就是相电压幅值除以阻抗模值约 (5774/0.5 11547A)和手算对得上。我习惯在参数填完之后先跑一个稳态校验确认短路电流幅值和手算值一致再做暂态分析这一步能筛掉大部分低级错误。3.3 测量环节的选择为什么别直接用Scope看波形Simulink里测量电流有几个选择用Current Measurement模块直接串联进线路用Three-Phase V-I Measurement整体测量或者在Powergui的FFT Analysis里看谱。我建议把Current Measurement接到To Workspace把数据导回MATLAB工作区再做分析。原因很简单Scope里看波形只能“看个大概”直流分量到底有多大、衰减时间常数是多少光靠肉眼根本读不出来。把波形数据弄到工作区你才能写脚本做FFT、算峰值、算衰减时间常数甚至画三相直流分量对比曲线。这也是后面第四节做定量分析的基础。4. 从0搭建一个能跑通的三相短路仿真完整步骤和参数校验4.1 电路拓扑与模块选型下面给出我实际用的模型结构你在Simulink里照着搭就行Three-Phase Source线电压10kV、50Hz、三相平衡、内阻抗设为极小0.0001Ω模拟无穷大电源。Three-Phase Series RLC Branch作为系统等值阻抗R0.05Ω、L1.59mH。Three-Phase Fault模块放在线路末端对地三相短路。Three-Phase V-I Measurement接在故障点前用来采集三相电压电流。Three-Phase Series RLC Load故障前带一个额定负载比如5MW、功率因数0.9让系统在故障前有正常负载电流这样短路瞬间的“电流突变”更真实。Powergui模块选Continuous连续模式用于仿真求解和FFT分析。信号流向是电源→等值阻抗→测量模块→负载和故障点并联故障模块和负载都经由一个三相节点接在一起。4.2 Three-Phase Fault模块设置故障类型、接地与切换时间Three-Phase Fault模块是Simulink里专门做短路故障的双击打开后有几个关键设置项Fault type选Phase-to-Phase-to-Phase也就是三相短路如果要看接地故障就选Phase-to-Phase-to-Phase-to-Ground。三相短路分接地和不接地两种金属性三相短路一般不接地我用的是不接地三相短路。Fault resistance默认是0.001Ω。有人喜欢设成0但纯零电阻在连续系统中容易引发数值奇异、仿真步长被压到极小甚至不收敛。实际试下来设0.001Ω和设0的波形几乎没差别有限值反而让仿真稳定得多。Transition Time这个是故障投入和退出的时间数组写法是成对的比如[0.1 0.3]表示0.1秒故障合上、0.3秒故障切除。如果只想做单次短路写[0.1]也行但写成偶数数组更稳妥方便后面扩展研究重合闸。Fault Breaker相位选择三相都勾上如果只想模拟单相短路就只勾A相。故障时刻我习惯设在0.1秒仿真总时长0.4秒。这样有0.1秒的故障前稳态0.3秒的故障后暂态足够观察直流分量衰减到近乎为零的过程。以时间常数32ms算0.3秒约等于9.4个时间常数直流分量基本衰减到初始值的万分之几波形已经完全对称。4.3 求解器设置为什么用ode23tb而不是默认的ode45Simulink仿真参数页里求解器类型选Variable-step求解器选ode23tb。这是一个经常被忽略但很关键的细节。电力电子和故障暂态仿真有一个特点故障合闸瞬间电流突变相当于给系统一个阶跃激励局部变化非常剧烈属于“刚性系统”。ode45是传统的非刚性求解器在局部突变处会把步长压得很小仿真可能跑得很慢甚至卡住。ode23tb专门为刚性系统设计的能在保证精度的同时把步长放到合理范围实测下来速度能差好几倍。另外最大步长我限制在0.0001秒左右避免求解器在波形平缓处步长放太大导致故障瞬间的陡峭沿被“跳过去”细节丢失。如果发现仿真时间太长可以把相对容差从默认1e-3放宽到1e-2波形精度损失很小但速度提升明显。4.4 跑通后的第一轮校验稳态短路电流幅值对不对模型搭完别急着分析直流分量先做一步最基础的校验。看0.25秒之后的波形此时直流分量基本衰减完了短路电流应该是对称正弦读取其幅值。以上面的参数理论值应该是 (\sqrt{2}\times11547 \approx 16330A) 的峰值。如果你的仿真结果偏离这个值超过百分之几说明阻抗参数、电源幅值或者故障设置有问题需要回去检查。这一步虽然简单但能帮你建立“仿真结果可信”的基础。之后分析直流逆差时你才有信心说这个现象不是模型搞错了而是真实存在的物理过程。5. 波形深处的秘密如何定量提取三相直流分量并验证逆差5.1 从时域波形直接看不对称偏移是直流分量的外在表现跑完仿真后把三相电流波形画在一起。你会看到类似这样的画面故障瞬间电流急剧上升但A相波形整体明显下移负向偏移C相中等程度下移B相略微上移。三条曲线的“零轴位置”明显不在一条线上。这就是“直流逆差”最直观的证据如果三相直流分量相同三条波形只会整体上移或下移彼此之间不会有那么大的错位现在错位这么大说明各相的直流分量方向、大小都不同。我把这个现象在组会里分享的时候很多人第一反应是“是不是模型哪里接错了”后来用FFT验证之后才接受这是正常物理现象。5.2 用FFT把直流分量拆出来写脚本还是用Powergui要定量验证最好的工具是FFT分析。Simulink的Powergui里自带FFT Analysis工具图形界面里操作就行选输入信号、设基波频率50Hz、最高频率选到500Hz左右Show as选择“Display”或“Export”。导出后你能看到频率0Hz处的直流分量幅度以及50Hz处的基波幅度。我更推荐直接用MATLAB脚本做FFT因为可以批量处理多组仿真数据还能把三相的直流分量画成柱状图对比。参考脚本如下% 假设仿真结果已通过To Workspace导出为iA, iB, iC % 采样率设为1e4 Hz取t0.1s~0.2s的数据段 fs 1e4; t 0:1/fs:0.4; idx t 0.1 t 0.3; % 取故障后前0.2秒 iA_seg iA(idx); L length(iA_seg); Y fft(iA_seg); P2 abs(Y/L); P1 P2(1:floor(L/2)1); P1(2:end-1) 2*P1(2:end-1); f fs*(0:floor(L/2))/L; % f(1)对应直流分量f接近50Hz处对应基波 dc_A P1(1); fund_A P1(find(f49 f51, 1)); fprintf(A相直流分量: %.1f A, 基波幅值: %.1f A\n, dc_A, fund_A);用这个脚本分别算A、B、C三相你会得到一组和理论计算非常接近的数字。以第2节的参数为例A相直流初始值应该在-11000A左右B相在4700A左右C相在-6800A左右方向有正有负大小各不相同。FFT结果和手算值在百分之几以内吻合验证就算通过了。5.3 改变合闸角看逆差如何变化一个参数扫描就能讲透三相直流分量的初始值取决于故障时刻电压的相位角也就是“合闸角”。想验证这个规律可以改变Three-Phase Source模块里的Phase参数相当于改变电压初相角连续跑多组仿真。我试过从0度到330度每30度跑一组把每组的三相直流分量画在同一张图上能看到很有意思的规律当某相电压相位接近于零时该相直流分量接近零当某相电压相位接近90度时直流分量最大。三相的直流分量曲线彼此错开120度此消彼长。这个规律在实际工程里的意义是三相短路时直流分量最大的那一相就是断路器开断时最危险的那一相。选断路器的开断能力时不能让最大直流分量那一相超出断路器允许的非对称开断电流范围。很多人做短路计算只算了一个总有效值其实损失了相别信息。5.4 时间常数提取与R值的影响直流分量衰减速度由 (T_a L/R) 决定。你可以改变Three-Phase Series RLC Branch里的R值比如从0.05Ω改成0.1Ω再做同一组短路仿真对比直流分量衰减曲线的斜率。时间常数越小直流分量衰减得越快波形越早恢复对称。在MATLAB里可以从故障后电流波形中减去FFT得到的基波分量或者直接用稳态后的对称波形作为参考剩下的就是纯直流衰减曲线再用指数拟合求时间常数。这一步做完你对“为什么实际电网要求X/R比要控制在合理范围内”会有更深的理解——X/R比越大直流分量衰减越慢对开关设备越不友好。6. 这个“逆差”在工程上会导致什么继保、断路器与CT饱和6.1 断路器开断直流分量让电流“过零困难”灭弧更难交流断路器灭弧依赖电流过零点电流在过零时电弧自然熄灭。但直流分量存在时电流波形整体偏移可能导致某些半波的电流长时间不过零。我见过一个实际案例某10kV开关柜开断近端短路故障时因为直流分量太强电流有接近一个周波没有过零断路器开断时间明显拉长触头烧蚀严重。仿真里可以做一个简单的验证记录故障后到第一次电流过零的时间。设R很小的情况下你会看到某些相在故障后第一个过零点明显推迟。这个时间差就是直流分量在“使坏”。用Simulink的采样数据用过零检测函数数一数就知道。6.2 CT饱和与保护误动直流偏磁的连锁反应电流互感器的铁心励磁特性是非线性的。直流分量流过CT一次侧相当于给铁心叠加了一个单方向的磁通偏置很容易使铁心进入饱和区。CT饱和后二次电流畸变波形出现很深的缺口差动保护两侧的CT如果饱和程度不一致差流会剧增就可能误动作。在Simulink里要模拟这个过程可以用Simscape Electrical里的电流互感器模型或者用磁化曲线自定义模块。不过即使不做CT饱和仿真也应该知道这个逻辑链条三相直流逆差→三相CT饱和程度不一致→差流异常→保护误动。这个链条我在做保护动模测试时反复验证过。6.3 保护算法对直流分量的耐受性傅里叶算法也有软肋微机保护里最常用的全波傅里叶算法对直流分量是有衰减作用的但衰减速度取决于数据窗长度。仿真中你会发现故障后第一个周波内保护计算出的基波幅值偏高或偏低这就是直流分量还没有衰减掉的“污染”。利用这个仿真模型你可以把保护模块加进去观察不同直流分量下基波幅值的计算误差从而理解为什么有些保护装置需要加装直流分量抑制回路。这种仿真做出来直接可以用于保护原理课程的案例讲解比单纯讲公式直观得多。7. 参数扫描和批量仿真的效率技巧别手动一遍遍点仿真7.1 用set_param写循环脚本在研究和工程验证阶段往往需要跑几十组甚至上百组参数组合手动在Simulink界面里改参数再点仿真效率太低还容易出错。我用的方法是写MATLAB脚本通过set_param修改模块参数、用sim命令批量执行。参考脚本框架如下% 定义要扫描的合闸角序列 phases 0:30:330; dc_results zeros(length(phases), 3); for k 1:length(phases) % 修改三相电压源初相角 set_param(fault_demo/Three-Phase Source, Phase, ... [[ num2str(phases(k)) num2str(phases(k)-120) num2str(phases(k)120) ]]); % 运行仿真 simOut sim(fault_demo, StopTime, 0.4); % 从simOut中提取三相电流并做FFT % 计算直流分量存入dc_results(k, :) % ... end % 画图 plot(phases, dc_results, o-);set_param的第二个参数是模块参数名不同模块参数名不太一样可以在MATLAB里用get_param查。我一般先手动双击模块看参数对话框里字段的名字再对照get_param输出避免写错。这个脚本跑一遍不到一分钟就能出几十组结果。7.2 批量后处理把FFT分析封装成函数把FFT提取直流分量的代码封装成一个独立函数输入电流波形和时间向量输出直流分量幅值和基波幅值这样在循环里调用特别方便。我自己的习惯是这类后处理函数放到单独的.m文件里和仿真模型放同一工程目录方便复用。封装之后批量仿真的整个流程就变成外层循环改参数→跑仿真→调用函数提取特征→存结果→最后统一画图。这个过程非常顺手可以让你把精力聚焦在分析规律上而不是反复在界面上点鼠标。7.3 善用Simulink的Fast Restart加速重复仿真如果模型里有多个参数要扫描Fast Restart是个很好的加速选项。启用之后每次sim调用不需要重新编译模型只改参数就能秒级启动仿真几十组参数跑下来时间能节省一大半。Fast Restart的局限是只支持参数变化不支持模型结构变化。好在咱们这种参数扫描场景正好适用。在仿真选项卡里打开Fast Restart再用sim命令循环跑速度提升非常明显。8. 实操中踩过的坑和最终建议8.1 故障电阻设为零导致的不收敛这是新手很容易踩的坑。Three-Phase Fault模块里故障电阻如果填0Simulink的连续求解器在故障合闸瞬间很容易数值奇异仿真直接报错。解决办法就是填一个很小的有限值比如0.0001Ω或者0.001Ω。从物理本质上说真实短路也都是有电弧电阻的零电阻本来就是理想化假设取0.001Ω完全不影响结果精度。8.2 只看故障相电流而忽略健全相电流的变化三相短路时大家的注意力都在故障电流上但实际上故障前后的负荷电流变化也很重要。故障瞬间负荷电流被切断电源侧的等值阻抗上流过的电流等于短路电流而负荷支路电流变为零——这个切换过程如果负载是感性负载会产生额外的暂态分量。我在做仿真时习惯把负载支路电流也测出来有时候会发现一些意想不到的波形细节。8.3 思考题的扩展延伸如果你已经把上面这套模型跑通了建议做下面几个方向的扩展会收获更大把无穷大电源模型换成同步发电机模型观察直流分量衰减中多出来的暂态和次暂态时间常数把故障改为单相接地短路或两相短路对比不同故障类型下三相直流逆差的表现差异把负荷换成电动机负载研究短路后电动机反馈电流对直流分量的影响这在工厂供电系统里很有实际价值在模型里加入简单的过流保护逻辑观察保护动作时间和直流分量的关系。这些扩展方向我现在都跑过一遍每一步都能引出一堆值得琢磨的新问题。Simulink仿真最大的好处就是模型改起来快验证想法的成本极低。最后说点个人体会三相短路直流分量这件事我在课本上见过公式在仿真里见过波形但真正理解它还是在保护动模试验中看到CT饱和导致保护误动之后。做个有深度的仿真别只看漂亮的结果图多问问“为什么波形是歪的”“为什么三相不一样”往往能挖出比教程本身更有价值的东西。这套Simulink模型就是我从“会跑仿真”走向“会分析仿真”的一个转折点希望对你也有同样的作用。