三段式电流保护Matlab_Simulink仿真分析

三段式电流保护Matlab_Simulink仿真分析
三段式电流保护Matlab/Simulink仿真分析图1所示的35kV电力系统电源电压为35kV电源最大和最小等效电抗分别为XS.max9ΩXS. min6Ω线路电抗为XAB10ΩXBC24Ω线路AB的最大负荷电流为100A线路BC的最大负荷电流为80A线路BC的过电流保护时限为1.0s。电力系统仿真对元件参数如线路阻抗、变压器变比的准确性要求较高手动搭建容易出错。这段代码会自动计算保护定值并在 Simulink 中搭建包含 电源、输电线路、三相短路故障模块 以及 三段式电流保护逻辑 的完整模型。 设计参数与定值计算基准数据系统电压 U_n 35 text{ kV}线路 AB 阻抗 X_{AB} 10 , Omega线路 BC 阻抗 X_{BC} 24 , Omega保护 1 (AB 线路) 定值计算I 段 (瞬时速断)躲过 B 母线最大短路电流。I_{k.B.max} approx frac{35000}{sqrt{3} times (6 10)} approx 1262 text{ A}I_{set.1}^{I} K_{rel} times I_{k.B.max} approx 1.25 times 1262 approx 1577 text{ A}II 段 (限时速断)与 BC 线路 I 段配合需校验灵敏度。III 段 (过电流)躲过最大负荷电流 100 text{ A}时限 t 1.0 0.5 1.5 text{ s}。 MATLAB 仿真模型生成代码将以下代码保存为 build_protection_model.m 并在 MATLAB 中运行。它会自动生成一个名为 Three_Stage_Protection 的 Simulink 模型。function build_protection_model% 1. 初始化模型modelName ‘Three_Stage_Protection’;new_system(modelName);open_system(modelName);% 设置仿真参数 set_param(modelName, Solver, ode23t); % 适合 stiff 电力系统 set_param(modelName, StopTime, 0.5); % 仿真 0.5 秒 set_param(modelName, MaxStep, 1e-5); %% 2. 系统参数定义 (根据题目要求) % 电压等级 Un 35000; % 35kV U_phase Un / sqrt(3); % 阻抗参数 Xs_min 6; % 系统最小电抗 (对应最大运行方式) Xs_max 9; % 系统最大电抗 (对应最小运行方式) X_AB 10; % 线路 AB 电抗 X_BC 24; % 线路 BC 电抗 % 负荷电流 I_load_AB 100; % AB 线路最大负荷电流 I_load_BC 80; % BC 线路最大负荷电流 %% 3. 搭建主电路 (Power Systems) % --- 电源 (35kV) --- % 使用三相电源模块内阻抗设为 Xs_min (最严苛情况) add_block(powerlib/Sources/Three-Phase Source, [modelName /Source], ... Position, [50 200 100 250]); set_param([modelName /Source], Voltage, num2str(Un), Frequency, 50, ... Source impedance, [0 Xs_min 0]); % 简化为纯电抗 % --- 线路 AB (Pi 型等效) --- add_block(powerlib/Elements/Three-Phase PI Section Line, [modelName /Line AB], ... Position, [150 200 200 250]); % 设置线路参数 (简化设置仅设置电抗) % 注意实际仿真需设置 R, L, C 具体值此处为演示逻辑 set_param([modelName /Line AB], Frequency, 50, ... Positive-sequence inductance, num2str(X_AB / (pi50))); % --- 线路 BC --- add_block(powerlib/Elements/Three-Phase PI Section Line, [modelName /Line BC], ... Position, [250 200 300 250]); set_param([modelName /Line BC], Frequency, 50, ... Positive-sequence inductance, num2str(X_BC / (pi50))); % --- 故障模块 (Three-Phase Fault) --- % 放置在 AB 线路末端 (B 母线) 用于测试 I 段 add_block(powerlib/Faults and Protection/Three-Phase Fault, [modelName /Fault], ... Position, [180 300 230 350]); % 故障时间设置0.1s 发生故障 set_param([modelName /Fault], Phase A, on, Phase B, on, Phase C, on, ... Transition time, 0.1); % --- 负载 --- add_block(powerlib/Elements/Three-Phase V-I Measurement, [modelName /Load], ... Position, [350 200 400 250]); %% 4. 搭建测量与保护逻辑 (Simulink) % --- 电流测量 --- add_block(powerlib/Measurements/Three-Phase V-I Measurement, [modelName /VI_Measurement], ... Position, [120 200 140 250]); % --- 有效值计算 (RMS) --- add_block(powerlib/Control Measurements/Discrete RMS, [modelName /RMS], ... Position, [150 350 200 400]); set_param([modelName /RMS], Fundamental frequency, 50); % --- 保护逻辑 (使用 MATLAB Function 实现三段式逻辑) --- add_block(simulink/User-Defined Functions/MATLAB Function, [modelName /Protection Logic], ... Position, [250 350 350 450]); % 编写保护逻辑代码 set_param([modelName /Protection Logic], MATLABCode, ... [function Trip fcn(I_meas, t, I_set_I, I_set_II, I_set_III, T_III), ... % 三段式电流保护逻辑, ... Trip 0;, ... if I_meas I_set_I, ... Trip 1; % I 段瞬时速断, ... elseif I_meas I_set_II, ... if t 0.3 % II 段延时 (示例 0.3s), ... Trip 1;, ... end, ... elseif I_meas I_set_III, ... if t T_III % III 段延时, ... Trip 1;, ... end, ... end]); % --- 断路器 (Three-Phase Breaker) --- % 放置在 AB 线路首端 add_block(powerlib/Elements/Three-Phase Breaker, [modelName /Breaker], ... Position, [100 200 120 250]); %% 5. 连线 % 主电路连接 add_line(modelName, Source/ABC, Breaker/1); add_line(modelName, Breaker/2, VI_Measurement/1); add_line(modelName, VI_Measurement/2, Line AB/1); add_line(modelName, Line AB/2, Line BC/1); add_line(modelName, Line BC/2, Load/1); % 故障连接 add_line(modelName, Line AB/2, Fault/1); % 故障并在 B 母线处 % 控制回路连接 add_line(modelName, VI_Measurement/Im, RMS/1); add_line(modelName, RMS/1, Protection Logic/1); add_line(modelName, Protection Logic/1, Breaker/Status); % --- 示波器 --- add_block(simulink/Sinks/Scope, [modelName /Scope], Position, [400 350 450 400]); add_line(modelName, RMS/1, Scope/1); %% 6. 计算定值并显示 % 简单的定值计算演示 I_k_B_max U_phase / (Xs_min X_AB); % B 母线最大短路电流 I_set_I 1.25 * I_k_B_max; % I 段定值 I_set_III 1.2 * I_load_AB; % III 段定值 (简化) disp(--- 保护定值计算结果 ---); fprintf(B 母线最大短路电流: %.2f An, I_k_B_max); fprintf(I 段动作电流 (瞬断): %.2f An, I_set_I); fprintf(III 段动作电流 (过流): %.2f An, I_set_III); % 将定值写入工作区供模块使用 assignin(base, I_set_I, I_set_I); assignin(base, I_set_II, I_set_I * 0.8); % 示例 II 段 assignin(base, I_set_III, I_set_III); assignin(base, T_III, 1.5); % 1.5s 时限 disp(模型构建完成请检查参数并运行仿真。);end 仿真分析指南运行上述代码后你会得到一个 Simulink 模型。以下是如何分析仿真结果以完成你的作业或报告验证 I 段保护瞬时速断故障点设在 0.1s。观察 Scope 中的电流波形。当故障发生时电流会瞬间激增远大于 100A。由于电流超过了 I_{set}^{I}保护逻辑应立即动作在 0.1s 时刻或极短延时后。观察 Breaker 的状态它应该迅速变红断开切断故障电流。验证 III 段保护过流保护你可以修改代码中的故障阻抗模拟一个较小的短路电流例如大于 100A 但小于 I 段定值。此时 I 段和 II 段不应动作。观察断路器是否在 1.5s 后动作即故障发生后的 1.5s 延时。数据记录使用 To Workspace 模块将电流波形导出到 MATLAB 工作区。绘制电流随时间变化的曲线标注出 动作时间 和 动作电流这将是报告中的核心图表。Simulink 的图形化模型无法直接以文本形式“粘贴”我将为你提供实现该仿真所需的 核心 MATLAB 代码。这段代码主要包含两个部分参数计算脚本根据你提供的系统参数35kV, 阻抗等自动计算 I、II、III 段保护的定值。保护逻辑代码MATLAB Function这是图中“保护1”和“保护2”模块内部的核心算法用于判断何时跳闸。参数计算与定值整定脚本请将此代码保存为 calculate_settings.m 并运行。它会根据你的系统阻抗计算出仿真中需要的动作电流值。%% 三段式电流保护定值计算脚本% 对应你的系统参数35kV, Xs.min6, Xs.max9, Xab10, Xbc24clear; clc;% — 1. 系统基本参数 —Un 35; % 系统额定电压 (kV)Ut Un * 1000 / sqrt(3); % 相电压 (V)Xs_min 6; % 系统最小阻抗 (ohm)Xs_max 9; % 系统最大阻抗 (ohm)X_AB 10; % 线路AB阻抗 (ohm)X_BC 24; % 线路BC阻抗 (ohm)I_load_AB_max 100; % 线路AB最大负荷电流 (A)I_load_BC_max 80; % 线路BC最大负荷电流 (A)% — 2. 短路电流计算 —% B母线最大三相短路电流 (用于整定AB线路I段)Ik_B_max Ut / (Xs_min X_AB);% C母线最大三相短路电流 (用于整定BC线路I段)Ik_C_max Ut / (Xs_min X_AB X_BC);fprintf(‘B母线最大短路电流 Ik.B.max %.2f An’, Ik_B_max);fprintf(‘C母线最大短路电流 Ik.C.max %.2f An’, Ik_C_max);% — 3. 保护1 (线路AB) 定值计算 —Krel_I 1.25; % I段可靠系数Krel_II 1.1; % II段可靠系数Krel_III 1.2; % III段可靠系数Kss 1.5; % 自启动系数Kre 0.85; % 返回系数% I段瞬时电流速断I_set_1_I Krel_I * Ik_B_max;% III段定时限过电流 (躲最大负荷)I_set_1_III (Krel_III * Kss / Kre) * I_load_AB_max;% II段限时电流速断 (此处简化通常需与下一级配合这里假设一个配合值)% 假设与BC线路I段配合BC线路I段定值约为 1.25 * Ik_C_maxI_set_2_I 1.25 * Ik_C_max;I_set_1_II Krel_II * I_set_2_I;% — 4. 输出结果 (填入Simulink模块中) —disp(‘-----------------------------’);disp( 保护1 (线路AB) 推荐定值 MATLAB Function。将其命名为“保护逻辑”。双击打开将下面的代码粘贴进去。function [Trip_I, Trip_II, Trip_III] fcn(I_meas, time)% I_meas: 输入测量电流 (A)% time: 输入仿真时间 (s)% Trip_I, Trip_II, Trip_III: 输出跳闸信号 (0或1)% — 参数设置 (根据上面的计算结果填入) —% 保护1的定值示例 (请根据calculate_settings.m的输出修改)I_set_I 1580.0; % I段定值I_set_II 650.0; % II段定值 (估算值)I_set_III 211.0; % III段定值T_set_I 0.0; % I段时限T_set_II 0.5; % II段时限T_set_III 1.5; % III段时限% — 变量声明 —persistent timer_II timer_III flag_II flag_III;if isempty(timer_II)timer_II 0;timer_III 0;flag_II 0;flag_III 0;end% — 初始化输出 —Trip_I 0;Trip_II 0;Trip_III 0;% — I段保护逻辑 (瞬时速断) —if I_meas I_set_ITrip_I 1; % 立即动作end% — II段保护逻辑 (限时速断) —if I_meas I_set_IIif timer_II T_set_IITrip_II 1;endtimer_II timer_II 0.001; % 假设步长0.001s实际可用datetime或simtimeelsetimer_II 0; % 电流恢复计时清零end% — III段保护逻辑 (过电流) —if I_meas I_set_IIIif timer_III T_set_IIITrip_III 1;endtimer_III timer_III 0.001;elsetimer_III 0; % 电流恢复计时清零end仿真搭建指南对应图中结构为了得到你图中的波形你需要按照以下结构连接模块主电路使用 Three-Phase Source (电源) - Three-Phase Fault (故障模块设置在A段或B段) - Series RLC Branch (模拟线路阻抗)。使用 Current Measurement 模块测量线路电流。信号处理电流信号 - Abs (取绝对值如果是单相) 或计算三相电流有效值 - 输入到上述的 MATLAB Function 模块。示波器 (Scope)将 Current Measurement 的信号连接到示波器的第1行。将 MATLAB Function 输出的 Trip_I, Trip_II, Trip_III 分别连接到示波器的第2、3、4行。