Документация Engee
Notebook

В1 Программа функциональных испытаний ДЗ и ТНЗНП 110-220 кВ

В данном примере реализована модель тестовой сети для выполнения функциональных испытаний ДЗ и ТНЗНП 110-220 кВ из приложения В1 СТО 56947007-29.120.70.241-2017. Технические требования к микропроцессорным устройствам РЗА. В данном примере содержится 12 моделей с именем B1_X.engee, где X — номер или диапазон номеров опытов, модель B1.engee предназначена для верификации. Модель была адаптирована и протестирована для запуска на КПМ РИТМ. Более подробно о использовании КПМ РИТМ можно узнать в примерах КПМ РИТМ: быстрый старт и КПМ РИТМ: работа в реальном времени. Примеры опытов сделаны для демонстрации без подключения реального оборудования, необходимо самостоятельно его подключить. Для подключения терминала РЗА нужно добавить в модель блоки ЦАП и цифровых входов/выходов из библиотеки блоков РИТМ, затем подключить терминал к КПМ РИТМ. Схема моделируемой сети:

image.png

Параметры энергосистемы А:
Активное сопротивление прямой последовательности – 4,85 Ом
Индуктивное сопротивление прямой последовательности – 25,604 Ом
Активное сопротивление нулевой последовательности – 10,607 Ом
Индуктивное сопротивление нулевой последовательности – 53,347 Ом
Эквивалентная ЭДС– 239 кВ
Фазовый угол ЭДС– 0°

Параметры энергосистемы Б:
Активное сопротивление прямой последовательности– 0,393 Ом
Индуктивное сопротивление прямой последовательности – 4,276 Ом
Активное сопротивление нулевой последовательности – 0,494 Ом
Индуктивное сопротивление нулевой последовательности – 4,02 Ом
Эквивалентная ЭДС– 239,24 кВ
Фазовый угол ЭДС– 10,5°

Параметры линии А-Б:
Длина 70 км
Удельное сопротивление линии прямой последоват. 0,0788 + j 0,4155 Ом/км
Удельное сопротивление линии нулевой последоват. 0,3356 + j 1,151 Ом/км
Удельная емкость прямой последовательности 8,594 нФ/км
Удельная емкость нулевой последовательности 7,305 нФ/км
Удельное сопротивление взаимоиндукции 0,15 + j 0,684 Ом/км

Трансформатор на отпайке:
ТРДН-40000/220
Sном = 40 МВА
UВН = 230
UНН = 11
Uк = 12 %
Iх = 0,9 %
ΔPк = 170 кВт
ΔPх = 50 кВт

Измерительные трансформаторы тока:
ТФНД-220-II
nт= 1200/1 А
Sном = 30 ВА, cos φ = 0,8
К10 = 30
Qакт = 21,5 см2
Lср = 106 см
W1 = 1
W2 = 1200
R2 = 7 Ом
Х2 = 0,54 Ом

Верификация модели

Перед первым запуском необходимо установить пакет для отрисовки таблиц:

In [ ]:
using Pkg
Pkg.add("PrettyTables")

Сравнение требуемых параметров режима и расчётных:

In [ ]:
model_name = "B1"
model_name in [m.name for m in engee.get_all_models()] ? engee.open(model_name) : engee.load( "$(@__DIR__)/$(model_name).engee");
blocks = ["Q1_ctrl", "Q2_ctrl", "Q3_ctrl", "Q4_ctrl", "ЗН_3", "ЗН_4"]
switch_states = [0 0 0 0 1 1]
for i = 1:length(blocks)
    engee.set_param!(model_name*"/"*blocks[i], "Value" => switch_states[i]);
end
time_ar = [0, 1]
switch = ones(2,4,2)
# Запуск загруженной модели:
results = engee.run(model_name);
# вектор времени симуляции
# sim_time = results["P1_1"].time;
P1_1_ex1 = results["P1_1"].value[end]
Q1_1_ex1 = results["Q1_1"].value[end]
V1_1_ex1 = results["V1_1"].value[end][1]
I1_1_ex1 = results["I1_1"].value[end][1]
P2_1_ex1 = results["P2_1"].value[end]
Q2_1_ex1 = results["Q2_1"].value[end]
V2_1_ex1 = results["V2_1"].value[end][1]
I2_1_ex1 = results["I2_1"].value[end][1]
switch_states = [0 0 1 1 0 0]
for i = 1:length(blocks)
    engee.set_param!(model_name*"/"*blocks[i], "Value" => switch_states[i]);
