☰
轮胎附着椭圆:基于Pacejka公式的CarSim与MATLAB绘制全流程
2026/10/22 6:04:59 网站建设 项目流程

有次调试一款车辆的稳定性控制程序,我盯着屏幕上的四轮受力散点图看了很久,总觉得哪里不对:按纯工况计算,每个车轮明明都还有不少抓地力余量,可实车跑起来,限滑系统介入的时机总是比预期偏晚。后来把数据拆开看,问题就出在我把“纵向力”和“侧向力”当成了互不干扰的两个独立通道。轮胎在过弯时如果同时踩油门或刹车,纵向力会实实在在挤占侧向力的份额,这两者之间的边界,就是车辆动力学里常说的“附着椭圆”。这篇文章就用CarSim里175/70R13轮胎的Pacejka参数,完整走一遍从公式到MATLAB绘图的流程,最后聊几个容易翻车的细节,适合正在做车辆动力学仿真、底盘调校,或者刚开始接触魔术公式的同学参考。

1. 附着椭圆到底在表达什么:一场纵向力与侧向力的“抢抓地力”博弈

1.1 摩擦圆与附着椭圆:为什么不是“圆”而是“椭圆”

很多教材讲轮胎附着力时,第一个概念是摩擦圆:把轮胎能产生的最大合力的边界画在“纵向力 Fx — 侧向力 Fy”的坐标系里,认为极限是一个半径为 μFz 的圆。这个模型做概念推导很方便,但拿到实际轮胎数据上,你会发现事情没那么“圆满”。

原因很简单:轮胎接地面的橡胶在同一个接触斑里,既要传递驱动或制动力,又要传递转弯产生的侧向力。橡胶是一种有“各向异性”的材料,纵向和侧向的刚度、摩擦特性都不一样。你可以在纵向上轻松压出 1.1 倍的峰值附着系数,侧向却可能只有 0.9 到 1.0;反过来,有些高性能胎侧向表现比纵向更强。这种差异叠加轮胎结构、帘布层铺层角度等因素,最终把“圆”压成了“椭圆”。

另一个朴素的直觉是:把接地面的橡胶想象成一团被压在地面的橡皮泥,你往前推它一点,它还能往侧面扭一扭;推得太猛,它侧面的“余量”就明显变小了。附着椭圆描述的就是这种抢抓地力的关系——你从纵向力这个“账户”里支取的越多,侧向力那个“账户”里能用的就越少,反之亦然。

1.2 不对称的两轴:驱动、制动与侧偏方向的附着极限差异

如果只是把摩擦圆压扁成对称椭圆,那还远远不够。真实轮胎的椭圆不仅长宽不同,还常常带偏转、带偏移。主要差异来自三个方向:

工况峰值附着系数典型范围说明
驱动纵向1.0 ~ 1.15驱动时橡胶相对路面的微滑移机制决定峰值
制动纵向1.1 ~ 1.2制动工况下峰值附着系数通常略高于驱动
纯侧偏0.9 ~ 1.1侧向力随侧偏角增大而饱和,极限受胎体侧偏刚度限制

在Pacejka魔术公式里,这些差异直接反映在纵向峰值系数 Dx 和侧向峰值系数 Dy 上。竖直载荷 Fz 乘以 Dx 得到纵向力峰值,乘以 Dy 得到侧向力峰值。因为 Dx 和 Dy 不相等,椭圆在 x 方向和 y 方向的“半径”天然不同;再加上轮胎的纵滑刚度与侧偏刚度相差很大,同样滑移量下纵向力和侧向力“升起来”的速率也不一样,整个边界就变成不对称的曲线族。

还有一个被很多人忽略的点:驱动和制动的纵向峰值也不对称。制动时轮胎接地面前部受压,橡胶与路面的微观摩擦机制和驱动时不同,所以典型的乘用车轮胎制动峰值附着系数会比驱动方向高 0.05 到 0.1。于是,哪怕只看纵向力这一根轴,正负方向的边界也不是对称的。处理数据时如果直接用同一个 Dx 去画驱动和制动两段,画出来的椭圆左右两端会“一边胖一边瘦”的差距被抹掉,这在后续做制动工况分析时会埋下隐患。

