汽车悬架建模
本例演示了汽车在撞击障碍物时的悬挂建模。
使用信号发生器块将障碍物定义为矩形信号。使用速度源,将信号(速度)的导数输入到横向弹簧块的C端口,该端口用于描述车轮的弹性特性。
反过来,横向弹簧又与质量块相连,质量块描述了车轮的惯性特性。
车轮与悬挂元件、减震器和减震器弹簧相连,这些元件由减震器块和弹簧块表示。
车辆本身的 "四分之一 "连接到减震器块和弹簧块的其他端口。
车轮的质量为 50 千克,车辆 "四分之一 "的质量为 350 千克。
障碍物的高度为 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 毫秒的时间内影响到四分之一的汽车。
这个过载不大,不会对人造成危险,也不会影响乘客的舒适度。
结论
本例演示了汽车悬架在与障碍物突然碰撞时的性能建模。分析了汽车四分之一部分的运动参数,以及可能影响乘客安全和舒适度的超载值。