Рекуперативный выпрямитель напряжения AFE
Моделирование и анализ работы активного выпрямителя AFE¶
Пример посвящен моделированию и анализу работы активного выпрямителя AFE (Active Front End), включая исследование его алгоритмов управления, режимов потребления и рекуперации энергии. На основе моделирования в Engee продемонстрированы ключевые преимущества AFE: поддержание коэффициента мощности близкого к 1, снижение гармонических искажений тока до 5,8% и стабилизация напряжения в звене постоянного тока. Результаты работы актуальны для разработчиков систем силовой электроники, энергоэффективного транспорта и промышленных электроприводов, где требуются современные подходы к управлению потоками энергии и минимизация воздействия на сеть.
Введение¶
AFE-выпрямитель (Active Front End) — это активное электронное устройство, разработанное для преобразования переменного тока в постоянный с высоким коэффициентом мощности и минимальными гармоническими искажениями. Его создание связано с развитием силовой электроники начиная с 1980-х годов, когда компании Siemens, ABB, Danfoss и прочие начали внедрять IGBT и цифровые системы управления. В отличие от пассивных диодных выпрямителей, AFE использует IGBT работающие "на сеть", что обеспечивает двунаправленность преобразователя: не только потреблять энергию из сети, но и возвращать её обратно, например, при рекуперативном торможении.
AFE-выпрямители находят применение в промышленных электроприводах, системах возобновляемой энергетики, транспорте (электропоезда, метро, электробусы) и энергоёмких производства (прокатные станы, центры обработки данных). Например, в метрополитенах AFE обеспечивает рекуперацию энергии торможения в сеть, снижая общее энергопотребление. Ключевые преимущества таких выпрямителей — высокая эффективность, компактность, снижение помех в сети и возможность работы с нестабильным напряжением. Эти особенности делают их незаменимыми в современных системах, где требуются интеллектуальное управление энергией и экологическая устойчивость.
Модель примера¶
Модель Active_front_end.engee
, рассматриваемая в данном примере, воссоздана по аналогу - модели Active_front_end.slx
[1].
Силовая часть состоит из следующих элементов.
- Трёхфазный источник напряжения $U_{ЛИН\, rms}=220\, В$.
- Блоки измерения фазных напряжений и токов.
- Кабельная линия с сопротивлением $R_ф=1\, Ом$ и индуктивностью $L_ф=10\, мГн$.
- Мостовой трёхфазный преобразователь
Converter
на NPN-IGBT с обратными диодами, верхние ключи установлены коллекторами в трёхфазную сеть, а обратные диоды выполняют роль выпрямительного комплекта. - Конденсатор звена постоянного тока с ёмкостью $С_к = 4700\, мкФ$.
- Минимальная активная нагрузка в звене постоянного тока - резистор с сопротивлением $R_1=100\, Ом$.
- Подключаемая активная нагрузка в звене постоянного тока - резистор с сопротивлением $R_2=100\, Ом$.
- Подключаемое противоэдс в звене постоянного тока с величиной $V_{brk}=750\, В$, и резистор с сопротивлением $R_3=10\, Ом$ - имитация торможения.
- Вольтметр в звене постоянного тока.
Нагрузка $R_2$ подключается в момент $1.0\, с$ модельного времени, выключается в $2.0\, с$. Цепь с противоэдс коммутируется в $3.0\, с$.
Алгоритм AFE функционирует во всех режимах работы выпрямителя.
Описание принципа работы AFE¶
IGBT преобразователя (Converter
) получают управляющие ШИМ сигналы от модуля ШИМ генератора (PWM Generator
). Опорный сигнал ШИМ - треугольный с частотой $f_{PWM}=5\, кГц$. Заданные сигналы генератора ШИМ - фазные напряжения $V_{abc\,ue}^*$ в трёхфазной системе координат $abc$:
$$V_{abc\,ue}^*=\frac{1}{8000}\cdot V_{abc}^*.$$
В свою очередь, $V_{abc}^*$ получено обратным преобразованием Парка-Горева из $V_{dq}^*$
$$V_{abc}^* = \left[ \begin{matrix} \sin (\theta) & \cos (\theta) & 1 \\ \sin (\theta-\frac{2\pi}{3}) & \cos (\theta-\frac{2\pi}{3}) & 1 \\ \sin (\theta+\frac{2\pi}{3}) & \cos (\theta+\frac{2\pi}{3}) & 1 \\ \end{matrix} \right]\times V_{dq}^*,$$
где $V_{dq}^*=\left[ \begin{matrix}
V_{d}^* \\
V_{q}^* \\
0 \\
\end{matrix} \right]$ - заданные напряжения во вращающейся системе координат $dq0$,
$\theta$ - угол поворота вращающейся системы координат, рассчитываемый при помощи фазовой автоподстройки частоты (ФАПЧ) в блоке PLL
.
В свою очередь, эти компоненты определяются следующими выражениями:
$$V_{d}^*=V_d + 2 \pi \cdot f_0 \cdot L_ф \cdot I_{q} - V_{PI\,d}^*$$ $$V_{q}^*=V_q - 2 \pi \cdot f_0 \cdot L_ф \cdot I_{d} - V_{PI\,q}^*$$
Здесь:
- $f_0=50\,Гц$ - базовая гармоника питающего напряжения;
- $V_d,\,V_q$ - измеренные напряжения во вращающейся системе координат $dq0$;
- $I_{d},\,I_{q}$ - измеренные фазные токи во вращающейся системе координат $dq0$;
- $V_{PI\,d}^*,\,V_{PI\,q}^*$ - напряжения на выходе ПИ-регуляторов тока
Current Controller
во вращающейся системе координат $dq0$;
Напряжения $V_d,\,V_q$ и токи $I_{d},\,I_{q}$ получены с помощью блоков прямого преобразования Парка-Горева из измеренных фазных токов и напряжений $V_a,\,V_b,\,V_c$ и $I_a,\,I_b,\,I_c$:
$$ \left[ \begin{matrix} V_d \\ V_q \\ 0 \\ \end{matrix} \right] = \frac{2}{3}\cdot \left[ \begin{matrix} \sin (\theta) & \sin (\theta-\frac{2\pi}{3}) & \sin (\theta+\frac{2\pi}{3}) \\ \cos (\theta) & \cos (\theta-\frac{2\pi}{3}) & \cos (\theta+\frac{2\pi}{3}) \\ \frac{1}{2} & \frac{1}{2} & \frac{1}{2} \\ \end{matrix} \right] \times \left[ \begin{matrix} V_a \\ V_b \\ V_c \\ \end{matrix} \right], $$ $$ \left[ \begin{matrix} I_d \\ I_q \\ 0 \\ \end{matrix} \right] = \frac{2}{3}\cdot \left[ \begin{matrix} \sin (\theta) & \sin (\theta-\frac{2\pi}{3}) & \sin (\theta+\frac{2\pi}{3}) \\ \cos (\theta) & \cos (\theta-\frac{2\pi}{3}) & \cos (\theta+\frac{2\pi}{3}) \\ \frac{1}{2} & \frac{1}{2} & \frac{1}{2} \\ \end{matrix} \right] \times \left[ \begin{matrix} I_a \\ I_b \\ I_c \\ \end{matrix} \right]. $$
ПИ-регуляторы тока Current Controller
получают разность измеренных и заданных сигналов токов во вращающейся системе координат $dq0$:
$$\Delta I_d=I_d^*-I_d,$$ $$\Delta I_q=I_q^*-I_q.$$
Проекция заданного тока на ось $D$, $I_d^*$ - результат регулирования ПИ-регулятора напряжения Voltage Controller
. Он получает разность измеренного и заданного значений напряжения в звене постоянного тока:
$$\Delta V_{DC}=V_{DC}^*-V_{DC},$$ $$V_{DC}^*=600\,В.$$
Проекция заданного тока на ось $Q$, $I_q^*$ устанавливается равной $0$ для формирования $PF=1$
Представленная выше система управления AFE воспроизводит приведённые соотношения в виде блочной диаграммы.
Моделирование¶
При помощи программного управления выполним модель примера и запишем результаты моделирования в переменную simout
.
модель = engee.load("/user/start/examples/power_systems/active_front_end_rectifier/Active_front_end.engee", force = true); # Загружаем модель
engee.run(модель); # Выполняем модель и сохраняем данные
После выполнения модели закроем её и перейдём к анализу сигналов.
engee.close(модель; force=true);
Анализ записываемых сигналов¶
Из записанных сигналов модели выделим сигналы времени моделирования, тока и напряжения фазы A, напряжения в звене постоянного тока:
t = simout["Active_front_end/Va"].time;
Va = simout["Active_front_end/Va"].value;
Ia = simout["Active_front_end/Ia"].value;
Vdc = simout["Active_front_end/Vdc"].value;
Выведем осциллограммы тока и напряжения фазы А для разных режимов работы AFE: потребления с обычной нагрузкой, потребления с повышенной нагрузкой и рекуперации.
using Plots; gr()
start = Int(1e6÷5*0.5);
start_load = Int(1e6÷5);
start_recup = Int(1e6÷5*3);
stop = Int(1e6÷5/50*5);
usual = start:start+stop
load = start_load:start_load+stop
recup = start_recup:start_recup+stop;
plot_usual = plot(t[usual], [Ia[usual], Va[usual]]; label=["Ia⋅13, А" "Va, В"], title = "Обычная нагрузка")
plot_load = plot(t[load], [Ia[load], Va[load]]; label=["Ia⋅13, А" "Va, В"], title = "Повышенная нагрузка")
plot_recup = plot(t[recup], [Ia[recup], Va[recup]]; label=["Ia⋅13, А" "Va, В"], title = "Рекуперация")
plot(plot_usual, plot_load, plot_recup;
size=(1200,300), legend = :topright, xlabel = "Время, с", ylabel = "Напряжение, ток", layout=(1,3))
Как видно из этих осциллограмм, ток и напряжение совпадают по фазе в режиме потребления, форма потребляемого/генерируемого тока близка к синусоидальной, а в режиме рекуперации фазы тока и напряжения инвертированы. Последнее означает, что AFE обеспечивает рекуперацию в сеть энергии торможения (что имитируется включением противоэдс в звене постоянного тока).
Исходя из графика напряжения в звене постоянного тока, который приведён ниже, можно сделать вывод, что в различных режимах работы AFE уровень напряжения стабилизирован и равен заданному на уровне $V_{DC}^*=600\, В$.
gr(); plot(t[1:2000:end], Vdc[1:2000:end]; legend=:none, title = "Напряжение в звене постоянного тока")
Анализ коэффициента мощности¶
Установим и подключим необходимые для анализа библиотеки
import Pkg; Pkg.add(["FFTW", "LinearAlgebra"]);
using FFTW, LinearAlgebra;
Помимо поддержания напряжения в звене постоянного тока и обеспечения рекуперации энергии в сеть, выпрямитель AFE компенсирует потребление реактивной мощности, повышая коэффициент мощности $(PF,\, \cos\phi)$ практически до 1. По полученным данным (напряжению и току фазы A) рассчитаем и проанализируем коэффициент мощности для каждого периода напряжения.
# Подключим функцию расчёта коэффициента мощности для каждого периода входных векторов тока и напряжения
include("/user/start/examples/power_systems/active_front_end_rectifier/pf_calculation.jl");
# Расчет коэффициентов
коэффициенты_мощности = calculate_power_factor(Vector(Va), Vector(Ia));
# Построим интерактивный график коэффициента мощности
plotlyjs();
plot(0:0.02:3.98, коэффициенты_мощности;
legend=:none, title="Коэффициент мощности", ylabel="cos(ϕ), о.е.")
Из полученного графика коэффициента мощности можно судить о следующем:
- в режиме потребления энергии из сети $(PF > 0)$ AFE обеспечивает $PF \approx 1$ вне зависимости от уровня нагрузки;
- в режиме рекуперации энергии в сеть $(PF < 0)$ AFE обеспечивает $PF \approx -1$;
Анализ гармонических искажений при работе AFE¶
Ещё одно неоспоримое преимущество использования активного выпрямителя AFE - снижение гармонических искажений тока как в режиме потребления, так и при рекуперации. Из осциллограмм тока выше видно, что в режиме рекуперации сигнал больше, чем в режимах потребления, отличается по форме от синусоиды. Кроме того, в отдельные периоды несущей частоты гармонические искажения будут более выражены, чем на протяжении всего режима работы. Поэтому для оценки максимальной величины коэффициента гармонических искажений (THD) тока и напряжения мы возьмём участок длительностью в один период базовой гармоники питающего напряжения $f_0=50\,Гц$ в режиме рекуперации.
# Подключим функцию для расчёта THD и гармонического спектра
# Скрипт также устанавливает и подключает требуемые библиотеки (FFTW.jl, LinearAlgebra.jl)
include("/user/start/examples/power_systems/active_front_end_rectifier/thd_calculation.jl");
# Зададим начальные условия
start_recup = Int(1e6÷5*3.02); # Начальная точка анализа
stop = Int(1e6÷5*3.04); # Конечная точка анализа
sample_rate = Int(1e6÷5) # Частота дискретизации, Гц
f_base = 50; # Частота базовой гармоники, Гц
n_max = 40; # Наибольший порядок искажающей гармоники
# Получим результаты анализа THD и гармонических спектров
result_Ia = calculate_thd(Ia[start_recup:stop], sample_rate, n_max, f_base);
result_Va = calculate_thd(Va[start_recup:stop], sample_rate, n_max, f_base);
# Построим гармонические спектры тока и напряжения, выведем значения THD
gr();
let
# График гармонического спектра тока
plot(result_Ia.frequencies, result_Ia.amplitudes,
label="Спектр тока", linewidth=2)
# График гармонического спектра напряжения
plot!(result_Va.frequencies, result_Va.amplitudes,
label="Спектр напряжения", linewidth=1,
seriestype=:path, linestyle=:dash, color=:black)
# Маркер амплитуды базовой гармоники
scatter!([result_Ia.frequencies[result_Ia.fundamental_idx]],
[result_Ia.amplitudes[result_Ia.fundamental_idx]],
label="Базовая гармоника", markersize=4, color=:red)
vline!([result_Ia.frequencies[result_Ia.fundamental_idx]],
linestyle=:dash, color=:gray, label=:none)
# Маркеры амплитуд гармоник высших порядков
if !isempty(result_Ia.frequencies[result_Ia.harmonic_indices])
scatter!(result_Ia.frequencies[result_Ia.harmonic_indices],
result_Ia.amplitudes[result_Ia.harmonic_indices],
label="Высшие гармоники", markersize=4, color=:green)
vline!(result_Ia.frequencies[result_Ia.harmonic_indices],
linestyle=:dash, color=:gray, label=:none)
end
# Настройки отображения
xlims!(0, n_max)
xticks!(1:2:n_max)
display(plot!(yscale=:log; xlabel="Частота, (Гц)", ylabel="Амплитуда, log(A)",
title="Гармонический анализ", legend=:bottom,))
# Вывод значений суммарных гармонических искажений напряжения и тока
println("THD_v: ", round(result_Va.thd, digits=2), " %")
println("THD_i: ", round(result_Ia.thd, digits=2), " %")
end
Представление гармонического спектра в логарифмическом амплитудном масштабе не является классическим, однако даёт наиболее детальное визуальное представление спектрального состава анализируемого сигнала. Из полученных данных можно судить о следующем:
- Суммарный уровень гармонических искажений тока $THD_{I\,\%}=5.82\, \%$, следовательно, AFE полностью справляется со снижением гармонических искажений тока от неуправляемого выпрямителя.
- Наиболее выраженные на спектре тока гармоники принадлежат порядкам $n=k\cdot m\pm 1,\, k \in\mathbb{N}^*$, где $m=6$ - пульсность схемы выпрямителя.
Заключение¶
В примере выполнено моделирование работы AFE-выпрямителя при помощи Engee, подтвердившее способность устройства поддерживать коэффициент мощности, близкий к 1, и снижать гармонические искажения тока до 5,8% даже в режиме рекуперации. Показано, что система стабильно удерживает напряжение в звене постоянного тока на заданном уровне (например, 800 В) при переменных нагрузках, демонстрируя эффективность двунаправленного управления энергией. Результаты подтверждают, что AFE существенно снижает реактивную мощность и электромагнитные помехи, что критично для энергоёмких объектов (метрополитен, промышленные приводы).
Использованные источники¶
- Ricardo Palma (2025). Active front end rectifier (https://www.mathworks.com/matlabcentral/fileexchange/63357-active-front-end-rectifier), MATLAB Central File Exchange. Retrieved April 29, 2025.