2. 175/70R13轮胎的数据从哪来:Pacejka魔术公式与CarSim轮胎参数

2.1 CarSim里轮胎数据集的正确打开方式

CarSim的轮胎库是很多人最先接触Pacejka参数的地方。选了175/70R13这个规格后,你会看到一整套以Fz为自变量的系数表,里面通常把纵向力、侧向力、翻转力矩、回正力矩的Pacejka系数分门别类列好。绘制附着椭圆只需要关心纵向力Fx和侧向力Fy这两个部分,至于回正力矩Mz,暂时用不上。

打开数据集之后,建议先把以下几点抄出来:

  • 参考垂直载荷 Fz0,通常有 0、2kN、4kN 等几个载荷点;
  • 纵向力Fx对应的 Bx、Cx、Dx、Ex ;
  • 侧向力Fy对应的 By、Cy、Dy、Ey ;
  • 如果有组合滑移权重项,把 Gxa、Gya 相关的系数一并记下来。

CarSim里同一款轮胎在不同Fz下会有一组不同的拟合系数。绘制某个具体工况椭圆时,如果目标Fz落在两个参考载荷点之间,最稳妥的办法是把附近两个Fz点的系数做线性插值,而不是直接拿最接近的一组系数硬算。我最早画椭圆就直接拿了4kN那一组去算3.2kN的工况,结果纯工况曲线跟CarSim内部输出的曲线对不上,折腾了一晚上才发现是载荷点选错了。

2.2 B/C/D/E四个系数的工程含义

Pacejka魔术公式的纯工况形式写出来是:

F0 = D · sin(C · arctan(B·x - E · (B·x - arctan(B·x))))

这里的 x 在纵向力公式里是滑移率 κ,在侧向力公式里是侧偏角 α。四个系数各有各的任务:

  • D 是峰值因子,决定曲线最高点的位置,工程上基本就是 μ·Fz;
  • C 是形状系数,决定曲线“胖瘦”,乘用车轮胎纵向大约在 1.4~1.8,侧向大约在 1.1~1.5;
  • B 是刚度因子,和 D、C 一起决定初始斜率,纵滑刚度和侧偏刚度就是从 B·C·D·Fz 来的;
  • E 是曲率因子,控制曲线到达峰值后是“平缓回落到平台”还是“快速掉下来”。

用做菜来类比,D 定的是这道菜的量,C 定的是口感形态,B 定的是入口的“冲击感”,E 定的是吃到后面会不会腻。调B系数时,你会明显看到曲线起点阶段的斜率变化;调D系数时,峰值整体移动;调E时,峰值过后的下降过程完全变样。

2.3 组合滑移:只用纯工况曲线画不出椭圆

如果只盯着纯纵滑曲线 Fx-κ 和纯侧偏曲线 Fy-α 看,你会觉得轮胎在纵向和侧向是“各管各的”,各画各的极限就可以了。问题是同时给轮胎施加滑移率和侧偏角时,两个方向的受力会互相干扰。Pacejka公式处理这种耦合用的是一组“权重函数”,简化写法是:

Fx = Gxa(α) · Fx0(κ) Fy = Gya(κ) · Fy0(α)

其中 Fx0 是纯纵滑工况下的纵向力,Fy0 是纯侧偏工况下的侧向力,Gxa 和 Gya 是介于 0 到 1 之间的衰减因子。侧偏角越大,Gxa 越小,纵向力能力被压得越狠;滑移率越大,Gya 越小,侧向力能力被压得越狠。

这组权重函数一般是 cos 形式的,本质上是把“另一个方向的工作量”映射成一个衰减比例。理解了G函数,附着椭圆就不神秘了:它其实就是两组纯工况曲线被G函数“掰弯”之后,扫过二维平面留下的外包络。所以我说,只用纯工况曲线永远画不出椭圆——少的就是这道耦合环节。

3. 绘制附着椭圆的三条路径与选型建议

3.1 试验台实测

最直接的办法是把轮胎装上试验台,比如常见的Flat-Trac和MTS设备。试验台可以在固定垂直载荷下,同时控制滑移率和侧偏角,精确测出每个组合工况下的纵向力和侧向力,直接把散点边界打出来。

