Переход тока короткого замыкания через трансформатор

Автор
avatar-ilyaberdyshevilyaberdyshev
Соавторы
avatar-daniil_timofeevdaniil_timofeev
Notebook

Переход тока короткого замыкания через трансформатор

Описание модели

    В данном примере рассматривается энергосистема с воздушной линией с односторонним питанием и двухобмоточным трансформатором, за которым происходят различные виды короткого замыкания (КЗ). Показаны процесс запуска, редактирование модели из среды разработки скрипта с помощью командного управления и визуализация результатов моделирования. В модели измеряются токи на сторонах высшего напряжения (ВН) и низшего напряжения (НН) трансформатора, далее показаны их временные графики и векторные диаграммы. Внешний вид модели:

transformer_fault_1730369673875.png

    Источник питания моделируется блоком Voltage Source (Three-Phase). Воздушная линия моделируется блоком Three-Phase PI Section Line. Короткое замыкание моделируется блоком Fault (Three-Phase), в настройках данного блока с помощью выпадающего меню Filure mode можно выбрать вид КЗ. Отключение КЗ происходит с помощью блока Circuit Breaker (Three-Phase), который имитирует работу релейной защиты. Длительность отключения КЗ выбрана на основании времени работы защит тупиковой линии с односторонним питанием и временем отключения выключателя, и установлена 0,18 с по верхней границе длительности отключения КЗ для 110 кВ в соответствии с Методическими указаниями по устойчивости энергосистем от 2003 г. [1]. Нагрузка моделируется блоком Wye-Connected Load. Параметры системы [2]:

Элемент Параметр
Система Балансирующий узел
$U_{ном} = 110 кВ$
Линия АС 185/29
$L = 20 км$
Трансформатор ТРДЦН-80000/110
Нагрузка $P_{нагр} = 20 МВт$
$Q_{нагр} = 10 МВар$

Запуск модели

    Импортируем необходимые модули для работы с графиками, таблицами и функцию преобразования Фурье с плавающим окном:

In [ ]:
using Plots
using DataFrames
include("$(@__DIR__)/fourie_func.jl")
gr();

    Загрузка модели:

In [ ]:
model_name = "transformer_fault"
model_name in [m.name for m in engee.get_all_models()] ? engee.open(model_name) : engee.load( "$(@__DIR__)/$(model_name).engee");

    Настройка модели для первого опыта с 3-ф КЗ и схемой соединения обмоток $Y_0/\triangle-11$:

In [ ]:
transf_name = "Трансформатор ТРДЦН-80000|110";
fault_name = "КЗ";
line_name = "Линия АС 185|29"
engee.set_param!(model_name*"/"*transf_name,
"winding1_connection" => "Wye with grounded neutral",
"winding2_connection" => "Delta 11 o'clock");
engee.set_param!(model_name*"/"*fault_name, "type" => "Three-phase (a-b-c)");
engee.set_param!(model_name*"/"*line_name, "line_length" => 20);

    Запуск загруженной модели:

In [ ]:
results = engee.run(model_name);

Результаты моделирования

    Для импорта результатов моделирования было заранее включено логгирование необходимых сигналов и заданы их имена. Преобразуем мгновенные значения токов переменной results в отдельные вектора:

In [ ]:
# вектор времени симуляции
sim_time = results["i_a_1"].time;
# вектор токов на стороне ВН
i_1 = hcat(results["i_a_1"].value,results["i_b_1"].value,results["i_c_1"].value);
# вектор токов на стороне ВН
i_2 = hcat(results["i_a_2"].value,results["i_b_2"].value,results["i_c_2"].value);

    Графики токов со стороны ВН и НН:

In [ ]:
p1 = plot(sim_time, i_1, label = [L"I_a" L"I_b" L"I_c"],
title = "Токи (ВН)", ylabel = "I, А", xlabel="Время, c");
p2 = plot(sim_time, i_2./1e3, label = [L"I_a" L"I_b" L"I_c"],
title = "Токи (НН)", ylabel = "I, кА", xlabel="Время, c")
plot(p1, p2, layout=(2,1), legend = true, linecolor = [:orange :green :red], size = (700,440))
Out[0]:

    Выполним векторизацию токов с помощью преобразования Фурье с плавающим окном для выделения амплитуд и фаз токов. При этом не будем пользоваться встроенными функциями и будем использовать функцию [3]: $$\underline{I}_1(nT_д)={\frac{2j}{N}}\sum_{\substack{k=n-N+1\\n=0...N-1}}^{n}i(kT_д)e^{-jw_1(k+N-n-1)T_д}$$

In [ ]:
# Переменные для хранения векторов
i_1_Xmag, i_2_Xmag,
i_1_Xphase, i_2_Xphase = [zeros(length(sim_time),3) for _ = 1:4];

for (Xmag, Xphase, signal) in zip(
    (i_1_Xmag, i_2_Xmag),
    (i_1_Xphase, i_2_Xphase),
    (i_1, i_2))
    Xmag, Xphase = moving_fourie(Xmag, Xphase, sim_time, signal);
end

    Для большей наглядности токи со стороны НН приведены к стороне ВН с помощью деления на коэффициент трансформации. Векторные диаграммы токов на сторонах ВН и НН во время КЗ:

In [ ]:
# поиск индекса КЗ
fault_ind = indexin(0.3, sim_time);
# коэффициент трансформации
kt = 115/10.5;
# вектора токов в комплексных числах
i_a_HV_mag, i_a_HV_ang = round(i_1_Xmag[fault_ind,1][1], digits=1), round(i_1_Xphase[fault_ind,1][1], digits=1)
i_b_HV_mag, i_b_HV_ang = round(i_1_Xmag[fault_ind,2][1], digits=1), round(i_1_Xphase[fault_ind,2][1], digits=1)
i_c_HV_mag, i_c_HV_ang = round(i_1_Xmag[fault_ind,3][1], digits=1), round(i_1_Xphase[fault_ind,3][1], digits=1)
i_a_LV_mag, i_a_LV_ang = round(i_2_Xmag[fault_ind,1][1]/kt, digits=1), round(i_2_Xphase[fault_ind,1][1], digits=1)
i_b_LV_mag, i_b_LV_ang = round(i_2_Xmag[fault_ind,2][1]/kt, digits=1), round(i_2_Xphase[fault_ind,2][1], digits=1)
i_c_LV_mag, i_c_LV_ang = round(i_2_Xmag[fault_ind,3][1]/kt, digits=1), round(i_2_Xphase[fault_ind,3][1], digits=1)

p1 = plot([0;i_a_HV_ang*pi/180], [0;i_a_HV_mag], arrow=true, proj = :polar, linecolor = :orange, 
label = L"I_a = %$i_a_HV_mag \angle\, %$i_a_HV_ang \degree А", title = "Токи (ВН)")

plot!([0;i_b_HV_ang*pi/180], [0;i_b_HV_mag], arrow=true, proj = :polar, linecolor = :green,
label = L"I_b = %$i_b_HV_mag \angle\, %$i_b_HV_ang \degree А")

plot!([0;i_c_HV_ang*pi/180], [0;i_c_HV_mag], arrow=true, proj = :polar, linecolor = :red,
label = L"I_с = %$i_c_HV_mag \angle\, %$i_c_HV_ang \degree А")

p2 = plot([0;i_a_LV_ang*pi/180], [0;i_a_LV_mag], arrow=true, proj = :polar, linecolor = :orange,
label = L"I_a/k_t = %$i_a_LV_mag \angle\, %$i_a_LV_ang \degree А", title = "Токи (НН)")

plot!([0;i_b_LV_ang*pi/180], [0;i_b_LV_mag], arrow=true, proj = :polar, linecolor = :green,
label = L"I_b/k_t = %$i_b_LV_mag \angle\, %$i_b_LV_ang \degree А")