end
# Запуск загруженной модели:
results = engee.run(model_name);
# вектор времени симуляции
# sim_time = results["P1_1"].time;
P1_1_ex2 = results["P1_1"].value[end]
Q1_1_ex2 = results["Q1_1"].value[end]
V1_1_ex2 = results["V1_1"].value[end][1]
I1_1_ex2 = results["I1_1"].value[end][1]
P2_1_ex2 = results["P2_1"].value[end]
Q2_1_ex2 = results["Q2_1"].value[end]
V2_1_ex2 = results["V2_1"].value[end][1]
I2_1_ex2 = results["I2_1"].value[end][1];

Отобажение результатов:

In [ ]:
using PrettyTables
colomn1 = ["Обе цепи в работе", "Напряжение на шинах, кВ", "Ток по линии, кА",
"Активный переток мощности, МВт", "Реактивный переток мощности, МВАр", "",
"Цепь 2 отключена с двух сторон и заземлена", "Напряжение на шинах, кВ", "Ток по линии, кА",
"Активный переток мощности, МВт", "Реактивный переток мощности, МВАр"]
colomn2 = ["", "239,5", "0,279", "-115", "12,86", "", "", "238,9", "0,420", "-171,7", "25,91"]
colomn3 = ["", "239,8", "0,288", "116,3", "-27,63", "", "", "239,4", "0,428", "174,7", "-31,89"]
colomn4 = ["", V1_1_ex1, I1_1_ex1, P1_1_ex1, Q1_1_ex1, "", "", V1_1_ex2, I1_1_ex2, P1_1_ex2, Q1_1_ex2]
colomn5 = ["", V2_1_ex1, I2_1_ex1, P2_1_ex1, Q2_1_ex1, "", "", V2_1_ex2, I2_1_ex2, P2_1_ex2, Q2_1_ex2]
colomn6 = ["", (239.5 - V1_1_ex1) / 239.5 * 100, (0.279 - I1_1_ex1) / 0.279 * 100, (-115 - P1_1_ex1) / -115 * 100,
(12.86 - Q1_1_ex1) / 12.86 * 100, "", "", (238.9 - V1_1_ex2) / 238.9 * 100, (0.42 - I1_1_ex2) / 0.42 * 100, 
(-171.7 - P1_1_ex2) / -171.7 * 100, (25.91 - Q1_1_ex2) / 25.91 * 100]
colomn7 = ["", (239.8 - V2_1_ex1) / 239.8 * 100, (0.288 - I2_1_ex1) / 0.288 * 100, (116.3 - P2_1_ex1) / 116.3 / 100,
(-27.63 - Q2_1_ex1) / -27.63 * 100, "", "", (239.4 - V2_1_ex2) / 239.4 * 100, (0.428 - I2_1_ex2) / 0.428 * 100,
(174.7 - P2_1_ex2) / 174.7 * 100, (-31.89 - Q2_1_ex2) / -31.89 * 100]
data = hcat(colomn1, colomn2, colomn3, colomn4, colomn5, colomn6, colomn7);
header = (["Режимы", "ПС А", "ПС Б", "ПС А", "ПС Б", "ПС А", "ПС Б"], 
["", "RTDS", "RTDS", "Engee", "Engee", "Ошибка, %", "Ошибка, %"])
pretty_table(
    data;
    header = header,
    alignment = :l,
    formatters = ft_printf("%5.2f")
)
┌────────────────────────────────────────────┬────────┬────────┬─────────┬────────┬───────────┬───────────┐
│ Режимы                                     │ ПС А   │ ПС Б   │ ПС А    │ ПС Б   │ ПС А      │ ПС Б      │
│ RTDS   │ RTDS   │ Engee   │ Engee  │ Ошибка, % │ Ошибка, % │
├────────────────────────────────────────────┼────────┼────────┼─────────┼────────┼───────────┼───────────┤
│ Обе цепи в работе                          │        │        │         │        │           │           │
│ Напряжение на шинах, кВ                    │ 239,5  │ 239,8  │ 239.59  │ 239.80 │ -0.04     │ -0.00     │
│ Ток по линии, кА                           │ 0,279  │ 0,288  │  0.28   │  0.29  │  0.31     │  0.07     │
│ Активный переток мощности, МВт             │ -115   │ 116,3  │ -114.66 │ 116.21 │  0.30     │  0.00     │
│ Реактивный переток мощности, МВАр          │ 12,86  │ -27,63 │ 13.25   │ -28.00 │ -3.06     │ -1.35     │
│                                            │        │        │         │        │           │           │
│ Цепь 2 отключена с двух сторон и заземлена │        │        │         │        │           │           │
│ Напряжение на шинах, кВ                    │ 238,9  │ 239,4  │ 238.98  │ 239.50 │ -0.03     │ -0.04     │
│ Ток по линии, кА                           │ 0,420  │ 0,428  │  0.42   │  0.43  │  0.31     │  0.03     │
│ Активный переток мощности, МВт             │ -171,7 │ 174,7  │ -171.30 │ 174.53 │  0.24     │  0.10     │
│ Реактивный переток мощности, МВАр          │ 25,91  │ -31,89 │ 26.32   │ -32.29 │ -1.58     │ -1.26     │
└────────────────────────────────────────────┴────────┴────────┴─────────┴────────┴───────────┴───────────┘

