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

Запуск асинхронного двигателя по схеме «звезда-треугольник»

В данном примере будут продемонстрированы модели с симуляцией запуска асинхронного двигателя с бельчией клеткой по схеме «звезда-треугольник», созданные в Engee (модель induction_machine_starting.engee) и в Simulink (модель induction_machine_starting.slx). В этом примере показано, как смоделировать пусковую схему звезда-треугольник для асинхронной машины. Когда питание подключается к машине через переключатель S1, переключатель S2 изначально выключен, в результате чего машина подключается по схеме «звезда». Как только машина приближается к синхронной скорости, срабатывает переключатель S2, тем самым повторно соединяя машину в конфигурации треугольника. Схема запуска асинхронного двигателя по схеме «звезда-треугольник» обеспечивает небольшие токи в сети при пуске, а после того, как двигатель выйдет на необходимые для его работы обороты, происходит переключение на схему «треугольник», что позволяет работать со 100% нагрузкой без каких-либо проблем.

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

Модель Engee:

model_2.png

Модель Simulink:

ssc_model_2.png

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

Загрузка нужных библиотек и подготовка ядра MATLAB для сравнения модели Engee с моделью Simulink

using Plots
using MATLAB
using DataFrames
plotlyjs();
mat"start_simulink"
mat"p = genpath('/user/start/examples'); addpath(p);"

Загрузка модели:

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

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

results = engee.run(model_name)
Dict{String, DataFrame} with 7 entries:
  "i_c"               => 200001×2 DataFrame…
  "i_b"               => 200001×2 DataFrame…
  "w"                 => 200001×2 DataFrame…
  "Compare To Zero.1" => 200001×2 DataFrame…
  "Phase currents, A" => 200001×2 DataFrame…
  "ASM speed, pu"     => 200001×2 DataFrame…
  "i_a"               => 200001×2 DataFrame…

Чтение данных о мгновенных значения тока в нагрузке и скорости вращения вала:

t = results["i_a"].time;
i_a = results["i_a"].value;
i_b = results["i_b"].value;
i_c = results["i_c"].value;
w = results["w"].value;

Загрузка и визуализация данных, полученных в ходе симуляции

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

plot(t, [i_a i_b i_c], label=["Ток фазы А" "Ток фазы В" "Ток фазы С"])
plot!(title = "Результаты моделирования в Engee", ylabel = "Мгновенное значение тока, А", xlabel="Время, c")

interactive-scripts/images/power_systems_induction_machine_starting/9d82274dd6408b1c7319ade1c119a547baf9dd6e

Вывод графика зависимости скорости вращения вала от времени:

plot(t, w, label="Скорость вращения вала")
plot!(title = "Результаты моделирования в Engee", ylabel = "Скорость вращения, об/мин", xlabel="Время, c")

interactive-scripts/images/power_systems_induction_machine_starting/1b962d7ffb310a69c28fea4fc070023914705cb5

Запуск модели Simulink:

mat"bdclose all;";
mat"load_system('induction_machine_starting');";
mat"warning('off','all');";
mat"out = sim('induction_machine_starting');";
mat"close_system('induction_machine_starting',0);";
Fontconfig warning: "/usr/share/fontconfig/conf.avail/05-reset-dirs-sample.conf", line 6: unknown element "reset-dirs"
Fontconfig warning: "/usr/share/fontconfig/conf.avail/05-reset-dirs-sample.conf", line 6: unknown element "reset-dirs"

Вывод графика зависимости мгновенных значений тока и скорости вращения вала от времени:

ssc_time = mat"out.tout(:,1)";
ssc_i_a = mat"out.yout(:,1)";
ssc_i_b = mat"out.yout(:,2)";
ssc_i_c = mat"out.yout(:,3)";
ssc_w = mat"out.yout(:,4)";
plot(ssc_time , [ssc_i_a ssc_i_b ssc_i_c], label=["Ток фазы А" "Ток фазы В" "Ток фазы С"])
plot!(title = "Результаты моделирования в Simulink", ylabel = "Мгновенное значение тока, А", xlabel="Время, c")

interactive-scripts/images/power_systems_induction_machine_starting/d8bf0f60086c8fd40d09d560f2d76a960ce0b3d6

plot(ssc_time, ssc_w, label="Скорость вращения вала")
plot!(title = "Результаты моделирования в Simulink", ylabel = "Скорость вращения, об/мин", xlabel="Время, c")

interactive-scripts/images/power_systems_induction_machine_starting/5ebfde94b042495271c3098c4521ae67f6c400ef

Сравним результаты моделирования в Engee и Simulink. Для этого сравним значения скорости.

plot(t, [i_a i_b i_c], label=["Ток фазы А" "Ток фазы В" "Ток фазы С"])
plot!(title = "Сравнение мгновенных значений тока Engee и Simulink")
plot!(ssc_time , [ssc_i_a ssc_i_b ssc_i_c], label=["Ток фазы А (Simulink)" "Ток фазы В (Simulink)" "Ток фазы С (Simulink)"])
plot!(ylabel = "Мгновенное значение тока, А", xlabel="Время, c")

interactive-scripts/images/power_systems_induction_machine_starting/b8fd5bf5ff92a723b2779d8e7ed7ea7b09a47b51

plot(t, w, label="Скорость вращения вала")
plot!(ylabel = "Скорость вращения, об/мин", xlabel="Время, c")
plot!(title = "Сравнение скорости вращения вала Engee и Simulink")
plot!(ssc_time, ssc_w, label="Скорость вращения вала (Simulink)")

interactive-scripts/images/power_systems_induction_machine_starting/c47a3b1b26609ebe7c72463f554abf5b547172c9

Выводы

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

Блоки, использованные в примере