Двигатель постоянного тока
В данном примере будут продемонстрированы модели двигателя постоянного тока, созданные в Engee (модель ssc_dcmotor.engee) и в Simulink (модель ssc_dcmotor_demo.slx). Будет показан процесс запуска моделей из среды разработки скрипта с помощью командного управления и сравнение результатов моделирования. В симуляции на вал электродвигателя действует переменный крутящий момент.
Запуск модели с помощью программного управления
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")
Запуск модели 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")
Сравним результаты моделирования в 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")
Выводы
В данном примере были использованы инструменты для командного управления моделью, в связи с чем из скрипта были запущены модели Engee и Simulink. Результаты симуляций были сохранены в csv-файлы, загружены, визуализированы, с помощью интерактивных графиков библиотеки Plots, а также проанализированы. Визуальный анализ результатов показал, что модели электромашин, созданные как в Engee, так и в Simulink, идентичны.