- •Группа 101016
- •«Математические модели в расчетах на эвм»
- •Минск 2008
- •Введение
- •1 Цели и задачи моделирования
- •2 Конструктивная схема и описание объекта моделирования
- •3 Расчетная схема объекта моделирования, характеристики объекта моделирования и окружающей среды
- •5 Алгоритм реализации задачи
- •6 Программная реализации задачи
- •7 Исходные данные для моделирования
- •8 Результаты расчета программы представлены в виде графиков.
- •9 Исследование характеристик модели
- •10 Литература
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.