弹簧阻尼器系统分析
系统图如下图所示。
实现将包括三个子系统:
- 质量-1,弹簧-1,自卸车-1。
- spring-2,dumper-2。
- 质量-2,弹簧-3,自卸车-3。
下图显示了已实现系统的上层。
模型的所有子系统按其时间顺序的内容也如下所示。 第一个是Mass_1Spring_1Damper_1。
第二个是Spring_2Damper_2。
第三个是Mass_2Spring_3Damper_3。
现在让我们继续声明这些系统的参数。
In [ ]:
# Определение масс тел
m1 = 20;
m2 = 10;
# Расчёт обратной дроби от массы тел
invm1 = 1/m1;
invm2 = 1/m2;
# Определение коэффициентов гашения демпферов
d1 = 0.5;
d2 = 0.2;
d3 = 2;
# Коэффициенты упругости пружин
k1 = 5;
k2 = 3;
k3 = 2;
# Начальные состояния интеграторов для первой и третьей подсистем
init_integrator_1 = 0.0001;
init_integrator_3 = 0;
# Входные силы воздействия
F1 = 20;
F2 = 40;
让我们用我们的参数运行模型。
In [ ]:
function run_model( name_model, path_to_folder )
Path = path_to_folder * "/" * name_model * ".engee"
if name_model in [m.name for m in engee.get_all_models()] # Проверка условия загрузки модели в ядро
model = engee.open( name_model ) # Открыть модель
model_output = engee.run( model, verbose=true ); # Запустить модель
else
model = engee.load( Path, force=true ) # Загрузить модель
model_output = engee.run( model, verbose=true ); # Запустить модель
engee.close( name_model, force=true ); # Закрыть модель
end
return model_output
end
Out[0]:
In [ ]:
run_model( "PowerAnalysis", @__DIR__ )
Out[0]:
在本演示中,描述质量振荡过程的输出信号不是通过记录到工作区,而是通过总线记录。 因此,在运行模型时,我们看到已经创建了几个变量,其中包含子系统的名称和输出端口的名称,这些变量存储在simout结构中。 如果在仿真过程中记录了四个以上的信号,则可以通过将光标悬停在simout变量上查看它们的所有名称。

In [ ]:
# Считывание из simout залогированных сигналов
X1 = simout["PowerAnalysis/Mass_1_Spring_1_Damper_1.X1"];
X1 = collect(X1);
X2 = simout["PowerAnalysis/Mass_2_Spring_3_Damper_3.X2"];
X2 = collect(X2);
In [ ]:
X1[1:3,:]
Out[0]:
正如我们看到的数据读取字段,从simout我们得到一个包含时间戳和数据字段的DataFrames结构。 我们在读取WorkspaceArray时得到类似的结构。
现在,让我们从模型中建立两个物体振荡的比较图。 在这种情况下,从与体重相关的冲击力的总和,我们得到加速度。
然后,通过积分,我们计算速度。 由于第二次整合,我们得到了一个移动,这反过来我们记录。
In [ ]:
using Plots # Подключения библиотеки построения графиков
plotly()
Out[0]:
In [ ]:
plot(X1.time,X1.value) # Первое тело
plot!(X2.time,X2.value) # Второе тело
Out[0]:
从图表中我们可以看到,第一个身体的波动比第二个身体更强烈。 这主要是由于第一主体的质量是第二主体的质量的两倍。
此外,在仿真过程中,我们记录了阻尼器和弹簧的功率。 让我们分析这些数据。
功率是通过力和速度的乘积来计算的.
In [ ]:
# Демпфер
Fd2x1d = simout["PowerAnalysis/Mass_1_Spring_1_Damper_1/Product.1"];
Fd2x1d = collect(Fd2x1d);
让我们建立一个图表。
In [ ]:
plot( Fd2x1d.time, Fd2x1d.value )
Out[0]:
在这两个图表中,我们可以看到第一个弹簧和第一个阻尼器的功率差异。
结论
在本演示中,我们分析了阻尼器系统的行为,并考虑了从Engee中的模型记录信号的各种可能性。