Погрешность расчёта меньше 5%.

Сравнение требуемых токов КЗ и расчётных:

In [ ]:
switch = []
time_ar = [0, 1]
fault = reshape([0 0 0 1; 0 0 0 1; 1 0 0 0; 1 0 0 0; 0 1 1 0; 0 1 1 0], (6, 4, 1))
fault = cat(fault, fault, dims = 3)
blocks = ["ЗН_3", "ЗН_4", "Q1_ctrl", "Q2_ctrl","Q3_ctrl","Q4_ctrl","Q5_ctrl","Q6_ctrl"]
switch_states = [1 1 0 0 0 0 1 1; 0 0 0 0 1 1 1 1]
results = Matrix{Any}(undef, 12, 2)
for j = 1:2
    for i = 1:6
        engee.set_param!(model_name*"/"*blocks[i], "Value" => switch_states[j, i]);
    end
    for i = 1:6
        if i % 2 == 1
            switch = cat(reshape(fault[i,:,:], (1,4,2)), ones(5,4,2), dims = 1)
        else
            switch = cat(ones(1,4,2), reshape(fault[i,:,:], (1,4,2)), ones(4,4,2), dims = 1)
        end
        result = engee.run(model_name);
        if i <= 2
            results[i + (j - 1) * 6, 1] = result["I1_1"].value[end];
            results[i + (j - 1) * 6, 2] = result["I2_1"].value[end];
        else
            results[i + (j - 1) * 6, 1] = result["3I_0_1"].value[end];
            results[i + (j - 1) * 6, 2] = result["3I_0_2"].value[end];
        end       
    end
end

Отображение результатов:

