汽车系统动力学Matlab

合集下载

使用Matlab进行动力系统建模的方法

使用Matlab进行动力系统建模的方法

使用Matlab进行动力系统建模的方法引言动力系统建模是研究物体在时间和空间上的运动规律的一种方法。

在许多科学领域,如物理学、生物学和工程学中,动力系统建模都是非常重要的。

Matlab作为一种数学和工程软件,提供了强大的工具和函数库,可以帮助人们更轻松地进行动力系统模拟和建模。

本文将介绍使用Matlab进行动力系统建模的方法,并探讨一些实用的案例分析。

一、确定系统的微分方程动力系统建模的第一步是确定系统的微分方程。

微分方程描述了物体在时间上的变化规律。

在Matlab中,我们可以使用符号计算工具箱来表示和求解微分方程。

通过定义符号变量和建立微分方程模型,可以更好地理解系统的动力学特性。

以简谐振子为例,其运动方程可以表示为:m * x''(t) + k * x(t) = 0其中m表示质量,k表示弹性常数,x(t)表示位置。

我们可以使用Matlab的符号计算工具箱定义这个微分方程,并通过求解该方程来获得系统的运动规律。

代码示例如下:syms m k x(t)eqn = m * diff(x,t,2) + k * x == 0;sol = dsolve(eqn);二、数值求解微分方程除了使用符号计算工具箱求解微分方程外,Matlab还提供了许多数值方法来求解微分方程。

这些数值方法通过将微分方程离散化为差分方程,然后使用数值积分方法来近似求解。

经典的数值求解方法包括欧拉法、Runge-Kutta法等。

这些方法可以在Matlab 中通过调用相应的函数来实现。

以下是使用欧拉法求解简谐振子运动方程的示例代码:m = 1;k = 1;x0 = 0;v0 = 1;dt = 0.01;t = 0:dt:10;N = length(t);x = zeros(1,N);v = zeros(1,N);x(1) = x0;v(1) = v0;for i = 1:N-1x(i+1) = x(i) + v(i) * dt;v(i+1) = v(i) - (k/m) * x(i) * dt;endplot(t,x);三、绘制相图和轨迹相图是用于描述动力系统状态演化的一种图形表示方法。

[精品]基于MATLAB的汽车动力性和燃油经济性仿真

[精品]基于MATLAB的汽车动力性和燃油经济性仿真

[精品]基于MATLAB的汽车动力性和燃油经济性仿真1. 简介汽车动力性和燃油经济性是评价一辆汽车性能的两个重要指标。

基于MATLAB的仿真可以帮助工程师和研究人员更好地理解汽车的动力性能和燃油经济性,从而优化设计和改进汽车技术。

本文将介绍基于MATLAB的汽车动力性和燃油经济性仿真的方法和技术。

2. 动力性仿真汽车的动力性指的是汽车加速性能、最高速度、扭矩特性等。

基于MATLAB的动力性仿真可以通过建立数学模型来预测和评估汽车的动力性能。

以下是一个基本的汽车动力性仿真流程:- 建立车辆动力学模型:可以使用MATLAB的Simulink工具箱,将汽车的运动学、动力学和能量转换等方程建立为一个系统模型。

- 定义输入信号:输入信号可以包括驾驶员的驾驶指令、动力系统的输入等。

例如,加速踏板的输入信号可以用一个阶跃函数模拟。

- 仿真和分析:运行仿真模型,获取汽车的速度、加速度、油耗等数据。

通过对仿真结果的分析,可以评估汽车的动力性能,比较不同设计和控制策略的效果。

3. 燃油经济性仿真燃油经济性是指车辆在单位里程下消耗的燃油量,通常以百公里行驶的油耗来表示。

基于MATLAB的燃油经济性仿真可以通过模拟车辆的行驶过程和能量转换来评估汽车的油耗。

以下是一个基本的燃油经济性仿真流程:- 建立车辆行驶模型:可以使用MATLAB的Simulink工具箱,将车辆的行驶阻力、发动机效率、行驶工况等建立为一个系统模型。

- 设置行驶循环:选择合适的行驶循环来模拟不同的驾驶工况,如城市驾驶、高速驾驶等。

- 仿真和分析:运行仿真模型,获取车辆的行驶速度、驱动力、油耗等数据。

通过对仿真结果的分析,可以评估汽车的燃油经济性,比较不同设计和控制策略的效果。

4. 结论基于MATLAB的汽车动力性和燃油经济性仿真可以为汽车工程师和研究人员提供一个快速、准确和可靠的评估工具。

通过仿真分析,可以优化汽车的设计和控制策略,提高汽车的性能和燃油经济性。

汽车动力性matlab仿真源程序

汽车动力性matlab仿真源程序