plot!([0;i_c_LV_ang*pi/180], [0;i_c_LV_mag], arrow=true, proj = :polar, linecolor = :red,
label = L"I_с/k_t = %$i_c_LV_mag \angle\, %$i_c_LV_ang \degree А")

plot(p1, p2, layout=(1,2), legend = :outerbottom, legendfontsize=10, size = (800,450))
Out[0]:

    Обратите внимание на симметричность токов при КЗ и сдвиг фаз токов на стороне НН относительно токов на стороне ВН на $30 ^\circ$ из-за схемы соединения обмоток $Y_0/\triangle-11$. В данном случае, линейные токи со сторон ВН и НН при переходе через трансформатор равны при учёте коэффициента трансформации, а фазные токи со стороны НН меньше в $\sqrt{3}$ линейных.

Опыт с 2-ф КЗ и схемой соединения обмоток $Y_0/\triangle-11$

    Настройка модели для опыта с 2-ф КЗ и схемой соединения обмоток $Y_0/\triangle-11$:

In [ ]:
engee.set_param!(model_name*"/"*transf_name,
"winding1_connection" => "Wye with grounded neutral",
"winding2_connection" => "Delta 11 o'clock");
engee.set_param!(model_name*"/"*fault_name, "type" => "Two-phase (b-c)");

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

In [ ]:
results = engee.run(model_name);
# вектор токов амперметра 1
i_1 = hcat(results["i_a_1"].value,results["i_b_1"].value,results["i_c_1"].value);
# вектор токов амперметра 2
i_2 = hcat(results["i_a_2"].value,results["i_b_2"].value,results["i_c_2"].value);

for (Xmag, Xphase, signal) in zip(
    (i_1_Xmag, i_2_Xmag),
    (i_1_Xphase, i_2_Xphase),
    (i_1, i_2))
    Xmag, Xphase = moving_fourie(Xmag, Xphase, sim_time, signal);
end

    Векторная диаграмма токов на сторонах ВН и НН во время КЗ:

In [ ]:
# вектора токов в комплексных числах
i_a_HV_mag, i_a_HV_ang = round(i_1_Xmag[fault_ind,1][1], digits=1), round(i_1_Xphase[fault_ind,1][1], digits=1)
i_b_HV_mag, i_b_HV_ang = round(i_1_Xmag[fault_ind,2][1], digits=1), round(i_1_Xphase[fault_ind,2][1], digits=1)
i_c_HV_mag, i_c_HV_ang = round(i_1_Xmag[fault_ind,3][1], digits=1), round(i_1_Xphase[fault_ind,3][1], digits=1)
i_a_LV_mag, i_a_LV_ang = round(i_2_Xmag[fault_ind,1][1]/kt, digits=1), round(i_2_Xphase[fault_ind,1][1], digits=1)
i_b_LV_mag, i_b_LV_ang = round(i_2_Xmag[fault_ind,2][1]/kt, digits=1), round(i_2_Xphase[fault_ind,2][1], digits=1)
i_c_LV_mag, i_c_LV_ang = round(i_2_Xmag[fault_ind,3][1]/kt, digits=1), round(i_2_Xphase[fault_ind,3][1], digits=1)

p1 = plot([0;i_a_HV_ang*pi/180], [0;i_a_HV_mag], arrow=true, proj = :polar, linecolor = :orange, 
label = L"I_a = %$i_a_HV_mag \angle\, %$i_a_HV_ang \degree А", title = "Токи (ВН)")

plot!([0;i_b_HV_ang*pi/180], [0;i_b_HV_mag], arrow=true, proj = :polar, linecolor = :green,
label = L"I_b = %$i_b_HV_mag \angle\, %$i_b_HV_ang \degree А")

plot!([0;i_c_HV_ang*pi/180], [0;i_c_HV_mag], arrow=true, proj = :polar, linecolor = :red,
label = L"I_с = %$i_c_HV_mag \angle\, %$i_c_HV_ang \degree А")