In [ ]:
using PrettyTables
I_ref =[8.88 1.7 4.465 0.593 6.13 0.595 5.29 2.47 3.024 1.254 3.744 1.246;
3.61 33.76 1.254 34.67 1.723 34.78 4.06 32.09 2.761 33.79 3.418 33.57]
colomn1 = ["Обе цепи в работе", "K1", "K2", "K1", "K2","K1", "K2", 
"Цепь 2 отключена с двух сторон и заземлена", "K1", "K2","K1", "K2", "K1", "K2"]
colomn2 = ["", "K(3)", "K(3)", "K(1,1)", "K(1,1)", "K(1)", "K(1)", "","K(3)", "K(3)", "K(1,1)", "K(1,1)", "K(1)", "K(1)"]
colomn3 = ["", "I1", "I1", "3I0", "3I0", "3I0", "3I0", "", "I1", "I1", "3I0", "3I0", "3I0", "3I0"]
colomn4 = ["", "8.88", "1.7", "4.465", "0.593", "6.13", "0.595", "", "5.29", "2.47", "3.024", "1.254", "3.744", "1.246"]
colomn5 = ["", "3.61", "33.76", "1.254", "34.67", "1.723", "34.78", "", "4.06", "32.09", "2.761", "33.79", "3.418", "33.57"]
colomn6 = reshape(cat("", transpose(results[1:6,1]),"", transpose(results[7:12,1]), dims=2), (14))
colomn7 = reshape(cat("", transpose(results[1:6,2]),"", transpose(results[7:12,2]), dims=2), (14))
colomn8 = reshape(cat("", (results[1:6,1].-I_ref[1,1:6])./I_ref[1,1:6].*100,
"", (results[7:12,1].-I_ref[1,7:12])./I_ref[1,7:12].*100, dims=1), (14))
colomn9 = reshape(cat("", (results[1:6,2].-I_ref[2,1:6])./I_ref[2,1:6].*100,
"", (results[7:12,2].-I_ref[2,7:12])./I_ref[2,7:12].*100, dims=1), (14))
data = hcat(colomn1, colomn2, colomn3, colomn4, colomn5, colomn6, colomn7, colomn8, colomn9);
header = (["Режимы КЗ", "", "", "от ПС А", "от ПС Б", "от ПС А", "от ПС Б", "от ПС А", "от ПС Б"], 
["Место КЗ", "Вид КЗ", "", "RTDS", "RTDS", "Engee", "Engee", "Ошибка, %", "Ошибка, %"])
pretty_table(
    data;
    header = header,
    alignment = :l,
    formatters = ft_printf("%5.2f")
)
┌────────────────────────────────────────────┬────────┬─────┬─────────┬─────────┬─────────┬─────────┬───────────┬───────────┐
│ Режимы КЗ                                  │ от ПС А │ от ПС Б │ от ПС А │ от ПС Б │ от ПС А   │ от ПС Б   │
│ Место КЗ                                   │ Вид КЗ │ RTDS    │ RTDS    │ Engee   │ Engee   │ Ошибка, % │ Ошибка, % │
├────────────────────────────────────────────┼────────┼─────┼─────────┼─────────┼─────────┼─────────┼───────────┼───────────┤
│ Обе цепи в работе                          │        │     │         │         │         │         │           │           │
│ K1                                         │ K(3)   │ I1  │ 8.88    │ 3.61    │  8.88   │  3.60   │  0.04     │ -0.22     │
│ K2                                         │ K(3)   │ I1  │ 1.7     │ 33.76   │  1.68   │ 33.84   │ -0.95     │  0.24     │
│ K1                                         │ K(1,1) │ 3I0 │ 4.465   │ 1.254   │  4.45   │  1.25   │ -0.24     │ -0.29     │
│ K2                                         │ K(1,1) │ 3I0 │ 0.593   │ 34.67   │  0.58   │ 34.80   │ -2.24     │  0.37     │
│ K1                                         │ K(1)   │ 3I0 │ 6.13    │ 1.723   │  6.13   │  1.72   │ -0.05     │ -0.18     │
│ K2                                         │ K(1)   │ 3I0 │ 0.595   │ 34.78   │  0.58   │ 34.89   │ -2.31     │  0.32     │
│ Цепь 2 отключена с двух сторон и заземлена │        │     │         │         │         │         │           │           │
│ K1                                         │ K(3)   │ I1  │ 5.29    │ 4.06    │  5.29   │  4.05   │  0.02     │ -0.13     │
│ K2                                         │ K(3)   │ I1  │ 2.47    │ 32.09   │  2.47   │ 32.15   │ -0.01     │  0.20     │
│ K1                                         │ K(1,1) │ 3I0 │ 3.024   │ 2.761   │  3.02   │  2.76   │  0.02     │ -0.08     │
│ K2                                         │ K(1,1) │ 3I0 │ 1.254   │ 33.79   │  1.26   │ 33.89   │  0.11     │  0.30     │
│ K1                                         │ K(1)   │ 3I0 │ 3.744   │ 3.418   │  3.75   │  3.42   │  0.09     │ -0.01     │
│ K2                                         │ K(1)   │ 3I0 │ 1.246   │ 33.57   │  1.25   │ 33.66   │  0.08     │  0.28     │
└────────────────────────────────────────────┴────────┴─────┴─────────┴─────────┴─────────┴─────────┴───────────┴───────────┘

Погрешность расчёта меньше 5%.

Опыты 1-10

Влияние переходного сопротивления и нагрузки на работу ДЗ при внутренних КЗ.

Условия испытания:

  • Место КЗ: точка К4.
  • Вид КЗ: К(1,1)ВС0, К(1)В0

Параметры опытов: image_2.png

В модели задан опыт №1. Для проведения других опытов необходимо изменить вид КЗ и переходное сопротивление в блоке КЗ.

In [ ]:
model_name = "B1_1_10"
model_name in [m.name for m in engee.get_all_models()] ? engee.open(model_name) : engee.load( "$(@__DIR__)/$(model_name).engee");
results = Matrix{Any}(undef, 1, 4)
result = engee.run(model_name);
results[1, 1] = stack(collect(result["I1_1"].value[:])[!,:value])';
results[1, 2] = stack(collect(result["I2_1"].value[:])[!,:value])';
results[1, 3] = stack(collect(result["V1_1"].value[:])[!,:value])';
results[1, 4] = stack(collect(result["V2_1"].value[:])[!,:value])';   
sim_time = collect(result["I1_1"].time[:])[!,:time];

Отображение результатов:

