Engee documentation
Notebook

Simulation of an arc steelmaking furnace in static mode

In this example, static modeling and analysis of current and voltage harmonics for a DSP-100NZA arc steelmaking furnace with a capacity of 100 tons and a transformer capacity of 50 MVA are considered.

Introduction

The arc steelmaking furnace (chipboard) is a key unit of modern metallurgy, where a high-temperature electric arc that occurs between the electrodes and the metal charge serves as the main source of energy for remelting scrap metal into high-quality steel. The widespread use of chipboard, especially in the production of steel from scrap, is due to their cost-effectiveness and environmental friendliness, and the prospects of the technology are inextricably linked to further increasing efficiency and reducing the impact on the energy system. However, the chipboard is an extremely difficult object to analyze and control due to its pronounced nonlinearity, stochastic arc discharge, and dynamic changes in electrical parameters during melting. It is this complexity that makes it critically important to conduct an in-depth study of adequate chipboard replacement schemes, which are the basis for analyzing operating modes, designing and optimizing control systems. The development of effective electrode control systems is necessary to stabilize arc power, minimize flicker, and increase energy efficiency. In parallel, a thorough analysis of the harmonic composition of the consumed current and voltage on the furnace tires is of paramount importance, since the chipboard is a powerful source of higher harmonics that cause distortion of the voltage curve in the supply network, equipment overload and potential electromagnetic compatibility problems. The study of these aspects is necessary to ensure reliable operation of the furnace itself, reduce network losses and comply with electricity quality standards.

Mathematical description

There are several approaches to the mathematical description of the elements of an electrical chipboard replacement circuit. One such approach, describing the nonlinearity of the resistance of an electric arc, is given in [1]. We'll take him as an example.

The description of the arc resistance given in the article:

Let's present it as directional blocks in the subsystem "Arc resistance calculation".

The Engee model

The example model - electric_arc_furnace.engee.

The electrical circuit includes:

eaf_mod.png

In the model, the following signals are written to the simout variable:

  • Vc - three-phase voltage at the input of the furnace transformer [V],

  • Varc - voltage at each phase of the chipboard [V],

  • Varc_pu - relative voltage at each phase of the chipboard [O.E.],

  • Iarc - current in each phase of the chipboard [A],

  • Iarc_pu - relative current in each phase of the chipboard [O.E.],

The model parameters are also set according to the data from the publication, their definition is given below.:

In [ ]:
Uc = sqrt(2)*573  # Амплитудное фазное напряжение сети (В)
fc = 50.0         # Частота сети (Гц)
Rc = 0.0528e-3; Xc = 0.468e-3; Lc = Xc/(2pi*50)  # Параметры кабеля: R (Ом), X (Ом), L (Гн)
Rt1 = 0.05e-3; Xt1 = 0.35e-3; Lt1 = Xt1/(2pi*50)  # Параметры трансформатора - первичная обмотка
Rt2 = 0.25e-3; Xt2 = 3.15e-3; Lt2 = Xt2/(2pi*50)  # Параметры трансформатора - вторичная обмотка

println("Параметры системы: Rc = $Rc Ом, Lc = $Lc Гн")
println("Параметры Трансформатора ВН: Rt1 = $Rt1 Ом, Lt1 = $Lt1 Гн")
println("Параметры Трансформатора НН: Rt2 = $Rt2 Ом, Lt2 = $Lt2 Гн")
Параметры системы: Rc = 5.28e-5 Ом, Lc = 1.4896902673401403e-6 Гн
Параметры Трансформатора ВН: Rt1 = 5.0e-5 Ом, Lt1 = 1.1140846016432673e-6 Гн
Параметры Трансформатора НН: Rt2 = 0.00025 Ом, Lt2 = 1.0026761414789405e-5 Гн
In [ ]:
iзаж = 0.5e4; Imax = 1e5; # Ток зажигания и максимальный ток, А
uзаж = 310.5; uп = uзаж/1.15; # Напряжение зажигания и напряжение постоянной величины, В
 = (Imax+iзаж)/Imax * uп; # Вспомогательный параметр
T1 = 1e-2; T2 = 2e-2; # Тепловые постоянные времени дуги, с
Rs1 = 25.87*1e-3; # Сопротивление дуги в зарядном прмежутке, Ом

The given parameters are also defined in inverse вызовах models.

To perform the simulation, we will get the path to the sample directory, go to it and connect the Julia script to use auxiliary modeling and data analysis functions.

First of all, we will install and connect the packages necessary for data modeling and analysis.

