Engee 文档
Notebook

测试COMTRADE文件的远程保护

模型描述

此示例显示通过从COMTRADE文件读取波形来测试远程保护算法。 COMTRADE文件是在电力系统模型中预先生成的,其中对各种短路(短路)进行建模。

COMTRADE文件生成

为了产生电流和电压波形,使用具有双向电源和双电路架空线(overhead line)的电力系统模型,其中第一电路分为两部分:L1_1L1_2。 它们的长度因变量而异 L1_1L1_2 因此,点KZK2沿着架空线相对于电力系统移动。 在C2C1电力系统的总线上也分别存在短路点K1K3。 所有短路都是三相的。 短路发生的时间是通过设置参数曝光时间在块c1,c2,c3连接到短路块的控制端口来改变的。 短路单元的响应时间设置为0.5秒,并且对于其关闭—10秒。 由于仿真时间为1.5秒,响应时间为10秒,短路单元将没有时间接通。

在架空线L1_1的开头,测量电流,在电力系统c1的母线上测量电压。 测量的信号被传送到[To COMTRADE]块(https://engee.com/helpcenter/stable/ru/fmod-electrical-sinks/to-comtrade.html )。 有关使用To COMTRADE块的更多信息,请参阅示例在comtrade中的power系统中记录事件файл。DZ的预定安装位置是架空线的开头L1_1

电力系统的方案:

image.png

模型的外观:

Энергосистема--1768467162733.png

模型参数:

电力系统参数1:
直接序列的有源电阻为0.393欧姆
直接序列的感应电阻为4,276欧姆。
零序的有源电阻为0.494欧姆
零序的感应电阻为4.02欧姆
等效EMF–230kV
电动势相位角为10°。

电力系统参数2:
直接序列的有源电阻为4.85欧姆
直接序列的感应电阻为25.604欧姆
零序的有源电阻为10.607欧姆
零序的感应电阻为53.347欧姆。
等效电动势为220kV
电动势相位角为0°。

架空线路参数:
长度100公里
直线的电阻率为0.0958+j0.4038欧姆/公里
零序线的电阻率为0.3471+j1.2432欧姆/公里
直接序列的比容量为8,411nF/km
零序的比容量为6.745nF/km。

在模型中进行以下实验:

  1. C2动力系统的轮胎上的点K1处短路。 预计只会触发2个DZ阶段。
  2. 在架空线路1上的K2点短路,距离C1电力系统的母线10公里。 预计将触发DZ的第一和第二阶段。
  3. 在架空线路1上的K2点短路,距离C1电力系统的母线50公里。 预计将触发DZ的第一和第二阶段。
  4. 在架空线路1上的K2点短路,距离C1电力系统的母线90公里。 预计只触发2个DZ阶段。
  5. C1电力系统总线上K3点短路。 DZ步骤预计会失败。

设置表显示每种体验的各种参数,包括短路块的响应时间和保护步骤的预期行为。:

/经验数\参数/1号短路的操作时间、s/2号短路的操作时间、s/3号短路的操作时间、s/线长L1_1、km/第1级DZ的操作|第2级DZ的操作|
|:---|:---|:---|:---|:---|:---|:---|
|1|0,5|10|10|50|0|1|
|2|10|0,5|10|25|1|1|
|3|10|0,5|10|50|1|1|
|4|10|0,5|10|90|0|1|
|5|10|10|0,5|50|0|0|

COMTRADE文件被写入data文件夹,该文件夹是使用此脚本在文件夹中创建的。 COMTRADE文件生成:

In [ ]:
# 导入所需模块
using Plots, DataFrames
model_name = "电力系统";
model_name in [m.name for m in engee.get_all_models()] ? engee.open(model_name) : engee.load( "$(@__DIR__)/$(model_name).engee");
# 改变实验条件的数据
exp_data = DataFrame(
    KZ1 = [0.5, 10, 10, 10, 10], # KZ No.1的发生时间
    KZ2 = [10, 0.5, 0.5, 0.5, 10], # KZ2号发生时间
    KZ3 = [10, 10, 10, 10, 0.5], # KZ2号发生时间
    L1 = [50, 25, 50, 90, 50], # 1链的左侧部分的长度为
    result1 = [0, 1, 1, 0, 0], # 第一阶段运作的预期结果
    result2 = [1, 1, 1, 1, 0] # 第2阶段触发器的预期结果
)
# 此脚本的路径
current_path = @__DIR__
# 创建一个数据文件夹如果没有,COMTRADE文件将写在那里。
if !isdir("$(current_path)/data")
    mkdir("$(current_path)/data")
end
# 生成COMTRADE文件的循环
for i in 1:nrow(exp_data)
    # 架空线路长度1_1
    L1_1 = exp_data[i, :L1]
    # 架空线路长度1_2
    L1_2 = 100 .- exp_data[i, :L1]
    # 转移到KZ No.1的发生时间的块"c1"
    engee.set_param!(model_name*"/c1", "Time" => exp_data[i, :KZ1]);
    # 转移到KZ No.2的发生时间的块"c2"
    engee.set_param!(model_name*"/c2", "Time" => exp_data[i, :KZ2]);
    # 转移到KZ3号发生时间的"c3"区块
    engee.set_param!(model_name*"/c3", "Time" => exp_data[i, :KZ3]);
    # 将Exp_X格式的COMTRADE文件名称转移到"COMTRADE"块
    engee.set_param!(model_name*"/COMTRADE", "files_path" => "\"$(current_path)/data/Exp_$i\"");
    # 启动模型
    engee.run(model_name);
end

检查远程保护算法

本例中远程保护算法的验证是使用以COMTRADE格式记录的电流和电压波形执行的。 为此,在电力系统的单独模型中预先建模了电网和短路的应急模式。 Энергосистема.engee,之后瞬态被记录为COMTRADE文件。 接收到的文件用作在单独模型中实现的远程保护模型的输入效果。 ДЗ.engee.

使用COMTRADE文件允许您将预先形成的波形馈送到算法的输入,从而在实际操作中再现保护的操作条件。 在这种情况下,作为仿真结果获得的示波图和真实瞬态示波图都可用于验证。

此外,使用COMTRADE文件可确保验证的可重复性和清晰度。 同一组波形可反复用于验证算法,分析各种类型的短路、瞬态电阻和损坏位置的保护操作的灵敏度和正确性。 这种方法允许您专注于评估保护算法的逻辑。

来自[open repository]的修改模块用于读取COMTRADE文件(https://github.com/dgm1971/COMTRADE.jl?tab=readme-ov-file )。 这个模块只有一个功能。 read_comtrade. 它有一个输入参数-文件的绝对或相对路径。 例如 "/user/data/Exp_1""Exp_1". 函数返回类型的对象 ComtradeData 与字段:

  • filename::String -没有扩展的halyards名称;
  • cfg::ComtradeCfg-配置数据;
  • dat::DataFrame -一个包含数据的表,其中每个通道都是一列;
  • hdr::String -内容 .hdr 文件;
  • inf::String -内容 .inf 的文件。

该模块支持1991年、1999年和2013年标准。 扩张 .cff 2013年推出,不支持。

从对象 ComtradeData 将电流电压波形数据提取为变量 VIMatrix,其中第一列包含时间,在2-4列中包含信号。 变量通过块[从工作区]加载到模型中(https://engee.com/helpcenter/stable/ru-en/base-lib-sources/from-workspace.html )。 模型的外观:

ДЗ-15.01.26 16_07_34.png

根据[110kv输电线路远程保护设置的计算和选择方法指南]计算DZ参数和выше](https://www.so-ups.ru/fileadmin/files/laws/standards/method_distanc_protect_power_lines_281123.pdf):

  1. 第一阶段DZ的响应电阻从被保护线路的总电阻调整(第4.3.2.3段):

    $ $ 𝑍_{ust\1st}=k_{otc}𝑍_l=0.75/·|{1L\UD}·𝐿|=0.75·|0.0958+ j0.4038/·100=31.126\欧姆

  哪里
  $k_{\text{отс}}$ -调整系数;
  $\alpha$ –考虑到dz阶段区域减少的系数,与之达成协议;
  $k_{\text{т}}$ -电流分配系数等于保护中的初级电流与保护中的初级电流之比,在级联模式下匹配。 基于模型中的计算结果 $k_{\text{т}}=I_1/I_{10}=753.14/1801.49=0.418$;
  $\text{𝑍}^{I}_{\text{уст}10}$ –第一保护级10对相对相短路的致动电阻;
  $\text{𝑑}$ -是根据(4.5)确定的情况下的圆形特性。
  1. 电阻继电器最大灵敏度的角度取等于线的角度(第3.2段)。):

    $ $\varphi_{mh}=\angle angle_{1l\ud}=\angle(0.0958+j0.4038)=76.654°

  2. \text{第二阶段的响应时间(表达式}4.19\text{)}:

使用记录的COMTRADE文件检查远程保护算法:

In [ ]:
# 首次启动时连接COMTRADE读取器模块
if !isdefined(Main, :COMTRADE)
    include("$(@__DIR__)/COMTRADE.jl")
end
# 添加COMTRADE模块
using .COMTRADE, Plots
# 具有脚本路径的变量
current_path = @__DIR__
# 使用DZ算法的模型名称
model_rz = "DZ";
model_rz in [m.name for m in engee.get_all_models()] ? engee.open(model_rz) : engee.load( "$(@__DIR__)/$(model_rz).engee");
# 获取数据文件夹中的文件列表
files = readdir("$(current_path)/data")
# 获取没有扩展名的唯一文件名
unique_names = unique(map(f -> splitext(f)[1], files))
# 初始化模拟结果的矩阵
results = Matrix{Any}(undef, length(unique_names), 2)
for i in 1:length(unique_names)
    # 阅读COMTRADE文件
    data = read_comtrade("$(@__DIR__)/data/$(unique_names[i])")
    # 将数据从COMTRADE传输到变量
    global V = Matrix(data.dat[:, [:time, :Va, :Vb, :Vc]])
    global I = Matrix(data.dat[:, [:time, :Ia, :Ib, :Ic]])
    # 启动模型
    result = engee.run(model_rz);
    # 保存DZ步骤的操作信号
    Сраб1 = result["高级1"].value;
    Сраб2 = result["高级二"].value
    结果[i,1]=Crab1
    结果[i,2]=Crab2
end

测试结果的处理,比较实际结果和预期的保护措施:

In [ ]:
# 检查信号Crab1和Crab2中是否存在逻辑单元
With1_bool=[any(results[i,1])for i in1:size(results)[1]]
With2_bool=[any(results[i,2])for i in1:size(results)[1]]
# 实际触发器与预期结果的比较
With1_vector=With Work1_bool。==exp_data[:,:result1]
与Lab2_vector=与Work2_bool。==exp_data[:,:result2]
# 检查实际结果是否与预期结果匹配
if all(With1_vector)&all(With Lab2_vector)
    println("所有实验都成功了")
else
    如果有的话(。!与Lab1_vector)
        print("第一阶段在实验中工作不正确。:\n")
        println(findall(!,With1_vector))
    end
    如果有的话(。!用Crab2_vector)
        print("第二阶段在实验中工作不正确。:\n")
        println(findall(!,With2_vector))
    end
end

结论

此示例显示使用COMTRADE文件测试远程保护算法。 COMTRADE文件是在发生各种短路的电力系统模型中预先生成的。 COMTRADE使用修改后的模块读取文件,以便与COMTRADE一起使用。