p2 = plot([0;i_a_LV_ang*pi/180], [0;i_a_LV_mag], arrow=true, proj = :polar, linecolor = :orange,
label = L"I_a/k_t = %$i_a_LV_mag \angle\, %$i_a_LV_ang \degree А", title = "Токи (НН)")

plot!([0;i_b_LV_ang*pi/180], [0;i_b_LV_mag], arrow=true, proj = :polar, linecolor = :green,
label = L"I_b/k_t = %$i_b_LV_mag \angle\, %$i_b_LV_ang \degree А")

plot!([0;i_c_LV_ang*pi/180], [0;i_c_LV_mag], arrow=true, proj = :polar, linecolor = :red,
label = L"I_с/k_t = %$i_c_LV_mag \angle\, %$i_c_LV_ang \degree А")

plot(p1, p2, layout=(1,2), legend = :outerbottom, legendfontsize=10, size = (800,450))
Out[0]:

    При 2-ф КЗ появляются токи обратной последовательности, равные токам прямой последовательности. Положение векторной диаграммы токов обратной последовательности в месте КЗ определяется с учетом особого условия – ток КЗ в неповрежденной фазе равен нулю $I_a^{НН}=0$. Следовательно, вектора токов прямой и обратной последовательностей для этой фазы должны быть направлены в противоположные стороны. В результате векторного сложения симметричных составляющих токи фаз A и B на стороне ВН, практически, в два раза меньше тока в фазе C.

Опыт с 1-ф КЗ и схемой соединения обмоток $Y_0/\triangle-11$

    Настройка модели для опыта с 1-ф КЗ и схемой соединения обмоток $Y_0/\triangle-11$:

In [ ]:
engee.set_param!(model_name*"/"*transf_name,
"winding1_connection" => "Wye with grounded neutral",
"winding2_connection" => "Delta 11 o'clock");
engee.set_param!(model_name*"/"*fault_name, "type" => "Single-phase to ground (a-g)");

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

In [ ]:
results = engee.run(model_name);
# вектор токов амперметра 1
i_1 = hcat(results["i_a_1"].value,results["i_b_1"].value,results["i_c_1"].value);
# вектор токов амперметра 2
i_2 = hcat(results["i_a_2"].value,results["i_b_2"].value,results["i_c_2"].value);

for (Xmag, Xphase, signal) in zip(
    (i_1_Xmag, i_2_Xmag),
    (i_1_Xphase, i_2_Xphase),
    (i_1, i_2))
    Xmag, Xphase = moving_fourie(Xmag, Xphase, sim_time, signal);
end

    Векторная диаграмма токов на сторонах ВН и НН во время КЗ:

In [ ]:
# вектора токов в комплексных числах
i_a_HV_mag, i_a_HV_ang = round(i_1_Xmag[fault_ind,1][1], digits=1), round(i_1_Xphase[fault_ind,1][1], digits=1)
i_b_HV_mag, i_b_HV_ang = round(i_1_Xmag[fault_ind,2][1], digits=1), round(i_1_Xphase[fault_ind,2][1], digits=1)
i_c_HV_mag, i_c_HV_ang = round(i_1_Xmag[fault_ind,3][1], digits=1), round(i_1_Xphase[fault_ind,3][1], digits=1)
i_a_LV_mag, i_a_LV_ang = round(i_2_Xmag[fault_ind,1][1]/kt, digits=1), round(i_2_Xphase[fault_ind,1][1], digits=1)
i_b_LV_mag, i_b_LV_ang = round(i_2_Xmag[fault_ind,2][1]/kt, digits=1), round(i_2_Xphase[fault_ind,2][1], digits=1)
i_c_LV_mag, i_c_LV_ang = round(i_2_Xmag[fault_ind,3][1]/kt, digits=1), round(i_2_Xphase[fault_ind,3][1], digits=1)

p1 = plot([0;i_a_HV_ang*pi/180], [0;i_a_HV_mag], arrow=true, proj = :polar, linecolor = :orange, 
label = L"I_a = %$i_a_HV_mag \angle\, %$i_a_HV_ang \degree А", title = "Токи (ВН)")

