简介:面向电力系统自动化、继电保护及相关专业的高校学生和科研人员,这份Simulink仿真模型围绕双侧电源系统中的距离保护展开,支持设置不同类型与位置的故障,用于验证保护动作特性、灵敏度与可靠性,也可为保护装置配置整定提供仿真参考。资源压缩包共1个docx文件,大小约66KB,以文档形式完整呈现模型的搭建思路、参数设置与结果分析。目前已有69人学习浏览,适合用于课程设计、教学演示及保护算法验证。通过阅读该文档,读者可以掌握双侧电源系统距离保护的建模流程,理解阻抗测量、故障判别与动作边界等核心逻辑,并借助模型结构快速复现典型工况下的保护行为,为后续科研与工程应用打下基础。
1. 双侧电源系统距离保护仿真模型:难的不是搭电路,是让保护逻辑正确动作
双侧电源系统距离保护仿真模型,第一眼看上去就是把教材里的阻抗继电器搬进 Simulink,但真正上手跑一遍就会发现,两侧电源的助增电流、故障分量的穿越方向、过渡电阻对测量阻抗的抬升,任何一个环节没处理干净,保护动作就会和理论值对不上。这份基于 Simulink 的仿真资源,把双侧电源系统建模、故障设置模块和距离保护逻辑集成在一个工程里,能直接用来做三类事:继电保护课程的教学演示与课程设计、科研项目里的保护算法动作特性验证,以及实际保护装置配置整定前的仿真预演。适合电力系统自动化专业的学生、做保护算法研究的科研人员,以及需要快速验证保护逻辑的现场工程技术人员。
2. 距离保护建模前的选型推演:为什么双侧电源比单端供电更考验保护逻辑
2.1 单端供电的局限:为什么工程校验必须用双侧电源模型
距离保护的基本原理是测量保护安装处到故障点的阻抗,再和整定值比较。教科书里为了简化推导,几乎都用单端供电模型,因为单端供电下故障电流方向唯一,流经线路的电流就是电源注入的电流,测量阻抗 Z = U / I 算出来非常干净。但实际电网里电源几乎都是双侧甚至多侧供电的,这时候问题就来了:线路内部发生故障时,两侧电源都会向故障点注入电流,流过保护安装处的电流是两侧电流的叠加,而且对侧电源的助增电流会改变本侧测量阻抗的幅值和相角。
这就是为什么单端供电下整定计算很顺畅,实际工程里却经常出现保护范围缩短或者超越的原因。助增电流带来的效应叫助增系数,它的存在让本侧保护测到的阻抗偏大或偏小,方向也可能偏移。做仿真模型的时候如果只用单端电源,等于绕过了电力系统保护中最核心的配合问题,所以这份资源直接用双侧电源拓扑,从建模阶段就把助增效应纳入了考核范围,这才是距离保护仿真该有的起点。
2.2 测量阻抗计算的核心:电压电流到相量的提取
距离保护的测量阻抗不是直接用瞬时值 U(t)/I(t) 算的,那样会在故障暂态期间得到一堆振荡的数值。正确做法是从电压电流波形里提取基波相量,再用相量的幅值和相角计算阻抗。对于三相短路,直接取相电压和相电流的基波比值即可;对于单相接地,还要引入零序补偿系数 K0,公式是 Z = (U_ph) / (I_ph + K0 * 3 * I0),其中 K0 = (Z0 - Z1) / (3 * Z1)。很多新手在仿真里只测不接地故障就草率收工,一到单相接地验证就翻车,问题就出在 K0 这个补偿系数上。
Simulink 里提取基波相量有几种常见做法:一是用 Simscape Electrical 自带的 Fourier 模块,直接输入基波频率 50Hz,输出实部和虚部;二是自己写全波傅里叶算法,对采样序列做滑动窗计算。前者简单,后者灵活。我一般建议在模型里用傅里叶模块先把相量算好,保存到工作区再做后续分析,这样既能实时观察保护逻辑的动作,也能离线复核数据,两头都方便。
2.3 建模选型:用 Simscape 模块库还是手动搭电路
搭建双侧电源距离保护仿真模型,第一步选型就分两条路。一条是用 Simscape Electrical 自带的 Three-Phase Source、Distributed Parameters Line、Three-Phase Fault 这些现成模块搭主电路,优点是元件特性贴近实际、电磁暂态过程真实,缺点是模块参数多,每个都要查手册;另一条是用基础 RLC 元件和受控源手动搭,优点是参数透明、教学时能把每个元器件讲清楚,缺点是建模工作量大,而且分布参数效应模拟不准确。
我拆过不少类似的仿真资源,实际操作中 90% 的情况推荐走 Simscape 路线,因为距离保护仿真关注的是保护逻辑层面的行为,不是线路电磁暂态的精细度。下表是把两条路线的差异列出来,方便你按自己的场景选:
| 对比维度 | Simscape 模块库路线 | 手动搭电路路线 |
|---|---|---|
| 建模速度 | 快,元件拖拽即用 | 慢,每个元件都要搭 |
| 分布参数线路 | 自带分布式参数模型 | 难以模拟,通常用集中参数近似 |
| 故障设置 | Three-Phase Fault 直接选类型 | 需要组合开关和电阻网络 |
| 保护逻辑验证 | 能直接接入测量模块 | 同样能接入,但信号路径要自己理 |
| 适用场景 | 科研验证、课程设计 | 教学演示原理、底层研究 |
这份双侧电源系统距离保护仿真模型走的就是前一条路线:主电路用 Simscape 模块搭好,保护逻辑用 Simulink 模块和 Matlab 函数混合实现。理解这个选型逻辑,后面改模型参数时才不会迷失在一堆模块层级里。
3. 搭建双侧电源 Simulink 模型:电源、线路与故障模块的参数怎么定
3.1 系统拓扑结构与电源参数设置
搭建模型的第一个步骤是建立双侧电源系统的单线图拓扑。典型配置是:左侧电源经线路 L1 接入母线 M,右侧电源经线路 L2 接入母线 N,两条线路中间设置故障点。保护安装位置在母线 M 侧,因此电压电流测量模块要挂在 M 侧断路器出口。系统电压等级我一般取 110kV,两侧电源相角差取 10 度到 20 度之间,用来模拟正常运行时线路中有功潮流流动的工况。
电源模块参数是最容易埋坑的地方。Three-Phase Source 模块内部除了电压幅值和频率,还有 Source Internal Resistance 和 Source Internal Inductance 两个关键参数。这两个值决定了系统的短路容量,也直接影响了故障电流的幅值和衰减时间常数。常见做法是按系统短路容量反推内阻抗,比如 110kV 系统、短路容量 1000MVA 时,内阻抗标幺值大约在 0.1 到 0.2 之间。以下是初始化脚本的示例:
% 双侧电源系统参数初始化 % 基准值设置 V_base = 110e3; % 线电压有效值 110kV S_base = 100e6; % 基准容量 100MVA f = 50; % 工频 50Hz Z_base = V_base^2 / S_base; % 基准阻抗 % 电源1(左侧电源) V1 = 110e3; % 额定电压 110kV Phase1 = 0; % 初始相角 0度 X1_pu = 0.15; % 内电抗标幺值 0.15 R1_pu = 0.02; % 内电阻标幺值 0.02 L1 = X1_pu * Z_base / (2*pi*f); % 折算到实际电感值 R1 = R1_pu * Z_base; % 折算到实际电阻值 % 电源2(右侧电源) V2 = 110e3; Phase2 = 15; % 相角超前15度,模拟功率从左往右流动 X2_pu = 0.12; R2_pu = 0.015; L2 = X2_pu * Z_base / (2*pi*f); R2 = R2_pu * Z_base;参数说明:这里最关键的是把标幺值折算成实际值填入 Three-Phase Source 模块。很多人在模型里直接填标幺值导致仿真结果偏差巨大,根源就是没意识到 Simscape 模块需要物理单位。另外电源相角差 Phase2 不要超过 30 度,否则正常运行时线路潮流过大,保护逻辑还没动作系统就接近稳定极限了。
3.2 线路参数与长度选择
线路参数用 Distributed Parameters Line 模块设置。这个模块需要填正序电阻、正序电感、正序电容,以及零序电阻、零序电感、零序电容。典型 110kV 架空输电线路参数大概是:正序电阻 0.15 欧姆每公里,正序电感 1.2 毫亨每公里,正序电容 9nF 每公里,零序电阻约为正序的 3 倍,零序电感约为正序的 3.5 倍。线路长度我建议取 80km 到 100km,太长会引入明显的分布电容电流,太短则整定范围过小,不利于观察保护的阶梯配合。
线路两段之间的故障点位置,通过设置故障模块在地理位置上的接入点来控制。常见做法是在线路中点 50% 处设置一个故障点,再通过修改线路段的长度比例来模拟不同故障距离。如果模型里做成两条线路段串联,中间引出故障点,就可以在不改动故障模块位置的前提下,通过改两段线路的长度来连续调整故障位置百分比,这是做故障扫描时最方便的拓扑结构。
3.3 故障模块配置与过渡电阻
Three-Phase Fault 模块是仿真模型里用来制造短路的核心。它的参数配置有几个要点。故障类型可选单相接地、两相短路、两相接地、三相短路,这四种都必须能切换。Transition Time 设置故障发生时刻,建议设在 0.2s,这样 0 到 0.2s 是稳态运行段,保护不会在启动瞬间被暂态干扰;故障持续时间建议 0.1s,0.3s 时故障切除。故障电阻 Rf 的设置要分情况讨论:金属性短路设 0.001 欧姆即可,但工程上更关注经过渡电阻短路的情况,这时 Rf 取 10 到 20 欧姆比较典型。
还有一点容易忽略,就是 Fault 模块的 Ground Resistance 参数,这个值在单相接地故障里会直接影响零序电流的大小。默认值 0.001 适合金属性接地,但如果要模拟高阻接地故障,需要把它调到几十欧姆甚至上百欧姆。故障模块的设置用脚本统一管理,比每次手动点界面高效得多,以下是我常用的脚本片段:
% 故障设置脚本 - 控制三相故障模块参数 % 通过修改 Fault_Type 切换故障类型 Fault_Type = 1; % 1-三相短路 2-两相短路 3-单相接地 if Fault_Type == 1 fault_mat = [1 1 1 0]; % [A相 B相 C相 接地] elseif Fault_Type == 2 fault_mat = [1 1 0 0]; % AB两相短路 elseif Fault_Type == 3 fault_mat = [1 0 0 1]; % A相接地 end % 写回故障模块参数 set_param('dist_model/Fault', 'FaultA', num2str(fault_mat(1))); set_param('dist_model/Fault', 'FaultB', num2str(fault_mat(2))); set_param('dist_model/Fault', 'FaultC', num2str(fault_mat(3))); set_param('dist_model/Fault', 'FaultG', num2str(fault_mat(4))); set_param('dist_model/Fault', 'TransitionTime', '0.2'); set_param('dist_model/Fault', 'TransitionTime2', '0.3'); set_param('dist_model/Fault', 'Rf', num2str(10)); % 过渡电阻 10 欧姆逻辑说明:脚本通过 set_param 直接写模块参数,避免手改界面的麻烦,也为后面章节要讲的故障扫描埋了伏笔。TransitionTime 是故障发生时刻,TransitionTime2 是故障切除时刻,两个参数配合形成 0.1s 的故障窗口。Rf 取 10 欧姆模拟的是带过渡电阻的短路,如果做金属性短路,把这个值改成 0.001 即可。
3.4 测量信号采集与标幺化处理
保护安装处的电压和电流信号通过 Voltage Measurement 和 Current Measurement 模块接入控制侧。这两个模块输出的信号是 Simscape 物理信号,不能直接进 Simulink 的数学运算模块,中间必须加 Ideal Transformer 或者直接用 Simscape 的 PS-Simulink Converter 做信号转换。我一般用的是 PS-Simulink Converter,输出端接一个增益模块做标幺化,电压增益取 1 / (V_base * sqrt(2/3)),这样转换后幅值接近 1 标幺,保护逻辑里比较阻抗的时候数值更规整。
采集到的 A 相电流、B 相电流、C 相电流以及三相电压,先送进 Fourier 模块提取基波。Fourier 模块的 Harmonic n 设为 1,基频 50Hz,采样保持时间设为 0.02s。这里有个细节:傅里叶模块在仿真开始的第一个周波内输出是不稳定的,因为内部积分需要积累完整周期数据,所以保护逻辑里必须加一个延时或者启动判据,避免 0 到 0.02s 这个窗口内误动作。很多人在仿真波形里看到保护在故障发生前就动作,原因就是这个启动判据缺失。
4. 距离保护核心逻辑实现:从采样值到测量阻抗再到动作判据
4.1 阻抗计算子系统的搭建
阻抗计算模块是整个保护逻辑的基础。输入是保护安装处的三相电压和电流基波相量,输出是测量阻抗的电阻分量 R 和电抗分量 X。对于三相短路,直接用相电压基波除以相电流基波即可;对于单相接地,要带零序补偿。我搭这个模块时采用了可切换结构:用 Manual Switch 选择故障类型对应的计算通道,三相短路走直接除法通道,单相接地走补偿通道,这样同一个模型可以验证不同故障类型下的保护行为。
以下是一个典型的 Matlab 函数模块代码,用来实现带零序补偿的单相接地阻抗计算:
function [R_meas, X_meas] = calc_impedance(U_ph_RE, U_ph_IM, I_ph_RE, I_ph_IM, I0_RE, I0_IM, K0_RE, K0_IM) % 输入:相电压实部虚部、相电流实部虚部、零序电流实部虚部、补偿系数 % 输出:测量电阻和测量电抗 % 计算补偿后的电流相量 I_comp = I_ph + K0 * 3 * I0 I_comp_RE = I_ph_RE + 3 * (K0_RE * I0_RE - K0_IM * I0_IM); I_comp_IM = I_ph_IM + 3 * (K0_RE * I0_IM + K0_IM * I0_RE); % 计算阻抗 Z = U / I denom = I_comp_RE^2 + I_comp_IM^2; R_meas = (U_ph_RE * I_comp_RE + U_ph_IM * I_comp_IM) / denom; X_meas = (U_ph_IM * I_comp_RE - U_ph_RE * I_comp_IM) / denom; end逻辑说明:复数除法在幅相平面上等价于将电压相量旋转并缩放。上面代码里分母是补偿后电流的模平方,分子前半部分是电阻分量,包含旋转因子后得到的是测量电阻;分子后半部分是电抗分量,符号取决于电压和电流的相位关系。这里 K0_RE 和 K0_IM 是零序补偿系数的实部和虚部,理论值来自线路零序和正序阻抗的差,实际工程里还需要考虑接地电阻的影响,但仿真阶段用理论值足够。
4.2 动作判据:方向阻抗圆与四边形特性
阻抗算出以后,接下来是动作判据。距离保护最常用的判据是方向阻抗圆特性,动作条件是测量阻抗落在一个经过原点的圆内部。圆特性在 R-X 平面上用方程描述比较复杂,工程上更实用的是把它转化成比较测量阻抗的相角和幅值与整定阻抗的关系。方向阻抗圆的判据是:测量阻抗与整定阻抗的差值的幅角在 90 度到 270 度之间,同时测量阻抗模值小于整定阻抗模值。
四边形特性是另一种常用判据,它在 R-X 平面上围出一个带方向的四边形,优点是能覆盖经过渡电阻短路时的电阻分量,缺点是整定参数多。我建议课程设计用圆特性,因为它参数少、逻辑直观;科研验证用四边形特性,因为它对过渡电阻的耐受能力更接近真实保护装置。以下是圆特性判据的 Matlab 实现:
% 方向阻抗圆动作判据 % Z_set:整定阻抗(复数),Z_meas:测量阻抗(复数) function trip = circle_trip(Z_set_RE, Z_set_IM, R_meas, X_meas) % 计算测量阻抗相对整定阻抗的差值 delta_RE = R_meas - Z_set_RE; delta_IM = X_meas - Z_set_IM; % 差值幅度与整定阻抗幅度比较 delta_mag = sqrt(delta_RE^2 + delta_IM^2); set_mag = sqrt(Z_set_RE^2 + Z_set_IM^2); % 方向性判断:测量阻抗必须在整定阻抗的逆时针方向 cross_prod = Z_set_RE * delta_IM - Z_set_IM * delta_RE; % 动作条件:差值的幅值小于整定阻抗幅值,且方向正确 if delta_mag < set_mag && cross_prod < 0 trip = 1; else trip = 0; end end逻辑说明:这段判据把向量几何转换成了代数比较。cross_prod 是整定阻抗向量与差值向量的叉积,叉积小于 0 意味着测量阻抗点落在整定阻抗向量的右侧,也就是保护的正方向。方向性判断是距离保护防误动的关键,如果没有这个判断,反方向故障时保护会误跳闸。
4.3 保护分段整定:I 段、II 段、III 段的配合策略
距离保护的阶梯配合是模型里最见功力的一部分。I 段保护本线路全长的 80% 到 85%,瞬时动作,不设延时;II 段保护范围延伸到相邻线路,通常整定为本线路全长的 120% 到 150%,动作时限 0.5s 左右;III 段作为相邻线路的后备保护,整定范围更大或者按躲过最大负荷阻抗整定,动作时限 1s 到 1.5s。整定值的计算在仿真模型里通过常量模块或者脚本预先算好。
以下计算脚本展示了三段整定值的求法:
% 距离保护三段整定计算 % 线路参数 L_total = 100; % 线路全长 100km z1 = 0.15 + 1i*0.4; % 正序阻抗 欧姆/km Z_line = z1 * L_total; % 线路总阻抗 % I段:本线路85%,瞬时动作 Z_set1 = 0.85 * Z_line; t1 = 0; % 瞬时 % II段:本线路全长 + 相邻线路I段(按对侧线路的50%考虑) Z_set2 = Z_line + 0.5 * Z_line; t2 = 0.5; % III段:按躲过最大负荷阻抗整定 V_ph = 110e3 / sqrt(3); I_load_max = 300; % 最大负荷电流 300A Z_load_min = 0.7 * V_ph / I_load_max; % 取70%裕度 Z_set3 = 0.8 * Z_load_min; t3 = 1.2;参数说明:I 段取 85% 而不是 100%,是为了防止本线路末端故障时因测量误差误动而延伸到相邻线路。II 段取 0.5s 时限,是与相邻线路 I 段配合:相邻线路 I 段瞬时动作先切除故障,本线路 II 段等 0.5s 确认故障未切除再动作。III 段按负荷阻抗整定的逻辑是躲过正常工况下的最大负荷,避免系统重载时保护误跳闸。
5. 仿真调试中的常见问题与避坑排查:五条能省一天查错的实操经验
5.1 故障瞬间测量阻抗振荡,保护在故障发生前误动作
现象:仿真波形里保护出口信号在故障发生时刻之前就出现跳闸脉冲,查看测量阻抗波形,发现阻抗轨迹在故障前已经有明显的波动。
原因:Fourier 模块在启动后的前一个周波内输出不稳定,内部积分窗未填满数据时输出值是渐变的。如果保护逻辑没有设置启动延时,这个不稳定的阻抗值一旦落入动作圆就会误动。另一个常见原因是仿真步长太大,导致电压电流波形采样点数不足,傅里叶变换结果畸变。
解决:在保护逻辑最前面加一个 0.03s 的启动延时,确保 Fourier 模块输出稳定后再让判据生效。同时把仿真步长从固定步长改为变步长,使用 ode23tb 算法,最大步长限制在 0.1ms 以内。这个配置对大多数 110kV 仿真模型都适用。
5.2 单相接地故障时保护拒动或动作范围明显缩短
现象:把故障类型切成单相接地后,距离保护在故障距离 70% 处就拒动了,而三相短路时同样位置能可靠动作。
原因:单相接地时测量阻抗计算需要零序补偿系数 K0,很多人直接把 K0 设为 0,相当于忽略零序阻抗的差异,导致测量阻抗虚高,超过整定值。
解决:按线路参数严格计算 K0。典型 110kV 线路零序电抗约为正序电抗的 3.5 倍,按公式 K0 = (Z0 - Z1) / (3 * Z1) 计算,得到 K0 的实部约 0.6 到 0.8,虚部约 0.05 到 0.15。把 K0 填入阻抗计算函数后,单相接地故障的动作范围会和三相短路基本一致。从那以后我每次搭模型都先把 K0 算清楚,再往后进行故障仿真。
5.3 双侧电源助增导致 I 段范围超越,保护误跳对侧线路
现象:故障点设在保护 I 段范围之外约 90% 处,理论上 I 段不应动作,但仿真结果里 I 段出口却发出了跳闸信号。
原因:对侧电源注入的助增电流使本侧测量阻抗偏小,等效于保护范围延长,这就是经典的助增效应导致的超越。单端供电模型里不会出现这个问题,双侧电源模型里必然会遇到。
解决:校验整定值时按最不利情况考虑,在 I 段整定系数里留足裕度。工程上常见做法是把 I 段整定系数从 0.85 降为 0.8,或者采用允许式纵联保护闭锁逻辑。仿真模型里最简单的验证方法是扫描不同故障距离,找到 I 段的实际动作边界,如果超越超过 5%,就减小整定系数。
5.4 变步长仿真速度极慢,一个故障扫描要跑十几分钟
现象:故障扫描脚本里循环调用 sim 函数跑 50 个故障点,每个故障点要等仿真自然结束,整个过程耗时非常长,几乎没法做参数整定。
原因:变步长求解器在故障瞬间和故障切除瞬间会自动加密步长,如果允许的最大步长太小,故障暂态的衰减过程会被计算得非常细,导致单次仿真时间拖得很长。
解决:给每个故障扫描任务设置合理的仿真停止时间,故障切除后留 0.2s 观测窗口即可。同时打开 Simulink 的 Fast Restart 模式,避免每次 sim 调用都重新编译模型。我实际测试过,Fast Restart 模式下同样的故障扫描任务耗时能缩短一半以上。以下是带 Fast Restart 的扫描脚本核心写法:
% 启用 Fast Restart 模式 model = 'dist_model'; load_system(model); set_param(model, 'FastRestart', 'on'); % 设置仿真停止时间 set_param(model, 'StopTime', '0.5'); % 循环故障扫描 for fault_pos = 0.3:0.1:0.9 % 修改线路长度参数 L1_km = fault_pos * 100; L2_km = (1 - fault_pos) * 100; set_param([model '/Line1'], 'Length', num2str(L1_km)); set_param([model '/Line2'], 'Length', num2str(L2_km)); % 运行仿真并记录结果 simOut = sim(model); % 提取保护动作状态、测量阻抗等数据 trip_I = simOut.get('trip_I'); trip_II = simOut.get('trip_II'); fprintf('故障点位置 %.0f%%:I段动作=%d, II段动作=%d\n', ... fault_pos*100, trip_I, trip_II); end逻辑说明:这段脚本通过修改两段线路的长度参数来改变故障位置百分比,Fast Restart 模式下模型不需要重新编译,set_param 修改参数后直接 sim 调用即可。这里 line1 和 line2 分别是故障点两侧的线路段,总长保持 100km 不变,只改变比例分配。
5.5 过渡电阻设置过大,末端故障保护完全无反应
现象:将故障模块的 Rf 设为 50 欧姆,在线路末端发生单相接地故障,保护完全不动,连 III 段都没有动作。
原因:过渡电阻抬高了测量阻抗,使故障点对应的阻抗点超过整定圆的边界。高阻接地故障在真实电网里一直是距离保护的薄弱环节,仿真模型里同样存在这个物理约束。
解决:改用四边形特性替代圆特性,四边形在 R 轴方向有更宽的覆盖范围。仿真模型里实现四边形特性的参数是 R_bound 和 X_bound 四个边界值。我通常把电阻边界设为线路正序阻抗的 2 到 3 倍,电抗边界仍按线路电抗整定,这样既能可靠躲过负荷阻抗,又能覆盖高阻接地场景。
6. 进阶验证:用故障扫描矩阵看保护的真实动作边界
故障扫描矩阵是验证距离保护模型价值的最直接手段。做法是保持模型拓扑不变,同时改变故障位置、故障类型、过渡电阻三个维度,批量运行仿真,记录每个组合下保护 I、II、III 段的动作情况,最后画出动作边界图。这个过程能回答一个关键问题:整定值在理论上是对的,但在故障类型和过渡电阻变化时,保护的实际动作范围还是不是整定值设定的那个范围。
扫描矩阵可以用两层循环实现,外层循环改故障位置百分比,内层循环改过渡电阻。故障类型作为第三个维度手动切换,每次遍历一组。下面的脚本片段把扫描结果存成结构体数组,方便后续画图:
% 故障扫描矩阵主脚本 results = struct(); idx = 0; for Rf_val = [0.001 5 10 20 50] % 过渡电阻扫描值 for pos = 0.2:0.05:0.95 % 故障位置扫描值 idx = idx + 1; % 更新故障位置 set_param([model '/Line1'], 'Length', num2str(pos*100)); set_param([model '/Line2'], 'Length', num2str((1-pos)*100)); % 更新过渡电阻 set_param([model '/Fault'], 'Rf', num2str(Rf_val)); % 运行仿真 simOut = sim(model); % 记录动作情况 results(idx).pos = pos; results(idx).Rf = Rf_val; results(idx).trip_I = simOut.get('trip_I'); results(idx).trip_II = simOut.get('trip_II'); results(idx).trip_III = simOut.get('trip_III'); end end跑完扫描矩阵后,把 trip_I 等于 1 的最大故障位置提取出来,就是 I 段在对应过渡电阻下的实际保护范围。把不同 Rf 值对应的实际保护范围画成曲线,能直观看到过渡电阻对保护范围压缩的程度。这个结果既可以用在课程设计的报告里,也可以作为后续调整整定值的数据依据。
从扫描结果里往往能发现一个规律:过渡电阻从 0 增大到 20 欧姆时,I 段实际保护范围几乎线性缩短;到 50 欧姆时,保护范围可能只有整定值的一半。这个现象在单端供电模型里也能看到,但双侧电源下助增电流会让阻抗轨迹偏移方向更复杂。理解了这一点,再回头去看现场保护装置的四边形特性整定参数,很多说明书上的经验值就变得有依据了。
从那以后,我每次拿到一个距离保护仿真模型,第一件事不是去看保护逻辑模块内部怎么搭的,而是先写一套故障扫描脚本跑一遍矩阵,用数据了解这套模型的真实边界,再决定需要改哪些参数。这样能省掉大量盲调时间。这份资源和上面所有脚本配合起来,基本覆盖了从原理理解到整定校验的全流程,希望帮到你。
本文还有配套的精品资源,点击获取