In [ ]:
# Установка необходимых пакетов (если они ещё не установлены)
# JLD2 - для работы с файлами данных в формате HDF5/Julia
# FFTW - библиотека для быстрого преобразования Фурье (FFT)
# LinearAlgebra - стандартный модуль Julia для линейной алгебры
import Pkg; Pkg.add(["JLD2", "FFTW", "LinearAlgebra"])

# Подключение установленных пакетов
using JLD2, FFTW, LinearAlgebra
In [ ]:
example_path = @__DIR__; # Получаем абсолютный путь к директории, содержащей текущий скрипт
cd(example_path); # Переходим в директорию примера
include("useful_functions.jl"); # Подключаем скрипт Julia со вспомогательными функциями

Simulation

We will get the simulation data. For this, you can select "file .jld2" to download previously recorded simulation results or "model .engee" for loading and launching the model

In [ ]:
# @markdown **Определите источник данных для анализа:**
источник = "модель .engee" # @param ["модель .engee","файл .jld2"]
simout = get_sim_results(источник, example_path)
Out[0]:
SimulationResult(
    "Iarc" => WorkspaceArray{Vector{Float64}}("electric_arc_furnace/Iarc")
,
    "Iarc_pu" => WorkspaceArray{Vector{Float64}}("electric_arc_furnace/Iarc_pu")
,
    "Vc" => WorkspaceArray{Vector{Float64}}("electric_arc_furnace/Vc")
,
    "Varc" => WorkspaceArray{Vector{Float64}}("electric_arc_furnace/Varc")
,
    "Varc_pu" => WorkspaceArray{Vector{Float64}}("electric_arc_furnace/Varc_pu")

)

The data has been collected, and we will extract several variables of interest for analysis.:

In [ ]:
t = get_sim_data(simout, "Iarc_pu", 1, "time");
IarcA_pu = get_sim_data(simout, "Iarc_pu", 1, "value");
VarcA_pu = get_sim_data(simout, "Varc_pu", 1, "value");
IarcA = get_sim_data(simout, "Iarc", 1, "value");
VarcA = get_sim_data(simout, "Varc", 1, "value");
VcA = get_sim_data(simout, "Vc", 1, "value");

Based on the data obtained, we will also determine the final simulation time, model step, and model calculation frequency.

In [ ]:
T = last(t);
ST = T/(size(t)[1]-1);
fs = Int(round(1/ST));

Current and voltage

Let's plot the oscillograms of the relative current and voltage on the furnace arc for phase A:

In [ ]:
gr()
plot(t, [IarcA_pu, VarcA_pu];
     label = ["Ток, о.е." "Напряжение, о.е."],
     title = "Ток и напряжение ДСП-100НЗА в фазе А",
     xlabel = "Время, с")
Out[0]:

.The waveform has the expected shape; additionally, these two signals can be represented as a volt-ampere characteristic (VAC).:

In [ ]:
plot(IarcA_pu, VarcA_pu;
    label = :none, title = "ВАХ ДСП-100НЗА",
    xlabel = "Ток Ia, о.е.", ylabel = "Напряжение Va, о.е.")
Out[0]:

The VAC of the furnace arc also has the expected shape. Therefore, the model constructed according to the description from the publication is correct. Let's proceed to the analysis of harmonic distortions of current and voltage.

Harmonic analysis

To analyze harmonics in static mode, it is enough to take one period of the signal. This will be the furnace arc voltage signal in phase A in the next interval.:

In [ ]:
gr()
int = 2290:4301
plot(t[int],  VarcA[int];
    label = "Напряжение, В",
    title = "Период напряжения ДСП-100НЗА в фазе А",
    xlabel = "Время, с")
Out[0]:

We get the signal and time vectors for this interval:

In [ ]:
signal = VarcA[int]; t = t[int];

Using the functions from the Julia script, we will get data on the amplitudes and phases of the harmonic components of a given section of the signal.:

In [ ]:
# Анализируем гармоники
results = analyze_harmonics(signal, fs, fc)

n, A, ph = get_harmonics_data(results)

# Выводим результаты
println("Гармоника | Амплитуда | Фаза (град)")
println("----------------------------------")
for (n, A, ph) in zip(n, A, ph)
    round(A, digits=3)!=0.0 ? println(lpad(n, 9), " | ", lpad(round(A, digits=3), 9), " | ", round((ph)*180/pi, digits=3)) : nothing
