news 2026/9/26 14:07:10

爆胎动力学仿真建模:Simulink中Dugoff与UniTire轮胎模型搭建与对比

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
爆胎动力学仿真建模:Simulink中Dugoff与UniTire轮胎模型搭建与对比

很多人问我,自己搭一套爆胎动力学仿真模型到底图什么。市面上CarSim、TruckSim都有现成的爆胎场景模块,论文里也经常看到联合仿真。但真到自己做底盘控制或者车辆稳定性研究时就会发现,商业黑盒模型很难让你拆分轮胎力的变化过程,更没法把爆胎瞬间的载荷转移、侧偏刚度衰减、滚动阻力突增这些因素逐个拧出来分析。所以我选择了在Simulink里自己搭整车动力学模型,核心是两套轮胎模型——Dugoff和UniTire,一套偏工程快速迭代,一套偏精度和极限工况。这篇文章就把整个搭建过程、模型原理、关键参数和踩过的坑完整记录下来,适合正在做车辆动力学仿真、底盘控制算法验证,或者准备用Simulink做数学建模竞赛车辆方向题目的朋友参考。

1. 爆胎动力学建模的整体思路:为什么轮胎模型决定仿真成败

1.1 爆胎工况与常规轮胎建模的差异

先想清楚一件事:常规的轮胎模型研究,重点是稳态工况下轮胎力的精确表达,比如不同滑移率、侧偏角下的纵向力与侧向力曲线。但爆胎工况完全不是这个套路。

爆胎发生后,轮胎的物理属性会在几十毫秒内发生剧烈变化:胎内气压骤降导致有效滚动半径减小,胎侧支撑力丧失导致垂直刚度下降,接地印迹形状改变导致侧偏刚度退化,同时滚动阻力系数可能增大到正常状态的十倍以上。这些变化不是简单的参数微调,而是轮胎力学特性的质变。

所以在建模时,不能只关心轮胎模型的静态精度,更要关注模型能否在参数突变后保持数值稳定,以及能否反映出爆胎后车辆横摆力矩的变化趋势。这才是爆胎动力学建模的核心矛盾——不是轮胎模型本身多高级,而是它能不能承载爆胎这个动态过程。

1.2 选型判断:Dugoff与UniTire各自的位置

我在最初选型时列了几个候选:Magic Formula(魔术公式)、Dugoff、UniTire,还有Fiala模型。

Magic Formula精度高,但参数繁多,有些参数在爆胎工况下根本没有实测数据可参考,强行使用只会让仿真变成一个大型参数拟合现场。Fiala模型太简单,只有侧向力有解析表达,纵向力和联合工况的表达偏弱。最后我圈定了Dugoff和UniTire这两个方向。

Dugoff模型胜在参数少、结构清晰,只有纵向刚度、侧偏刚度、峰值附着系数这几个核心参数,计算量小到可以在实时硬件上跑,非常适合作为爆胎控制器快速验证的底层模型。UniTire则是郭孔辉院士团队提出的统一轮胎模型,理论体系完整,对联合工况、大滑移率、大侧偏角的描述能力强于Dugoff,极限工况下的力衰减特性更接近真实轮胎。

两台模型我都搭了一套,用同一个整车框架去对接,这么做的好处是后期可以交叉验证——同一组爆胎参数,两套轮胎模型给出的车辆响应是否一致,本身就是对建模逻辑的校验。

2. Dugoff轮胎模型Simulink实现:从耦合公式到可跑模块

2.1 Dugoff模型的力学本质与核心公式

Dugoff模型的出发点是一个很朴素的假设:轮胎接地区域的压力近似均匀分布,胎体变形可以用整体刚度来表征。它最有价值的地方是把纵向力和侧向力统一在一个摩擦圆框架下面,避免了分别建模再人工协调的麻烦。

我实现的版本采用以下核心公式:

纵向滑移率定义为:

[ s = \frac{R\omega - v_x}{\max(R\omega, v_x)} ]

侧偏角定义为:

[ \alpha = \arctan\left(\frac{v_y}{v_x}\right) ]

