Engee documentation
Notebook

Transition of short-circuit current through the transformer

Model description

This example considers a power system with a single-sided overhead line and a two-winding transformer behind which various types of short-circuit faults (SCFs) occur. The process of running, editing the model from the script development environment using command control and visualising the simulation results are shown. The model measures currents on the high voltage (HV) and low voltage (LV) sides of the transformer, further showing their time plots and vector diagrams. External view of the model:

transformer_fault_1730369673875.png

The power supply is modelled by the Voltage Source (Three-Phase) block. An air line is modelled by the Three-Phase PI Section Line block. A short circuit is modelled by the Fault (Three-Phase) block, in the settings of this block the type of short circuit can be selected using the Filure mode drop-down menu. The short-circuit trip is performed by the Circuit Breaker (Three-Phase) block, which simulates the operation of the relay protection. The duration of short-circuit tripping is chosen on the basis of the operation time of the dead-end line protections with one-way supply and breaker tripping time, and is set to 0.18 s according to the upper limit of the short-circuit tripping duration for 110 kV in accordance with the Methodological Guidelines for the stability of power systems from 2003. [1]. The load is modelled by the Wye-Connected Load block. The system parameters [2] are:

Element Parameter
System Balancing node
$U_{ном} = 110 кВ$
Line AC 185/29
$L = 20 км$
Transformer TRDCN-80000/110
Load $P_{нагр} = 20 МВт$
$Q_{нагр} = 10 МВар$

Running the model

Import the necessary modules for working with graphs, tables and Fourier transform function with floating window:

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

Loading the model:

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");

Setting up the model for the first experience with 3-f short-circuit and winding connection scheme $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);

Running the loaded model:

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

Modelling results

To import the simulation results, logging of the required signals has been enabled in advance and their names have been set. Convert the instantaneous values of the currents of the results variable into separate vectors:

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);

HV and LV side current plots:

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]:

Let us vectorise the currents using the Fourier transform with a floating window to extract the amplitudes and phases of the currents. We will not use the built-in functions and will use the function [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

For better clarity, the currents on the LV side are brought to the HV side by dividing by the transformation ratio. Vector diagrams of currents on the HV and LV sides during short-circuit:

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]:

Note the symmetry of the short-circuit currents and the phase shift of the LV side currents with respect to the HV side currents at $30 ^\circ$ due to the winding connection scheme $Y_0/\triangle-11$. In this case, the line currents on the HV and LV sides are equal when passing through the transformer, taking into account the transformation ratio, and the phase currents on the LV side are smaller in $\sqrt{3}$ line currents.

Experiments with 2-f short-circuit and winding connection scheme $Y_0/\triangle-11$

Setting up the model for the 2-F short-circuit and winding connection experiment $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)");

Running the model, processing and vectorisation of measured currents:

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

Vector diagram of currents on HV and LV sides during short-circuit:

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]:

At 2-f short-circuit faults, reverse sequence currents equal to the forward sequence currents appear. The position of the vector diagram of the reverse sequence currents at the fault location is determined taking into account a special condition - the fault current in the undamaged phase is equal to zero $I_a^{НН}=0$. Consequently, the vectors of the forward and reverse sequence currents for this phase must be directed in opposite directions. As a result of vector addition of symmetrical components, the currents of phases A and B on the HV side are practically two times less than the current in phase C.

Experience with 1-f short-circuit and winding connection scheme $Y_0/\triangle-11$

Setting up the model for the 1-f short-circuit and winding connection experiment $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)");

Running the model, processing and vectorisation of measured currents:

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

Vector diagram of currents on HV and LV sides during short-circuit:

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 this example, there is a load with neutral point grounding forming a loop for single-phase earth fault currents, but the zero-sequence current is shorted in the LV winding and does not flow to the HV side.

Addendum

Try changing the system characteristics and investigate how this will affect the power system mode parameters:

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);

Run the model, process and vectorise the measured currents:

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

Vector diagram of currents on HV and LV sides during short-circuit:

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]:

Conclusion

This example has shown the characteristics of a short-circuit current transition through a transformer. The Engee model command tools were used to load and run the model and set up the blocks from the script development environment. The measured currents were imported into the Workspace from the result variable and plotted on time plots. These were then vectorised using the floating window Fourier transform and shown in vector plots. Visualisation was done using the Plots module. Masked code cells were used in the "Supplement" section to improve the interactivity of the example.

References

  1. Methodological guidelines on stability of power systems. Approved by Order of the Ministry of Energy of Russia dated 30 June 2003 N 277.
  2. Reference book on design of electric networks / edited by D.L. Faibisovich. - 4th edition, revision and addendum - M. : ENAS, 2012. - 376 с. : ill.
  3. microprocessor relays : textbook / A. A. Nikitin ; Ministry of Education and Science of the Russian Federation, Federal Agency for Education, Federal State Educational Institution of Higher Professional Education "Chuvash State University named after I. N. Ulyanov". I.N. Ulyanov Chuvash State Univ. - Cheboksary : Izd-vo Chuvashskogo un-ta, 2006. - 447 p.; ISBN 5-7677-1051-1