汽车动力性计算matlab程序.docx
《汽车动力性计算matlab程序.docx》由会员分享,可在线阅读,更多相关《汽车动力性计算matlab程序.docx(9页珍藏版)》请在冰豆网上搜索。
汽车动力性计算matlab程序
%%汽车动力性计算(自己编的动力性计算程序,供大家计算动力性时参考,具体参数大家根据所给程序对应输入,并对坐标轴数值按需要进行修改)
clc;clear;
closeall;
%%根据所给发动机数据拟合外特性曲线(发动机数据按照你所得到的数据进行输入)
n_test=[5006007008009001000110012001300140015001600170018001900200021002200];
T_test=[97511081298149615461620167017851974197419701889182917481669170015241105];
figure
(1)
plot(n_test,T_test,'g');
holdon
gridon
%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.072.161.481.00.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)
holdon
gridon
fori=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('发动机外特性曲线');
%%各挡位速度曲线
%计算各挡位车速
fori=1:
length(ig);
ua(i,:
)=0.377*r*n/ig(i)/i0;
end
%计算各档位最高车速
uamax=ua(:
length(ua(1,:
)));
figure(3)
holdon
fori=1:
length(ig);
plot(n,ua(i,:
),'k');
end
holdon
gridon
xlabel('转速n(r/min)');
ylabel('各挡位车速(km/h)');
title('各挡位车速-转速表');
legend('1挡车速','2挡车速','3挡车速','4挡车速','5挡车速');
%%驱动力和行驶阻力平衡图
%计算滚动阻力系数
fori=1:
length(ig);
f(i,:
)=f0+f1*(ua(i,:
)/100)+f4*(ua(i,:
)/100).A4;
end%计算滚动阻力
fori=1:
length(ig);
Ff(i,:
)=c*M*g*f(i,:
);
end
%计算空气阻力
fori=1:
length(ig);
Fw(i,:
)=CD*A*(ua(i,:
).A2)/21.15;
end
%计算行驶阻力
fori=1:
length(ig);
F(i,:
)=Ff(i,:
)+Fw(i,:
);
end
%计算汽车驱动力
fori=1:
length(ig);
Ft(i,:
)=Ttq*ig(i)*i0*eta/r;
end
figure(4)
holdon
fori=1:
length(ig);
plot(ua(i,:
),Ft(i,:
),'k');
plot(ua(i,:
),F(i,:
),'r');
plot(ua(i,:
),Ff(i,:
),'b');
end
holdon
gridon
xlabel('车速(km/h)');
ylabel('驱动力、行驶阻力(N)');
legend('驱动力Ft','行驶阻力Ff+Fw','滚动阻力Ff');
title('驱动力-行驶阻力平衡图');
%%汽车功率平衡图
%计算各档位功率
fori=1:
length(ig);
P(i,:
)=Ft(i,:
).*ua(i,:
)/(3600*eta);
end
%计算风阻阻力功率
fori=1:
length(ig);
Pw(i,:
)=CD*A*ua(i,:
).A3/(76140*eta);
end
%计算滚动阻力功率
fori=1:
length(ig);
Pf(i,:
)=M*g*f(i,:
).*ua(i,:
)/(3600*eta);
end
%计算总阻力功率
fori=1:
length(ig);
Pz(i,:
)=Pw(i,:
)+Pf(i,:
);
end
figure(5)
holdon
fori=1:
length(ig);
plot(ua(i,:
),P(i,:
),'k');
plot(ua(i,:
),Pz(i,:
),'r');
end
holdon
gridon
xlabel('车速(km/h)');
ylabel('发动机功率、阻力功率(kW)');
legend('发动机功率P','阻力功率Pz','Location','NorthWest');
title('功率平衡图');
%%动力特性图(动力因数图)
fori=1:
length(ig);
D(i,:
)=(Ft(i,:
)-Fw(i,:
))/M/g;
end
figure(6)
holdon
fori=1:
length(ig);
plot(ua(i,:
),D(i,:
),'k');
plot(ua(i,:
),f(i,:
),'r');
end
holdon
gridon
xlabel('车速(km/h)');
ylabel('动力因数D');
legend('动力因数D','滚动阻力系数f');
title('动力特性图');
%%爬坡度曲线图
fori=1:
length(ig);
I(i,:
)=(tan(asin((Ft(i,:
)-(Ff(i,:
)+Fw(i,:
)))/(M*g))))*100;
end
figure(7)
holdonfori=1:
length(ig);
ifi==1
plot(ua(i,:
),I(i,:
),'r');
else
plot(ua(i,:
),I(i,:
),'k');
end
end
holdon
gridon
xlabel('车速(km/h)');
ylabel('最大爬坡度(%)');
legend('I捋高速档');
title('爬坡度曲线图');
%%加速度曲线图
deta=1+1/M*4*Iw/rA2+1/M*If*ig.A2*i0A2*eta/rA2;
fori=1:
length(ig);
a(i,:
)=(Ft(i,:
)-Ff(i,:
)-Fw(i,:
))./deta(i)/M;
ifi==5
forj=1:
length(n)
irawAo
aw)占
e-seendendendendfigured)
ho-donfornl」engfh(ig=
p_of(ua(i..)£D(i..)<=
e-se
p_of(ua(L)a(L)-3
end
end
ho-don
gridon
x_abe_(->B(km、h))
y-abe-(-nuBMa(m、s>2))
legend('I档高速档');
title('加速度曲线图');
axis([012001.5])
%%加速度倒数曲线
fori=1:
length(ig);
forj=1:
length(n)
b(i,j)=1./a(i,j);
end
end
figure(9)
holdon
fori=1:
length(ig)
plot(ua(i,:
),b(i,:
),'k');
end
holdon
gridon
xlabel('车速(km/h)');
ylabel('各档加速度倒数1/a');
legend('各档加速度倒数1/a曲线','Location','NorthWest');
title('各档加速度倒数曲线图');
axis([0120010])ad1=b(1,:
);
ad2=ua(1,:
);
fori=1:
(length(ig)-1);
forj=1:
length(n)
ifua(i+1,j)>=ua(i,length(n))
flag(i)=j;
break;
end
end
ad1=[ad1b(i+1,j:
length(n))];
ad2=[ad2ua(i+1,j:
length(n))];
end
figure(10)
holdon
plot(ad2,ad1,'k');
holdon
gridon
xlabel('车速(km/h)');
ylabel('加速度倒数1/a');legend('加速度倒数1/a曲线','Location','NorthWest');title('加速度倒数曲线图');
axis([0120010])
%%加速时间曲线
k=length(n);
fori=1:
length(ig);
t(i,1)=0;
forj=2:
k
t(i,j)=abs(ua(i,j)-ua(i,j-1))*(b(i,j)+b(i,j-1))/2;
end
end
fori=1:
length(ig);
forj=1:
k
at(i,j)=sum(t(i,1:
j))/3.6;
end
end
totalat=at(1,:
);
fori=1:
(length(ig)-1);
forj=flag(i):
k
totalat=[totalattotalat(length(totalat))+t(i+1,j)/3.6];
endend
figure(11)
holdon
plot(totalat,ad2,'k');
holdon
gridon
xlabel('时间(s)');
ylabel('车速(km/h)');
legend('加速时间','Location','NorthWest');
title('加速时间曲线图');
axis([01000120])
WelcomeTo
Download!
!
!
欢迎您的下载,资料仅供参考!