In [ ]:
# сторона измерения, 1 - ПС А, 2 -ПС Б
dir = 1;
gr()
p1 = plot(sim_time, results[1, dir], xlabel = "t, с", ylabel = "I, кА", label = ["a" "b" "c"])
p2 = plot(sim_time, results[1, dir + 2], xlabel = "t, с", ylabel = "U, кВ", label = ["a" "b" "c"])
plot(p1, p2, layout=(2,1))
Out[0]:

Опыты 11-14

Проверка работы ДЗ при близких КЗ.

Условия испытания:

  • Вид КЗ: К(3)АВС
  • Переходное сопротивление в месте КЗ: 0 Ом.

Параметры опытов: image_2.png

В модели задан опыт №11. Для проведения других опытов необходимо переместить блок КЗ в требуемую точку.

In [ ]:
model_name = "B1_11_14"
model_name in [m.name for m in engee.get_all_models()] ? engee.open(model_name) : engee.load( "$(@__DIR__)/$(model_name).engee");
results = Matrix{Any}(undef, 1, 4)
result = engee.run(model_name);
results[1, 1] = stack(collect(result["I1_1"].value[:])[!,:value])';
results[1, 2] = stack(collect(result["I2_1"].value[:])[!,:value])';
results[1, 3] = stack(collect(result["V1_1"].value[:])[!,:value])';
results[1, 4] = stack(collect(result["V2_1"].value[:])[!,:value])';  
sim_time = result["I1_1"].time;

Отображение результатов:

In [ ]:
# сторона измерения, 1 - ПС А, 2 -ПС Б
dir = 1;
gr()
p1 = plot(sim_time, results[1, dir], xlabel = "t, с", ylabel = "I, кА", label = ["a" "b" "c"])
p2 = plot(sim_time, results[1, dir + 2], xlabel = "t, с", ylabel = "U, кВ", label = ["a" "b" "c"])
plot(p1, p2, layout=(2,1))
Out[0]:

Опыт 15-16

Проверка работы ТНЗНП при внешних КЗ на шинах

Условия испытания:

  • Место КЗ: точка К3, точка К4.
  • Вид КЗ: К(1)А0.
  • Переходное сопротивление в месте КЗ: 0 Ом.
  • Параллельная линия отключена с двух сторон и заземлена.
  • Нормальный режим нагрузки, предшествующий КЗ.

image_2.png

В модели задан опыт №15. Для проведения опыта №16 необходимо переместить блок КЗ в требуемую точку.

In [ ]:
model_name = "B1_15_16"
model_name in [m.name for m in engee.get_all_models()] ? engee.open(model_name) : engee.load( "$(@__DIR__)/$(model_name).engee");
results = Matrix{Any}(undef, 1, 4)
result = engee.run(model_name);
results[1, 1] = stack(collect(result["I1_1"].value[:])[!,:value])';
results[1, 2] = stack(collect(result["I2_1"].value[:])[!,:value])';
results[1, 3] = stack(collect(result["V1_1"].value[:])[!,:value])';
results[1, 4] = stack(collect(result["V2_1"].value[:])[!,:value])';      
sim_time = result["I1_1"].time;

Отображение результатов:

In [ ]:
# сторона измерения, 1 - ПС А, 2 -ПС Б
dir = 1;
gr()
p1 = plot(sim_time, results[1, dir], xlabel = "t, с", ylabel = "I, кА", label = ["a" "b" "c"])
p2 = plot(sim_time, results[1, dir + 2], xlabel = "t, с", ylabel = "U, кВ", label = ["a" "b" "c"])
plot(p1, p2, layout=(2,1))
Out[0]:

Опыт 17-20

Проверка работы ДЗ и ТНЗНП при внутреннем КЗ с успешным ТАПВ.

Последовательность режимов:

  • 0-0,4 с Нормальный режим нагрузки, предшествующий КЗ
  • 0,4 с Возникновение КЗ в середине ВЛ.
  • 0,5 с Трехфазное отключение линии защитами с двух сторон.
  • 1 с Исчезновение КЗ. Бестоковая пауза (1,5 с)
  • 2 с ТАПВ со стороны ПС А по факту отсутствия напряжения
  • 2,5 с «Слепое» ТАПВ со стороны ПС Б.

image_2.png

В модели задан опыт №17. Для проведения других опытов необходимо изменить вид КЗ в блоке КЗ.

