Engee 文档
Notebook

直流电机

本例将演示在Engee(模型 ssc_dcmotor.engee)和Simulink(模型 ssc_dcmotor_demo.slx)中创建的直流电机模型。将展示在脚本开发环境中使用命令控制运行模型并比较仿真结果的过程。在仿真中,电机轴上施加了可变扭矩。

模型概览

Engee 模型: image.png

Simulink 模型 image.png

通过软件控制运行模型

In [ ]:
Pkg.add(["Statistics", "CSV"])
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]:

让我们比较一下EngeeSimulink的仿真结果。为此,让我们比较一下速度值。

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 中创建的电机模型完全相同。