plot!([0;i_b_HV_ang*pi/180], [0;i_b_HV_mag], arrow=true, proj = :polar, linecolor = :green,
label = L"I_b = %$i_b_HV_mag \angle\, %$i_b_HV_ang \degree А")

plot!([0;i_c_HV_ang*pi/180], [0;i_c_HV_mag], arrow=true, proj = :polar, linecolor = :red,
label = L"I_с = %$i_c_HV_mag \angle\, %$i_c_HV_ang \degree А")

p2 = plot([0;i_a_LV_ang*pi/180], [0;i_a_LV_mag], arrow=true, proj = :polar, linecolor = :orange,
label = L"I_a/k_t = %$i_a_LV_mag \angle\, %$i_a_LV_ang \degree А", title = "Токи (НН)")

plot!([0;i_b_LV_ang*pi/180], [0;i_b_LV_mag], arrow=true, proj = :polar, linecolor = :green,
label = L"I_b/k_t = %$i_b_LV_mag \angle\, %$i_b_LV_ang \degree А")

plot!([0;i_c_LV_ang*pi/180], [0;i_c_LV_mag], arrow=true, proj = :polar, linecolor = :red,
label = L"I_с/k_t = %$i_c_LV_mag \angle\, %$i_c_LV_ang \degree А")

plot(p1, p2, layout=(1,2), legend = :outerbottom, legendfontsize=10, size = (800,450))
Out[0]:

    В данном примере присутствует нагрузка с заземлением нейтральной точки, образующая контур для протекания токов при однофазном замыкании на землю, однако ток нулевой последовательности замыкается в обмотке НН и на сторону ВН не проходит.

Дополнение

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

In [ ]:
# @markdown Длина воздушной линии, в км:
L1 = 20 # @param {type:"slider", min:1, max:100, step:1}
engee.set_param!(model_name*"/"*line_name, "line_length" => float(L1));
# @markdown Схема соединения обмоток на стороне ВН:
winding_con_HV = "Wye with grounded neutral" # @param ["Wye with floating neutral", "Wye with grounded neutral", "Delta 1 o'clock", "Delta 11 o'clock"]
# @markdown Схема соединения обмоток на стороне НН:
winding_con_LV = "Wye with grounded neutral" # @param ["Wye with floating neutral", "Wye with grounded neutral", "Delta 1 o'clock", "Delta 11 o'clock"]
engee.set_param!(model_name*"/"*transf_name,
"winding1_connection" => winding_con_HV,
"winding2_connection" => winding_con_LV);
# @markdown Вид КЗ
kind_of_fault = "Single-phase to ground (a-g)" # @param ["Single-phase to ground (a-g)", "Single-phase to ground (b-g)", "Single-phase to ground (c-g)", "Two-phase (a-b)", "Two-phase (b-c)", "Two-phase (c-a)", "Three-phase (a-b-c)", "Three-phase ground (a-b-c-g)"]
engee.set_param!(model_name*"/"*fault_name, "type" => kind_of_fault);

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

In [ ]:
results = engee.run(model_name);
# вектор токов на стороне ВН
i_1 = hcat(results["i_a_1"].value,results["i_b_1"].value,results["i_c_1"].value);
# вектор токов на стороне НН
i_2 = hcat(results["i_a_2"].value,results["i_b_2"].value,results["i_c_2"].value);

for (Xmag, Xphase, signal) in zip(
    (i_1_Xmag, i_2_Xmag),
    (i_1_Xphase, i_2_Xphase),
    (i_1, i_2))
    Xmag, Xphase = moving_fourie(Xmag, Xphase, sim_time, signal);
end

    Векторная диаграмма токов на сторонах ВН и НН во время КЗ:

In [ ]:
# вектора токов в комплексных числах
i_a_HV_mag, i_a_HV_ang = round(i_1_Xmag[fault_ind,1][1], digits=1), round(i_1_Xphase[fault_ind,1][1], digits=1)
i_b_HV_mag, i_b_HV_ang = round(i_1_Xmag[fault_ind,2][1], digits=1), round(i_1_Xphase[fault_ind,2][1], digits=1)
i_c_HV_mag, i_c_HV_ang = round(i_1_Xmag[fault_ind,3][1], digits=1), round(i_1_Xphase[fault_ind,3][1], digits=1)
i_a_LV_mag, i_a_LV_ang = round(i_2_Xmag[fault_ind,1][1]/kt, digits=1), round(i_2_Xphase[fault_ind,1][1], digits=1)
i_b_LV_mag, i_b_LV_ang = round(i_2_Xmag[fault_ind,2][1]/kt, digits=1), round(i_2_Xphase[fault_ind,2][1], digits=1)
i_c_LV_mag, i_c_LV_ang = round(i_2_Xmag[fault_ind,3][1]/kt, digits=1), round(i_2_Xphase[fault_ind,3][1], digits=1)

p1 = plot([0;i_a_HV_ang*pi/180], [0;i_a_HV_mag], arrow=true, proj = :polar, linecolor = :orange, 
label = L"I_a = %$i_a_HV_mag \angle\, %$i_a_HV_ang \degree А", title = "Токи (ВН)")

plot!([0;i_b_HV_ang*pi/180], [0;i_b_HV_mag], arrow=true, proj = :polar, linecolor = :green,
label = L"I_b = %$i_b_HV_mag \angle\, %$i_b_HV_ang \degree А")

plot!([0;i_c_HV_ang*pi/180], [0;i_c_HV_mag], arrow=true, proj = :polar, linecolor = :red,
label = L"I_с = %$i_c_HV_mag \angle\, %$i_c_HV_ang \degree А")

p2 = plot([0;i_a_LV_ang*pi/180], [0;i_a_LV_mag], arrow=true, proj = :polar, linecolor = :orange,
label = L"I_a/k_t = %$i_a_LV_mag \angle\, %$i_a_LV_ang \degree А", title = "Токи (НН)")

plot!([0;i_b_LV_ang*pi/180], [0;i_b_LV_mag], arrow=true, proj = :polar, linecolor = :green,
label = L"I_b/k_t = %$i_b_LV_mag \angle\, %$i_b_LV_ang \degree А")

plot!([0;i_c_LV_ang*pi/180], [0;i_c_LV_mag], arrow=true, proj = :polar, linecolor = :red,
label = L"I_с/k_t = %$i_c_LV_mag \angle\, %$i_c_LV_ang \degree А")

plot(p1, p2, layout=(1,2), legend = :outerbottom, legendfontsize=10, size = (800,450))
Out[0]:

Вывод

    В данном примере были показаны особенности перехода тока короткого замыкания через трансформатор. Использованы инструменты командного управления моделью Engee для загрузки и запуска модели и настройки блоков из среды разработки скрипта. Измеренные токи были импортированы в Рабочую область из переменной result и выведены на временные графики. Затем они были векторизованы с помощью преобразования Фурье с плавающим окном и показаны на векторных диаграммах. Визуализация осуществлялась с помощью модуля Plots. В разделе "Дополнение" использованы маскированные кодовые ячейки для улучшения интерактивности примера.

Ссылки

  1. Методические указания по устойчивости энергосистем. Утверждены приказом Минэнерго России от 30 июня 2003 г. N 277.
  2. Справочник по проектированию электрических сетей / под ред. Д. Л. Файбисовича. – 4-е изд., перераб. и доп. – М. : ЭНАС, 2012. – 376 с. : ил.
  3. Микропроцессорные реле : учебное пособие / А. А. Никитин ; М-во образования и науки Российской Федерации, Федеральное агентство по образованию, Федеральное гос. образовательное учреждение высш. проф. образования "Чувашский гос. ун-т им. И. Н. Ульянова". - Чебоксары : Изд-во Чувашского ун-та, 2006. - 447 с.; ISBN 5-7677-1051-1