汽车悬架模拟
这个例子演示了汽车悬架在撞到障碍物时的模拟.
使用信号发生器块将障碍物设置为矩形信号。 使用速度源,将信号(速度)的导数馈送到平移弹簧块的C端口,该端口描述了车轮的弹性特性。
平移弹簧,反过来,连接到质量,其表征车轮的惯性属性。
车轮安装在悬挂元件,减震器和减震器弹簧上,由块阻尼器和弹簧表示。
汽车本身的"四分之一"连接到阻尼器和弹簧块的其他端口。
车轮的质量为50kg,汽车的"四分之一"为350kg。
障碍物高5厘米。
模型图:
定义加载和运行模型的函数:
In [ ]:
function start_model_engee()
try
engee.close("suspension_physmod", force=true) # закрытие модели
catch err # в случае, если нет модели, которую нужно закрыть и engee.close() не выполняется, то будет выполнена её загрузка после catch
m = engee.load("$(@__DIR__)/suspension_physmod.engee") # загрузка модели
end;
try
engee.run(m) # запуск модели
catch err # в случае, если модель не загружена и engee.run() не выполняется, то будут выполнены две нижние строки после catch
m = engee.load("$(@__DIR__)/suspension_physmod.engee") # загрузка модели
engee.run(m) # запуск модели
end
end
Out[0]:
运行模拟
In [ ]:
try
start_model_engee() # запуск симуляции с помощью специальной функции, реализованной выше
catch err
end;
从simout中提取数据到变量中:
In [ ]:
sleep(5)
result = simout;
res = collect(result)
Out[0]:
将有关车轮和汽车运动以及有关过载的数据写入变量:
In [ ]:
wheel_pos = collect(res[1])
car_pos = collect(res[4])
overload = collect(res[2]);
模拟结果的可视化
In [ ]:
using Plots
plot(wheel_pos[:,1], wheel_pos[:,2], linewidth=3, label="Положение колеса, м")
plot!(car_pos[:,1], car_pos[:,2], linewidth=3, label="Положение автомобиля, м")
Out[0]:
In [ ]:
plot(overload[:,1], overload[:,2], linewidth=3, label="Перегрузка, м/(с^2)")
Out[0]:
分析这些图表,您可以看到在撞击障碍物时发生的过载(身体加速度与自由落体加速度的比率)略大于2 ,影响四分之一的汽车在不到50毫秒。
这样的过载不大,不会对人产生危险影响,也不会影响乘客的舒适度。
结论:
这个例子演示了汽车悬架在与障碍物突然碰撞时的模拟. 分析了四分之一汽车运动的参数,以及过载的值,这会影响乘客的安全性和舒适性。