定义组合滑移参数:

[ \lambda = \frac{\mu F_z (1+s)}{2\sqrt{(C_s s)^2 + (C_\alpha \tan\alpha)^2}} ]

其中,(C_s) 是纵向刚度,(C_\alpha) 是侧偏刚度,(\mu) 是轮胎与地面的峰值附着系数。

再引入一个饱和函数 (f(\lambda)):

  • 当 (\lambda < 1) 时,(f(\lambda) = 1)
  • 当 (\lambda \geq 1) 时,(f(\lambda) = \frac{1}{\lambda}(2 - \frac{1}{\lambda}))

最终纵向力和侧向力为:

[ F_x = C_s \frac{s}{1+s} f(\lambda) ]

[ F_y = C_\alpha \frac{\tan\alpha}{1+s} f(\lambda) ]

注意,这里的 (\lambda) 是一个介于0和无穷之间的值,(\lambda) 越小代表轮胎越接近附着极限。当 (\lambda > 1) 时,说明当前需求已经超过了路面附着能力,模型会自动衰减输出力,这正好可以模拟爆胎后附着能力下降的场景。

2.2 MATLAB Function模块搭建细节

Simulink里的实现我建议用MATLAB Function模块,不要用S-Function Builder,原因后面踩坑部分会细说。MATLAB Function模块的好处是代码和框图分离,参数传递直观,调试时还能直接在模块断点看中间变量。

模块的输入输出接口我当时是这样设计的:

function [Fx, Fy] = dugoff_tire(s_alpha_params, state)

其中s_alpha_params是一个参数结构体,包含Cs、Calpha、mu、Fz,state 是来自整车模型的运动状态,包括 (v_x)、(v_y)、(\omega)、(\delta)(前轮转角)。

具体代码简化后如下:

function [Fx, Fy] = dugoff_tire(Cs, Calpha, mu, Fz, vx, vy, omega, delta) % 计算滑移率和侧偏角 % 注意:前轮转角要计入侧偏角计算 if abs(vx) < 0.1 s = 0; alpha = 0; else s = (omega * 0.3 - vx) / max(abs(omega * 0.3), abs(vx)); alpha = atan2(vy, vx) - delta; % 前轮需减去转角 end % 组合滑移参数 denominator = 2 * sqrt((Cs * s)^2 + (Calpha * tan(alpha))^2); if denominator < 1e-6 lambda = mu * Fz; else lambda = mu * Fz * (1 + s) / denominator; end % 饱和函数 if lambda < 1 f_lambda = 1; else f_lambda = (1 / lambda) * (2 - (1 / lambda)); end % 计算力 Fx = Cs * s / (1 + s) * f_lambda; Fy = Calpha * tan(alpha) / (1 + s) * f_lambda; end

这里有一个细节:当 (v_x) 接近0时,滑移率的定义会出现分母趋零的问题,必须在代码里做保护。我用的方法是直接置零,虽然会丢失低速工况的精度,但在高速爆胎场景下完全够用。

2.3 纵向滑移率计算的闭环逻辑

轮胎模型不是一个孤立模块,它和车轮旋转动力学方程是闭环耦合的。车轮转速 (\omega) 不是外部输入,而是由以下方程积分得到:

[ I_w \dot{\omega} = T_d - T_b - F_x \cdot R_{eff} ]

也就是说,仿真过程中每一时刻的 (F_x) 会通过这个方程影响下一时刻的 (\omega),进而影响滑移率,再反过来影响 (F_x)。这个代数环如果不处理,Simulink会直接报错或者计算卡死。

我的解决办法是把车轮旋转方程放到轮胎模型上游的积分模块里,用上一时刻的力去更新转速,本质上是一种显式离散化。或者用Simulink的Memory模块打破代数环,效果类似。这个细节后面踩坑部分还会展开讲。

3. UniTire轮胎模型的建立过程:统一滑移描述与参数标定

3.1 UniTire的无量纲总切力表达

