13 Приложение А (1094759), страница 2
Текст из файла (страница 2)
i:=i+1;
printstring('Предельная частота двигателя om1:='+floattostr(om1)+'переключение передачи i = '+inttostr(i));
bet:=bet-0.3;
if bet < 0.08 then bet:=0.08;
printstring('ФИНАЛ:'+'t = '+floattostr(t)+';bet = '+floattostr(bet)+';vzkm = '+floattostr(vzkm)+ ';vkm = '+floattostr(vkm)+ ';vp = '+floattostr(vp)+ ';om1 = '+floattostr(om1)+ '+g = '+floattostr(g));
rit:=rio*rikp[i+1];
rjv:=rjk;
om1:=(v/rks)*rit;
oms:=0;
my4;
exit;
end;
end until delt-tct<=0.009;
end;
procedure My8();
//блок разгона двигателя до частоты трогания
begin
printstring('Разгон двигателя до '+floattostr(omdt)+' рад/с');
dt:=0.01;
repeat begin
if omd > omdt
then begin My4; exit; end
else begin
bet:=bet+0.05;
if bet>1 then bet:=1;
am1:=0;
procdmge;
procavto;
t:=t+dt;
tct:=tct+dt;
end;
end until delt-tct<=0.009;
end;
procedure PROCAvto();
begin
// om1 - угловая скорость вращения первичного вала коробки передач
om1:=(oms+omys+v/rks)*rit;
// amh - суммарный крутящий момент на шинах ведущих колес
amh:=am1*rit*tetta-4.*amf-2.*rjv*omkp-torm ;
if ( abs(am1*rit*tetta) <= abs (4.*amf) )
and(v < 0.000001)
then amh:=0;
// момент на колесе < мом. сопр.
// pz - суммарная вертикальная реакция на ведущих колесах
pz:=pz0+akkf*(h0*am*vp*0.5/al);
// po - предельно возможная горизонт. реакция вед.колес без потерь
po:=pz*f0;
// d- запас тяги на ведущих колесах
d:=po-(abs(amh)/(rks*2));
if(d<=0)
then eps:=abs(amh)/(ce*2)
else begin
// te- к-т, отражающий эластичные св-ва шины в прод. движении
te:=rks*po/ce;
// eps- тангенциальная деформация шины
eps:=abs(-te*(ln(d)-ln(po)));
end;
// tx- расчетная горизонтальная реакция ведущих колес с учетом потерь
tx:= pz*(f0*(1-exp(-eps/te))-b*(1-exp(-v/tv))*(1-exp(-s/ts))*(1.-exp(-eps/(te*2)))*(1.-exp(-eps/(te*2)))*
(1-exp(-eps/(te*2)))*(1-exp(-eps/(te*2)))*(1-exp(-eps/(te*2)))*(1-exp(-eps/(te*2))));
if(amh < 0)
then tx:=-tx;
f1:=tx/pz;
// omsp- угловое ускорение при фрикционном проскальзывании
//showmessage('amh: '+floattostr(amh)+', tx:'+floattostr(tx)+', rks'+floattostr(rks)+', rjv'+floattostr(rjv));
omsp:=(amh-2*tx*rks)/(rjv*2);
// vp- продольное ускорение автомобиля
vp:=(2*tx - f*akw*v*v)/am;
// v- продольная скорость автомобиля
v:=v+vp*dt;
// расчет по методу эйлера
if(v < 0)
then v:=0;
vkm:=v*3.6;
// oms- угловая скорость фрикционного проскальзывания колеса
oms:=oms+omsp*dt;
// расчет по методу эйлера
// omkp- угловое ускорение виртуального колеса
omkp:=vp/rks;
// omabp- угловое ускорение реального колеса
omabp:=omsp+omkp ;
// omys- угловая скорость упругого проскальзывания колеса
omys:=tteps*ce*v*eps/rks;
if(amh < 0)
then omys:=-omys;
// в режиме торможения
// s- суммарное проскальзывание ведущего колеса
if(v>0.5)
then s:=abs((oms+omys)*rks/v);
x:=x+v*dt;//x- пройденный путь
end;
procedure PROCDMGE();
var StrToAdd:string;
begin
with fmain.RE.Lines do begin
//c программа dmge рассчитывает эффективный крутящий момент двс -dme
//c и расход топлива: удельный- ge, часовой- gt, путевой- gs
if(omd < 45)
then begin
strtoadd:=' двигатель глохнет, t:='+floattostr(t)+', omd:='+floattostr(omd);
if FMain.CBSaveTable.Checked = true
then begin
strtoadd:='<tr><td colspan = "7">'+strtoadd+'</td></tr>';
addlinetohtml(strtoadd);
strtoadd:='';
end;
end;
//c dme- эффективный момент двигателя
LPx := dd;
LPy := bet - 1;
da:=1 - dc*( exp(LPy*ln(LPx)) - 1);
LPx := 0;
LPy := 0;
//параметр нажатия на педаль газа
dme:=dmo*da*(1 - exp(-omd/(dtn*da)))-dr*omd;
omdp:=(dme-am1)/rjd;
omd:=omd+omdp*dt;
//расчет рзрежения во впускном трубопроводе
rct:=rac+rbc*omd;
rtt:=rat*(1 - exp(-omd/rtob));
rpt:=rct*exp(bet/rtt);
//c расчет расхода топлива
ge:=gea*exp(-rpt/get)+geb+gec*rpt;
//c! удельный расход
if(dme<=0.5) //проверка на холостой ход
then gt:=0.36 //секундный расход на холостых оборотах
else if (v<=1)
then gt:=ge*dme*omd/36.e5
else gs:=ge*dme*omd/(v*36000); //путевой расход
g:=g+gt*dt; //суммарный расход
end;
end;
procedure PROCpecht();
var strtoadd:string;
begin
with fmain.RE.Lines do begin
tct:=tct+dt;
t:=t+dt;
if (tpe < t)
then begin
strtoadd:=format('%5.2f',[t])+' '+format('%5.2f',[bet])+' '+format('%5.2f',[vzkm])+' '+format('%5.2f',[vkm])+' '+
format('%5.2f',[vp])+' '+format('%5.2f',[om1])+' '+format('%5.2f',[g]);
if FMain.CBSaveTable.Checked = true
then begin
strtoadd:='<tr><td>'+format('%5.2f',[t])+
'</td><td>'+format('%5.2f',[bet])+
'</td><td>'+format('%5.2f',[vzkm])+
'</td><td>'+format('%5.2f',[vkm])+
'</td><td>'+format('%5.2f',[vp])+
'</td><td>'+format('%5.2f',[om1])+
'</td><td>'+format('%5.2f',[g])+
'</td></tr>';
addlinetohtml(strtoadd);
strtoadd:='';
end;
addlinetohtml(strtoadd);
strtoadd:='';
setlength(arrreal, length(arrreal)+1);
setlength(arrtimereal, length(arrtimereal)+1);
arrreal[length(arrreal)-1]:=vkm;
arrtimereal[length(arrtimereal)-1]:=t;
tpe:=tpe+ap[i+1];
end;
end;
end;