end
Warning: Гармоника 250*50.0 Гц не точно соответствует сетке частот. Расхождение: 24.8508946322072 Гц
@ Main ~/start/examples/physmod/electric_arc_furnace_static/useful_functions.jl:94
Гармоника | Амплитуда | Фаза (град)
----------------------------------
        1 |     345.0 | 0.0
        2 |       5.0 | 114.592
        3 |     112.0 | 0.0
        4 |       5.0 | 114.592
        5 |      64.0 | -0.0
        6 |       5.0 | 114.592
        7 |      45.0 | -0.0
        8 |       5.0 | 114.592
        9 |      33.0 | -0.0
       10 |       4.0 | 57.296
       11 |      26.0 | -0.0
       12 |       4.0 | 57.296
       13 |      21.0 | -0.0
       14 |       4.0 | 57.296
       15 |      17.0 | -0.0
       16 |       4.0 | 57.296
       17 |      15.0 | -0.0
       18 |       4.0 | 57.296
       19 |      12.0 | -0.0
       20 |       4.0 | 57.296
       21 |      11.0 | -0.0
       22 |       3.0 | 57.296
       23 |       9.0 | -57.296
       24 |       3.0 | 57.296
       25 |       8.0 | -57.296
       26 |       3.0 | 57.296
       27 |       7.0 | -57.296
       28 |       3.0 | 57.296
       29 |       6.0 | -57.296
       30 |       3.0 | 57.296
       31 |       5.0 | -57.296
       32 |       2.0 | 57.296
       33 |       5.0 | -57.296
       34 |       2.0 | 57.296
       35 |       4.0 | -57.296
       36 |       2.0 | 57.296
       37 |       4.0 | -57.296
       38 |       2.0 | 57.296
       39 |       3.0 | -57.296
       40 |       2.0 | 57.296
       41 |       3.0 | -57.296
       42 |       2.0 | 0.0
       43 |       3.0 | -57.296
       44 |       2.0 | 0.0
       45 |       2.0 | -57.296
       46 |       1.0 | 0.0
       47 |       2.0 | 286.479
       48 |       1.0 | 0.0
       49 |       2.0 | 286.479
       50 |       1.0 | -0.0
       51 |       2.0 | 229.183
       52 |       1.0 | -0.0
       53 |       1.0 | 229.183
       54 |       1.0 | -0.0
       55 |       1.0 | 229.183
       56 |       1.0 | -0.0
       57 |       1.0 | 229.183
       58 |       1.0 | -57.296
       59 |       1.0 | 229.183
       60 |       1.0 | -57.296
       61 |       1.0 | 229.183
       62 |       1.0 | -57.296
       63 |       1.0 | 229.183
       64 |       1.0 | -57.296
       65 |       1.0 | 171.887
       66 |       1.0 | -57.296
       67 |       1.0 | 171.887
       68 |       1.0 | -114.592
       69 |       1.0 | 171.887
       70 |       1.0 | 286.479
       71 |       1.0 | 171.887
       72 |       1.0 | 229.183
       73 |       1.0 | 171.887
       74 |       1.0 | 229.183
       75 |       1.0 | 171.887
       76 |       1.0 | 229.183
       78 |       1.0 | 229.183
       79 |       1.0 | 171.887
       80 |       1.0 | 229.183
       82 |       1.0 | 229.183
       85 |       1.0 | 171.887
       87 |       1.0 | 171.887
       89 |       1.0 | 171.887
       91 |       1.0 | 171.887
       93 |       1.0 | 171.887
       95 |       1.0 | 171.887
       97 |       1.0 | 171.887
       99 |       1.0 | 114.592
      101 |       1.0 | 114.592
      103 |       1.0 | 114.592
      105 |       1.0 | 114.592
      107 |       1.0 | 114.592
      109 |       1.0 | 114.592
      111 |       1.0 | 114.592
      113 |       1.0 | 114.592
      115 |       1.0 | 114.592
      117 |       1.0 | 114.592
      119 |       1.0 | 114.592
      121 |       1.0 | 57.296
      123 |       1.0 | 57.296
      125 |       1.0 | 57.296
      127 |       1.0 | 57.296
      129 |       1.0 | 57.296
      131 |       1.0 | 57.296
      133 |       1.0 | 57.296
      135 |       1.0 | 57.296
      137 |       1.0 | 57.296
      139 |       1.0 | 57.296
      141 |       1.0 | 57.296
      143 |       1.0 | 0.0
      145 |       1.0 | 0.0
      147 |       1.0 | 0.0
      149 |       1.0 | 0.0
      151 |       1.0 | 0.0
      153 |       1.0 | -0.0
      155 |       1.0 | -0.0

