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

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

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

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

Модель Engee: image.png

Модель Simulink: image.png

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

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]

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

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

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

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

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

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

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

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

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

interactive-scripts/images/physmod_demo_dcmotor/ee3caa295c865e84f030179a47e024336cb7d0b6

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

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"

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

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")

interactive-scripts/images/physmod_demo_dcmotor/d85c62c4d71da9f6a2464a6b9450b8b0b9f01ba2

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

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

interactive-scripts/images/physmod_demo_dcmotor/8af0ba7264d7a4185cd850168a0fdb321d740e16

Выводы

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