这条路的好处是数据最真实,橡胶、胎压、温度、路面附着全都落在实测里,边界自然包络出轮胎的真实“性格”。坏处也直观:试验台设备贵、测试周期长、轮胎损耗大,通常只有轮胎厂和整车企业才会常态化跑这种试验。个人开发者或者高校项目很难为了画个椭圆去租一周试验台。

不过,如果你手头刚好有某款轮胎的试验数据,哪怕只有几组典型载荷下的数据点,也比纯仿真参数可信得多。做控制器标定的时候,拿试验数据画出来的椭圆做边界,比拿拟合参数画出来的要稳不少。

3.2 理论模型解析

削一支铅笔,在纸上用刷子模型也能推出附着椭圆。刷子模型把轮胎接地橡胶想象成一根根弹性“刷毛”,每根刷毛在接地时逐渐变形,超过摩擦极限后就进入滑移。把整个接触区的合力积分出来,纵向力和侧向力的边界确实会呈现椭圆关系,某些简化条件下甚至能写出解析椭圆方程。

这条路适合做概念推导和快速估算,比如课堂演示、早期方案论证。缺点在于刷子模型的假设比较理想,忽略了胎体刚度、胎压分布、橡胶非线性等复杂因素,算出来的椭圆通常比实际轮胎的“内切椭圆”更规整,也更乐观一些。

3.3 仿真数据扫描:CarSim参数+MATLAB包络法(本文主路线)

最实用、最容易被复现的路线,是把Pacejka公式装进MATLAB里,固定某个Fz,遍历侧偏角和滑移率,把每个组合工况下的 (Fx, Fy) 全算出来,然后取散点集合的凸包作为附着椭圆边界。

这条路线成本几乎为零,只要有CarSim数据集和MATLAB就行;可复现性也强,参数一换就能批量画不同载荷下的椭圆;而且边界由公式自然形成,不是人为拟合出的“标准椭圆”。对做底盘调校、控制算法开发和毕设论文的同学来说,这是投入产出比最高的一条路,下面第四章就完整走一遍。

3.4 三条路径怎么选

方法精度成本实现难度适用场景
试验台实测高很高中轮胎厂、主机厂验证,最终标定
刷子模型解析中低低概念设计、课堂推导、快速估算
魔术公式扫描中高低低工程仿真、控制开发、批量椭圆分析

我自己的经验是:先用第三条路跑通流程、生成大量工况下的椭圆,把控制逻辑里的边界查表做好;等真有试验条件了,再用实测数据替换模型参数,对边界做一次校正。不要把仿真的椭圆直接当最终真相,但也不要在没有数据时干等试验,两条腿走路最稳。

4. 手把手实操:MATLAB扫描组合工况绘制附着椭圆

4.1 从CarSim导出并整理轮胎参数

先打开CarSim的轮胎数据集,选择175/70R13。在参数界面里找到纵向力Fx和侧向力Fy的Pacejka系数,把它们按模块整理到一个结构体里。如果目标工况的Fz不在参考载荷列表里,用相邻两个载荷点的系数做线性插值。

我建议把参数整理成下面的格式,方便后续脚本统一读取:

  • 纵向:Cx、Dx、Bx、Ex
  • 侧向:Cy、Dy、By、Ey
  • 组合滑移权重:Bxa、Cxa(影响纵向力)、Bya、Cya(影响侧向力)

整理完参数之后,先别急着画椭圆。第一步是画纯工况曲线:把Fx-κ、Fy-α两条曲线分别画出来,看看峰值高度、初始斜率、峰值位置是否和你的经验值一致。如果纯工况都画不对,组合工况肯定是白搭。这一步是最容易被跳过的自检,却往往是省时间最多的一步。

4.2 核心算法:固定垂直载荷,遍历侧偏角和滑移率

画附着椭圆的思路说起来很简单:固定一个Fz,选一组侧偏角 α = [0, 2, 4, 6, 8, 10, 12, 15]°,再选一组滑移率 κ = [-0.3, 0.5](负值代表制动,正值代表驱动),把每个 (α, κ) 组合代入Pacejka公式,算出 (Fx, Fy),最后把所有散点画出来取凸包。

