直流电机
本例将演示在Engee(模型 ssc_dcmotor.engee)和Simulink(模型 ssc_dcmotor_demo.slx)中创建的直流电机模型。将展示在脚本开发环境中使用命令控制运行模型并比较仿真结果的过程。在仿真中,电机轴上施加了可变扭矩。
模型概览
Engee 模型:
Simulink 模型
通过软件控制运行模型
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);"
加载模型
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]:
建模结果
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');";
输出电机转速随时间变化的曲线图:
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 中创建的电机模型完全相同。