四分之一车被动悬架双质量(二自由度)simulink模型,matlab/simulink车辆模型 输入:路面不平整度 输出:车轮加速度、车身加速度、车轮动载荷 matlab2016b及以上版本打开

四分之一车悬架模型是车辆动力学仿真中常用的简化模型,今天咱们用Simulink手搓一个能跑的双质量被动悬架系统。模型核心包含簧上质量(车身)和簧下质量(车轮)两个自由度,建模时要注意簧载质量与非簧载质量之间的阻尼弹簧耦合关系。

四分之一车被动悬架双质量(二自由度)simulink模型,matlab/simulink车辆模型 输入:路面不平整度 输出:车轮加速度、车身加速度、车轮动载荷 matlab2016b及以上版本打开

先上个核心参数初始化脚本:

%% 参数配置(建议另存为m文件)
m1 = 36;         % 簧下质量(kg)
m2 = 240;        % 簧上质量(kg) 
k1 = 160000;     % 轮胎刚度(N/m)
k2 = 16000;      % 悬架刚度(N/m)
c2 = 980;        % 减震器阻尼(N·s/m)
v = 20;          % 车速(m/s)
dt = 0.001;      % 仿真步长

在Simulink里搭建模型时,路面输入建议用Band-Limited White Noise模块生成随机激励。这里有个小技巧——给白噪声加个积分器可以得到更接近真实路面的位移信号:

% 路面生成参数设置
road_psd = 2e-6;      % 路面不平度系数
cutoff_freq = 2*pi*v; % 截止频率与车速相关

模型中的微分方程实现是关键,这里采用直接方程建模法。在Function模块里写的状态方程核心代码:

function [x1_acc, x2_acc] = suspension_eq(x1,x2,x1_dot,x2_dot,k1,k2,c2,m1,m2)
    F_spring = k2*(x1 - x2);
    F_damper = c2*(x1_dot - x2_dot);
    x1_acc = (-F_spring - F_damper - k1*x1)/m1;
    x2_acc = (F_spring + F_damper)/m2;
end

车轮动载荷的计算别忘记考虑静态载荷补偿,在Interpreted MATLAB Function里可以这样实现:

function F_tire = calc_tire_load(x1, road_input)
    static_load = (m1 + m2)*9.8;
    dynamic_load = k1*(x1 - road_input);
    F_tire = static_load + dynamic_load;
end

仿真完成后用这个脚本绘制时频域对比图:

%% 结果可视化
subplot(3,1,1)
plot(tout, body_acc)
title('车身加速度时域响应')
xlim([2 5]) % 避开初始瞬态

subplot(3,1,2)
[pxx,f] = pwelch(wheel_acc, [],[],[],1000);
semilogy(f, pxx)
title('车轮加速度频域特性')

subplot(3,1,3)
histogram(tire_load - mean(tire_load))
title('动载荷分布统计')

调试时容易踩的坑:1) 初始条件没设对导致数值发散,记得给积分器设初值;2) 采样频率不够产生混叠,建议步长不超过1e-3秒;3) 车身加速度量级比车轮小两个数量级,注意调整坐标轴范围。

最后可以尝试修改c2参数值,观察从欠阻尼到过阻尼状态的过渡现象。当阻尼增加到2000 N·s/m时,车身加速度会明显降低,但轮胎动载荷的波动幅值反而增大——这正体现了悬架设计的权衡艺术。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