Engee 文档
Notebook

静态模式下电弧炼钢炉的模拟

在本例中,考虑了容量为100吨,变压器容量为50MVA的DSP-100nza电弧炼钢炉的电流和电压谐波的静态建模和分析。

导言

电弧炼钢炉(刨花板)是现代冶金的关键单元,电极和金属炉料之间产生的高温电弧是将废金属重熔成优质钢的主要能量来源。 刨花板的广泛使用,特别是在从废钢生产钢中,是由于它们的成本效益和环境友好性,该技术的前景与进一步提高效率和减少对能源系统的影响密不可分。 然而,刨花板由于其明显的非线性、随机电弧放电和熔化过程中电参数的动态变化,是一个非常难以分析和控制的对象。 正是这种复杂性使得对适当的刨花板更换方案进行深入研究至关重要,这些方案是分析操作模式,设计和优化控制系统的基础。 有效的电极控制系统的开发对于稳定电弧功率、最小化闪烁和提高能效是必要的。 同时,彻底分析炉胎消耗的电流和电压的谐波成分是至关重要的,因为刨花板是高次谐波的强大来源,会导致供电网络中的电压曲线失真,设备过载和潜在的电磁兼容性问题。 这些方面的研究对于确保炉子本身的可靠运行,减少网络损耗和符合电力质量标准是必要的。

数学描述

有几种方法可以对电子刨花板更换电路的元件进行数学描述。 [1]中给出了一种描述电弧电阻非线性的方法。 我们以他为例。

文章中给出的电弧电阻的描述:

让我们将其呈现为子系统"电弧电阻计算"中的方向块。

工程师模型

示例模型 - electric_arc_furnace.engee.

eaf_mod.png

在模型中,以下信号被写入simout变量:

  • Vc -炉变压器输入端的三相电压[V],

  • Varc -在刨花板的每个阶段的电压[V],

  • Varc_pu -刨花板每相的相对电压[O.E.],

  • Iarc -在刨花板的每个阶段的电流[A],

  • Iarc_pu -刨花板每相的相对电流[O.E.],

模型参数也根据来自出版物的数据设置,它们的定义在下面给出。:

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; # Сопротивление дуги в зарядном прмежутке, Ом

给定的参数也在[inverse вызовах]中定义(https://engee.com/helpcenter/stable/ru/interactive-scripts/base_simulation/demo_callback.html )模型。

要执行模拟,我们将获取示例目录的路径,转到它并连接Julia脚本以使用辅助建模和数据分析功能。

首先,我们将安装和连接数据建模和分析所需的软件包。

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 со вспомогательными функциями

模拟仿真

我们将得到模拟数据. 为此,您可以选择"文件。jld2"来下载先前记录的仿真结果或"模型。engee"用于加载和启动模型

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

)

数据已经收集,我们将提取几个感兴趣的变量进行分析。:

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

根据获得的数据,我们还将确定最终的仿真时间,模型步骤和模型计算频率。

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

电流和电压

让我们绘制a相炉弧上的相对电流和电压的示波图:

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

.波形具有预期的形状;此外,这两个信号可以表示为伏安特性(VAC)。:

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

炉弧的VAC也具有预期的形状。 因此,根据来自出版物的描述构建的模型是正确的。 让我们继续分析电流和电压的谐波失真。

谐波分析

要在静态模式下分析谐波,只需要一个周期的信号就足够了。 这将是下一个区间a相的炉弧电压信号。:

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

我们得到这个间隔的信号和时间向量:

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

使用Julia脚本中的函数,我们将获得给定信号部分谐波分量的幅度和相位的数据。:

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

使用以下功能,我们将分离正向,反向和三重序列的谐波的失真数据。:

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

序列中突出显示的每个谐波的振幅也可以方便地用对数轴在图形上表示。:

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

对于序列中每个谐波的相位,可以呈现类似的图。:

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

总谐波失真水平

根据GOST32144-2013,可用于与电能质量标准相关的谐波失真的总水平由欧几里德范数的公式确定。:

让我们计算谐波电压失真的水平-所有谐波和单个序列的总和。

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%.

计算电流的谐波失真:

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%.

结论

在该项目中,开发了DSP-100nza电弧炼钢炉的静态模型,进行了建模,获得了电流和电压波形以及谐波分析数据。 所获得的材料将构成与模式建模、刨花板控制和提高电能质量相关的进一步示例的基础。

文学作品

Chernenko,A.N.Matlab中的动态炉弧模型(Simulink)/A.N.Chernenko,V.V.Vakhnina,S.G.Martynova//Tolyatti州立大学科学向量。 – 2015. – № 2-1(32-1). -第58-64页。 –EDN TYKPDV