Рекуперативный выпрямитель напряжения AFE

Автор
avatar-alexevsalexevs
Соавторы
avatar-andrewraysandrewrays
Notebook

Моделирование и анализ работы активного выпрямителя 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].

image_2.png

Силовая часть состоит из следующих элементов.

  • Трёхфазный источник напряжения $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.

In [ ]:
модель = engee.load("/user/start/examples/power_systems/active_front_end_rectifier/Active_front_end.engee", force = true);     # Загружаем модель
engee.run(модель);                                           # Выполняем модель и сохраняем данные

После выполнения модели закроем её и перейдём к анализу сигналов.

In [ ]:
engee.close(модель; force=true);

Анализ записываемых сигналов

Из записанных сигналов модели выделим сигналы времени моделирования, тока и напряжения фазы A, напряжения в звене постоянного тока:

In [ ]:
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: потребления с обычной нагрузкой, потребления с повышенной нагрузкой и рекуперации.

In [ ]:
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))
Out[0]:

Как видно из этих осциллограмм, ток и напряжение совпадают по фазе в режиме потребления, форма потребляемого/генерируемого тока близка к синусоидальной, а в режиме рекуперации фазы тока и напряжения инвертированы. Последнее означает, что AFE обеспечивает рекуперацию в сеть энергии торможения (что имитируется включением противоэдс в звене постоянного тока).

Исходя из графика напряжения в звене постоянного тока, который приведён ниже, можно сделать вывод, что в различных режимах работы AFE уровень напряжения стабилизирован и равен заданному на уровне $V_{DC}^*=600\, В$.

In [ ]:
gr(); plot(t[1:2000:end], Vdc[1:2000:end]; legend=:none, title = "Напряжение в звене постоянного тока")
Out[0]:

Анализ коэффициента мощности

Установим и подключим необходимые для анализа библиотеки

In [ ]:
import Pkg; Pkg.add(["FFTW", "LinearAlgebra"]);
using FFTW, LinearAlgebra;

Помимо поддержания напряжения в звене постоянного тока и обеспечения рекуперации энергии в сеть, выпрямитель AFE компенсирует потребление реактивной мощности, повышая коэффициент мощности $(PF,\, \cos\phi)$ практически до 1. По полученным данным (напряжению и току фазы A) рассчитаем и проанализируем коэффициент мощности для каждого периода напряжения.

In [ ]:
# Подключим функцию расчёта коэффициента мощности для каждого периода входных векторов тока и напряжения
include("/user/start/examples/power_systems/active_front_end_rectifier/pf_calculation.jl");
# Расчет коэффициентов
коэффициенты_мощности = calculate_power_factor(Vector(Va), Vector(Ia));
In [ ]:
# Построим интерактивный график коэффициента мощности
plotlyjs();
plot(0:0.02:3.98, коэффициенты_мощности;
    legend=:none, title="Коэффициент мощности", ylabel="cos(ϕ), о.е.")
Out[0]:

Из полученного графика коэффициента мощности можно судить о следующем:

  • в режиме потребления энергии из сети $(PF > 0)$ AFE обеспечивает $PF \approx 1$ вне зависимости от уровня нагрузки;
  • в режиме рекуперации энергии в сеть $(PF < 0)$ AFE обеспечивает $PF \approx -1$;

Анализ гармонических искажений при работе AFE

Ещё одно неоспоримое преимущество использования активного выпрямителя AFE - снижение гармонических искажений тока как в режиме потребления, так и при рекуперации. Из осциллограмм тока выше видно, что в режиме рекуперации сигнал больше, чем в режимах потребления, отличается по форме от синусоиды. Кроме того, в отдельные периоды несущей частоты гармонические искажения будут более выражены, чем на протяжении всего режима работы. Поэтому для оценки максимальной величины коэффициента гармонических искажений (THD) тока и напряжения мы возьмём участок длительностью в один период базовой гармоники питающего напряжения $f_0=50\,Гц$ в режиме рекуперации.

In [ ]:
# Подключим функцию для расчёта THD и гармонического спектра
# Скрипт также устанавливает и подключает требуемые библиотеки (FFTW.jl, LinearAlgebra.jl)
include("/user/start/examples/power_systems/active_front_end_rectifier/thd_calculation.jl");
In [ ]:
# Зададим начальные условия
start_recup = Int(1e6÷5*3.02);  # Начальная точка анализа
stop = Int(1e6÷5*3.04);         # Конечная точка анализа

sample_rate = Int(1e6÷5)        # Частота дискретизации, Гц
f_base = 50;                    # Частота базовой гармоники, Гц
n_max = 40;                     # Наибольший порядок искажающей гармоники
In [ ]:
# Получим результаты анализа 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);
In [ ]:
# Построим гармонические спектры тока и напряжения, выведем значения 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_v: 0.01 %
THD_i: 5.8 %

Представление гармонического спектра в логарифмическом амплитудном масштабе не является классическим, однако даёт наиболее детальное визуальное представление спектрального состава анализируемого сигнала. Из полученных данных можно судить о следующем:

  • Суммарный уровень гармонических искажений тока $THD_{I\,\%}=5.82\, \%$, следовательно, AFE полностью справляется со снижением гармонических искажений тока от неуправляемого выпрямителя.
  • Наиболее выраженные на спектре тока гармоники принадлежат порядкам $n=k\cdot m\pm 1,\, k \in\mathbb{N}^*$, где $m=6$ - пульсность схемы выпрямителя.

Заключение

В примере выполнено моделирование работы AFE-выпрямителя при помощи Engee, подтвердившее способность устройства поддерживать коэффициент мощности, близкий к 1, и снижать гармонические искажения тока до 5,8% даже в режиме рекуперации. Показано, что система стабильно удерживает напряжение в звене постоянного тока на заданном уровне (например, 800 В) при переменных нагрузках, демонстрируя эффективность двунаправленного управления энергией. Результаты подтверждают, что AFE существенно снижает реактивную мощность и электромагнитные помехи, что критично для энергоёмких объектов (метрополитен, промышленные приводы).

Использованные источники

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