为什么固定α去扫κ,而不是固定κ扫α?因为在实际驾驶里,驾驶员通常先建立一定的侧偏角(转向),再通过油门刹车控制纵向力;按固定α扫κ画出来的每条曲线,就是“在某个侧偏角下,用滑移率控制驱动/制动时轮胎工作点的移动轨迹”。这样一组曲线族天然形成一个有层次的束状图,外围包络清晰可见。把所有α曲线的散点混在一起取凸包,比单独连极限点更抗噪声,也更容易看懂。

% 基于Pacejka魔术公式绘制轮胎附着椭圆 % 演示参数:量级合理,正式使用请替换为CarSim导出的175/70R13轮胎参数 clear; clc; close all; % ---------- 1. 轮胎参数 ---------- p.Fz_ref = 2500; % 参考垂向载荷 [N] p.Cx = 1.65; % 纵向形状系数 p.Dx = 1.10; % 纵向峰值附着系数 p.Bx = 11; % 纵滑刚度因子 p.Ex = 0.60; % 纵向曲率因子 p.Cy = 1.30; % 侧向形状系数 p.Dy = 1.05; % 侧向峰值附着系数 p.By = 10; % 侧偏刚度因子 p.Ey = 0.80; % 侧向曲率因子 p.Bxa = 12; p.Cxa = 1.2; % 纵向力受侧偏角影响的权重参数 p.Bya = 10; p.Cya = 1.2; % 侧向力受滑移率影响的权重参数 % ---------- 2. 计算工况 ---------- Fz = 2500; % 本次椭圆对应的垂向载荷 [N] alpha_deg = [0 2 4 6 8 10 12 15]; % 侧偏角 [deg] kappa = linspace(-0.30, 0.50, 400); % 滑移率(负=制动,正=驱动) % ---------- 3. 扫描组合工况 ---------- Fx_all = []; Fy_all = []; figure; hold on; axis equal; grid on; colors = lines(length(alpha_deg)); for i = 1:length(alpha_deg) alpha = alpha_deg(i) * pi/180; % 关键:Pacejka公式里角度用弧度 Fx_i = zeros(size(kappa)); Fy_i = zeros(size(kappa)); for j = 1:length(kappa) k = kappa(j); % 纯纵向滑移工况 Bkx = p.Bx * k; Fx0 = p.Dx * Fz * sin(p.Cx * atan(Bkx - p.Ex * (Bkx - atan(Bkx)))); % 纯侧偏工况 Ba = p.By * alpha; Fy0 = p.Dy * Fz * sin(p.Cy * atan(Ba - p.Ey * (Ba - atan(Ba)))); % 组合滑移权重(简化Pacejka '94形式) Gxa = cos(p.Cxa * atan(p.Bxa * alpha)); % 侧偏角对纵向力的削弱 Gya = cos(p.Cya * atan(p.Bya * k)); % 滑移率对侧向力的削弱 Fx_i(j) = Gxa * Fx0; Fy_i(j) = Gya * Fy0; end plot(Fx_i, Fy_i, '-', 'Color', colors(i,:), 'LineWidth', 1.2, ... 'DisplayName', sprintf('\\alpha = %d°', alpha_deg(i))); Fx_all = [Fx_all, Fx_i]; Fy_all = [Fy_all, Fy_i]; end % ---------- 4. 提取边界包络 ---------- k_conv = convhull(Fx_all, Fy_all); plot(Fx_all(k_conv), Fy_all(k_conv), 'k--', 'LineWidth', 1.8, ... 'DisplayName', '附着椭圆边界(凸包)'); xlabel('纵向力 Fx [N]'); ylabel('侧向力 Fy [N]'); legend('Location', 'best'); title(sprintf('轮胎附着椭圆 Fz=%.0fN', Fz));

4.3 代码运行后的图像该怎么解读

跑完上面代码,你会看到一组从原点向四周扩散的彩色曲线族。α = 0°的那条曲线完全落在横轴上,正好就是从纯驱动到纯制动的纵向力曲线。随着 α 增大,曲线整体向上抬升,但在大滑移率一侧,曲线末端会往回弯,这是因为权重函数 Gya 在大滑移率下把侧向力压了下去,工作点反而“收”回了原点方向。

黑色虚线凸包就是附着椭圆边界。你会发现它并不是一个教科书式的标准椭圆:右侧(驱动侧)比左侧(制动侧)伸得更远,上半部分比下半部分更宽,而整体呈现出类似椭圆但又不满对称的形状。边界上每一个点都对应一个实际可控的极限工况,比如边界上某点对应 Fx=1200N、Fy=2200N,意味着在某个侧偏角下,如果驾驶员还想获得1200N的纵向驱动力,侧向力最多只剩2200N,比纯侧偏时的极限低了不少。

想看不同载荷下的椭圆,只需要把 Fz 换成 1500、3500、5000 再跑几遍。随着Fz增大,椭圆整体变大,但并不是线性放大,因为轮胎的峰值附着系数在小载荷下往往更高,大载荷下会表现出“载荷敏感性”,椭圆长宽比例会随之改变。把多个Fz的椭圆叠在一起,就能看到一个沿Fz方向“吹起来”的椭圆族,这才是后面做整车控制查表要用的完整边界。

5. 椭圆画完之后的工程用法:载荷转移、车辆极限与底盘调校

5.1 四轮不等载荷下的椭圆缩放

车一动起来,四个轮子的垂直载荷就一直在变。制动时载荷往前提,加速时往后甩,过弯时左右两侧也会重新分配。每个轮子都有一套随Fz变化的附着椭圆,所以整车的附着力边界是四组椭圆同时缩放的组合。

举个例子:某车质量 m = 1300kg,轴距 L = 2.5m,质心高 h = 0.5m,以 0.6g 减速制动。前后轴之间的载荷转移量大概是 ΔW = m·a_x·h/L = 1300 × (0.6 × 9.81) × 0.5 / 2.5 ≈ 1530N。静态时每个前轮约承担 3188N,制动后前轮单轮涨到约 3953N,后轮单轮降到约 2423N。前轮椭圆明显变大,后轮椭圆明显缩小。

这个现象对ABS和ESP标定特别关键。如果控制工程师只按静态载荷画了一个椭圆,制动时后轮的实际工作点可能已经跑到“缩小后的椭圆”外面去了,车辆稳定性自然出问题。很多车在重刹时后轴容易先抱死,正是因为后轮载荷被抽走、椭圆缩水,而ABS的滑移率阈值没有跟着动态载荷调整。

5.2 用椭圆看ESP的介入时机

ESP这类稳定性程序在底层做的一件事,就是估计四个轮子当前的纵向力和侧向力,并判断它们是否已经逼近各自附着椭圆的边界。严格说,ESP不会直接去查椭圆图形,它查的是目标滑移率表,但那张表的物理来源就是附着椭圆。

当某个车轮的滑移率过大,说明纵向力需求已经超出了该轮“在目前侧偏角下还能提供的纵向力上限”,如果不介入,侧向力余量会被进一步挤占,车辆就会失去稳定性。这个时候ESP通常会降低发动机扭矩请求,或者对相应车轮施加制动压力,强制把工作点拉回椭圆内部。理解了这个逻辑,你在标定ESP时就能解释很多现象:为什么同一款车在低附着路面上的介入阈值不能照搬高附着路面?因为低附着情况下椭圆整体缩水,同样的滑移率早就到边界了。

5.3 赛道驾驶的“先刹后转”与出弯加油时机

赛车圈常说的“循迹刹车”,本质就是在利用附着椭圆和载荷转移。进弯时先带一点刹车,前轴载荷增加,前轮椭圆变大,前轮能承受的侧向力随之上升,车头就更愿意“咬”进弯里。等到了弯心,松开刹车,载荷往后轴回移,后轮椭圆重新放大,车辆的出弯稳定性也随之恢复。

出弯加油过早过猛,是新手最容易遇到的甩尾事故根源。弯中侧向力需求本来就高,此时如果大油门,后轮同时要输出纵向驱动力和侧向力,工作点一下子顶到椭圆边界外,侧向力骤降,车尾立刻向外甩。明白了这个道理,你会理解为什么老司机总说“等方向回正一点再给油”——方向回正意味着侧偏角需求下降,椭圆给纵向力让出了空间。

6. 绘制附着椭圆容易翻车的几个细节

6.1 弧度与角度:差57倍的事故现场

Pacejka公式里所有角度都是用弧度表达的,但很多初学者直接拿度数代入。弧度制和角度制在数值上差57倍左右,B系数一旦按错误单位代进去,曲线要么蔫成一条平线,要么刚起步就冲上天。

自检方法很简单:给一个很小的侧偏角,比如 α = 0.01 rad,看算出来的 Fy 是否接近 侧偏刚度 × α。如果数量级完全不对,先检查是不是单位问题。另一个坏习惯是只把 alpha 转了弧度、kappa 没转——kappa 本来就是无量纲的小数,不存在度的问题,但也别手滑给它乘个57。

6.2 滑移率:小数还是百分比

滑移率 κ 在魔术公式里习惯用小数,0.1 代表10%滑移率。有些文献和软件接口用百分比,0到100。CarSim导出的参数默认也是小数体系,但你自己从别的工具转换数据时,很可能拿到一套百分比参数的B系数。只要B系数和滑移率单位不匹配,曲线形状立刻变形。最稳妥的验证方法:把 κ = 1 代进去,纵向力应该接近零或处于纯滑状态的低值;如果 κ = 1 时Fx还在高位,就有理由怀疑是单位换算问题。

6.3 权重函数在大边界区域可能不“讲理”

简化Pacejka里的 Gxa = cos(Cxa·atan(Bxa·α)) 这种形式,在 α 很小的时候 Gxa ≈ 1,随着 α 增大逐渐衰减。但当 α 非常大时,atan 趋近 π/2,cos 里可能超过 π/2,Gxa 可能变成负值。负的权重意味着纵向力反向,这在物理上不合理。

处理办法是给权重函数加一个下界保护,比如 G = max(0, min(1, G)),或者干脆把工况扫描范围限制在物理合理区间。我在实际绘制时会把 α 最大扫到 15°——普通乘用车轮胎侧偏角超过15°后侧向力早就饱和了,继续增大角度只会让权重函数进入“不讲理”的区域,画出来的边界也失去意义。

6.4 Pacejka版本差异:别混用系数和公式

Pacejka公式有'89、'94、'02等多个版本,不同版本的纯工况公式虽然在主结构上相似,但组合滑移的处理方式差别不小。'94版用G函数作为乘法权重,'02版加入了更多交叉项和偏移项。CarSim里某套轮胎参数的拟合基准版本,和你MATLAB里写到的公式结构必须匹配。

实操建议:从CarSim导出参数时,先确认数据说明里标注的公式版本;如果数据说明不明确,用CarSim跑一个纯纵滑和纯侧偏工况,把输出曲线和你的MATLAB公式曲线叠在一张图上,形态一致才说明公式结构匹配。不要拿着'94版系数硬套'02版公式,曲线是会骗人的。

6.5 参数自检清单:先画纯工况曲线再画组合工况曲线

把上面所有坑总结成一张自检清单,画任何轮胎椭圆之前过一遍:

  • α = 0 时 Fy 必须为 0,Fx-κ 曲线形态正常;
  • κ = 0 时 Fx 必须为 0,Fy-α 曲线形态正常;
  • 小侧偏角下的 Fy 初始斜率应接近侧偏刚度(通常几百 N/deg),数量级要合理;
  • 纵向力峰值约等于 Dx·Fz,侧向力峰值约等于 Dy·Fz;
  • 权重函数 Gxa、Gya 取值始终在 0 到 1 之间;
  • 不同Fz下的椭圆大小符合载荷敏感性规律,Fz越大椭圆越大但比例会变化。

这套自检我每次换轮胎参数都会跑一遍。它不能保证你参数一定正确,但能筛掉90%的抄错数、贴错列、单位混乱问题。与其在画出来的椭圆形状怪的时候到处找原因,不如一开始就让纯工况曲线先“说人话”。

最后再分享一个习惯:拿到任何一套新轮胎参数,第一件事不是扔进整车模型,而是先把不同Fz下的附着椭圆批量画出来存进工程目录。椭圆是轮胎的“性格画像”——它有没有余量、在哪个工况先撑不住、驱动和制动的极限差多少,全在这张图上。等你在实车调试时遇到明明还有抓地力却控制不住的车,回头看这张图,往往会在第一时间找到答案。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询