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:
-
consecutive RL-цепочки cable line, primary and secondary windings of furnace transformer,
-
phase sensor напряжения for measuring the voltage on the primary winding,
-
current and voltage sensor for measuring current and voltage in DSP phases,
-
linear variable resistors in each phase to simulate arc resistance,
-
Auxiliary elements: grounding нейтрали , neutral порт and splitter фаз.
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.:
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 Гн")
iзаж = 0.5e4; Imax = 1e5; # Ток зажигания и максимальный ток, А
uзаж = 310.5; uп = uзаж/1.15; # Напряжение зажигания и напряжение постоянной величины, В
uт = (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.
# Установка необходимых пакетов (если они ещё не установлены)
# JLD2 - для работы с файлами данных в формате HDF5/Julia
# FFTW - библиотека для быстрого преобразования Фурье (FFT)
# LinearAlgebra - стандартный модуль Julia для линейной алгебры
import Pkg; Pkg.add(["JLD2", "FFTW", "LinearAlgebra"])
# Подключение установленных пакетов
using JLD2, FFTW, LinearAlgebra
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
# @markdown **Определите источник данных для анализа:**
источник = "модель .engee" # @param ["модель .engee","файл .jld2"]
simout = get_sim_results(источник, example_path)
The data has been collected, and we will extract several variables of interest for analysis.:
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.
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:
gr()
plot(t, [IarcA_pu, VarcA_pu];
label = ["Ток, о.е." "Напряжение, о.е."],
title = "Ток и напряжение ДСП-100НЗА в фазе А",
xlabel = "Время, с")
.The waveform has the expected shape; additionally, these two signals can be represented as a volt-ampere characteristic (VAC).:
plot(IarcA_pu, VarcA_pu;
label = :none, title = "ВАХ ДСП-100НЗА",
xlabel = "Ток Ia, о.е.", ylabel = "Напряжение Va, о.е.")
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.:
gr()
int = 2290:4301
plot(t[int], VarcA[int];
label = "Напряжение, В",
title = "Период напряжения ДСП-100НЗА в фазе А",
xlabel = "Время, с")
We get the signal and time vectors for this interval:
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.:
# Анализируем гармоники
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
Using the following function, we will separate the distortion data for the harmonics of the forward, reverse and triple sequences.:
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.:
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 = "Базовая гармоника")
A similar graph can be presented for the phases of each of the harmonics in the sequences.:
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 = "Базовая гармоника")
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.
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), "%.")
Calculate the harmonic distortion for the current:
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), "%.")
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 ).




