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

Двигатель постоянного тока

В данном примере будут продемонстрированы модели двигателя постоянного тока, созданные в Engee (модель ssc_dcmotor.engee) и в Simulink (модель ssc_dcmotor_demo.slx). Будет показан процесс запуска моделей из среды разработки скрипта с помощью командного управления и сравнение результатов моделирования. В симуляции на вал электродвигателя действует переменный крутящий момент.

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

Модель Engee: image.png

Модель Simulink: image.png

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

In [ ]:
using Plots
using MATLAB
using CSV
using DataFrames
using Statistics

plotlyjs();

mat"start_simulink"
mat"p = genpath('/user/start/examples'); addpath(p);"
[ Info: Precompiling MATLAB [10e44e05-a98a-55b3-a45b-ba969058deb6]

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

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

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

In [ ]:
results = engee.run( modelName )
Out[0]:
Dict{String, DataFrame} with 1 entry:
  "omega" => 2001×2 DataFrame

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

In [ ]:
W_en_t = results["omega"].time;
W_en_w = results["omega"].value;

Визуализация результатов

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

In [ ]:
plot(W_en_t , W_en_w, legend = false)
plot!(title = "Результаты моделирования в Engee", ylabel = "Скорость вращения двигателя, об/мин", xlabel="Время, c")
Out[0]:

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

In [ ]:
mat"run_test_model('ssc_dcmotor_demo');";
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"

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

In [ ]:
W_sim_w = mat"SysOutput.Data";
W_sim_t = mat"SysOutput.Time";
plot(W_sim_t, W_sim_w, legend = false) 
plot!(title = "Результаты моделирования в Simulink", ylabel = "Скорость вращения двигателя, об/мин", xlabel="Время, c")
Out[0]:

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

In [ ]:
plot(W_en_t , W_en_w, label = "Engee")
plot!(title = "Сравнение результатов моделирования")
plot!(W_sim_t,W_sim_w, label = "Simulink")
plot!(ylabel = "Скорость вращения двигателя, об/мин", xlabel="Время, c")
Out[0]:

Выводы:

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