In [ ]:
model_name = "B1_17_20"
model_name in [m.name for m in engee.get_all_models()] ? engee.open(model_name) : engee.load( "$(@__DIR__)/$(model_name).engee");
results = Matrix{Any}(undef, 1, 4)
result = engee.run(model_name);
results[1, 1] = stack(collect(result["I1_1"].value[:])[!,:value])';
results[1, 2] = stack(collect(result["I2_1"].value[:])[!,:value])'; 
results[1, 3] = stack(collect(result["V1_1"].value[:])[!,:value])';
results[1, 4] = stack(collect(result["V2_1"].value[:])[!,:value])'; 
sim_time = collect(result["I1_1"].time[:])[!,:time];

Отображение результатов:

In [ ]:
# сторона измерения, 1 - ПС А, 2 -ПС Б
dir = 1;
gr()
p1 = plot(sim_time, results[1, dir], xlabel = "t, с", ylabel = "I, кА", label = ["a" "b" "c"])
p2 = plot(sim_time, results[1, dir+2], xlabel = "t, с", ylabel = "U, кВ", label = ["a" "b" "c"])
plot(p1, p2, layout=(2,1))
Out[0]:

Опыты 21-24

Проверка работы ДЗ и ТНЗНП при внутреннем КЗ с неуспешным ТАПВ.

Последовательность режимов:

  • 0-0,4 с Нормальный режим нагрузки, предшествующий КЗ.
  • 0,4 с Возникновение КЗ.
  • 0,5 с Трехфазное отключение линии защитами с двух сторон.
  • 2 с ТАПВ со стороны ПС А (1,5 с).
  • 2,1 с Отключение линии от защиты ПС А.

image_2.png

В модели задан опыт №21. Для проведения других опытов необходимо изменить вид КЗ в блоке КЗ.

In [ ]:
model_name = "B1_21_24"
model_name in [m.name for m in engee.get_all_models()] ? engee.open(model_name) : engee.load( "$(@__DIR__)/$(model_name).engee");
results = Matrix{Any}(undef, 1, 4)
result = engee.run(model_name);
results[1, 1] = stack(collect(result["I1_1"].value[:])[!,:value])';
results[1, 2] = stack(collect(result["I2_1"].value[:])[!,:value])';
results[1, 3] = stack(collect(result["V1_1"].value[:])[!,:value])';
results[1, 4] = stack(collect(result["V2_1"].value[:])[!,:value])'; 
sim_time = collect(result["I1_1"].time[:])[!,:time];

Отображение результатов:

In [ ]:
# сторона измерения, 1 - ПС А, 2 -ПС Б
dir = 1
gr()
p1 = plot(sim_time, results[1, dir], xlabel = "t, с", ylabel = "I, кА", label = ["a" "b" "c"])
p2 = plot(sim_time, results[1, dir+2], xlabel = "t, с", ylabel = "U, кВ", label = ["a" "b" "c"])
plot(p1, p2, layout=(2,1))
Out[0]:

Опыт 25

Проверка работы ДЗ и ТНЗНП при внешних КЗ с неуспешным ТАПВ с насыщением ТТ.

Последовательность режимов:

  • 0-0,4 с Нормальный режим нагрузки.
  • 0,4 с Возникновение КЗ.
  • 0,5 с Через 100 мс отключение поврежденной линии.
  • 1,5 с АПВ со стороны ПС А (1 с).
  • 1,6 с Через 100 мс отключение поврежденной линии.

image.png

In [ ]:
model_name = "B1_25"
model_name in [m.name for m in engee.get_all_models()] ? engee.open(model_name) : engee.load( "$(@__DIR__)/$(model_name).engee");
results = Matrix{Any}(undef, 1, 4)
result = engee.run(model_name);
results[1, 1] = stack(collect(result["I1_1"].value[:])[!,:value])';
results[1, 2] = stack(collect(result["I2_1"].value[:])[!,:value])'; 
results[1, 3] = stack(collect(result["V1_1"].value[:])[!,:value])';
results[1, 4] = stack(collect(result["V2_1"].value[:])[!,:value])';    
sim_time =  collect(result["I1_1"].time[:])[!,:time];

Отображение результатов:

In [ ]:
# сторона измерения, 1 - ПС А, 2 -ПС Б
dir = 2
gr()
p1 = plot(sim_time, results[1, dir], xlabel = "t, с", ylabel = "I, кА", label = ["a" "b" "c"])
p2 = plot(sim_time, results[1, dir+2], xlabel = "t, с", ylabel = "U, кВ", label = ["a" "b" "c"])
plot(p1, p2, layout=(2,1))
Out[0]:

Опыты 26-29

Качания с центром качаний на линии А-Б.

