Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Торможении с использованием вспомогательной тор....doc
Скачиваний:
5
Добавлен:
14.04.2019
Размер:
478.72 Кб
Скачать

5 Алгоритм реализации задачи

j=1

Нет

Да

Да

Да

Нет

6 Программная реализации задачи

Таблица идентификаторов

Обозначение

Идентификатор

Размерность

Определение

Пределы

Источник

мин

макс

m

m

кг

Масса КамАЗа

7090

14500

[2]

L

l

м

База

5

7

[2]

b

b

м

Расстояние от центра тяжести до задней оси

2

3

[2]

hc

hc

м

Высота центра тяжести

1

3

[2]

cтр

ctr

Н*м/рад

Крутильная жесткость трансмиссии

0

1000

kтр

ktr

Н*м/(рад/с)

Коэффициент демпфирования трансмиссии

0

1000

η

itr

%

КПД трансмиссии

0,7

0,9

[5]

Mдв

Mdv

Н*м

Момент инерции двигателя

1

50

V0

V0

м/с

Скорость

10

20

[2]

φ

Fi

Коэффициент сцепления колес с дорогой

0,3

0,8

tз

Tz

с

Время запаздывания

0,1

1

Dсв

Ds

м

Свободный диаметр шины

0,8

1,3

Bш

bs

м

Ширина шины

0,2

0,5

[3]

pш

pw

МПа

Давление в шине

0,4

0,8

[3]

Procedure RadiusD(Gk,pw:real;Var rd:real);

Var hs : real;

begin

hs:=0.5*Gk/(2*pi*pw*1e06*sqrt(ds*rc/2));

rd:=ds/2-hs;

end;

Procedure Fdt(Z,V:Mas;t:real;Var Fv,Mt1,Mt2,Ft1,Ft2:real);

var Fj : real;

Label 100;

begin

Fj:=m*abs(V[2]);

G1:=(b*G+Fj*hc-G*hc)/L;

G2:=(a*G-Fj*hc+G*hc)/L;

form2.edit1.text:=floattostr(hc);

RadiusD(G1,pw1,r1);

RadiusD(G2,pw2,r2);

if (Z[2]<=0) then goto 100;

Fv:=kw*Aw*power(Z[2],2);

kstep2:=3/tnar;

Mt2:=0;

Mt1:=0;

Ft1:=0;

If (t<tz1) and (t>tz2) then Mdv: =0 else Mdv: = 0, 25*z [3];

If (t<tz1) and (t>tz2) then Ft2:=0 else ft2:=G2*fi*(1-exp (-kstep2));

100:

end;

Procedure Fun(t:real;Var Z,V:Mas);

Label 100;

begin

if Z[2] < 0 then begin

Z[2]:=0;

goto 100;

end;

Fdt(Z,V,t,Fv,Mt1,Mt2,Ft1,Ft2);

V[1]:=Z[2];

V[2]:=-(Ft2+ff2+Fv)/m;

V[3]:=(Mdv-z[5]-ktr*(z[3]-z[4]))/Jdv;

V[4]:=(z[5]+ktr*(z[3]-z[4])-(Ft2)*r2/(itr*kpd))/(4*Jk);

V[5]:=(ctr*(z[3]-z[4]));

100:

end;

Procedure RK4(n:integer;y,y1,w:real;Var Z,V:Mas);

Var k : integer;

ZD:array [1..15] of extended;

KF:array [1..15,1..4] of extended;

begin

repeat

for k:=1 to n do ZD[k]:=Z[k];

FUN(y,Z,V);

for k:=1 to n do KF[k,1]:=V[k];

y:=y+w/2.0;

for k:=1 to n do Z[k]:=ZD[k]+w*KF[k,1]/2.0;

FUN(y,Z,V);

for k:=1 to n do KF[k,2]:=V[k];

for k:=1 to n do Z[k]:=ZD[k]+w*KF[k,2]/2.0;

FUN(y,Z,V);

for k:=1 to n do KF[k,3]:=V[k];

y:=y+w/2.0;

for k:=1 to n do Z[k]:=ZD[k]+w*KF[k,3];

FUN(y,Z,V);

for k:=1 to n do KF[k,4]:=V[k];

for k:=1 to n do

Z[k]:=ZD[k]+w*(KF[k,1]+2.0*(KF[k,2]+KF[k,3])+KF[k,4])/6.0;

for k:=2 to 4 do if (Z[k]<0) then Z[k]:=0;

until (y >= y1);

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

var

i: integer;

begin

form2.Series1.Clear;

form2.Series2.Clear;

form2.richedit1.clear;

form2.richedit2.clear;

form2.richedit3.clear;

m:=18760;

hc:=1.2;

Aw:=9;

jk:=50;

ctr:=500;

ktr:=100;

itr:=12;

l:=6;

kpd:=0.9;

wmax:=408;

wnom:=150;

jdv:=1.2;

ds:=0.9;

bs:=0.312;

rc:=0.2;

pw1:=0.6;

pw2:=0.6;

v0:=40;

fi:=0.08;

tnar:=1;

b:=2.5;

f:=0.03;

kw:=0.5;

tz:=1;

pm:=115000;

nnom:=1430;

ci:=0.001;

p:=0.1;

tn:=0;

tp:=p;

tmax:=1000;

mmax:=2.5*pm/(3.14*nnom/30);

for i:=1 to 15 do

begin

z[i]:=0; v[i]:=0;

end;

G:=m*9.81;

a:=L-b;

G1:=(b*G-G*hc)/L;

G2:=(a*G+G*hc)/L;

Ff2:=f*G2;

v0:=v0/3.6;

RadiusD(G1,pw1,r1);

RadiusD(G2,pw2,r2);

Z[1]:=0;

Z[2]:=v0;

Z[3]:=v0*itr/r2;

Z[4]:=v0/r2;

Z[5]:=v0/r1;

Z[6]:=(Ff1+Ff2+Fv)*r2/itr;

Mdv:=0;

assignfile(fw,'1.txt');

assignfile(fw1,'2.txt');

assignfile(fw3,'3.txt');

assignfile(fw4,'4.txt');

rewrite(fw);

rewrite(fw1);

rewrite(fw3);

rewrite(fw4);

form2.RichEdit1.Lines.Add('время');

form2.RichEdit2.Lines.Add('замедление');

form2.RichEdit3.Lines.Add('Момент двигателя');

repeat

Rk4(6,tn,tp,ci,Z,V);

writeln(Fw,tp:11:3);

form2.RichEdit1.Lines.Add(floattostrf(tp,fffixed,11,3));

writeln(Fw1,z[2]*3.6:10:3);

writeln(Fw3,-v[2]:8:3);

form2.RichEdit2.Lines.Add(floattostrf(-v[2],fffixed,8,3));

writeln(Fw4,mdv:8:3);

form2.RichEdit3.Lines.Add(floattostrf(mdv,fffixed,11,3));

form2.Series1.AddXY(tp,-v[2]);

form2.Series2.AddXY(tp,Mdv);

tn:=tp;

tp:=tp+p;

until (z[2] < 5/3.6) or (tp>tmax);

tp:=tp-p;

form2.LabeledEdit1.Text:=floattostrf(tp,fffixed,11,3);

closefile(Fw);

closefile(fw1);

closefile(fw3);

closefile(fw4);

form2.showmodal;

end;

end.