UniTire模型的理论框架比Dugoff复杂得多,它的核心思想是引入无量纲滑移率 (\phi),把纵向滑移和侧向滑移统一成一个标量表示。这样做的好处是:联合工况下的轮胎力不再需要像Dugoff那样用组合参数近似,而是直接通过统一的切力表达式描述。

我采用的UniTire简化版本中,无量纲总切力表达式为:

[ \bar{F} = \mu F_z \left[ 1 - \exp\left(-\phi - E\phi^2\right) \right] ]

其中 (\phi) 是无量纲总滑移率,由纵向和侧向无量纲滑移合成:

[ \phi = \sqrt{\phi_x^2 + \phi_y^2} ]

纵向无量纲滑移:

[ \phi_x = \frac{K_x s_x}{\mu F_z} ]

侧向无量纲滑移:

[ \phi_y = \frac{K_y s_y}{\mu F_z} ]

这里 (K_x) 是纵向刚度,(K_y) 是侧偏刚度,(s_x) 是纵向滑移率,(s_y = \tan\alpha) 是侧向滑移率。

得到总切力后,再根据纵向力和侧向力的占比投影到各自方向:

[ F_x = \bar{F} \cdot \frac{\phi_x}{\phi} ]

[ F_y = \bar{F} \cdot \frac{\phi_y}{\phi} ]

这个形式的好处是清晰、自然,有明确的物理意义。当 (\phi) 增大时,指数项迅速衰减,力趋于饱和,比Dugoff公式中分段函数的过渡更平滑。

在爆胎工况下,(K_x)、(K_y)、(\mu) 都会衰减,UniTire能通过一个统一的 (\phi) 把这些变化都吸收进去,不需要额外修改公式结构,这是它相比Dugoff最核心的优势。

3.2 爆胎参数如何在UniTire中体现

用UniTire模拟爆胎,关键不是改公式,而是改参数。我总结的爆胎参数映射关系如下:

正常轮胎状态(以下为245/45R18规格半经验参考值):

参数正常值爆胎后(-80%胎压)
纵向刚度 (K_x)30000 N/单位滑移18000 N/单位滑移
侧偏刚度 (K_y)2500 N/rad1200 N/rad
峰值附着系数 (\mu)0.90.6
有效滚动半径 (R_{eff})0.33 m0.26 m
滚动阻力系数 (f_r)0.0120.18

注意这些值是我在自己仿真和文献对照中采用的近似值,具体项目需要根据不同轮胎规格和爆胎程度重新标定。但总体趋势是一致的:爆胎后刚度掉30%-50%,附着系数掉30%左右,滚动半径掉20%左右,滚动阻力系数暴涨一个数量级。

3.3 参数标定与数据来源

UniTire参数标定是整套建模里最费时的一步。Dugoff参数少,用经验值就能跑;UniTire参数多,直接抄经验值很容易让仿真结果和实车对不上。

我的标定思路是分层走:首先利用Pacejka或UniTire官方文档中的参考参数,把正常工况仿真结果和文献中同规格轮胎的实验数据比对,微调 (K_x)、(K_y) 等刚度参数;然后用侧偏工况的仿真输出和Magic Formula的预测曲线做交叉验证,确保正常工况的下力-滑移曲线形态接近;最后才引入爆胎参数衰减,在爆胎瞬间观察车辆的横摆响应是否符合基本物理直觉——左前轮爆胎时车辆应向左偏驶并有明显横摆力矩。

有条件的话,建议用轮胎动力学试验台的实测数据或者厂商提供的轮胎特性报告来标定。没有也没关系,用文献中同规格轮胎的数据做基准,加上基本的力-滑移曲线形态校验,就足够支撑整车爆胎动力学研究了。

4. 爆胎触发机制与整车状态耦合:我采用的处理方法

4.1 爆胎发生后的轮胎参数变化模型

爆胎不是瞬间完成的。轮胎从正常状态到完全失压,经历的是一个持续时间大约20到80毫秒的瞬态过程。如果直接在仿真中用阶跃信号切换参数,会导致轮胎力突变,数值上很难收敛,真实物理上也不符合情况。

