Документация Engee
Notebook

Регулирование скорости упрощенного синхронного генератора

В данном примере продемонстрировано поведение трехфазного четырехпроводного упрощенного синхронного генератора переменного тока при коммутации нагрузки в сети при:

  • Наличии регулятора скорости вращения

  • Постоянном крутящем моменте — без регулятора скорости

Общий вид модели

В основе модели лежит библиотечный блок Simplified Synchronous Machine. Упрощенный синхронный генератор мощностью 2000 кВА (1600 кВт с учетом коэффициента мощности 0.8), 600 В, 1500 об/мин подключен к активно-индуктивной нагрузке мощностью 1600 кВт и 400 квар. Нейтральная точка обмотки статора машины заземлена. Внутреннее сопротивление генератора (Zg = 0.0036 + j0.16 о.е.) представляет собой сопротивление обмотки якоря Ra и переходное реактивное сопротивление X'd. Постоянная инерции генератора составляет H = 0.6 с, что соответствует J = 67.5 кг*м^2.

simplified_synchronous_machine_speed_regulation_1722511208455.png

В модели предусмотрено переключение между постоянным моментом Тмех и ПИ-регулятором скорости. Регулирование скорости моделируется с помощью математических направленных блоков, реализующих ПИ-регулятор. Синхронная машина имеет постоянное напряжение на обмотке возбуждения.
Трехфазный выключатель используется для отключения активной нагрузки мощностью 800 кВт. Первоначально выключатель замкнут и размыкается в момент времени t = 1 с, что приводит к сбросу активной нагрузки на 50%.

Реализация запуска модели с помощью программного управления:

Загрузка нужных библиотек для импорта зависимости тока от времени:

In [ ]:
using DataFrames
gr()
Out[0]:
Plots.GRBackend()

Запуск модели без регулирования скорости

Убедитесь, что ручной переключатель Manual Switch в положении приема сигнала от блока Constant - Tмех (о.е.). По умолчанию модель уже находиться в таком положении.
Загрузка модели:

In [ ]:
model_name = "simplified_synchronous_machine_speed_regulation"
model_name in [m.name for m in engee.get_all_models()] ? engee.open(model_name) : engee.load( "$(@__DIR__)/$(model_name).engee");

Запуск загруженной модели:

In [ ]:
results = engee.run(model_name)
Out[0]:
Dict{String, DataFrame} with 10 entries:
  "Pэл, о.е."  => 40001×2 DataFrame…
  "Va, В"      => 40001×2 DataFrame…
  "Тмех, о.е." => 40001×2 DataFrame…
  "Tэл, о.е."  => 40001×2 DataFrame…
  "Vc, В"      => 40001×2 DataFrame…
  "Ib, А"      => 40001×2 DataFrame…
  "Vb, В"      => 40001×2 DataFrame…
  "f, о.е."    => 40001×2 DataFrame…
  "Ia, А"      => 40001×2 DataFrame…
  "Ic, А"      => 40001×2 DataFrame

Результаты моделирования

Импорт результатов моделирования:

In [ ]:
simulation_time = results["Ia, А"].time;
ia = results["Ia, А"].value;
ib = results["Ia, А"].value;
ic = results["Ia, А"].value;
f = results["f, о.е."].value;
Pel = results["Pэл, о.е."].value;
Tel = results["Tэл, о.е."].value;
Tmec = results["Тмех, о.е."].value;

Отрисовка результатов:

In [ ]:
plot(simulation_time ,ia, legend=true, label="ia")
plot!(simulation_time ,ib, legend=true, label="ib")
plot!(simulation_time ,ic, legend=true, label="ic")
plot!(title = "Мгновенное значение тока статора", ylabel = "Ток, А", xlabel="Время, c")
Out[0]:
In [ ]:
plot(simulation_time ,f, legend=true, label="f")
plot!(title = "Частота вращения", ylabel = "Частота, о.е.", xlabel="Время, c")
Out[0]:
In [ ]:
plot(simulation_time ,Pel, legend=true, label="Pel")
plot!(title = "Активная электрическая мощность", ylabel = "Мощность, о.е.", xlabel="Время, c")
Out[0]:
In [ ]:
plot(simulation_time ,Tel, legend=true, label="Электрический момент")
plot!(simulation_time ,Tmec, legend=true, label="Механический момент")
plot!(title = "Моменты машины", ylabel = "Момент, о.е.", xlabel="Время, c")
Out[0]:

Обратите внимание, когда выключатель размыкается, электрическая мощность падает с 0,8 о.е. до 0,4 о.е., и машина начинает ускоряться. Поскольку чистый электромеханический крутящий момент теперь равен: $$T_{mec} - T_{el}=0.8 - 0.4 = 0.4 о.е.$$
Увеличение скорости равно:
$${\frac{1}{2H}} * (T_{mec} - T_{el}) = 0.833*0.4 = 0.33{\frac{о.е.}{с}}$$
Через секунду после коммутации при t = 2 с ожидаемое увеличение скорости составляет 0.33 о.е. Фактически, скорость, измеренная при t = 2 с, немного выше теоретического значения (1.374 о.е. по сравнению с ожидаемыми 1.33 о.е.), так как электрический крутящий момент уменьшается по мере увеличения скорости, что приводит к электромеханическому крутящему моменту выше 0.4 о.е.

Запуск модели c регулированием скорости

Теперь дважды щелкните на блоке Manual Switch, чтобы ввести регулятор скорости в работу.
Запуск модели:

In [ ]:
results = engee.run(model_name)
Out[0]:
Dict{String, DataFrame} with 10 entries:
  "Pэл, о.е."  => 40001×2 DataFrame…
  "Va, В"      => 40001×2 DataFrame…
  "Тмех, о.е." => 40001×2 DataFrame…
  "Tэл, о.е."  => 40001×2 DataFrame…
  "Vc, В"      => 40001×2 DataFrame…
  "Vb, В"      => 40001×2 DataFrame…
  "Ib, А"      => 40001×2 DataFrame…
  "f, о.е."    => 40001×2 DataFrame…
  "Ia, А"      => 40001×2 DataFrame…
  "Ic, А"      => 40001×2 DataFrame

Результаты моделирования

Импорт результатов моделирования:

In [ ]:
simulation_time = results["Ia, А"].time;
ia = results["Ia, А"].value;
ib = results["Ia, А"].value;
ic = results["Ia, А"].value;
f = results["f, о.е."].value;
Pel = results["Pэл, о.е."].value;
Tel = results["Tэл, о.е."].value;
Tmec = results["Тмех, о.е."].value;

Отрисовка результатов:

In [ ]:
plot(simulation_time ,ia, legend=true, label="ia")
plot!(simulation_time ,ib, legend=true, label="ib")
plot!(simulation_time ,ic, legend=true, label="ic")
plot!(title = "Мгновенное значение тока статора", ylabel = "Ток, А", xlabel="Время, c")
Out[0]:
In [ ]:
plot(simulation_time ,f, legend=true, label="f")
plot!(title = "Частота вращения", ylabel = "Частота, о.е.", xlabel="Время, c")
Out[0]:
In [ ]:
plot(simulation_time ,Pel, legend=true, label="Pel")
plot!(title = "Активная электрическая мощность", ylabel = "Мощность, о.е.", xlabel="Время, c")
Out[0]:
In [ ]:
plot(simulation_time ,Tel, legend=true, label="Электрический момент")
plot!(simulation_time ,Tmec, legend=true, label="Механический момент")
plot!(title = "Моменты машины", ylabel = "Момент, о.е.", xlabel="Время, c")
Out[0]:

Обратите внимание, что для поддержания скорости на ее опорном значении (1 о.е.) регулятор уменьшил механический крутящий момент до 0.4 о.е.

Выводы:

В данном примере была показана работа блока упрощенной синхронной машины при возмущении с и без регулирования скорости вращения. Были использованы инструменты для командного управления моделью, а результаты симуляций были импортированы в скрипт и визуализированы с помощью графиков библиотеки Plots.