Условия испытания:

  • Центр качаний: замер сопротивления на ПС А попадает в первую зону ДЗ.
  • Частота качаний: 1 Гц и повышение до отказа срабатывания блокировки при качаниях.

image_2.png

В модели задан опыт №26. Для проведения других опытов необходимо изменить параметры амплитуды и частоты блока "Синусоидальная функция" из подсистемы "Частота". Для опыта №26 задан угол качания ЭДС на ПС Б ±180° от установившего режима. С 0 по 0,5 секунд система работает в установившемся режиме, с 0,5 с частота начинает изменяться. Амплитуду нужно увеличивать пропорционально частоте качаний.

In [ ]:
model_name = "B1_26_29"
model_name in [m.name for m in engee.get_all_models()] ? engee.open(model_name) : engee.load( "$(@__DIR__)/$(model_name).engee");
results = Matrix{Any}(undef, 1, 4)
result = engee.run(model_name);
results[1, 1] = stack(collect(result["I1_1"].value[:])[!,:value])';
results[1, 2] = stack(collect(result["I2_1"].value[:])[!,:value])';
results[1, 3] = stack(collect(result["Zab_1"].value[:])[!,:value]);
results[1, 4] = stack(collect(result["Zab_2"].value[:])[!,:value]);
sim_time =  collect(result["I1_1"].time[:])[!,:time];

Отображение результатов:

In [ ]:
# сторона измерения, 1 - ПС А, 2 -ПС Б
dir = 1
gr()
p1 = plot(sim_time, results[1, dir], xlabel = "t, с", ylabel = "I, кА", label = ["a" "b" "c"])
p2 = plot(sim_time, results[1, dir+2], xlabel = "t, с", ylabel = "Zab, Ом")
plot(p1, p2, layout=(2,1))
Out[0]:

Опыты 30-37

Качания с центром качаний на линии А-Б и КЗ в зоне действия защиты.

Условия испытания:

  • Центр качаний: замер сопротивления на ПС А попадает в первую зону ДЗ.
  • Частота качаний: 2 Гц.
  • Место КЗ: 40% от ПС Б.
  • Вид КЗ: К(3)ABC, К(2)BС, К(1,1)BС0, К(1)A0
  • Сопротивление в месте КЗ 0 и 10 Ом.

image_2.png

В модели задан опыт №30. Для проведения других опытов необходимо изменить вид КЗ и переходное сопротивление в блоке КЗ. Для опыта №30 задан угол качания ЭДС на ПС Б ±180° от установившего режима. С 0 по 0,5 секунд система работает в установившемся режиме, с 0,5 с частота начинает изменяться, в 1,125 с происходит КЗ в точке К7.

In [ ]:
model_name = "B1_30_37"
model_name in [m.name for m in engee.get_all_models()] ? engee.open(model_name) : engee.load( "$(@__DIR__)/$(model_name).engee");
results = Matrix{Any}(undef, 1, 4)
result = engee.run(model_name);
results[1, 1] = stack(collect(result["I1_1"].value[:])[!,:value])';
results[1, 2] = stack(collect(result["I2_1"].value[:])[!,:value])';
results[1, 3] = stack(collect(result["Zab_1"].value[:])[!,:value]);
results[1, 4] = stack(collect(result["Zab_2"].value[:])[!,:value]);
sim_time =  collect(result["I1_1"].time[:])[!,:time];

Отображение результатов:

In [ ]:
# номер опыта
n = 1;
# сторона измерения, 1 - ПС А, 2 -ПС Б
dir = 1
gr()
p1 = plot(sim_time, results[n, dir], xlabel = "t, с", ylabel = "I, кА", label = ["a" "b" "c"])
p2 = plot(sim_time, results[n, dir+2], xlabel = "t, с", ylabel = "Zab, Ом")
plot(p1, p2, layout=(2,1))
Out[0]:

Опыт 38

Проверка работы ДЗ при внешнем КЗ на параллельной линии, переходящим во внутреннее.

Условия испытания:

  • Вид КЗ: Внешнее К(3)АВC, переходящее во внутреннее.
  • Место КЗ: у ПС Б на смежной параллельной линии, внутреннее у ПС Б.
  • Нагрузка по линии: нормальный режим.
  • Угол возникновения КЗ: 0°.
  • Переходное сопротивление в месте КЗ - 0 Ом.

Последовательность режимов:

  • 0,4995 с КЗ АВС на параллельной линии со стороны ПС Б (точка K4).
  • 0,5995 с КЗ переходит на защищаемую линию (точка K2).

image.png