我采用的处理方法是定义一个爆胎进程变量 (b(t)),范围从0到1:

  • (b(t) = 0) 表示正常状态
  • (b(t) = 1) 表示完全爆胎

爆胎触发后的过渡过程我用:

[ b(t) = 1 - \exp\left(-\frac{t - t_{\text{burst}}}{\tau}\right) ]

其中 (t_{\text{burst}}) 是爆胎触发时刻,(\tau) 是时间常数,我常取0.02到0.05秒,也就是20到50毫秒。之后所有爆胎相关参数都通过 (b(t)) 插值过渡。

以侧偏刚度为例:

[ K_y(t) = K_{y,\text{normal}} \cdot \left[1 - b(t) \cdot \Delta K_y^*\right] ]

(\Delta K_y^*) 是侧偏刚度的最大衰减比例,比如0.5代表衰减50%。

用指数过渡代替阶跃,虽然物理上仍然简化了爆胎的复杂瞬态过程,但仿真稳定性和结果可信度都大幅提升。

4.2 整车七自由度模型的连接方式

轮胎力要作用到整车模型上,才谈得上爆胎动力学。我搭建的是经典的七自由度整车模型:车身纵向、横向、横摆三个自由度,加上四个车轮的旋转自由度。

车身动力学方程简化为:

纵向:

[ m(\dot{v}x - v_y r) = \sum F_x + F{\text{air}} ]

横向:

[ m(\dot{v}_y + v_x r) = \sum F_y ]

横摆:

[ I_z \dot{r} = \sum M_z ]

其中 (\sum F_x) 是四个轮胎纵向力之和在车身坐标系下的投影,(\sum F_y) 是侧向力之和,(\sum M_z) 是横摆力矩之和。

在Simulink里,我用一个子系统封装整车动力学,输入是四个轮胎力,输出是车辆运动状态((v_x)、(v_y)、(r))。轮胎模型子系统接收来自整车子系统的运动状态和来自爆胎触发模块的爆胎进程信号 (b(t)),算出每个车轮的 (F_x)、(F_y) 后回传给整车子系统。

这个结构非常适合后期接入控制算法——控制器直接看整车子系统输出的状态,输出控制量到车轮动力学模块,形成闭环。

4.3 轮胎力突变对车身横摆的影响

爆胎后车辆的横摆响应是最值得关注的现象,也是爆胎动力学建模的重要验证指标。

当前轮发生爆胎时,该轮侧偏刚度下降导致侧向力减小,同侧后轮还会因为载荷转移进一步改变力分布,造成左右侧向力不平衡,产生一个附加横摆力矩。同时,爆胎轮的滚动阻力系数暴涨,产生的纵向阻力会让车辆产生一个额外的偏航趋势。

我在仿真中看到的现象和实车爆胎事故案例是一致的:左前轮爆胎时,车辆除了向左偏驶,还会出现一个明显的横摆角速度正向跳变,峰值可以达到正常转向输入的几倍。如果此时驾驶员没有及时修正,车辆会在1到2秒内跑出原车道,这就说明了爆胎动力学模型对底盘安全控制算法的重要性。

UniTire模型在这个场景下给出的横摆角速度曲线比Dugoff更平缓,原因是UniTire联合工况下的力衰减更连续,不会因为参数突变产生力的阶跃跳变,而Dugoff的饱和函数在参数越过阈值时容易导致力输出出现拐点。

5. 两套模型的仿真对比结果:各自强项与工程取舍

5.1 仿真工况设计

对比实验我设定了两组工况:

第一组是中高速直线行驶爆胎:初速度120 km/h,无转向输入,第2秒触发左前轮爆胎,路面附着系数0.8。

第二组是高速弯道爆胎:初速度80 km/h,固定方向盘转角对应稳态侧向加速度0.4g,第2秒触发左前轮爆胎。

为了公平对比,两套轮胎模型使用完全相同的整车模型和爆胎参数,只替换轮胎模块。仿真时长8秒,观测变量包括车辆横向位移、横摆角速度、车身侧偏角和车辆纵向速度。

5.2 结果差异分析