汽车动力性matlab仿真源程序clcn=[1500:500:5500];%转速范围T=[78.59 83.04 85.01 86.63 87.09 85.87 84.67 82.50 80.54];%对应各转矩dt=polyfit(n,T,3);%对发动机输出转矩特性进行多项式拟合,阶数取4n1=1000:100:5500;%t=polyval(dt,n1);figure(1)title('发动机外特性')plot(n1,t,n,T,'o'),grid on%图示发动机输出转矩特性%汽车驱动力计算G=input('整车重力/N,G=');%输入970*9.8ig=[3.416 1.894 1.28 0.914 0.757];%变速器速比k=1:5;%5个前进档r=0.272;i0=4.388;eta=0.9;ngk=[800 800 800 800 800];ngm=[5500 5500 5500 5500 5500];ugk=0.377.*r.*ngk(k)./(ig(k).*i0);%计算每一档发动机800rpm 时的最低行驶速度ugm=0.377.*r.*ngm(k)./(ig(k).*i0);%计算每一档发动机5400rpm最高行驶速度for k=1:5%依次计算5个档的驱动力u=ugk(k):ugm(k);n=ig(k)*i0.*u./r/0.377;t=54.8179+2.2441.*(n./100)-4.8003.*(n./1000).^2+2.815e-10.*n.^3Ft=t.*ig(k).*i0*eta/r;figure(2)plot(u,Ft)hold on,grid on %保证K的每次循环的图形都保留显示end%行驶阻力计算f0=0.009;f1=0.002;f4=0.0003;%三者都是轿车滚动阻力系数% disp'空气阻力系数Cd=0.3--0.41,迎风面积A=1.7--2.1'Cd=input('空气阻力系数Cd=');%输入0.3A=input('迎风面积/m2,A=');%输入2.3u=0:10:180;f=f0+f1.*(u./100)+f4.*(u./100).^4;Ff=G*f;%计算滚动阻力Fw=Cd*A.*u.^2./21.15;%计算空气阻力F=Ff+Fw;%滚动阻力、空气阻力之和title('驱动力-阻力图(五档速比为3.416 1.894 1.28 0.914 0.757)')plot(u,F,'mo-');grid on%图解法求最高车速for u=50:180;k=5;n=ig(k)*i0.*u./r/0.377;t=54.8179+2.2441.*(n./100)-4.8003.*(n./1000).^2+2.815e-10.*n.^3;Ft=t.*ig(k).*i0*eta/r;f=f0+f1.*(u./100)+f4.*(u./100).^4;Ff=G*f;Fw=Cd*A.*u.^2./21.15;F=Ff+Fw;if abs(Ft-F)<1;umax=u;breakendenddisp('== == =汽车动力性能仿真计算结果== == =')disp('驱动力-行驶阻力平衡图及最高车速')fprintf('汽车理论最高车速(驱动力与行驶阻力曲线交点)Vmax=%3.3f km/h\n',umax)(注:文档可能无法思考全面,请浏览后下载,供参考。

matlab 系统动力学模型

matlab 系统动力学模型

matlab 系统动力学模型Matlab 系统动力学模型引言:系统动力学是研究动态系统行为的数学方法,通过描述和分析系统在时间上的演化过程,揭示系统内部的关系和相互作用规律。

Matlab是一种强大的数值计算软件,广泛应用于系统动力学模型的建立和仿真。

本文将介绍Matlab在系统动力学建模中的应用,并结合实例进行说明。

一、系统动力学基本概念系统动力学是一种描述系统行为的数学工具,它将系统划分为不同的部分,并研究它们之间的相互作用。

系统动力学模型通常由一组关于系统部分之间关系的微分方程或差分方程组成。

在建立模型时,需要考虑系统的输入、输出以及系统内部的状态变量,并通过数学表达式描述它们之间的关系。

二、Matlab在系统动力学模型中的应用Matlab提供了丰富的数学函数和工具箱,使得系统动力学模型的建立和仿真变得更加简单和高效。

下面将以一个简单的例子来说明Matlab在系统动力学建模中的应用。

假设有一个简单的机械系统,由弹簧和质量构成。

假设弹簧的刚度为k,质量为m,阻尼系数为b。

我们想要建立一个系统动力学模型,来描述质点的运动过程。

我们需要确定系统的状态变量和输入输出。

在这个例子中,质点的位移x是系统的状态变量,外力F是系统的输入,质点的加速度a 是系统的输出。

根据牛顿第二定律,我们可以建立如下的微分方程:m * a = F - b * v - k * x其中,v是质点的速度。

为了建立系统的动力学模型,我们需要对该微分方程进行求解。

在Matlab中,可以使用ode45函数来解决常微分方程。

具体的Matlab代码如下:```matlabfunction dxdt = system_dynamics(t, x)m = 1;k = 10;b = 0.5;F = 5;v = x(2);a = (F -b * v - k * x(1)) / m;dxdt = [v; a];end[t, x] = ode45(@system_dynamics, [0, 10], [0, 0]);plot(t, x(:, 1));xlabel('Time');ylabel('Displacement');title('System Dynamics');```在上述代码中,system_dynamics函数定义了系统的微分方程,其中包括质点的加速度和速度的计算。

基于Matlab的汽车运动控制系统设计

基于Matlab的汽车运动控制系统设计

基于Matlab的汽车运动控制系统设计
Matlab是一款强大的工具,它可以用于汽车动力学控制系统
的建模、仿真和优化。

下面是基于Matlab的汽车运动控制系
统的设计流程:
1. 汽车运动学建模,包括车辆加速度、速度、位置等基本变量的建模,并建立数学模型。

2. 汽车动力学建模,包括发动机、传动系统、制动系统等的建模,推导出相关的动力学方程。

3. 设计控制器,选择合适的控制算法,并根据模型参数进行控制器设计。

4. 建立仿真模型,将汽车运动学、动力学模型以及控制器整合在一起,建立仿真模型,并进行仿真。

5. 分析仿真结果,通过仿真结果分析系统的性能,包括控制效果、鲁棒性等。

6. 修改设计,对仿真结果进行修改,优化设计,重新进行仿真。

7. 实现控制器,将控制器转换为代码并实现到实际控制系统中。

8. 验证系统性能,进行实车测试,验证系统性能及仿真结果的准确性。

总体而言,基于Matlab的汽车运动控制系统设计可以提高设计效率,减少设计成本,确保系统性能及仿真结果的准确性。

汽车整体动力性MATLAB仿真计算

汽车整体动力性MATLAB仿真计算
汽车的动力性指汽车在良好路面上直 线行驶时由汽车所受到的纵向外力决定的、 所能达到的平均行驶速度。动力性也是汽
车各种性能中最基本、最重要的性能。
动力性评价指标
汽车动力性评价指标有最高车速、加速 时间、最大爬坡度等,与之对应的试验内容 有最高车速的测试、汽车起步连续换挡加速 时间与超车加速时间的测试和汽车最大爬坡 度的测试。另外,按照我国标准,动力性评 价试验均在满载情况下进行。
M文件
发动机输出功率计算,具体程序如下:
for k=1:5 u=ugk(k):ukm(k); n=ig(k)*i0*u/r/0.377; pe=polyval(dp,n); figure(4) plot(u,pe) hold on,grid on%保证每次循环的图形都保留显示
end
M文件
发动机阻力功率计算,具体程序如下:
M文件
图解法求解最高车速,具体程序如下:
for u=50:0.1:180; k=5; n=ig(k)*i0*u/r/0.377; t=polyval(dt,n); Ft=t*ig(k)*i0*eta/r; f=f0+f1*(u/100)+f4*(u/100).^4; Ff=G*f; %计算滚动阻力 Fw=Cd*A*u.^2./21.15; %计算空气阻力 F=Ff+Fw; if abs(Ft-F)<1; %当驱动力与行驶阻力差值小于1N时,近似认为为理论最高车速 umax=u;break end
仍然取先前国产某小型轿车进行仿真计算,整车综合性 能参数如前所述。发动机输出功率特性可由台架试验获得, 如下表2所示:
表2 发动机输出功率特性
转矩/(r/min) 1500 2000 2500 3000 3500 4000 4500 5000 5500 输出功率/kW 10.6 13.4 17.6 21.8 25.2 27.5 31.1 35.4 31.6

matlab汽车动力系统设计

matlab汽车动力系统设计

matlab汽车动力系统设计汽车动力系统设计是现代汽车工程中的一个重要环节。

它涉及到了汽车动力源、传动系统和控制系统等多个方面,对汽车的性能和燃油效率有着直接影响。

本文将从汽车动力系统设计的角度出发,探讨其中的关键要素和设计原则。

汽车动力源是汽车动力系统设计的核心。

目前,常见的汽车动力源主要包括内燃机和电动机。

内燃机可以进一步分为汽油机和柴油机。

选择适合的动力源是汽车动力系统设计的首要任务。

在选择动力源时,需要考虑到车辆的用途、性能要求和环境影响等因素。

例如,对于城市代步车型,电动机可能更加适合,而对于跑车或越野车型,内燃机可能更具优势。

传动系统是汽车动力系统设计中的另一个重要组成部分。

传动系统的设计目标是将动力源产生的扭矩和转速传递到车轮上,以实现汽车的运动。

传动系统一般包括离合器、变速器和驱动轴等。

离合器的作用是在换挡时断开动力源和传动系统的连接,变速器则可以根据驾驶需求调整输出扭矩和转速。

在传动系统设计中,需要考虑到传动效率、换挡顺畅性和可靠性等因素。

控制系统在汽车动力系统设计中也起着重要作用。

控制系统包括发动机控制单元(ECU)和车辆动力控制系统等。

发动机控制单元通过对发动机的点火、喷油和气门控制等进行精确调整,以实现动力输出和燃油经济性的平衡。

车辆动力控制系统则通过对传动系统和车轮的控制,提供更好的操控性能和稳定性。

在设计控制系统时,需要考虑到系统的可调性、响应速度和稳定性等因素。

除了上述要素,汽车动力系统设计还需要考虑其他一些因素。

例如,车辆的质量分布、空气动力学特性和轮胎参数等。

车辆的质量分布会影响车辆的平衡性和操控性能,因此需要在设计中充分考虑。

空气动力学特性则决定了车辆的空气阻力和气动性能,对于高速车型尤为重要。

轮胎参数包括轮胎类型、尺寸和胎压等,会直接影响到车辆的牵引力和操控性能。

在汽车动力系统设计中,需要遵循一些基本原则。

首先,要确保动力系统的可靠性和安全性。

汽车是一种复杂的机械装置,因此在设计中要考虑到各种可能的故障和安全风险,并采取相应的措施来保证车辆的安全性。

使用Matlab进行车辆控制和自动驾驶系统设计

使用Matlab进行车辆控制和自动驾驶系统设计

使用Matlab进行车辆控制和自动驾驶系统设计随着科技的发展和人们对便捷出行的需求不断增加,车辆控制和自动驾驶系统成为了一个备受关注和研究的领域。

Matlab作为一款强大的数学建模和仿真软件,可以为车辆控制和自动驾驶系统的设计提供极大的帮助。

本文将就如何使用Matlab进行车辆控制和自动驾驶系统设计进行探讨。

首先,车辆控制是车辆驶向目标位置或按照预定运动轨迹运动的过程。

在车辆控制中,总体来说有两种主要方式:基于物理模型的控制和基于试验数据的控制。

基于物理模型的控制是通过对车辆的物理特性进行建模,并结合相应的控制算法来实现车辆的控制。

而基于试验数据的控制,则是通过对车辆运动数据进行统计与分析,建立数据模型,进而进行车辆的控制。

在Matlab中,可以使用Simulink工具箱提供的车辆动力学模型进行车辆控制。

车辆动力学模型是一种实现车辆运动轨迹控制的常用方法。

通过将车辆的运动特性转化为数学模型,在Matlab中进行仿真,可以更加直观地预测车辆的运动行为,并进行相应的控制设计。

例如,可以通过建立车辆的悬挂系统、转向系统、制动系统等子系统模型,对车辆在不同工况下的运动特性进行建模和仿真分析。

同时,Matlab还提供了用于控制设计的工具箱,如Control System Toolbox、Robust Control Toolbox等,这些工具箱包含了丰富的控制算法和方法,能够帮助用户进行车辆控制的设计和优化。

用户可以根据车辆系统的特点和需求,选择适合的控制算法,并进行参数调整和模拟验证。

而对于自动驾驶系统设计来说,Matlab同样发挥着重要的作用。

自动驾驶系统设计是指实现车辆自主感知、决策和执行的过程。

在Matlab中,可以使用Computer Vision Toolbox进行图像处理和视觉感知,通过对车辆周围环境的实时识别和分析,实现自主导航和避障功能。

同时,Matlab还可以结合Deep LearningToolbox进行深度学习算法的应用,利用神经网络模型对复杂交通场景进行理解和预测。

Matlab在汽车工程中的应用示例

Matlab在汽车工程中的应用示例

Matlab在汽车工程中的应用示例引言:汽车工程是一个综合性的学科,涉及到多个领域的知识和技术。

在汽车的设计、测试、控制和优化等方面,Matlab都有着广泛的应用。

本文将针对几个具体的应用领域,介绍Matlab在汽车工程中的应用示例。

一、汽车动力学仿真汽车动力学仿真是汽车工程中的重要组成部分。

通过建立系统的动力学模型,可以模拟汽车在不同条件下的运行行为,为汽车设计与控制提供可靠的依据。

Matlab具备强大的数值计算和仿真功能,极大地方便了汽车动力学仿真的实施。

1. 制动系统仿真:Matlab可以用来建立汽车的制动系统仿真模型,包括制动器、制动液压系统和车轮等部件。

通过对制动力、制动距离、制动时间等参数的计算,可以评估和改进汽车的制动性能。

此外,还可以通过调整摩擦系数、制动液流动压力等参数,优化制动系统的设计。

2. 悬挂系统仿真:汽车的悬挂系统对行驶的稳定性和舒适性有着重要影响。

利用Matlab,可以建立汽车悬挂系统仿真模型,预测悬挂系统的动态响应、滤波效果等性能指标,并进行悬挂系统的参数优化。

此外,还可以通过调整悬挂系统的刚度、阻尼等参数,来改善汽车的操控性和乘坐舒适性。

二、车辆动力学测试数据处理在汽车工程中,进行车辆动力学测试是评估汽车性能的重要手段之一。

通过采集汽车在实际情况下的运行数据,可以进行各种性能指标的分析和评估。

而Matlab的数据处理和分析功能,为车辆动力学测试提供了强大的支持。

1. 加速性能分析:通过采集汽车的实际加速数据,可以分析汽车的加速性能,如加速时间、加速度等指标。

在Matlab中,可以利用数据处理和统计分析的函数,快速计算出汽车的平均加速时间、最大加速度等参数,并与其他车型进行对比分析。

2. 操控性能评估:通过分析汽车在连续驱动和急转弯等情况下的动力学数据,可以评估汽车的操控性能。

利用Matlab的信号处理和频谱分析工具,可以提取出汽车的横向加速度、侧向加速度等指标,并进行综合评估。

matlab汽车动力系统设计

matlab汽车动力系统设计

matlab汽车动力系统设计设计汽车动力系统是通过使用MATLAB软件来模拟和优化车辆动力系统的性能和效率。

下面是一些MATLAB在汽车动力系统设计中常用的工具和方法:1. 建立动力系统模型:使用Simulink来建立一个包含发动机、传动系统和车辆动力总成的模型。

可以通过连接各个子系统和组件来构建整个动力系统模型。

2. 发动机模型:使用MATLAB来创建发动机模型,包括燃烧过程、燃料喷射、排气系统和进气系统等。

可以利用MATLAB的优化工具来优化发动机性能和燃料效率。

3. 传动系统模型:使用Simulink来建立传动系统模型,包括变速器、离合器和传动轴等。

可以使用MATLAB来优化传动系统的效率和响应速度。

4. 操纵模型:使用Simulink来建立车辆操纵模型,包括转向系统、制动系统和悬挂系统等。

可以使用MATLAB进行悬挂系统的参数优化和转向系统的动态性能分析。

5. 环境模型:使用MATLAB来模拟车辆在不同环境条件下的性能,包括温度、海拔和空气密度等。

可以使用MATLAB的控制系统工具箱来设计和调优车辆的控制系统。

6. 燃料经济性分析:使用MATLAB来分析和优化车辆的燃油经济性。

可以使用MATLAB的统计工具箱来分析大量的测试数据,找出燃油经济性的关键因素,并进行改进。

7. 噪音和振动分析:使用MATLAB来分析车辆的噪音和振动性能,包括发动机噪声、风噪声和悬挂系统的振动等。

可以使用MATLAB的信号处理工具箱来分析和优化噪音和振动特性。

MATLAB提供了丰富的工具和功能来支持汽车动力系统的设计和优化。

通过使用MATLAB,可以更好地理解和改进车辆的性能和效率。

Matlab中的动力系统建模与仿真方法

Matlab中的动力系统建模与仿真方法

Matlab中的动力系统建模与仿真方法Matlab是一种流行的科学计算软件,广泛应用于各个领域中的数据处理和建模仿真。

在动力系统领域,Matlab也提供了丰富的工具和函数,方便用户进行系统建模和仿真。

本文将介绍Matlab中常用的动力系统建模方法和仿真技术。

一、动力系统建模方法1.1 状态空间表示法在动力系统建模时,常使用状态空间表示法来描述系统的动态行为。

状态空间表示法将系统的状态变量和输入输出变量联系起来,通过矩阵形式表示系统的数学模型。

Matlab提供了函数来求解状态空间模型的时间响应、频率响应等重要特性。

1.2 传递函数表示法传递函数表示法是另一种常用的动力系统建模方法。

它将系统的输入输出关系表示为一个分子多项式除以分母多项式的形式。

Matlab中的Control System Toolbox提供了丰富的函数和工具箱来处理传递函数模型,如函数tf、bode、step 等。

1.3 符号计算方法符号计算是一种基于代数运算的方法,可以在符号层面上进行系统的数学推导和分析。

Matlab中的Symbolic Math Toolbox提供了强大的符号计算功能,包括求解方程组、求导、积分、线性化等。

通过符号计算,可以得到系统的解析解或近似解,进一步分析系统的特性。

1.4 神经网络建模方法除了传统的数学建模方法外,神经网络也被广泛应用于动力系统的建模和仿真。

Matlab中的Neural Network Toolbox提供了丰富的函数和工具来构建神经网络模型,并进行训练和仿真。

神经网络可以通过学习系统的输入输出数据来建立模型,具有一定的非线性拟合能力。

二、动力系统仿真技术2.1 数值解法动力系统的仿真一般采用数值解法来求解微分方程。

Matlab提供了丰富的数值求解函数,如ode45、ode23、ode15s等,可以根据系统的特点选择合适的数值求解方法。

数值解法通过离散化时间和空间,将连续的微分方程转化为差分方程,以逼近真实系统的连续演化过程。

车辆工程基于MATLAB的动力性仿真分析及优化设计程序

车辆工程基于MATLAB的动力性仿真分析及优化设计程序

n=linspace(600,4000,100);%均分计算指令,600最低转速,4000最高转速,均分为100等分r=0.367;i0=5.83;nt=0.85;G=3880*9.8;f=0.013;CDA=2.77;If=0.218;Iw1=1.798;Iw2=3.598;m=3880;L=3.2;a=1.947;hg=0.9;ig=[6.09,3.09,1.71,1.00];%输入已知参数ua1=0.377*r*n/i0/ig(1);ua2=0.377*r*n/i0/ig(2);ua3=0.377*r*n/i0/ig(3);ua4=0.377*r*n/i0/ig(4);%各转速各挡位下的速度Tq=-19.313+295.27*(n/1000)-165.44*(n/1000).^2+40.874*(n/1000).^3-3.8445*(n/1000 ).^4;%从600~4000rpm油拟合公式计算发动机转距Ft1=Tq*i0*ig(1)*nt/r;Ft2=Tq*i0*ig(2)*nt/r;Ft3=Tq*i0*ig(3)*nt/r;Ft4=Tq*i0*ig(4)*nt/r;%从600~4000rpm各挡位的驱动力Ff=G*f;ua=linspace(0,200,100);Fw=CDA*ua.*ua/21.15;%空气阻力plot(ua1,Ft1,ua2,Ft2,ua3,Ft3,ua4,Ft4,ua,Ff+Fw);%画出各挡位的Ua-Ft,及Ua-Ff+Ft xlabel('ua/ km/h');ylabel('F/N');%标注横纵轴title('汽车驱动力-行驶阻力平衡图');%标注图形题目gtext('Ft1'),gtext('Ft2'),gtext('Ft3'),gtext('Ft4'),gtext('Ff+Fw');%给每根线条添加符号legend('Ft1','Ft2','Ft3','Ft4','Ff+Fw');%标注图例umax=max(ua4);disp('汽车最高车速=');disp(umax);disp('km/h');imax=tan(asin(max((Ft1-(Ff+Fw))/G)));%最大爬坡度的公式disp('汽车最大爬坡度=');disp(imax);%输出最高车速,与最大爬坡度的结果n=600:1:4000;%600最低转速,4000最高转速,相邻数组间隔1 r=0.367;i0=5.83;eff=0.85;f=0.013;CdA=2.77;m=3880;g=9.8; %输入已知参数G=m*g;Ttq=-19.313+295.27*n/1000-165.44*(n/1000).^2+40.874*(n/1000).^3-3.8445*(n/1000) .^4;%从600~4000rpm油拟合公式计算发动机转距for ig=[6.09,3.09,1.71,1.00]Ua=0.377*r*n/ig/i0; %各转速各挡位下的速度Pe=Ttq.*n/9550; %各转速下的功率plot(Ua,Pe);hold on; %使当前轴及图形保持而不被刷新,准备接受此后将绘制的图形,多图共存endUa=0:0.1:max(Ua);Pf=G*f*Ua/3600; %滚动阻力Pw=CdA*Ua.^3/76140; %空气阻力plot(Ua,(Pf+Pw)/eff);title('汽车的功率平衡图'),xlabel('Ua/(km/h)'),ylabel('P/kw');%画出汽车的功率平衡图gtext('Ft1'),gtext('Ft2'),gtext('Ft3'),gtext('Ft4'),gtext('(Pf+Pw)/nt'); legend('Ⅰ','Ⅱ','Ⅲ','Ⅳ','Pf+Pw/nt');n=600:1:4000;%600最低转速,4000最高转速,相邻数组间隔r=0.367;i0=5.83;nt=0.85;f=0.013;CdA=2.77;m=3880;g=9.8; %输入已知参数G=m*g;Ttq=-19.313+295.27*n/1000-165.44*(n/1000).^2+40.874*(n/1000).^3-3.8445*(n/1000) .^4;%从600~4000rpm油拟合公式计算发动机转距for ig=[6.09,3.09,1.71,1.00]Ua=0.377*r*n/ig/i0;Ft=Ttq*i0*ig*nt/r;Fw=CdA*Ua.^2/21.15;D=(Ft-Fw)/G %汽车动力因子公式plot(Ua,D); %画出汽车动力特性图hold on; %使当前轴及图形保持而不被刷新,准备接受此后将绘制的图形,多图共存endf=0.0076+0.000056*Ua%滚动阻力与速度之间的关系plot(Ua,f); %画出速度与滚动阻力图title('汽车动力特性图'),%给图加题目xlabel('Ua/(km/h)'),ylabel('D');gtext('Ⅰ'),gtext('Ⅱ'),gtext('Ⅲ'),gtext('Ⅳ'),gtext('f');legend('Ⅰ','Ⅱ','Ⅲ','Ⅳ','f');n=600:10:4000; %600最低转速,4000最高转速,相邻数组间隔10m=3880;g=9.8;nmin=600;nmax=4000;G=m*g;ig=[6,09 3.09 1.71 1.00];nT=0.85;r=0.367;f=0.013;CDA=2.77;i0=5.83;L=3.2;a=1.947;hg=0.9;If=0.218;Iw1=1.798;Iw2=3.598;%输入已知参数Tq=-19.313+295.27*(n/1000)-165.44*(n/1000).^2+40.874*(n/1000).^3-3.8445*(n/1000 ).^4;%从600~4000rpm油拟合公式计算发动机转距Ft1=Tq*ig(1)*i0*nT/r;Ft2=Tq*ig(2)*i0*nT/r;Ft3=Tq*ig(3)*i0*nT/r;Ft4=Tq*ig(4)*i0*nT/r; %各转速各挡位下的驱动力ua1=0.377*r*n/ig(1)/i0;ua2=0.377*r*n/ig(2)/i0;ua3=0.377*r*n/ig(3)/i0;ua4=0.377*r*n/ig(4)/i0; %各挡位各转速下的速度Fw1=CDA*ua1.^2/21.15;Fw2=CDA*ua2.^2/21.15;Fw3=CDA*ua3.^2/21.15;Fw4=CDA*ua4.^2/21.15; %不同速度下的空气阻力Ff=G*f;deta1=1+(Iw1+Iw2)/(m*r^2)+(If*ig(1)^2*i0^2*nT)/(m*r^2);deta2=1+(Iw1+Iw2)/(m*r^2)+(If*ig(2)^2*i0^2*nT)/(m*r^2);deta3=1+(Iw1+Iw2)/(m*r^2)+(If*ig(3)^2*i0^2*nT)/(m*r^2);deta4=1+(Iw1+Iw2)/(m*r^2)+(If*ig(4)^2*i0^2*nT)/(m*r^2); %不同挡位下的汽车旋转质量换算系数a1=(Ft1-Ff-Fw1)/(deta1*m);ad1=1./a1;a2=(Ft2-Ff-Fw2)/(deta2*m);ad2=1./a2;a3=(Ft3-Ff-Fw3)/(deta3*m);ad3=1./a3;a4=(Ft4-Ff-Fw4)/(deta4*m);ad4=1./a4; %各挡位下的加速度plot(ua1,ad1,ua2,ad2,ua3,ad3,ua4,ad4);title('汽车的加速度倒数曲线');xlabel('ua(km/h)'); ylabel('1/a)'); %作汽车加速度倒数曲线gtext('1/a1'),gtext('1/a2'),gtext('1/a3'),gtext('1/a4');legend('1/a1','1/a2','1/a3','1/a4');n=600:10:4000;m=3880;g=9.8;nmin=600;nmax=4000;G=m*g;ig=[6.09 3.09 1.71 1.00];nT=0.85;r=0.367;f=0.013;CDA=2.77;i0=5.83;L=3.2;a=1.947;hg=0.9;If=0.218;Iw1=1.798;Iw2=3.598; %输入已知参数Tq=-19.313+295.27*(n/1000)-165.44*(n/1000).^2+40.874*(n/1000).^3-3.8445*(n/1000 ).^4;%从600~4000rpm油拟合公式计算发动机转距Ft1=Tq*ig(1)*i0*nT/r;Ft2=Tq*ig(2)*i0*nT/r;Ft3=Tq*ig(3)*i0*nT/r;Ft4=Tq*ig(4)*i0*nT/r;%各转速各挡位下的驱动力ua1=0.377*r*n/ig(1)/i0;ua2=0.377*r*n/ig(2)/i0;ua3=0.377*r*n/ig(3)/i0;ua4=0.377*r*n/ig(4)/i0;%各挡位各转速下的速度Fw1=CDA*ua1.^2/21.15;Fw2=CDA*ua2.^2/21.15;Fw3=CDA*ua3.^2/21.15;Fw4=CDA*ua4.^2/21.15;%不同速度下的空气阻力Ff=G*f;i1=asin((Ft1-Ff-Fw1)/G);i2=asin((Ft2-Ff-Fw2)/G);i3=asin((Ft3-Ff-Fw3)/G);i4=asin((Ft4-Ff-Fw4)/G);%不同档位下的坡度plot(ua1,i1,ua2,i2,ua3,i3,ua4,i4);title('汽车的爬坡度图');xlabel('ua/(km*h^-1)');ylabel('i/%');%作汽车的坡度图gtext('Ⅰ'),gtext('Ⅱ'),gtext('Ⅲ'),gtext('Ⅳ');m=3880;g=9.8;r=0.367;nt=0.85;f=0.013;CdA=2.77;i0=5.83;pg=7.1;%汽油的重度取7.1N/Lig=[6.09 3.09 1.71 1];n=600:1:4000;n0=[815 1207 1614 2012 2603 3006 3403 3804];B00=[1326.8 1354.7 1284.4 1122.9 1141.0 1051.2 1233.9 1129.7];B10=[-416.46 -303.98 -189.75 -121.59 -98.893 -73.714 -84.478 -45.291];B20=[72.379 36.657 14.524 7.0035 4.4763 2.8593 2.9788 0.71113];B30=[-5.8629 -2.0553 -0.51184 -0.18517 -0.091077 -0.05138 -0.047449 -0.00075215]; B40=[0.17768 0.043072 0.0068164 0.0018555 0.00068906 0.00035032 0.00028230 -0.000038568]; %输入已知参数B0=spline(n0,B00,n);B1=spline(n0,B10,n);B2=spline(n0,B20,n);B3=spline(n0,B30,n);B4=spline(n0,B40,n);%使用三次样条插值,保证曲线的光滑连续ua3=0.377*r*n/ig(3)/i0;ua4=0.377*r*n/ig(4)/i0; %求出发动机转速范围内对应的3、4档车速Pe3=(m*g*f*ua3/3600+CdA*ua3.^3/76140)/0.85;Pe4=(m*g*f*ua4/3600+CdA*ua4.^3/76140)/0.85; %发动机功率for i=1:1:3401 %用拟合公式求出各个燃油消耗率b3(i)=B0(i)+B1(i)*Pe3(i)+B2(i)*Pe3(i).^2+B3(i)*Pe3(i).^3+B4(i)*Pe3(i).^4;b4(i)=B0(i)+B1(i)*Pe4(i)+B2(i)*Pe4(i).^2+B3(i)*Pe4(i).^3+B4(i)*Pe4(i).^4; %插值得出对应速度的燃油消耗率endQ3=Pe3.*b3./(1.02.*ua3.*pg);Q4=Pe4.*b4./(1.02.*ua4.*pg); %3.4挡等速百公里燃油消耗量plot(ua3,Q3,ua4,Q4);title('最高档与次高档等速百公里油耗曲线'); %画出最高档与次高档等速百公里油耗曲线xlabel('ua(km/h)'); ylabel('百公里油耗(L/100km)');gtext('3档'),gtext('4档');。

汽车动力性计算matlab程序

汽车动力性计算matlab程序

%% 汽车动力性计算(自己编的动力性计算程序,供大家计算动力性时参考,具体参数大家根据所给程序对应输入,并对坐标轴数值按需要进行修改)clc; clear;close all;%%根据所给发动机数据拟合外特性曲线(发动机数据按照你所得到的数据进行输入)n_test=[500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 2100 2200];T_test=[975 1108 1298 1496 1546 1620 1670 1785 1974 1974 1970 1889 1829 1748 1669 1700 1524 1105];figure(1)plot(n_test,T_test,'g');hold ongrid on%p=polyfit(n_test,T_test,7);p=polyfit(n_test,T_test,2);n=[450:1:2200];Ttq=polyval(p,n);plot(n,Ttq,'k');xlabel('发动机转速n(r/min)');ylabel('发动机转矩Ttq(N*m)');title('发动机转矩曲线');legend('测试曲线','拟合曲线');%%所给车型动力总成相关参数ig=[3.07 2.16 1.48 1.0 0.82];i0=4.0; eta=0.78; r=0.57; M=25000; g=9.8; c=1.5; f0=0.01; f1=0.0002; f4=0.0005; CD=1; A=8;Iw=3.6;If=0.04;%% 发动机外特性曲线图figure(2)hold ongrid onfor i=length(n);Pe=Ttq.*n/9550;end[AX,H1,H2]=plotyy(n,Ttq,n,Pe);xlabel('发动机转速n(r/min)');ylabel('发动机转矩Ttq(N*m)');ylabel(AX(2),'发动机功率Pe(Kw)');title('发动机外特性曲线');%% 各挡位速度曲线%计算各挡位车速for i=1:length(ig);ua(i,:)=0.377*r*n/ig(i)/i0;end%计算各档位最高车速uamax=ua(:,length(ua(1,:)));figure(3)hold onfor i=1:length(ig);plot(n,ua(i,:),'k');endhold ongrid onxlabel('转速n(r/min)');ylabel('各挡位车速(km/h)');title('各挡位车速-转速表');legend('1挡车速','2挡车速','3挡车速','4挡车速','5挡车速'); %% 驱动力和行驶阻力平衡图%计算滚动阻力系数for i=1:length(ig);f(i,:)=f0+f1*(ua(i,:)/100)+f4*(ua(i,:)/100).^4;end%计算滚动阻力for i=1:length(ig);Ff(i,:)=c*M*g*f(i,:);end%计算空气阻力for i=1:length(ig);Fw(i,:)=CD*A*(ua(i,:).^2)/21.15; end%计算行驶阻力for i=1:length(ig);F(i,:)=Ff(i,:)+Fw(i,:);end%计算汽车驱动力for i=1:length(ig);Ft(i,:)=Ttq*ig(i)*i0*eta/r;endfigure(4)hold onfor i=1:length(ig);plot(ua(i,:), Ft(i,:),'k');plot(ua(i,:), F(i,:),'r');plot(ua(i,:), Ff(i,:),'b');endhold ongrid onxlabel('车速(km/h)');ylabel('驱动力、行驶阻力(N)');legend('驱动力Ft','行驶阻力Ff+Fw','滚动阻力Ff'); title('驱动力-行驶阻力平衡图');%% 汽车功率平衡图%计算各档位功率for i=1:length(ig);P(i,:)=Ft(i,:).*ua(i,:)/(3600*eta);end%计算风阻阻力功率for i=1:length(ig);Pw(i,:)=CD*A*ua(i,:).^3/(76140*eta);end%计算滚动阻力功率for i=1:length(ig);Pf(i,:)=M*g*f(i,:).*ua(i,:)/(3600*eta);end%计算总阻力功率for i=1:length(ig);Pz(i,:)=Pw(i,:)+Pf(i,:);endfigure(5)hold onfor i=1:length(ig);plot(ua(i,:), P(i,:),'k');plot(ua(i,:), Pz(i,:),'r');endhold ongrid onxlabel('车速(km/h)');ylabel('发动机功率、阻力功率(kW)');legend('发动机功率P','阻力功率Pz','Location','NorthWest'); title('功率平衡图');%% 动力特性图(动力因数图)for i=1:length(ig);D(i,:)= (Ft(i,:)- Fw(i,:))/M/g;endfigure(6)hold onfor i=1:length(ig);plot(ua(i,:), D(i,:),'k');plot(ua(i,:), f(i,:),'r');endhold ongrid onxlabel('车速(km/h)');ylabel('动力因数D');legend('动力因数D','滚动阻力系数f');title('动力特性图');%% 爬坡度曲线图for i=1:length(ig);I(i,:)= (tan(asin((Ft(i,:)-(Ff(i,:)+Fw(i,:)))/(M*g))))*100; endfigure(7)hold onfor i=1:length(ig);if i==1plot(ua(i,:),I(i,:),'r');elseplot(ua(i,:),I(i,:),'k');endendhold ongrid onxlabel('车速(km/h)');ylabel('最大爬坡度(%)');legend('Ⅰ挡','高速档');title('爬坡度曲线图');%% 加速度曲线图deta=1+1/M*4*Iw/r^2+1/M*If*ig.^2*i0^2*eta/r^2; for i=1:length(ig);a(i,:)=(Ft(i,:)-Ff(i,:)-Fw(i,:))./deta(i)/M;if i==5for j=1:length(n)if a(i,j)<0a(i,j)=0;elseendendendendfigure(8)hold onfor i=1:length(ig);if i==1plot(ua(i,:),a(i,:),'r'); elseplot(ua(i,:),a(i,:),'k');endendhold ongrid onxlabel('车速(km/h)');ylabel('加速度a(m/s^2)');legend('Ⅰ档','高速档');title('加速度曲线图');axis([0 120 0 1.5])%% 加速度倒数曲线for i=1:length(ig);for j=1:length(n)b(i,j)=1./a(i,j);endendfigure(9)hold onfor i=1:length(ig)plot(ua(i,:),b(i,:),'k');endhold ongrid onxlabel('车速(km/h)');ylabel('各档加速度倒数1/a');legend('各档加速度倒数1/a曲线','Location','NorthWest'); title('各档加速度倒数曲线图');axis([0 120 0 10])ad1=b(1,:);ad2=ua(1,:);for i=1:(length(ig)-1);for j=1:length(n)if ua(i+1,j)>=ua(i,length(n)) flag(i)=j;break;endendad1=[ad1 b(i+1,j:length(n))]; ad2=[ad2 ua(i+1,j:length(n))];endfigure(10)hold onplot(ad2,ad1,'k');hold ongrid onxlabel('车速(km/h)');ylabel('加速度倒数1/a');legend('加速度倒数1/a曲线','Location','NorthWest');title('加速度倒数曲线图');axis([0 120 0 10])%% 加速时间曲线k=length(n);for i=1:length(ig);t(i,1)=0;for j=2:kt(i,j)=abs(ua(i,j)-ua(i,j-1))*(b(i,j)+b(i,j-1))/2;endendfor i=1:length(ig);for j=1:kat(i,j)=sum(t(i,1:j))/3.6;endendtotalat=at(1,:);for i=1:(length(ig)-1);for j=flag(i):ktotalat=[totalat totalat(length(totalat))+t(i+1,j)/3.6];endendfigure(11)hold onplot(totalat,ad2,'k');hold ongrid onxlabel('时间(s)');ylabel('车速(km/h)');legend('加速时间','Location','NorthWest'); title('加速时间曲线图');axis([0 100 0 120])Welcome To Download !!!欢迎您的下载,资料仅供参考!。

汽车整体动力性MATLAB仿真计算ppt

汽车整体动力性MATLAB仿真计算ppt

02
汽车整体动力性概述
汽车整体动力性的概念与特点
汽车整体动力性是指汽车在良好路 面上行驶时所表现出来的快速、安 全、稳定和舒适的运动性能。它包 括加速性能、减速性能、操控性能 、行驶平顺性和燃油经济性等多个 方面。这些性能的优劣直接影响到 驾驶员和乘客的感受以及车辆的运 行效率。
VS
汽车整体动力性的特点可以概括为 以下几点:综合性、时变性、非线 性以及不确定性。这些特点使得汽 车整体动力性的研究变得复杂和困 难,需要通过仿真计算等方法来进 行分析和优化。
汽车整体动力性的研究现状与发展趋势
国内外学者对汽车整体动力性的研究已经开展了多年,取得了很多成果。目前,常用的研究方法包括 实车试验、仿真计算和理论分析等。其中,仿真计算因为具有高效、安全、低成本等优点而得到了广 泛应用。
在发展趋势方面,未来的研究将更加注重以下几个方面:智能化仿真、多学科协同、精细化建模以及 多目标优化。通过这些研究,可以进一步提高汽车的整体动力性能,降低能耗和排放,满足人们对安 全、舒适和环保等方面的需求。
参数设置
根据车型和实际工况,设置仿真计算的参 数,如高程差、非铺装路面阻力等。
仿真计算
进行仿真计算,得出SUV在给定工况下的 动力性能,如爬坡能力、脱困能力等。
结果分析
对仿真计算结果进行分析,为车辆优化设 计提供依据。
某型跑车整体动力性仿真计算
模型建立
建立跑车整车模型,重点考虑空气动力学效应和轻量化设计。
续的优化和改进提供可靠的依据。
03
MATLAB仿真计算方法
MATLAB仿真计算的概念与特点
概念
MATLAB仿真计算是一种基于数值模拟方 法的计算技术,通过构建数学模型并利用 计算机进行模拟实验,以实现对现实系统 或过程的逼真再现。

汽车动力性 matlab程序

汽车动力性 matlab程序

%电动汽车的动力性计算% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%n1=[180:35:2000]n2=[2000:100:7200]im=2.93m=17000A=7.95CD=0.7R=0.475eta=0.92deta=1.29k=0.90i0=6.2E=180etab=0.95ua1=0.377*n1*R/(i0*im)%行驶速度ua2=0.377*n2*R/(i0*im)%行驶速度f1=0.0076+0.000056*ua1f2=0.0076+0.000056*ua2b0=447.52b1=-0.165465b2=3.60772*10^-5b3=-3.61349*10^-9 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure(1)Tm1=1146Tm2=b0+b1*(n2-4518.2)+b2*(n2-4518.25).^2+b3*(n2-4518.2).^3;F1=Tm1*im.*i0.*eta/R%驱动力F2=Tm2*im*i0*eta/R%驱动力ua1=0.377*n1*R/(i0*im)%行驶速度ua2=0.377*n2*R/(i0*im)%行驶速度Fw1=CD*A*ua1.^2/21.15Fw2=CD*A*ua2.^2/21.15Ff1=m*9.8*f1%滚动阻力Ff2=m*9.8*f2%滚动阻力Fz1=Ff1+Fw1Fz2=Ff2+Fw2plot(ua1,F1,ua2,F2,ua1,Fz1,ua2,Fz2)title('驱动力-行驶阻力平衡图')xlabel('ua/(km.h)')ylabel('F(N)')grid on %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure(2)Pe1=n1.*Tm1/9550;%发动机功率计算公式Pe2=n2.*Tm2/9550;%发动机功率计算公式Pef1=n1.*Fz1/9550;Pef2=n2.*Fz2/9550;plot(ua1,Pe1,ua2,Pe2)title('功率平衡图-驱动力')xlabel('ua/(km.h)')ylabel('P/kW')grid onfigure(3)plot(ua1,Pef1,ua2,Pef2)title('功率平衡图-阻力')xlabel('ua/(km.h)')ylabel('P/kW')grid on %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure(4)D1=(F1-Fw1)/(m*9.8)D2=(F2-Fw2)/(m*9.8)j1=sin(D1-f1.*((1+f1.^2-D1.^2)/(1+f1.^2)))j2=sin(D2-f2.*((1+f2.^2-D2.^2)/(1+f2.^2)))q1=asin(j1)q2=asin(j2)i1=tan(q1)%爬坡度i2=tan(q2)%爬坡度%dua/dt=9.8*(D-f)/deta%plot(ua1,j1,ua2,j2)title('爬坡度曲线')xlabel('ua/(km.h)')ylabel('角度')grid on %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure(5)aa1=9.8*(D1-f1)/detaaa2=9.8*(D2-f2)/detaplot(ua1,aa1,ua2,aa2)title('加速度曲线')xlabel('ua/(km.h)')ylabel('加速度(m.s^-2)')grid on %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure(6)aa1=9.8*(D1-f1)/detaaa2=9.8*(D2-f2)/detabb1=aa1.^-1bb2=aa2.^-1plot(ua1,bb1,ua2,bb2)title('加速度曲线')xlabel('ua/(km.h)')ylabel('加速度的倒数(s^-2。

Matlab中的车辆动力学建模与控制

Matlab中的车辆动力学建模与控制

Matlab中的车辆动力学建模与控制近年来,随着汽车工业的不断发展和智能化科技的快速进步,车辆动力学建模与控制成为了汽车工程领域中一项极具挑战性和潜力的研究方向。

在这个领域中,Matlab作为一种强大的数值计算工具和编程语言,被广泛应用于车辆的动力学建模和控制算法的设计中。

一、车辆动力学建模车辆动力学建模是指通过数学模型描述车辆在驱动力、制动力、操纵力等作用下的运动规律。

在Matlab中,我们可以利用多种方法进行动力学建模,其中最常用的是基于牛顿运动定律的传统力学方法。

首先,我们需了解车辆的基本参数,如质量、惯量、悬挂刚度等,以及车辆运动方程的形式。

在此基础上,我们可以利用Matlab的符号计算工具对车辆运动方程进行推导和求解。

通过建立车辆的动力学模型,可以更好地理解车辆在不同工况下的行为,并为后续的控制算法设计提供依据。

二、车辆控制算法设计车辆控制算法设计是指在车辆动力学模型的基础上,通过控制策略和算法的设计,实现对车辆运动特性的控制。

在Matlab中,我们可以基于建立的车辆动力学模型,采用多种控制方法进行控制算法设计。

其中,最常见的控制算法包括PID控制、模型预测控制(MPC)和适应性控制等。

PID控制是一种经典的反馈控制算法,可以通过调节比例、积分和微分系数来实现对车辆的稳定控制;模型预测控制则是一种基于系统模型的最优控制算法,通过优化问题的求解来获得最优的操纵策略;适应性控制是一种能够根据系统变化进行自适应调节的控制方法,可以在车辆动力学模型参数变化时仍然保持较好的性能。

通过Matlab的控制工具箱,我们可以方便地实现这些控制算法的设计和仿真。

同时,Matlab还提供了丰富的图形可视化工具,可以直观地展示车辆的运动轨迹和控制效果,帮助工程师深入理解和改进控制算法。

三、车辆动力学建模与控制应用车辆动力学建模与控制在汽车工程领域有着广泛的应用。

其中,最为重要的应用之一是车辆稳定性控制。

在高速行驶或突发情况下,车辆稳定性是至关重要的,对保证驾驶员和乘客的安全具有重要意义。

汽车系统动力学Matlab

汽车系统动力学Matlab

汽车系统动力学Matlab宇文皓月作业陈述小组成员:一、组内任务分配二、Matlab程序与图形1、分歧转向特性车辆在分歧车速下的系统特征根m=1000;I=1500;a1=1.15;b1=1.35;Caf=53000;Car=53 000;i=1;R=[];for uc=10:5:100;D=(I*(Caf+Car)+m*(a1^2*Caf+b1^2*Car))/(m*I*uc); S=(a1+b1)^2*Caf*Car/(m*I*uc^2)+(b1*Car-a1*Caf)/I;P=[1 D S];r=roots(P);R(i,1)=r(1,1);R(i,2)=r(2,1);i=i+1; endplot(real(R(:,1)),imag(R(:,1)),'bo'); holda2=1.25;b2=1.25;t=1;S=[];for uc=10:5:100P=[m 0;0 I];Q=[(Caf+Car)/uc,m*uc+(a2*Caf-b2*Car)/uc;(a2*Caf-b2*Car)/uc,(a2^2*Caf+b2^2*Car)/uc];R=[Caf;a2*Caf];A=-P^(-1)*Q;d=eig(A);i=imag(d);r=real(d);S(t,1)=r(1);S(t,2)=i(1);t=t+1;endplot(S(:,1),S(:,2),'*')a3=1.35;b3=1.15;for uc=10:5:100P=[m 0;0 I];Q=[(Caf+Car)/uc,m*uc+(a3*Caf-b3*Car)/uc;(a3*Caf-b3*Car)/uc,(a3^2*Caf+b3^2*Car)/uc];R=[Caf;a3*Caf];A=-P^(-1)*Q;d=eig(A);i=imag(d);r=real(d);S(t,1)=r(1);S(t,2)=i(1);t=t+1;endgrid onplot(S(:,1),S(:,2),'d');axis([-14 2 0 3]);xlabel('实轴(Re)');ylabel('虚轴(Im)');text(-8,2.8,'缺乏转向');text(0,0.2,'过多转向');text(-3,0.2,'中性转向')set(gca,'FontName','Helvetica','FontSize',10) title(['分歧转向特性车辆在分歧车速下的系统特征根'],'FontSize',12);2.1、具有分歧转向特性车辆的横摆角速度幅频和相频响应m=1000;I=1500;a1=1.15;a2=1.25;a3=1.35;b1=1.35;b2=1.25;b3=1.15;Caf=53000;Car=53000;D=[];C=[];M=[];uc=20;i=1;for f=0.1:0.1:10w=2*pi*f;E=[1 0;0 1];P=[m 0;0 I];R1=[Caf;a1*Caf];R2=[Caf;a2*Caf];R3=[Caf;a3*Caf];Q1=[(Caf+Car)/uc m*uc+(a1*Caf-b1*Car)/uc;(a1*Caf-b1*Car)/uc(a1^2*Caf+b1^2*Car)/uc];Q2=[(Caf+Car)/uc m*uc+(a2*Caf-b2*Car)/uc;(a2*Caf-b2*Car)/uc(a2^2*Caf+b2^2*Car)/uc];Q3=[(Caf+Car)/uc m*uc+(a3*Caf-b3*Car)/uc;(a3*Caf-b3*Car)/uc(a3^2*Caf+b3^2*Car)/uc];A1=-inv(P)*Q1;A2=-inv(P)*Q2;A3=-inv(P)*Q3;B1=inv(P)*R1;B2=inv(P)*R2;B3=inv(P)*R3;Hw1=-inv(A1-1i*w*E)*B1;Hw2=-inv(A2-1i*w*E)*B2;Hw3=-inv(A3-1i*w*E)*B3;D(i,1)=angle(Hw1(2))*180/pi;D(i,2)=abs(Hw1(2)); C(i,1)=angle(Hw2(2))*180/pi;C(i,2)=abs(Hw2(2));M(i,1)=angle(Hw3(2))*180/pi;M(i,2)=abs(Hw3(2)); i=i+1;endsubplot(2,1,1)f=0.1:0.1:10;semilogx(f,D(:,2),'k',f,C(:,2),'r-.',f,M(:,2)) grid onset(gca,'Xtick',[0.1,0.3,1.5,3,10])set(gca,'FontName','Helvetica','FontSize',10) legend('缺乏转向','中性转向','过多转向')title(['具有分歧转向特性车辆的横摆角速度幅频响应'],'FontSize',12);xlabel('频率/Hz')ylabel('横摆角速度增益/{(°/s)/(°)}')subplot(2,1,2)f=0.1:0.1:10;semilogx(f,D(:,1),'k',f,C(:,1),'r-.',f,M(:,1))m=1000;I=1500;a1=1.15;a2=1.25;a3=1.35;b1=1.35;b2=1.25;b3=1.15;Caf=53000;Car=53000;D=[];C=[];M=[];uc=20;i=1;for f=0.1:0.1:10w=2*pi*f;E=[1 0;0 1];P=[m 0;0 I];R1=[Caf;a1*Caf];R2=[Caf;a2*Caf];R3=[Caf;a3*Caf];Q1=[(Caf+Car)/uc m*uc+(a1*Caf-b1*Car)/uc;(a1*Caf-b1*Car)/uc(a1^2*Caf+b1^2*Car)/uc];Q2=[(Caf+Car)/uc m*uc+(a2*Caf-b2*Car)/uc;(a2*Caf-b2*Car)/uc(a2^2*Caf+b2^2*Car)/uc];Q3=[(Caf+Car)/uc m*uc+(a3*Caf-b3*Car)/uc;(a3*Caf-b3*Car)/uc(a3^2*Caf+b3^2*Car)/uc];A1=-inv(P)*Q1;A2=-inv(P)*Q2;A3=-inv(P)*Q3;B1=inv(P)*R1;B2=inv(P)*R2;B3=inv(P)*R3;Hw1=-inv(A1-1i*w*E)*B1;Hw2=-inv(A2-1i*w*E)*B2;Hw3=-inv(A3-1i*w*E)*B3;D(i,1)=angle(Hw1(2))*180/pi;D(i,2)=abs(Hw1(2)); C(i,1)=angle(Hw2(2))*180/pi;C(i,2)=abs(Hw2(2));M(i,1)=angle(Hw3(2))*180/pi;M(i,2)=abs(Hw3(2)); i=i+1;endsubplot(2,1,1)f=0.1:0.1:10;semilogx(f,D(:,2),'k',f,C(:,2),'r-.',f,M(:,2)) grid onset(gca,'Xtick',[0.1,0.3,1.5,3,10])set(gca,'FontName','Helvetica','FontSize',10) legend('缺乏转向','中性转向','过多转向')title(['具有分歧转向特性车辆的横摆角速度幅频响应'],'FontSize',12);xlabel('频率/Hz')ylabel('横摆角速度增益/{(°/s)/(°)}')subplot(2,1,2)f=0.1:0.1:10;semilogx(f,D(:,1),'k',f,C(:,1),'r-.',f,M(:,1)) grid onset(gca,'Xtick',[0.1,0.3,1.5,3,10])set(gca,'FontName','Helvetica','FontSize',10) legend('缺乏转向','中性转向','过多转向')title(['具有分歧转向特性车辆的横摆角速度相频响应'],'FontSize',12);xlabel('频率/Hz')ylabel('横摆角速度相位(°)')grid onset(gca,'Xtick',[0.1,0.3,1.5,3,10])set(gca,'FontName','Helvetica','FontSize',10) legend('缺乏转向','中性转向','过多转向')title(['具有分歧转向特性车辆的横摆角速度相频响应'],'FontSize',12);xlabel('频率/Hz')ylabel('横摆角速度相位(°)')2.2、具有分歧转向特性车辆的侧向加速度和相频响应m=1000;I=1500;a1=1.15;a2=1.25;a3=1.35;b1=1.35;b2=1.25;b3=1.15;Caf=53000;Car=53000;D=[];C=[];M=[];uc=20;L=a1+b1;i=1;for f=0.1:0.1:10w=2*pi*f;E=[1 0;0 1];Vi=w*I*Caf;Rr=L*Caf*Car/uc;Vr1=(L*b1*Caf*Car/uc-m*a1*Caf*uc);Vr2=(L*b2*Caf*Car/uc-m*a2*Caf*uc);Vr3=(L*b3*Caf*Car/uc-m*a3*Caf*uc);Ri1=w*m*a1*Caf;Ri2=w*m*a2*Caf;Ri3=w*m*a3*Caf;Dr1=-w^2*m*I+L^2*Caf*Car/(uc^2)+m*(b1*Car-a1*Caf);Dr2=-w^2*m*I+L^2*Caf*Car/(uc^2)+m*(b2*Car-a2*Caf);Dr3=-w^2*m*I+L^2*Caf*Car/(uc^2)+m*(b3*Car-a3*Caf);Di1=w*(I*(Caf+Car)+m*(a1^2*Caf+b1^2*Car))/uc;Di2=w*(I*(Caf+Car)+m*(a2^2*Caf+b2^2*Car))/uc;Di3=w*(I*(Caf+Car)+m*(a3^2*Caf+b3^2*Car))/uc;Hay1=1i*w*(Vr1+1i*Vi)/(Dr1+1i*Di1)+uc*(Rr+1i*R i1)/(Dr1+1i*Di1);Hay2=1i*w*(Vr2+1i*Vi)/(Dr2+1i*Di2)+uc*(Rr+1i*R i2)/(Dr2+1i*Di2);Hay3=1i*w*(Vr3+1i*Vi)/(Dr3+1i*Di3)+uc*(Rr+1i*R i3)/(Dr3+1i*Di3);D(i,1)=angle(Hay1)*180/pi;D(i,2)=abs(Hay1); C(i,1)=angle(Hay2)*180/pi;C(i,2)=abs(Hay2); M(i,1)=angle(Hay3)*180/pi;M(i,2)=abs(Hay3); i=i+1;endsubplot(2,1,1)f=0.1:0.1:10;semilogx(f,D(:,2)*(pi/(180*9.8)),'k',f,C(:,2)* (pi/(180*9.8)),'r-.',f,M(:,2)*(pi/(180*9.8))) grid onset(gca,'XTick',[0.1 0.3 1 3 10])set(gca,'FontName','Helvetica','FontSize',10) legend('缺乏转向','中性转向','过多转向')title(['具有分歧转向特性车辆的侧向加速度幅频响应'],'FontSize',12);xlabel('频率/Hz')ylabel('侧向加速度增益/[g/(°)]')subplot(2,1,2)f=0.1:0.1:10;semilogx(f,D(:,1),'k',f,C(:,1),'r-.',f,M(:,1)) grid onlegend('缺乏转向','中性转向','过多转向')set(gca,'XTick',[0.1 0.3 1 3 10])set(gca,'FontName','Helvetica','FontSize',10)title(['具有分歧转向特性车辆的侧向加速度幅频响应'],'FontSize',12);axis([0.1 10 -120 120])xlabel('频率/Hz')ylabel('侧向加速度相位(°)')2.3、 ABS控制器设计w0=120;v0=30;Tb=600;ki=4500;kd=5000;Ts=0.05;Iw =12;rd=0.25;uh=0.8;ug=0.6;s0=0.2;m=300;g=9.8;w=[];v=[];s=[];w(1)=120;v(1)=30;s(1)=0;k=0;i=2;while(v0>0)k=k+1;sb=(v0-rd*w0)/v0;s(i)=sb;if sb<=s0u=uh/s0*sb;else u=(uh-ug*s0)/(1-s0)-rd*sb; endFxb=u*m*g;if sb>0.22Tb=Tb-kd*Ts;elseif sb<0.18Tb=Tb+ki*Ts;else Tb=Tb;endw0=w0+(Fxb*rd-Tb)/Iw*Ts;w(i)=w0;v0=v0-Fxb/m*Ts;v(i)=v0;i=i+1;endt=[0:Ts:Ts*k];subplot(2,1,1)plot(t,v,t,w*rd);grid onlegend('车轮前进速度','车轮线速度');set(gca,'FontName','Helvetica','FontSize',10) title(['车轮前进速度与车轮线速度关系曲线'],'FontSize',12);xlabel('时间/(s)');ylabel('速度/(m/s)');axis([0,Ts*k,0,32]);subplot(2,1,2)plot(t,s);axis([0,Ts*k,0,1]);grid onset(gca,'FontName','Helvetica','FontSize',10) title(['ABS控制的滑移率时域仿真结果'],'FontSize',12);xlabel('时间/(s)');ylabel('滑移率');set(gca,'Ytick',0:0.2:1)3、扭振系统振型图J1=[1.986*10^(-3);1.910*10^(-3);1.931*10^(-3);1.931*10^(-3);1.910*10^(-3);1.924*10^(-3);7.8426*10^(-2);2.258*10^(-3);2.641*10^(-2);2.91*10^(-3);2.51*10^(-3);1.77*10^(-3);7.836*10^(-2);3.238];K1=[7.95*10^4;7.95*10^4;6.95*10^4;7.95*10^4;7.95*10^4;6.90*10^4;8.93*10^3;1.41*10^4;1.02*10^4;4.4*10^3;1.38*10^4;1.616*10^2;2.51*10^2];J=diag(J1);K(1,1)=K1(1);K(1,2)=-K1(1);i=2;for i=2:13;K(i,i-1)=-K1(i-1);K(i,i)=K1(i-1)+K1(i);K(i,i+1)=-K1(i);endK(14,13)=-K1(13);K(14,14)=K1(13);A=inv(J)*K;[G,D]=eig(A);f=sqrt(D)/(2*pi);m=1;while m<=14G(:,m)=G(:,m)/G(1,m)m=m+1endsubplot(3,2,1)plot((G(:,13)))xlabel('质点号');set(gca,'FontName','Helvetica','FontSize',10) grid ontitle(['单节点振型图(4.26Hz)'],'FontSize',12) axis([1 15 -0.2 1.1])subplot(3,2,2)plot(G(:,12))xlabel('质点号');set(gca,'FontName','Helvetica','FontSize',10) grid onaxis([1 15 -5 1.2])title(['双节点振型图(11.99Hz)'],'FontSize',12)subplot(3,2,3)plot(G(:,11))xlabel('质点号');set(gca,'FontName','Helvetica','FontSize',10) grid onaxis([1 15 -7 1.2])title(['三节点振型图 (73.9Hz)'],'FontSize',12) subplot(3,2,4)plot(G(:,10))xlabel('质点号');set(gca,'FontName','Helvetica','FontSize',10) grid ontitle(['四节点振型图 (147.7Hz)'],'FontSize',12) axis([1 15 -9 37])subplot(3,2,5)plot(G(:,9))xlabel('质点号');set(gca,'FontName','Helvetica','FontSize',10) grid onaxis([1 15 -0.2 1.1])title(['五节点振型图 (252Hz)'],'FontSize',12) 5、福特Granada轿车后悬架单轮模型频率响应函数和系统相应输入功率谱密度mb=317.5;mw=45.4;ks=22000;kt=192000;cs=1500;Go =5*10^(-6);Uc=20;n=1;B=[];D=[];for f=0:0.01:15w=2*pi*f;Sf=4.47*10^(-4)*power(f,-2.5);A=[i*cs*w+(ks+kt-w^2*mw),-i*cs*w-ks;-i*cs*w-ks,i*cs*w+(ks-mb*w^2)];C=[kt;0];D=-A^(-1)*C;B(1,n)=abs(D(2)-D(1));B(2,n)=abs(-D(2)*w^2);B(3,n)=abs(kt*(D(1)-1));B(4,n)=Sf;B(5,n)=B(2,n)^2*Sf;B(6,n)=B(1,n)^2*Sf;B(7,n)=B(3,n)^2*Sf;n=n+1;endf=0:0.01:15subplot(3,2,1)plot(f,B(1,:));xlabel('频率/Hz')ylabel('悬架动行程增益')grid onsubplot(3,2,2);plot(f,B(2,:));grid onxlabel('频率/Hz')ylabel('不舒适性参数增益/[(m/s^2)/m]') subplot(3,2,3);plot(f,B(3,:));grid onxlabel('频率/Hz')ylabel('轮胎动载荷增益/[N/m]')subplot(3,2,4)plot(f,B(6,:));xlabel('频率/Hz')ylabel('悬架动行程功率谱密度/[m^2/Hz]') grid onsubplot(3,2,5);plot(f,B(5,:));grid onxlabel('频率/Hz')ylabel('不舒适性功率谱密度/[(m/s^2)^2/Hz]') subplot(3,2,6);plot(f,B(7,:));grid onxlabel('频率/Hz')ylabel('轮胎动载荷功率谱密度/[N^2/Hz]')6、魔术公式xdata = [0 0.78 1.88 2.79 3.80 4.82 6.29 7.82 9.31 11.80];ydata = [0 7.99 16.05 20.65 23.82 26.00 27.78 28.87 29.65 30.09];zdata = [0 1.65 1.61 0.77 -0.21 -1.03 -1.90 -2.59 -2.61 -2.68];a0 = [11 1 0.8 1];b0 = [1 1 0.8 1];a = lsqcurvefit(@fun1, a0, xdata, ydata);b = lsqcurvefit(@fun2, b0, xdata, zdata);yy = fun1(a,xdata);zz = fun2(b,xdata);subplot(2,1,1)hold onscatter(xdata, ydata);grid onplot(xdata, yy);set(gca,'FontName','Helvetica','FontSize',10) title(['MF公式拟合轮胎侧偏力-侧偏角曲线'],'FontSize',12);xlabel('侧偏角α/(°)')ylabel('侧偏力 Fy/(N)')subplot(2,1,2)hold on;scatter(xdata,zdata);grid onplot(xdata, zz);set(gca,'FontName','Helvetica','FontSize',10) title(['MF公式拟合轮胎回正力矩-侧偏角曲线'],'FontSize',12);xlabel('侧偏角α/(°)')ylabel('回正力矩Mz/(N·m)')function y = fun1(a,xdata);y=a(1)*sin(a(2)*atan(a(3)*xdata-a(4)*(a(3)*xdata-atan(a(3)*xdata))))function z = fun2(b,xdata);z=b(1)*sin(b(2)*atan(b(3)*xdata-b(4)*(b(3)*xdata-atan(b(3)*xdata))))三、结论通过实际Matlab编程,不但巩固了课堂知识,而且学以致用,更加深入地了解到了应该如何运用,解决问题。

simulink-matlab车辆动力学

simulink-matlab车辆动力学

simulink-matlab车辆动力学
Simulink-Matlab车辆动力学是一种使列车轨迹跟踪能够更准确有序地执行的技术,可以将车辆运动解耦,实现两种形式的控制-先行自动路径控制和列车自动化控制。

Simulink-Matlab车辆动力学使用一种面向对象的方法,用块图的形式表示车辆的动力学和控制模型,以及它的参数。

通过面向对象的建模,专门从车辆动力学模型出发,解决了车辆控制的难题。

Simulink-Matlab车辆动力学的模型可以模拟复杂的运动特性,如诱导电流、特定驱动器、驱动器延迟、侧滑、坡度、制动等特性。

此外,还能够准确地模拟起始加速量,起步位移,平衡质量,转矩等参数,并且能够根据即时轨道问题分析处理变化,以及模拟不同类型的列车模型。

另外,Simulink-Matlab车辆动力学还可以用于应用模拟,例如切线方向控制、分布式控制以及动态系统控制等。

此外,它还包括状态变量的追踪、主动定位系统的动态追踪,以及参数估计。

总体而言,Simulink-Matlab车辆动力学可以用来实现自动化的列车控制,在精度和效率上都有较大的提高,相较于传统的列车控制方法,可以更精确准确地模拟车辆的运动特性,有助于实现较好的运营管理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汽车系统动力学Matlab作业报告小组成员:一、组任务分配二、Matlab程序与图形1、不同转向特性车辆在不同车速下的系统特征根m=1000;I=1500;a1=1.15;b1=1.35;Caf=53000;Car=53000; i=1;R=[];for uc=10:5:100;D=(I*(Caf+Car)+m*(a1^2*Caf+b1^2*Car))/(m*I*uc);S=(a1+b1)^2*Caf*Car/(m*I*uc^2)+(b1*Car-a1*Caf)/I;P=[1 D S];r=roots(P);R(i,1)=r(1,1);R(i,2)=r(2,1);i=i+1;endplot(real(R(:,1)),imag(R(:,1)),'bo');holda2=1.25;b2=1.25;t=1;S=[];for uc=10:5:100P=[m 0;0 I];Q=[(Caf+Car)/uc,m*uc+(a2*Caf-b2*Car)/uc;(a2*Caf-b2*Car)/uc,(a2 ^2*Caf+b2^2*Car)/uc];R=[Caf;a2*Caf];A=-P^(-1)*Q;d=eig(A);i=imag(d);r=real(d);S(t,1)=r(1);S(t,2)=i(1);t=t+1;endplot(S(:,1),S(:,2),'*')a3=1.35;b3=1.15;for uc=10:5:100P=[m 0;0 I];Q=[(Caf+Car)/uc,m*uc+(a3*Caf-b3*Car)/uc;(a3*Caf-b3*Car)/uc,(a3^2*Caf+b3^2*Car)/uc];R=[Caf;a3*Caf];A=-P^(-1)*Q;d=eig(A);i=imag(d);r=real(d);S(t,1)=r(1);S(t,2)=i(1);t=t+1;endgrid onplot(S(:,1),S(:,2),'d');axis([-14 2 0 3]);xlabel('实轴(Re)');ylabel('虚轴(Im)');text(-8,2.8,'不足转向');text(0,0.2,'过多转向');text(-3,0.2,'中性转向')set(gca,'FontName','Helvetica','FontSize',10)title(['不同转向特性车辆在不同车速下的系统特征根'],'FontSize',12);2.1、具有不同转向特性车辆的横摆角速度幅频和相频响应m=1000;I=1500;a1=1.15;a2=1.25;a3=1.35;b1=1.35;b2=1.25;b3=1.15;Caf=53000;Car=53000;D=[];C=[];M=[];uc=20;i=1;for f=0.1:0.1:10w=2*pi*f;E=[1 0;0 1];P=[m 0;0 I];R1=[Caf;a1*Caf];R2=[Caf;a2*Caf];R3=[Caf;a3*Caf];Q1=[(Caf+Car)/ucm*uc+(a1*Caf-b1*Car)/uc;(a1*Caf-b1*Car)/uc (a1^2*Caf+b1^2*Car)/uc];Q2=[(Caf+Car)/ucm*uc+(a2*Caf-b2*Car)/uc;(a2*Caf-b2*Car)/uc (a2^2*Caf+b2^2*Car)/uc];Q3=[(Caf+Car)/ucm*uc+(a3*Caf-b3*Car)/uc;(a3*Caf-b3*Car)/uc (a3^2*Caf+b3^2*Car)/uc];A1=-inv(P)*Q1;A2=-inv(P)*Q2;A3=-inv(P)*Q3;B1=inv(P)*R1;B2=inv(P)*R2;B3=inv(P)*R3;Hw1=-inv(A1-1i*w*E)*B1;Hw2=-inv(A2-1i*w*E)*B2;Hw3=-inv(A3-1i*w*E)*B3;D(i,1)=angle(Hw1(2))*180/pi;D(i,2)=abs(Hw1(2));C(i,1)=angle(Hw2(2))*180/pi;C(i,2)=abs(Hw2(2));M(i,1)=angle(Hw3(2))*180/pi;M(i,2)=abs(Hw3(2));i=i+1;endsubplot(2,1,1)f=0.1:0.1:10;semilogx(f,D(:,2),'k',f,C(:,2),'r-.',f,M(:,2))grid onset(gca,'Xtick',[0.1,0.3,1.5,3,10])set(gca,'FontName','Helvetica','FontSize',10)legend('不足转向','中性转向','过多转向')title(['具有不同转向特性车辆的横摆角速度幅频响应'],'FontSize',12); xlabel('频率/Hz')ylabel('横摆角速度增益/{(°/s)/(°)}')subplot(2,1,2)f=0.1:0.1:10;semilogx(f,D(:,1),'k',f,C(:,1),'r-.',f,M(:,1))m=1000;I=1500;a1=1.15;a2=1.25;a3=1.35;b1=1.35;b2=1.25;b3=1.15;Caf=53000;Car=53000;D=[];C=[];M=[];uc=20;i=1;for f=0.1:0.1:10w=2*pi*f;E=[1 0;0 1];P=[m 0;0 I];R1=[Caf;a1*Caf];R2=[Caf;a2*Caf];R3=[Caf;a3*Caf];Q1=[(Caf+Car)/ucm*uc+(a1*Caf-b1*Car)/uc;(a1*Caf-b1*Car)/uc (a1^2*Caf+b1^2*Car)/uc];Q2=[(Caf+Car)/ucm*uc+(a2*Caf-b2*Car)/uc;(a2*Caf-b2*Car)/uc (a2^2*Caf+b2^2*Car)/uc];Q3=[(Caf+Car)/ucm*uc+(a3*Caf-b3*Car)/uc;(a3*Caf-b3*Car)/uc (a3^2*Caf+b3^2*Car)/uc];A1=-inv(P)*Q1;A2=-inv(P)*Q2;A3=-inv(P)*Q3;B1=inv(P)*R1;B2=inv(P)*R2;B3=inv(P)*R3;Hw1=-inv(A1-1i*w*E)*B1;Hw2=-inv(A2-1i*w*E)*B2;Hw3=-inv(A3-1i*w*E)*B3;D(i,1)=angle(Hw1(2))*180/pi;D(i,2)=abs(Hw1(2));C(i,1)=angle(Hw2(2))*180/pi;C(i,2)=abs(Hw2(2));M(i,1)=angle(Hw3(2))*180/pi;M(i,2)=abs(Hw3(2));i=i+1;endsubplot(2,1,1)f=0.1:0.1:10;semilogx(f,D(:,2),'k',f,C(:,2),'r-.',f,M(:,2))grid onset(gca,'Xtick',[0.1,0.3,1.5,3,10])set(gca,'FontName','Helvetica','FontSize',10)legend('不足转向','中性转向','过多转向')title(['具有不同转向特性车辆的横摆角速度幅频响应'],'FontSize',12); xlabel('频率/Hz')ylabel('横摆角速度增益/{(°/s)/(°)}')subplot(2,1,2)f=0.1:0.1:10;semilogx(f,D(:,1),'k',f,C(:,1),'r-.',f,M(:,1))grid onset(gca,'Xtick',[0.1,0.3,1.5,3,10])set(gca,'FontName','Helvetica','FontSize',10)legend('不足转向','中性转向','过多转向')title(['具有不同转向特性车辆的横摆角速度相频响应'],'FontSize',12); xlabel('频率/Hz')ylabel('横摆角速度相位(°)')grid onset(gca,'Xtick',[0.1,0.3,1.5,3,10])set(gca,'FontName','Helvetica','FontSize',10)legend('不足转向','中性转向','过多转向')title(['具有不同转向特性车辆的横摆角速度相频响应'],'FontSize',12); xlabel('频率/Hz')ylabel('横摆角速度相位(°)')2.2、具有不同转向特性车辆的侧向加速度和相频响应m=1000;I=1500;a1=1.15;a2=1.25;a3=1.35;b1=1.35;b2=1.25;b3=1.15;Caf=53000;Car=53000;D=[];C=[];M=[];uc=20;L=a1+b1;i=1;for f=0.1:0.1:10w=2*pi*f;E=[1 0;0 1];Vi=w*I*Caf;Rr=L*Caf*Car/uc;Vr1=(L*b1*Caf*Car/uc-m*a1*Caf*uc);Vr2=(L*b2*Caf*Car/uc-m*a2*Caf*uc);Vr3=(L*b3*Caf*Car/uc-m*a3*Caf*uc);Ri1=w*m*a1*Caf;Ri2=w*m*a2*Caf;Ri3=w*m*a3*Caf;Dr1=-w^2*m*I+L^2*Caf*Car/(uc^2)+m*(b1*Car-a1*Caf);Dr2=-w^2*m*I+L^2*Caf*Car/(uc^2)+m*(b2*Car-a2*Caf);Dr3=-w^2*m*I+L^2*Caf*Car/(uc^2)+m*(b3*Car-a3*Caf);Di1=w*(I*(Caf+Car)+m*(a1^2*Caf+b1^2*Car))/uc;Di2=w*(I*(Caf+Car)+m*(a2^2*Caf+b2^2*Car))/uc;Di3=w*(I*(Caf+Car)+m*(a3^2*Caf+b3^2*Car))/uc;Hay1=1i*w*(Vr1+1i*Vi)/(Dr1+1i*Di1)+uc*(Rr+1i*Ri1)/(Dr1+1i*Di1);Hay2=1i*w*(Vr2+1i*Vi)/(Dr2+1i*Di2)+uc*(Rr+1i*Ri2)/(Dr2+1i*Di2);Hay3=1i*w*(Vr3+1i*Vi)/(Dr3+1i*Di3)+uc*(Rr+1i*Ri3)/(Dr3+1i*Di3);D(i,1)=angle(Hay1)*180/pi;D(i,2)=abs(Hay1);C(i,1)=angle(Hay2)*180/pi;C(i,2)=abs(Hay2);M(i,1)=angle(Hay3)*180/pi;M(i,2)=abs(Hay3);i=i+1;endsubplot(2,1,1)f=0.1:0.1:10;semilogx(f,D(:,2)*(pi/(180*9.8)),'k',f,C(:,2)*(pi/(180*9.8)),'r-.',f,M(:,2)*( pi/(180*9.8)))grid onset(gca,'XTick',[0.1 0.3 1 3 10])set(gca,'FontName','Helvetica','FontSize',10)legend('不足转向','中性转向','过多转向')title(['具有不同转向特性车辆的侧向加速度幅频响应'],'FontSize',12); xlabel('频率/Hz')ylabel('侧向加速度增益/[g/(°)]')subplot(2,1,2)f=0.1:0.1:10;semilogx(f,D(:,1),'k',f,C(:,1),'r-.',f,M(:,1))grid onlegend('不足转向','中性转向','过多转向')set(gca,'XTick',[0.1 0.3 1 3 10])set(gca,'FontName','Helvetica','FontSize',10)title(['具有不同转向特性车辆的侧向加速度幅频响应'],'FontSize',12); axis([0.1 10 -120 120])xlabel('频率/Hz')ylabel('侧向加速度相位(°)')2.3、ABS控制器设计w0=120;v0=30;Tb=600;ki=4500;kd=5000;Ts=0.05;Iw=12; rd=0.25;uh=0.8;ug=0.6;s0=0.2;m=300;g=9.8;w=[];v=[];s=[];w(1)=120;v(1)=30;s(1)=0;k=0;i=2;while(v0>0)k=k+1;sb=(v0-rd*w0)/v0;s(i)=sb;if sb<=s0u=uh/s0*sb;else u=(uh-ug*s0)/(1-s0)-rd*sb; endFxb=u*m*g;if sb>0.22Tb=Tb-kd*Ts;elseif sb<0.18Tb=Tb+ki*Ts;else Tb=Tb;endw0=w0+(Fxb*rd-Tb)/Iw*Ts;w(i)=w0;v0=v0-Fxb/m*Ts;v(i)=v0;i=i+1;endt=[0:Ts:Ts*k];subplot(2,1,1)plot(t,v,t,w*rd);grid onlegend('车轮前进速度','车轮线速度');set(gca,'FontName','Helvetica','FontSize',10)title(['车轮前进速度与车轮线速度关系曲线'],'FontSize',12); xlabel('时间/(s)');ylabel('速度/(m/s)');axis([0,Ts*k,0,32]);subplot(2,1,2)plot(t,s);axis([0,Ts*k,0,1]);grid onset(gca,'FontName','Helvetica','FontSize',10)title(['ABS控制的滑移率时域仿真结果'],'FontSize',12); xlabel('时间/(s)');ylabel('滑移率');set(gca,'Ytick',0:0.2:1)3、扭振系统振型图J1=[1.986*10^(-3);1.910*10^(-3);1.931*10^(-3);1.931*10^(-3);1.91 0*10^(-3);1.924*10^(-3);7.8426*10^(-2);2.258*10^(-3);2.641*10 ^(-2);2.91*10^(-3);2.51*10^(-3);1.77*10^(-3);7.836*10^(-2);3.238];K1=[7.95*10^4;7.95*10^4;6.95*10^4;7.95*10^4;7.95*10^4;6.90*10 ^4;8.93*10^3;1.41*10^4;1.02*10^4;4.4*10^3;1.38*10^4;1.616*10^2;2.51*10^2];J=diag(J1);K(1,1)=K1(1);K(1,2)=-K1(1);i=2;for i=2:13;K(i,i-1)=-K1(i-1);K(i,i)=K1(i-1)+K1(i);K(i,i+1)=-K1(i);endK(14,13)=-K1(13);K(14,14)=K1(13);A=inv(J)*K;[G,D]=eig(A);f=sqrt(D)/(2*pi);m=1;while m<=14G(:,m)=G(:,m)/G(1,m)m=m+1endsubplot(3,2,1)plot((G(:,13)))xlabel('质点号');set(gca,'FontName','Helvetica','FontSize',10) grid ontitle(['单节点振型图(4.26Hz)'],'FontSize',12)axis([1 15 -0.2 1.1])subplot(3,2,2)plot(G(:,12))xlabel('质点号');set(gca,'FontName','Helvetica','FontSize',10) grid onaxis([1 15 -5 1.2])title(['双节点振型图(11.99Hz)'],'FontSize',12) subplot(3,2,3)plot(G(:,11))xlabel('质点号');set(gca,'FontName','Helvetica','FontSize',10) grid onaxis([1 15 -7 1.2])title(['三节点振型图(73.9Hz)'],'FontSize',12) subplot(3,2,4)plot(G(:,10))xlabel('质点号');set(gca,'FontName','Helvetica','FontSize',10) grid ontitle(['四节点振型图(147.7Hz)'],'FontSize',12) axis([1 15 -9 37])subplot(3,2,5)plot(G(:,9))xlabel('质点号');set(gca,'FontName','Helvetica','FontSize',10) grid onaxis([1 15 -0.2 1.1])title(['五节点振型图(252Hz)'],'FontSize',12)5、福特Granada轿车后悬架单轮模型频率响应函数和系统相应输入功率谱密度mb=317.5;mw=45.4;ks=22000;kt=192000;cs=1500;Go=5*10^(-6); Uc=20;n=1;B=[];D=[];for f=0:0.01:15w=2*pi*f;Sf=4.47*10^(-4)*power(f,-2.5);A=[i*cs*w+(ks+kt-w^2*mw),-i*cs*w-ks;-i*cs*w-ks,i*cs*w+(ks-mb*w ^2)];C=[kt;0];D=-A^(-1)*C;B(1,n)=abs(D(2)-D(1));B(2,n)=abs(-D(2)*w^2);B(3,n)=abs(kt*(D(1)-1));B(4,n)=Sf;B(5,n)=B(2,n)^2*Sf;B(6,n)=B(1,n)^2*Sf;B(7,n)=B(3,n)^2*Sf;n=n+1;endf=0:0.01:15subplot(3,2,1)plot(f,B(1,:));xlabel('频率/Hz')ylabel('悬架动行程增益')grid onsubplot(3,2,2);plot(f,B(2,:));grid onxlabel('频率/Hz')ylabel('不舒适性参数增益/[(m/s^2)/m]') subplot(3,2,3);plot(f,B(3,:));grid onxlabel('频率/Hz')ylabel('轮胎动载荷增益/[N/m]')subplot(3,2,4)plot(f,B(6,:));xlabel('频率/Hz')ylabel('悬架动行程功率谱密度/[m^2/Hz]') grid onsubplot(3,2,5);plot(f,B(5,:));grid onxlabel('频率/Hz')ylabel('不舒适性功率谱密度/[(m/s^2)^2/Hz]') subplot(3,2,6);plot(f,B(7,:));grid onxlabel('频率/Hz')ylabel('轮胎动载荷功率谱密度/[N^2/Hz]')6、魔术公式xdata = [0 0.78 1.88 2.79 3.80 4.82 6.29 7.82 9.31 11.80];ydata = [0 7.99 16.05 20.65 23.82 26.00 27.78 28.87 29.65 30.09]; zdata = [0 1.65 1.61 0.77 -0.21 -1.03 -1.90 -2.59 -2.61 -2.68];a0 = [11 1 0.8 1];b0 = [1 1 0.8 1];a = lsqcurvefit(fun1, a0, xdata, ydata);b = lsqcurvefit(fun2, b0, xdata, zdata);yy = fun1(a,xdata);zz = fun2(b,xdata);subplot(2,1,1)hold onscatter(xdata, ydata);grid onplot(xdata, yy);set(gca,'FontName','Helvetica','FontSize',10)title(['MF公式拟合轮胎侧偏力-侧偏角曲线'],'FontSize',12);xlabel('侧偏角α/(°)')ylabel('侧偏力Fy/(N)')subplot(2,1,2)hold on;scatter(xdata,zdata);grid onplot(xdata, zz);set(gca,'FontName','Helvetica','FontSize',10)title(['MF公式拟合轮胎回正力矩-侧偏角曲线'],'FontSize',12);xlabel('侧偏角α/(°)')ylabel('回正力矩Mz/(N·m)')function y = fun1(a,xdata);y=a(1)*sin(a(2)*atan(a(3)*xdata-a(4)*(a(3)*xdata-atan(a(3)*xdata))))function z = fun2(b,xdata);z=b(1)*sin(b(2)*atan(b(3)*xdata-b(4)*(b(3)*xdata-atan(b(3)*xdata))) )三、结论通过实际Matlab编程,不仅巩固了课堂知识,并且学以致用,更加深入地了解到了应该如何运用,解决问题。

相关文档
最新文档