Using the following function, we will separate the distortion data for the harmonics of the forward, reverse and triple sequences.:

In [ ]:
harm, harm2, harm3 = get_sequences(results, n);

The amplitudes of each of the harmonics highlighted in the sequence can also be conveniently represented on the graph in logarithmic axes.:

In [ ]:
gr()
plot( yaxis = :log, xlims=[0,55],ylims=[1e-1,1e3], title = "Амплитуды гармоник 1-55 напряжения в фазе А", xlabel="Порядок гармоник n", ylabel = "Логарифм амплитуды гармоники lg(An)")
plot!(harm[1], harm[2];
        markershape = :square, markersize=3, label = "Прямая последовательность")
plot!(harm2[1], harm2[2];
        markershape = :circle, markersize=3, label = "Обратная последовательность")
plot!(harm3[1], harm3[2];
        markershape = :ltriangle, markersize=5, label = "Тройная последовательность")
scatter!([harm[1][1]], [harm[2][1]];
        markershape = :star, markersize=7, label = "Базовая гармоника")
Out[0]:

A similar graph can be presented for the phases of each of the harmonics in the sequences.:

In [ ]:
gr()
y = range(-π, π, length=9)
plot(xlims=[0,54], yticks = (y, ["$(round(yi, digits=2)) рад" for yi in y]), title = "Фазы гармоник 1-55 напряжения в фазе А", xlabel="Порядок гармоник n", ylabel = "Фаза гармоники φn")
plot!(harm[1], harm[3];
        markershape = :square, markersize=3, label = "Прямая последовательность")
plot!(harm2[1], harm2[3];
        markershape = :circle, markersize=3, label = "Обратная последовательность")
plot!(harm3[1], harm3[3];
        markershape = :ltriangle, markersize=5, label = "Тройная последовательность")
scatter!([harm[1][1]], [harm[3][1]];
        markershape = :star, markersize=7, label = "Базовая гармоника")
Out[0]:

Levels of total harmonic distortion

The total levels of harmonic distortion that can be used to correlate with electrical energy quality standards according to GOST 32144-2013 are determined by the Euclidean norm formula.:

Let's calculate the levels of harmonic voltage distortion - the total for all harmonics and for individual sequences.

In [ ]:
THD_V = norm(vcat(harm[2][2:end], harm2[2], harm3[2]))/harm[2][1]*100;
THD_V0 = norm(harm[2][2:end])/harm[2][1]*100;
THD_V2 = norm(harm2[2])/harm[2][1]*100;
THD_V3 = norm(harm3[2])/harm[2][1]*100;

println("Суммарный коэффициент гармонических искажений напряжения: ", round(THD_V, digits=2), "%.\nИз него, по последовательностям:")
println("- прямая: ", round(THD_V0, digits=2), "%,")
println("- обратная: ", round(THD_V2, digits=2), "%,")
println("- тройная: ", round(THD_V3, digits=2), "%.")
Суммарный коэффициент гармонических искажений напряжения: 43.44%.
Из него, по последовательностям:
- прямая: 25.79%,
- обратная: 5.03%,
- тройная: 34.59%.

Calculate the harmonic distortion for the current:

In [ ]:
results_I = analyze_harmonics(IarcA, fs, fc);
n_I, A_I, ph_I = get_harmonics_data(results_I);
THD_I = norm(A_I[2:end])/A_I[1]*100

println("Суммарный коэффициент гармонических искажений тока: ", round(THD_I, digits=2), "%.")
Warning: Гармоника 1000*50.0 Гц не точно соответствует сетке частот. Расхождение: 6.249218847646262 Гц
@ Main ~/start/examples/physmod/electric_arc_furnace_static/useful_functions.jl:94
Суммарный коэффициент гармонических искажений тока: 8.15%.

Conclusion

In this project, a static model of the DSP-100NZA arc steelmaking furnace was developed, modeling was carried out, current and voltage waveforms and harmonic analysis data were obtained. The obtained materials will form the basis for further examples related to mode modeling, chipboard control, and improving the quality of electricity.

Literature

Chernenko, A. N. Dynamic furnace arc model in Matlab (Simulink) / A. N. Chernenko, V. V. Vakhnina, S. G. Martynova // Vector of Science of Tolyatti State University. – 2015. – № 2-1(32-1). – Pp. 58-64. – [EDN TYKPDV] (https://www.elibrary.ru/item.asp?id=23675896 ).