直线爆胎工况下,两套模型给出的趋势完全一致:车辆向左偏驶,横摆角速度在爆胎后0.1秒内达到峰值,然后逐渐衰减并稳定在一个残余值。差异主要体现在峰值大小和恢复速度上。

Dugoff模型的横摆角速度峰值约为18 deg/s,UniTire约为13 deg/s,大约相差30%。这是因为Dugoff在侧偏角增大后力的衰减步进更明显,导致横摆角速度的响应更“冲”。UniTire的指数型饱和特性让力变化更平滑,横摆响应因此更温和。

弯道爆胎工况下的差异更明显。Dugoff在弯道大侧偏角条件下,轮胎力的衰减过于激进,出现了横摆角速度振荡,甚至有一段趋势接近失稳边界。UniTire则保持了更稳定的力输出,横摆角速度曲线虽然也在增大,但没有进入振荡区域。

这背后的原因是:弯道行驶时轮胎已经工作在中大侧偏角区域,Dugoff模型的线性刚度假设开始失稳,而UniTire对非线性区间的描述更准确。

5.3 选型建议

综合下来,我个人的选型建议是这样的:如果你做的是爆胎预警算法、底盘控制策略的前期快速验证,重点是跑通控制闭环、观察大趋势,那就用Dugoff,它参数少、调参快、计算效率高,实时仿真的负担小。

如果你做的是极限工况下的爆胎稳定性分析,比如爆胎后车辆的失稳边界、底盘稳定控制的介入策略、或者需要精确评估驾驶员操作对车辆响应的影响,那就用UniTire,它在大侧偏角、联合工况下的力描述更可靠。

更进阶的做法是两套模型都保留,通过一个Model Variants模块切换。Simulink的Model Variants能在不修改框图的条件下切换不同轮胎模型,非常方便做交叉验证。

6. 实操踩坑记录:代数环、数值振荡与参数标定

6.1 代数环问题

这是第一次跑通整个仿真时遇到的最大障碍。轮胎力的计算依赖滑移率,滑移率依赖车轮转速,车轮转速依赖轮胎力,Simulink检测到这种没有延迟的闭环会报代数环错误,或者运行速度急剧下降。

我的解决方法在前面提到过,用Memory模块打破代数环。具体做法是在滑移率计算路径上插入一个Memory模块,让当前时刻的转速使用上一时刻积分器的输出值,等效于一个步长的延迟。对于采样时间固定为1e-4秒的仿真,这个延迟引入的误差完全可以忽略。

另一种思路是把车轮转速方程改成隐式求解,但实现复杂度高,不建议新手尝试。优先用Memory或者离散化处理。

6.2 求解器与步长设置

爆胎瞬间轮胎参数变化剧烈,即使做了指数过渡,对求解器仍是考验。刚开始我用变步长ode45,爆胎时刻直接仿真卡死或者结果跳变。

后来我总结了三条经验:

第一,优先选择ode15s或ode23t这类刚性问题求解器。爆胎动力学本质上是慢变车辆动力学和快变轮胎动力学耦合的刚性问题,变步长刚性求解器的收敛性更好。

第二,最大步长必须限制。即使使用变步长,也要把MaxStep设置为0.001秒,确保爆胎瞬态过程至少有几十个采样点。

第三,如果是批量仿真场景,图简单省事可以直接用定步长ode4,步长设为0.0005到0.001秒。定步长仿真虽然计算量大,但结果的一致性和可重复性最好。在华为杯或国赛场景下,定步长跑出来的曲线明显更干净,评委看起来也更舒服。

6.3 CarSim联合仿真时的注意事项

如果你的最终目标是把自建轮胎模型和CarSim联合仿真,有几点需要提前规划。

CarSim的整车动力学模型可以接收自定义的轮胎力输入,但需要把CarSim自身的轮胎模型禁用或替换。具体做法是在CarSim的VS Commands里把轮胎模块的力计算关闭,然后通过Simulink接口把自定义轮胎力连接到CarSim的输入通道。

接口信号我建议用Simulink中的Bus对象管理,把四个轮胎的Fx、Fy、滚动半径、附着系数等打包成一个信号组,避免接口线太乱。