In [ ]:
model_name = "B1_38"
model_name in [m.name for m in engee.get_all_models()] ? engee.open(model_name) : engee.load( "$(@__DIR__)/$(model_name).engee");
results = Matrix{Any}(undef, 1, 4)
result = engee.run(model_name);
results[1, 1] = stack(collect(result["I1_1"].value[:])[!,:value])';
results[1, 2] = stack(collect(result["I2_1"].value[:])[!,:value])';
results[1, 3] = stack(collect(result["V1_1"].value[:])[!,:value])';
results[1, 4] = stack(collect(result["V2_1"].value[:])[!,:value])';
sim_time = collect(result["I1_1"].time[:])[!,:time];

Отображение результатов:

In [ ]:
# сторона измерения, 1 - ПС А, 2 -ПС Б
dir = 2
gr()
p1 = plot(sim_time, results[1, dir], xlabel = "t, с", ylabel = "I, кА", label = ["a" "b" "c"])
p2 = plot(sim_time, results[1, dir+2], xlabel = "t, с", ylabel = "U, кВ", label = ["a" "b" "c"])
plot(p1, p2, layout=(2,1))
Out[0]:

Опыт 39

Проверка работы ТНЗНП при включении трансформатора на ответвлении ВЛ на холостой ход.

Условия испытания:

  • Линия отключена с двух сторон и не заземлена.
  • Выключатель трансформатора на ответвлении выключен.

Последовательность режимов:

  • 0 с ВЛ отключена с обеих сторон.
  • 0,5 с Включение ВЛ на холостой ход со стороны ПС А.
  • 1 с Включение трансформатора на холостой ход.

image.png

In [ ]:
model_name = "B1_39"
model_name in [m.name for m in engee.get_all_models()] ? engee.open(model_name) : engee.load( "$(@__DIR__)/$(model_name).engee");
results = Matrix{Any}(undef, 1, 4)
result = engee.run(model_name);
results[1, 1] = stack(collect(result["I1_1"].value[:])[!,:value])';
results[1, 2] = stack(collect(result["I2_1"].value[:])[!,:value])'; 
results[1, 3] = stack(collect(result["V1_1"].value[:])[!,:value])';
results[1, 4] = stack(collect(result["V2_1"].value[:])[!,:value])'
sim_time = collect(result["I1_1"].time[:])[!,:time];

Отображение результатов:

In [ ]:
# сторона измерения, 1 - ПС А, 2 -ПС Б
dir = 1
gr()
p1 = plot(sim_time, results[1, dir], xlabel = "t, с", ylabel = "I, кА", label = ["a" "b" "c"])
p2 = plot(sim_time, results[1, dir+2], xlabel = "t, с", ylabel = "U, кВ", label = ["a" "b" "c"])
plot(p1, p2, layout=(2,1))
Out[0]:

Опыты 40-41

Проверка влияния взаимоиндукции параллельной линии на работу ДЗ.

Условия испытания:

  • Нормальный режим.
  • Место КЗ: точка К4.
  • Вид КЗ: К(1)A0
  • Переходное сопротивление в месте КЗ - 0 Ом.
  • а) Параллельная линия отключена и заземлена.
  • б) Параллельная линия в работе.

image.png

В модели задан опыт №40. Для проведения опыта №41 необходимо включить выключатели Q3 и Q4, отключить выключатели заземляющих ножей.

In [ ]:
model_name = "B1_40_41"
model_name in [m.name for m in engee.get_all_models()] ? engee.open(model_name) : engee.load( "$(@__DIR__)/$(model_name).engee");
results = Matrix{Any}(undef, 1, 4)
result = engee.run(model_name);
results[1, 1] = stack(collect(result["I1_1"].value[:])[!,:value])';
results[1, 2] = stack(collect(result["I2_1"].value[:])[!,:value])';
results[1, 3] = stack(collect(result["Zab_1"].value[:])[!,:value]);
results[1, 4] = stack(collect(result["Zab_2"].value[:])[!,:value]);
sim_time = collect(result["I1_1"].time[:])[!,:time];

Отображение результатов:

In [ ]:
# сторона измерения, 1 - ПС А, 2 -ПС Б
dir = 1
gr()
p1 = plot(sim_time, results[1, dir], xlabel = "t, с", ylabel = "I, кА", label = ["a" "b" "c"])
p2 = plot(sim_time, results[1, dir+2], xlabel = "t, с", ylabel = "Zab, Ом", ylims = (0, 500))
plot(p1, p2, layout=(2,1))
Out[0]: