基于Matlab的车辆稳定性相平面图绘制程序 ①根据确定的简化魔术公式轮胎模型,建立车辆非线性二自由度运动微分方程,并进而对相平面图进行绘制。 ②包括横摆角速度与质心侧偏角的相平面,以及质心侧偏角速度与质心侧偏角的相平面。 附带说明文档 具有Simulink和m脚本两种版本,而且可对稳定区域划分,鞍点位置与车速,路面附着系数的三维关系图等。
先甩个轮胎模型的硬核代码镇场子。魔术公式轮胎模型咱们简化为Fy = Dsin(Carctan(B*α)),这个非线性特性直接决定了车辆的蛇皮走位:
function Fy = MagicFormula(alpha, B, C, D) Fy = D*sin(C*atan(B*alpha)); end参数B控制曲线斜率,C影响峰值形状,D直接决定最大侧向力。这仨参数一调,柏油路秒变冰面不是梦。
二自由度模型微分方程才是重头戏。看这段暴力美学般的动力学方程:
function dx = vehicleModel(t, x, u, m, Iz, lf, lr, B, C, D) beta = x(1); r = x(2); alpha_f = beta + lf*r/u - delta; alpha_r = beta - lr*r/u; Fyf = MagicFormula(alpha_f, B, C, D); Fyr = MagicFormula(alpha_r, B, C, D); dx(1) = (Fyf + Fyr)/(m*u) - r; dx(2) = (lf*Fyf - lr*Fyr)/Iz; dx = dx'; end这里beta是质心侧偏角,r是横摆角速度。前轮转角delta要是给大了,方程立马给你脸色看——相平面图上出现鞍点分界线。
跑仿真时得注意步长设置,推荐用ode45求解器。下面这串代码能生成经典的鱼钩状相轨迹:
[beta, r] = meshgrid(-0.3:0.05:0.3, -1:0.1:1); streamslice(beta, r, beta_dot, r_dot) xlabel('质心侧偏角β(rad)'); ylabel('横摆角速度r(rad/s)');调整车速u从20m/s逐步提升,会发现稳定区域像被压缩的弹簧一样缩小。路面附着系数降到0.3时,相平面直接给你表演分岔现象。
三维关系图更带劲,用surf函数绘制鞍点位置随车速、附着系数变化的曲面:
[X,Y] = meshgrid(15:2:35, 0.3:0.1:1.0); Z = arrayfun(@(u,mu) findSaddlePoint(u,mu), X, Y); surf(X,Y,Z,'EdgeColor','none'); colormap jet这张图简直就是车辆稳定性的等高线地图,老司机看了直呼内行。
Simulink版本建议用S-function封装轮胎模型,搭配Signal Routing模块处理耦合项。记得在Algebraic Loop选项里勾选Trust me,不然仿真速度能让你等到天荒地老。
最后甩个实用技巧:想快速判断车辆稳定性,直接看相平面图有没有包围原点的闭合曲线。有就是稳定螺旋点,没有?兄弟,准备体验死亡摇摆吧!