还有一个非常容易踩的坑是单位制。CarSim默认使用国际单位制,但内部很多参数是以千牛、千帕等扩展单位表示的,Simulink侧如果沿用自己习惯的N、Pa,联调时会出现数量级错误,结果看起来就像爆胎后车辆飞起来了。我因为这个问题浪费了整整一天,最后发现只是单位没换算。强烈建议在Simulink模型里加一个单位标注层,或者用Bus信号的Description字段写明每个信号的单位。

另外,CarSim和Simulink联合仿真时,步长设置要以CarSim的求解器为准,Simulink侧的采样时间尽量设为CarSim通讯步长的整数倍,避免插值误差造成的力抖动。

按照这套流程搭完,两套轮胎模型加整车框架,从零开始大概需要三到四周。但比起用黑盒模型,自己掌握每一个参数、每一行公式之后,后期做控制算法和工况扩展的底气完全不同,希望这份记录对准备入坑轮胎动力学建模的朋友有帮助。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/26 14:05:31

SSI-COV协方差驱动随机子空间识别:原理、Matlab实现与调参实战

做结构模态测试的人&#xff0c;手里如果已经有几组加速度响应数据&#xff0c;又不想被频域方法的各种窗函数和平均次数搞得心烦&#xff0c;那么SSI-COV&#xff08;协方差驱动随机子空间识别&#xff09;是一个非常值得掌握的工具。它直接用环境激励下的响应数据来识别模态频…

作者头像 李华
网站建设 2026/9/26 14:03:57

C# Dapper实战:从基础查询到上位机数据访问与性能优化

Dapper 这个库&#xff0c;说老实话&#xff0c;在我接触过的 C# 类库里算是比较特殊的一个。它没有 EF Core 那样复杂庞大的上下文模型&#xff0c;也没有 ADO.NET 那样原始繁琐的样板代码&#xff0c;它更像是夹在两者之间的一个轻量级“工具人”。很多刚接触 C# 的开发者可能…

作者头像 李华
网站建设 2026/9/26 14:03:57

主从博弈与共享储能:综合能源微网优化从模型到代码全解析

主从博弈论、共享储能、综合能源微网优化运行——这三个关键词放在一起&#xff0c;基本就锁定了这是一篇电力系统经济运行方向的典型文章。我花了两周时间把这类模型从公式到代码完整复现了一遍&#xff0c;过程中踩了不少坑&#xff0c;也顺手把整套代码框架整理成了自己的标…

作者头像 李华
网站建设 2026/9/26 14:03:55

基于MATLAB的风电潮流计算与安全分析:从WIND1.zip算例到概率评估

简介&#xff1a;这份资源面向电力系统方向的学生、科研人员与风电并网工程师&#xff0c;聚焦风力发电潮流计算与安全分析这一可再生能源大规模并网背景下的关键技术环节。包内共2个文件&#xff0c;含1个MATLAB脚本与1个mat数据文件&#xff0c;压缩包约5KB&#xff0c;脚本用…

作者头像 李华
网站建设 2026/9/26 14:03:35

高压直流输电HVDC的Simulink仿真建模与换相失败分析

做高压直流输电&#xff08;HVDC&#xff09;仿真的朋友应该都有这种体会&#xff1a;查论文时觉得原理都懂&#xff0c;打开Simulink后却经常被模型和信号搞得头晕。我当初做课题时&#xff0c;把三种高压直流输电MATLAB/Simulink模型从头到尾整理了一遍——两种详细模型、一种…

作者头像 李华
网站建设 2026/9/26 14:03:35

坚持第33天复盘:一个人坚持为何难?四个难点与四套实用方法

第三十三天&#xff0c;如果放在一场长期的自我挑战里&#xff0c;恰好是新鲜感彻底用光、所有“捷径”都被试过、剩下的只有重复和枯燥的阶段。一个人走到这里还能不能继续&#xff0c;往往比第一天开始时的热血更重要。这篇文章就是我在第33天这个节点上&#xff0c;认认真真…

作者头像 李华