- •Дипломный проект
- •Задание на выполнение дипломного проекта
- •4 Составить отчет и выполнить необходимые документы (конструкторские, технологические, программные, плакаты) в соответствии с планом дипломного проекта.
- •Исходные данные и задачи проектирования
- •2. Решение тяговой задачи
- •2.1 Описание программно-алгоритмического комплекса
- •2.2. Выбор элементов передачи мощности
- •3 Решение тяговой задачи
- •3.1 Описание программы PotyagVv
- •3.2 Блок-схема программы PotyagVv
- •3.3 Программа PotyagVv
- •3.4 Описание переменных программы PotyagVv
- •3.5 Описание программы PotyagAs
- •3.6 Блок-схема программы PotyagAs
- •3.7 Программа PotyagAs
- •3.8 Описание переменных программы PotyagAs
- •3.9 Результаты решения тяговой задачи и их анализ
- •4 Выбор и расчет параметров тяговой передачи
- •4.1. Обоснование выбора типа тяговой передачи
- •4.2. Компоновка тяговой передачи
- •4.3. Расчет геометрических параметров зубчатого зацепления
- •4.4. Проверочный расчет зубьев на выносливость при изгибе и на контактную выносливость
- •5. Расчет прочности рамы тележки
- •5.1. Исходные данные и схема приложения нагрузок
- •5.2. Результаты расчета и их анализ
- •6 Экономическое обоснование бакалаврской работы
- •6.1 Расчет себестоимости производства рамы
- •6.2 Расчет годового экономического эффекта от производства новой рамы
- •6.3 Выводы
- •7 Охрана труда и окружающей среды
- •7.1 Общие вопросы охраны труда
- •7.2 Производственная санитария
- •7.3 Электробезопасность
- •7.4 Пожарная безопасность
- •7.5 Защита окружающей среды
3.6 Блок-схема программы PotyagAs
3.7 Программа PotyagAs
PROGRAM POTYAG; {$M $4000,0,0}
USES DOS,CRT,GRAPH;
CONST NN=25;
LABEL 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22;
TYPE Dl=ARRAY [1..NN] OF INTEGER;
Uk=ARRAY [1..NN] OF REAL;
Rds=ARRAY [1..NN] OF INTEGER;
DlRez=ARRAY [1..NN] OF INTEGER;
UkRez=ARRAY [1..NN] OF REAL;
DRd=ARRAY [1..NN] OF INTEGER;
PUk=ARRAY [1..NN] OF REAL;
VAR FV:text;
FO:text;
FC:text;
FR:text;
FD:text;
FK:text;
FT:text;
FL:text;
FE:text;
FA:text;
NAME:string;
S,st1,st2,st3:String;
i,j,k,n,m,z,d,di,x1,y1,x2,y2,amax,amin,Vrem,kk,Pr,Kdv,
p,Ns,Nr,m1,Wvf,ObKolVag,Vag4,Vag6,Vag8,ftek,kkk,vv,g:integer;
LM:Word;
bmin,bmax,
OsudsoVa,Put,Skor,SkorPr,UdSopLoc,UdSopSos,SopLoc,SopSos,SopPo,
UdSopPo,Tyag,UdTyag,SilOs,Ksi,LocMas,MasSos,MasPoez,DlSos,DlLoc,
DlPoez,Kob,kppr,Kst,RasEner,TyagaPr,SkorZad,UklUch,Usk,UskZad,
delta,Tyaga,DlinOb,PutProm,UdSopTor,TorSila,SkorTor,PrUkl,TorDel,
TorSilaUd,UklOb,PutTek,Prom,mu,Inf,Pnd,fn,kpd,cofi,lsras,Dsr,rs,
rrp,Unl,X0,Xs,Xrp,MasSosPr,Tau,Tau1,Tau2,f1,f2,U,Un,UnStr,sn,
alpha,betta,bettak,Kgen,bs,cs,ds,es,Mk,Mm,chis1,chis2,znam1,znam2,
Potok,Bd,Bz,Hd,kmu,Fdel,SumF,Imu,Irp,Idv,Mn,Kper,n2,Ptep,Kred,Dk,
delf,f2k,f2n,Kdelta,bzub,Md,Pst,PotokN,Krrp,f1max,Idv2,Ia,Ix,Itep,
TyagaTor,EnRec,LTor,Uw,LTMex,Ipr,Itep1,U1,U2,U3,U4,U5,I1,I2,I3,I4,
I5,Mp,delfx,Ux,f1x,Udv,Ptep2,Ptep1,Ptep3,Ptep4,Ptep5,Ptep6,Ptep7,
obkol,obkol2,obkol3,obkol4,obkol5,obkol6,topcikl,RasTop,Pdiz,Igen,
Itep2,Skor1,Skor2,zz,Mx,Md5,Md4,Md3,Md2,Md1,tyaga5,tyaga4,tyaga3,
tyaga2,tyaga1,Pte5,Pte4,Pte3,Pte2,Pte1,I11,I12,I13,I14,I15,Pte,
tyagav,Udvv,Ite2,Itep2v,PteS:real;
L:Dl;
Ukl:Uk;
Rad:Rds;
RezL:DlRez;
RezUkl:UkRez;
DlRds:DRd;
PrUklRez:PUk;
c:char;
{ Информационное окно }
PROCEDURE okno1;
Const
LU=#201;
RU=#187;
LD=#200;
RD=#188;
H=#205;
V=#186;
Var
k:integer;
begin
X1:=2; Y1:=2; X2:=78; Y2:=17;
TextBackground(LightBlue);
TextColor(Yellow);
Window(X1,Y1,X2,Y2);
Write(LU);
For k:=X1+1 to X2-1 do Write(H);
Write(RU);
For k:=Y1+1 to Y2-1 do
begin
GotoXY(1,k-Y1+1);
Write(V);
GotoXY(X2-X1+1,WhereY);
Write(V);
end;
Write(LD);
Window(X1,Y1,X2,Y2+1);
GotoXY(2,Y2-Y1+1);
For k:=X1+1 to X2-1 do Write(H);
Write(RD);
Window(X1+1,Y1+1,X2-1,Y2-1);
ClrScr;
end;
{ Диалоговое окно }
PROCEDURE okno2;
Const
LU=#201;
RU=#187;
LD=#200;
RD=#188;
H=#205;
V=#186;
Var
k:integer;
begin
X1:=2; Y1:=19; X2:=78; Y2:=24;
TextBackground(Cyan);
TextColor(Blue);
Window(X1,Y1,X2,Y2);
Write(LU);
For k:=X1+1 to X2-1 do Write(H);
Write(RU);
For k:=Y1+1 to Y2-1 do
begin
GotoXY(1,k-Y1+1);
Write(V);
GotoXY(X2-X1+1,WhereY);
Write(V);
end;
Write(LD);
Window(X1,Y1,X2,Y2+1);
GotoXY(2,Y2-Y1+1);
For k:=X1+1 to X2-1 do Write(H);
Write(RD);
Window(X1+1,Y1+1,X2-1,Y2-1);
ClrScr;
end;
{ Процедура диалога при вводе данных }
Procedure Okna(var s1,s2,s3:string);
begin
Okno2;
Writeln(s1);
Writeln(s2);
Writeln(s3);
Okno1;
end;
{ Процедура расчета параметров двигателя }
Procedure Raschet( Var U,f1,Skor,n2,betta:real);
begin
{ if (f1>fn) and (Skor<SkorZad-5) then begin f1:=f1+delf; U:=U+Un/5; end;}
if U>Un then U:=Un;
{ if (RezUkl[i]<0) and (Skor>SkorZad-2) then U:=U-Un/20;}
if U<=10 then U:=10;
U5:=U4;
U4:=U3;
U3:=U2;
U2:=U1;
U1:=U;
U:=(U1+U2+U3+U4+U5)/5;
(* write({FX,}f1:4:2,' ',U:5:2,' ',Skor:3:2,' ',Put:7:2,' ');*)
Potok:=0.96*U/(4.44*f1*Wvf*Kob);
Bd:=0.7073*p*Potok/(Dsr*lsras);
Bz:=3.1417*Bd*Dsr/(bzub*Ns*Kst);
if Bz>1.6 then
Hd:=-85650+38000*Bz
else
if (Bz>=1.2) and (Bz<=1.6) then
Hd:=Bz/(0.002982*Bz*Bz-0.00109*Bz*Bz*Bz-0.00037*Bz*Bz*Bz*Bz)
else
Hd:=610*Bz;
kmu:=Hd/(610*Bz);
Fdel:=0.8*Bd*delta*Kdelta*1000;
SumF:=2*Fdel*kmu;
Imu:=m1*SumF/(0.9*p*Wvf*Kob);
if f1>fn then
Md:=Potok*Potok*m1*4.44*4.44*Wvf*Wvf*Kob*Kob*fn*(Rrp/betta)/
(6.2834*(Xrp*Xrp+Rrp*Rrp/(betta*betta))) else Md:=Mn;
if U<=10 then Md:=50;
if RezUkl[i]<0 then Md:=50;
Irp:=1.4142*Md/(p*m1*Wvf*Kob*Potok*0.985);
Ia:=Pst*(Potok/PotokN)*(Potok/PotokN)*(f1/fn)*sqrt(f1/fn)/(m1*Un)+Irp*0.985;
Ix:=Imu+Irp*0.174;
Idv:=sqrt(Ia*Ia+Ix*Ix);
if (RezUkl[i]<0) and (Skor>SkorZad-2) then Idv:=10;
cofi:=Ia/Idv;
Itep:=m1*Idv*Kdv{10}/(2*cofi*Krrp);
{ Itep2:=(Ipr+Itep)/4;}
if Itep2>10000 then Itep2:=10000;
Ipr:=Itep2;
Itep2:=(Ipr+Itep)/4;
if Itep2<0 then Itep2:=0;
PteS:=U*Itep2/(Kgen*1000);
Tyaga:=mu*Kdv*2{*10}*Md/Dk;
UdTyag:=Tyaga/(LocMas+MasSos);
UdSopLoc:=19.64+0.098*Skor+0.0029*Skor*Skor;
OsUdSoVa:=(6.87+(29.43+0.98*Skor+0.0245*Skor*Skor)/21.4)*
Vag4/ObKolVag+(6.87+(78.48+0.9*Skor+0.0206*Skor*Skor)/21.4)
*Vag6/ObKolVag+(6.87+(58.9+0.373*Skor+0.0206*Skor*Skor)/
21.4)*Vag8/ObKolVag;
SopLoc:=UdSopLoc*LocMas;
SopSos:=OsUdSoVa*MasSos;
SopPo:=SopLoc+SopSos;
UdSopPo:=SopPo/(LocMas+MasSos);
ksi:=0.28+3/(50+20*Skor)-0.0007*Skor;
TyagaPr:=ksi*LocMas*9810/(LocMas+MasSos);
SkorPr:=Skor;
if Idv>15*Inf then Skor:=SkorPr
else
Skor:=Skor+0.0034*(UdTyag-UdSopPo-9.81*RezUkl[i]-PrUklRez[i]*9.81+
TyagaTor);
Put:=Put+(SkorPr+Skor)*10/(2*36);
n2:=Skor*mu/(0.188*Dk);
if n2<=0 then n2:=0;
if Skor<=0 then Skor:=0;
f2:=f1-n2*p/60;
bettak:=rrp*(1+Tau1)/(Xs*(1+Tau2)+Xrp);
f2k:=bettak*fn;
betta:=f2/fn;
Ptep:=PteS/2;
case g of
100: begin
if Itep<0 then Ptep:=200; if Ptep>2000 then Ptep:=2000;
Ptep2:=Ptep*Ptep; Ptep3:=Ptep*Ptep2; Ptep4:=Ptep*Ptep3;
Ptep5:=Ptep*Ptep4; Ptep6:=Ptep*Ptep5; Ptep7:=Ptep*Ptep6;
obkol:=3.6606e-19*Ptep7-2.9586e-15*Ptep6+9.7182e-12*Ptep5-
1.6666e-8*Ptep4+1.5933e-5*Ptep3-0.0083656*Ptep2+
2.4169*Ptep+157.01;
if obkol<200 then begin Ptep:=200; obkol:=200; end;
obkol2:=obkol*obkol; obkol3:=obkol*obkol2;
obkol4:=obkol*obkol3; obkol5:=obkol*obkol4;
topcikl:=(-1.4498e-12*obkol5+4.6782e-9*obkol4-5.792e-6
*obkol3+0.0034975*obkol2-1.1101*obkol+322.85)/3600;
if topcikl<0 then topcikl:=0;
end;
200: begin
if Itep2<0 then Ptep:=150; if Ptep>1350 then Ptep:=1350;
Ptep2:=Ptep*Ptep; Ptep3:=Ptep*Ptep2; Ptep4:=Ptep*Ptep3;
Ptep5:=Ptep*Ptep4; Ptep6:=Ptep*Ptep5; Ptep7:=Ptep*Ptep6;
obkol:=2.5808e-18*Ptep7-1.5114e-14*Ptep6+3.655e-11*Ptep5-
4.7202e-8*Ptep4+3.5151e-5*Ptep3-0.01518*Ptep2+
3.8756*Ptep-19.226;
if obkol<300 then begin Ptep:=150; obkol:=300; end;
obkol2:=obkol*obkol; obkol3:=obkol*obkol2;
obkol4:=obkol*obkol3; obkol5:=obkol*obkol4;
obkol6:=obkol*obkol5;
topcikl:=(3.4165e-17*obkol6-1.1263e-13*obkol5+1.7834e-9*obkol4-
4.1611e-6*obkol3+0.004023*obkol2-1.8692*obkol+501.01)/3600;
if topcikl<0 then topcikl:=0;
end;
300 : begin
if Itep2<0 then Ptep:=100; if Ptep>909 then Ptep:=909;
Ptep2:=Ptep*Ptep; Ptep3:=Ptep*Ptep2; Ptep4:=Ptep*Ptep3;
Ptep5:=Ptep*Ptep4; Ptep6:=Ptep*Ptep5; Ptep7:=Ptep*Ptep6;
obkol:=-2.2502e-12*Ptep5+6.3453e-9*Ptep4-6.3992e-6*Ptep3+
0.002872*Ptep2-0.053651*Ptep+295.97;
if obkol<200 then begin Ptep:=100; obkol:=200; end;
obkol2:=obkol*obkol; obkol3:=obkol*obkol2;
obkol4:=obkol*obkol3; obkol5:=obkol*obkol4;
topcikl:=(-2.9687e-12*obkol5+8.6719e-9*obkol4-1.0107e-5*obkol3
+0.0060552*obkol2-1.9864*obkol+528.22)/3600;
if topcikl<0 then topcikl:=0;
end;
400 : begin
if Itep2<0 then Ptep:=100; if Ptep>588 then Ptep:=588;
Ptep2:=Ptep*Ptep; Ptep3:=Ptep*Ptep2; Ptep4:=Ptep*Ptep3;
Ptep5:=Ptep*Ptep4; Ptep6:=Ptep*Ptep5; Ptep7:=Ptep*Ptep6;
obkol:=3.2615e-15*Ptep7-8.1075e-12*Ptep6+8.2991e-9*Ptep5-
4.5065e-6*Ptep4+0.0013916*Ptep3-0.24249*Ptep2+
23.171*Ptep-516.12;
if obkol<300 then begin Ptep:=100; obkol:=300; end;
obkol2:=obkol*obkol; obkol3:=obkol*obkol2;
obkol4:=obkol*obkol3; obkol5:=obkol*obkol4;
topcikl:=(9.779e-13*obkol5-3.3931e-9*obkol4+4.2183e-6*obkol3
-0.0020784*obkol2+0.16168*obkol+263.43)/3600;
if topcikl<0 then topcikl:=0;
end;
end;
(* writeln({FX,}f2:4:2,' ',cofi:2:4,' ',Potok:2:4,' ',Bd:2:4,' ',Bz:2:4,' ',
kmu:2:4,' ',Imu:5:2,' ',Irp:5:2,' ',Idv:6:2,' ',Iel:7:2,' ',
Md:6:2,' ',UdTyag:5:2,' ',UdSopPo:5:2,' ',f2k:3:2,' ',
n2:4:2,' ',TyagaPr:5:2);
writeln(' U=',U:7:2); readln;*)
end;
{ Основная программа }
BEGIN
TextBackGround(Black);
LM:=LastMode;
21: ClrScr;
{ Считывание данных поезда }
assign(fc,'C:\PoDizAs\DanPoezd.dat');
reset(fc);
readln(fc,ObKolVag,Vag8,Vag6,Vag4);
readln(fc,MasSos,SkorZad,UskZad);
Close(fc);
{ Считывание данных электровоза }
assign(fe,'C:\PoDizAs\Electra.dat');
reset(fe);
readln(fe,mu,Kdv,DlLoc,LocMas);
close(fe);
{ Считывание данных электродвигателя }
assign(fa,'C:\PoDizAs\ElDvig.dat');
reset(fa);
readln(fa,Unl,Inf,Pnd,fn,p,Ns,Dk,sn);
readln(fa,kpd,cofi,lsras,Dsr,bzub,rs,rrp);
readln(fa,Xrp,m1,delta,Wvf,Xs,X0,f2n,Mn);
{ Определение длины поезда }
DlSos:=20.5*Vag8+17*Vag6+14.6*Vag4;
DlPoez:=DlLoc+DlSos;
{ Считывание профиля пути }
st1:=' Нажмите клавишу, чтобы осуществить движение: ';
st2:=' <Y> - по неспрямленному профилю пути; ';
st3:=' <N> - по спрямленному профилю пути';
Okna(st1,st2,st3);
{ Открытие файла профиля пути }
repeat
c:=readkey
until ( c in ['y','Y','n','N']);
case c of
'y','Y': begin
assign(fv,'C:\PoDizAs\profil.dat');
reset(fv);
readln(fv,m);
i:=1; kkk:=1;
while not EOF(fv) and (i<=m) do
begin
readln(fv,l[i],rad[i],DlRds[i],ukl[i]);
RezL[i]:=l[i]; RezUkl[i]:=Ukl[i];
If DlRds[i]<=0
then PrUklRez[i]:=0.0
else
if DlPoez<=DlRds[i]
then PrUklRez[i]:=700/rad[i]
else
PrUklRez[i]:=(700/Rad[i]*DlRds[i])/DlPoez;
inc(i)
end;
close(fv);
end;
'n','N': begin
assign(fo,'C:\PoDizAs\SprProfA.dat');
reset(fo);
readln(fo,m);
i:=1; kkk:=0;
while not EOF(fo) and (i<=m+1) do
begin
readln(fo,RezL[i],RezUkl[i],PrUklRez[i]);
inc(i)
end;
close(fo);
end;
end;
Okno2;
Writeln(' Укажите мощность используемого дизеля ');
Writeln(' Для этого нажмите: 1 - для выбора дизеля 1Д80Б ');
Writeln(' 2 - 4Д80Д, 3 - 4Д80Б, 4 - 10Д80А ');
repeat c:=readkey
until (c in ['1','2','3','4']);
case c of
'1' : begin
writeln(' Выбран дизель типа 1Д80Б ');
writeln(' Номинальная мощность дизеля 2080 кВт ');
writeln(' Максимальные обороты коленчатого вала 850 об/мин ');
g:=100;
end;
'2' : begin
writeln(' Выбран дизель типа 4Д80Д ');
writeln(' Номинальная мощность дизеля 1390 кВт ');
writeln(' Максимальные обороты коленчатого вала 750 об/мин ');
g:=200;
end;
'3' : begin
writeln(' Выбран дизель типа 4Д80Б ');
writeln(' Номинальная мощность дизеля 909 кВт ');
writeln(' Максимальные обороты коленчатого вала 750 об/мин ');
g:=300;
end;
'4' : begin
writeln(' Выбран дизель типа 10Д80А ');
writeln(' Номинальная мощность дизеля 588 кВт ');
writeln(' Максимальные обороты коленчатого вала 1000 об/мин ');
g:=400;
end;
end;
readln;
{ Расчет скорости, пути и времени движения }
Writeln;
Writeln(' Результаты расчета');
Writeln(' Для прекращения счета и выхода в программу',
' нажмите клавишу ВВОД');
Readln;
Okno1;
kk:=0;
20: If kk=0 then
begin
Assign(FD,'C:\PoDizAs\RezPoezA.dat');
Assign(FR,'C:\PoDizAs\rezulta.dat');
Rewrite(FD);
Rewrite(FR);
Okno2;
Writeln;
Writeln(' Расчет параметров',
' движения');
Writeln(' Движение поезда от',
' станции А');
Okno1;
{ end
else
begin
Close(FD);
Close(FR);
Assign(FK,'C:\PoDizAs\RezPoezB.dat');
Assign(FT,'C:\PoDizAs\rezultb.dat');
Assign(FL,'C:\PoDizAs\sprprofb.dat');
Rewrite(FK);
Rewrite(FT);
Rewrite(FL);
for i:=1 to m div 2 do
begin
Pr:=RezL[i]; RezL[i]:=RezL[m+1-i];
RezL[m+1-i]:=Pr; Prom:=RezUkl[i];
RezUkl[i]:=-RezUkl[m+1-i];
RezUkl[m+1-i]:=-Prom; Prom:=PrUklRez[i];
PrUklRez[i]:=PrUklRez[m+1-i];
PrUklRez[m+1-i]:=Prom;
end;
if ((m) mod 2)<>0 then
RezUkl[((m) div 2)+1]:=-RezUkl[((m) div 2)+1];
writeln(FL,m);
For i:=1 to m do
writeln(FL,RezL[i]:12,RezUkl[i]:10:2,
PrUklRez[i]:10:2);
Okno2;
Writeln;
Writeln(' Расчет параметров',
' движения');
Writeln(' Движение поезда от',
' подстанции Б');
Okno1; }
end;
Vrem:=0; Put:=0; Skor:=0.01; SilOs:=17.5; Tyaga:=0; RasEner:=0; U:=0;
EnRec:=0.0; DlinOb:=0; UklOb:=0; UklUch:=50; Put:=0.0; Ipr:=0.0; vv:=0;
For i:=1 to m+2 do DlinOb:=DlinOb+RezL[i]; Md:=0; f1:=0; TyagaTor:=0;
i:=1;
PutProm:=RezL[i];
{ Обмоточный коэффициент }
Kob:=0.91;
{ Кпд генератора }
Kgen:=0.93;
{ Кпд преобразователя частоты }
Krrp:=0.9;
{ Фазное напряжение двигателя }
Un:=Unl/1.73205;
{ Номинальный магнитный поток двигателя }
PotokN:=0.109;
{ Коэффициент заполнения стали }
Kst:=0.95;
{ Коэффициент Картера }
Kdelta:=1.38;
{ Потери в стали статора }
Pst:=900;
{ Предельная масса состава }
MasSosPr:=15000;
{ Расчет вспомогательных переменных }
Tau1:=Xs/X0;
Tau2:=Xrp/X0;
Tau:=Tau1+Tau2+Tau1*Tau2;
bs:=rs*(1+Tau2);
cs:=X0*Tau;
ds:=rs/X0;
es:=1+Tau1;
chis1:=cs*cs*sn/rrp+es*es*rrp/sn;
znam1:=(bs*bs+cs*cs)*sn/rrp+(ds*ds+es*es)*rrp/sn+2*rs;
UnStr:=Un*sqrt(chis1/znam1);
Skor:=0.02;
UdSopLoc:=19.64+0.098*Skor+0.0029*Skor*Skor;
OsUdSoVa:=(6.87+(29.43+0.98*Skor+0.0245*Skor*Skor)/21.4)*
Vag4/ObKolVag+(6.87+(78.48+0.9*Skor+0.0206*Skor*Skor)/21.4)
*Vag6/ObKolVag+(6.87+(58.9+0.373*Skor+0.0206*Skor*Skor)/
21.4)*Vag8/ObKolVag;
SopLoc:=UdSopLoc*LocMas;
SopSos:=OsUdSoVa*MasSosPr;
SopPo:=SopLoc+SopSos;
Md:=SopPo*Dk/(16*2*mu);
f1:=0.2;
Idv:=8000;
While Idv>2.5*Inf do
begin
alpha:=f1/fn; Mp:=Mn; Md:=Mn;
betta:=alpha;
chis2:=(bs*bs+cs*cs*alpha*alpha)*betta/rrp+
(ds*ds+es*es*alpha*alpha)*rrp/betta+2*rs*alpha;
znam2:=(bs*bs+cs*cs)*betta/rrp+(ds*ds+es*es)*rrp/betta+2*rs;
U:=UnStr*sqrt((chis2/znam2)*Md/Mp);
f2:=betta*fn;
Raschet(U,f1,Skor,n2,betta);
Mp:=Mp-Mp/8;
f1:=f1+0.1;
Skor:=0;
end;
LTor:=2000{0.006*SkorZad*(LocMas+MasSos)*8/6.5Kdv};
Repeat
if (DlinOb-LTor)>Put then
begin
If Put>PutProm then
begin
i:=i+1;
PutProm:=PutProm+RezL[i];
UklUch:=UklOb;
end;
PutTek:=Put+RezL[i]-PutProm;
UklOb:=UklUch+RezUkl[i]*PutTek/1000;
ClrScr;
if f1<=fn then
begin
delf:=0.957*UskZad*mu/Dk;
if Skor>1 then
begin
Md:=Md+Mn/5;
if Md>Mn then Md:=Mn;
end else Md:=Mn;
Ux:=U; f1x:=f1; delfx:=delf;
if Skor>SkorZad+2 then
begin
delfx:=delf;
delf:=0;
Ux:=U; f1x:=f1; vv:=0;
Skor2:=Skor1;
Skor1:=Skor;
if Skor2>Skor1 then
begin
zz:=zz+10;
Md:=Md/zz;
Mx:=Md;
end
else
begin
zz:=zz-10;
if zz<=1 then zz:=1;
Md:=Mx/zz;
end;
{ Md5:=Md4;
Md4:=Md3;
Md3:=Md2;
Md2:=Md1;
Md1:=Md;
Md:=(Md5+Md4+Md3+Md2+Md1)/5; }
if Skor>SkorZad+3 then
begin
TorDel:=PutProm-Put;
if TorDel>1010 then TorDel:=1000;
if TorDel<900 then TorDel:=1000;
TyagaTor:=-TyagaTor-abs((-40.85*(Skor*Skor-SkorZad*SkorZad)/TorDel
-(UdSopPo+PrUklRez[i]*9.81+RezUkl[i]*9.81)));
end;
end
else
begin
if vv=0 then begin U:=Ux; f1:=f1x; delf:=delfx; end;
vv:=vv+1;
if delf>2*f2n then delf:=2*f2n;
f1:=n2*p/60+delf;
TyagaTor:=0;
end;
alpha:=f1/fn;
betta:=f2/fn;
chis2:=abs((bs*bs+cs*cs*alpha*alpha)*betta/rrp+
(ds*ds+es*es*alpha*alpha)*rrp/betta+2*rs*alpha);
znam2:=abs((bs*bs+cs*cs)*betta/rrp+(ds*ds+es*es)*rrp/betta+2*rs);
U:=UnStr*sqrt(chis2/znam2)*sqrt(abs(Md/Mn));
if U>Un then U:=Un;
Raschet(U,f1,Skor,n2,betta);
end
else
begin
delf:=0.957*UskZad*mu/Dk;
{ Md:=Potok*Potok*m1*4.44*4.44*Wvf*Wvf*Kob*Kob*fn*(Rrp/betta)/
(6.2834*(Xrp*Xrp+Rrp*Rrp/(betta*betta)));}
if Skor>SkorZad+2 then
begin
delfx:=delf;
delf:=0;
Ux:=U; f1x:=f1; vv:=1;
Skor2:=Skor1;
Skor1:=Skor;
if Skor2>Skor1 then
begin
zz:=zz+10;
Md:=Md/zz;
Mx:=Md;
end
else
begin
zz:=zz-10;
if zz<=1 then zz:=1;
Md:=Mx/zz;
end;
{ Md5:=Md4;
Md4:=Md3;
Md3:=Md2;
Md2:=Md1;
Md1:=Md;
Md:=(Md5+Md4+Md3+Md2+Md1)/5;
if (RezUkl[i]<0) and (Iel2<0) then U:=U+Un/10;}
if Skor>SkorZad+5 then
begin
TorDel:=PutProm-Put;
if TorDel>1010 then TorDel:=1000;
if TorDel<900 then TorDel:=1000;
TyagaTor:=-TyagaTor-abs((-40.85*(Skor*Skor-SkorZad*SkorZad)/TorDel
-(UdSopPo+PrUklRez[i]*9.81+RezUkl[i]
*9.81)));
end;
end
else
begin
if vv=0 then begin U:=Ux; f1:=f1x; delf:=0.957*UskZad*mu/Dk; end
else delf:=0.957*UskZad*mu/Dk;
vv:=vv+1;
delf:=0.957*UskZad*mu/Dk;
if delf>{2*}f2k{n} then delf:={2*}f2k{n};
f1:=n2*p/60+{3*}delf;
TyagaTor:=0;
if Skor<SkorZad-5 then begin U:=U+Un/10; delf:=0.957*UskZad*mu/Dk; end;
if U>Un then U:=Un;
end;
if UdTyag>0.95*TyagaPr then delf:=-delf/6;
if Md>Mn then Md:=Mn;
alpha:=f1/fn;
betta:=f2/fn;
bettak:=rrp*sqrt((ds*ds+es*es*alpha*alpha)/(bs*bs+cs*cs*alpha*alpha));
f2k:=bettak*fn;
if Ptep>2100 then f1:=f1-delf else f1:=f1+delf;
Raschet(U,f1,Skor,n2,betta);
end;
Okno1;
Writeln(#10);
write(' Время движения ');
TextColor(LightGray);
Writeln(Vrem+1:6,' c;');
TextColor(Yellow);
Write(' Движение по ');
TextColor(LightGray);
Write(i);
TextColor(Yellow);
If kkk>=1 then
Write(' участку общей длиной ')
else
Write(' спрямленному участку общей длиной ');
TextColor(LightGray);
Writeln(PutProm:6:2,' м');
TextColor(Yellow);
Write(' Путь пройденный поездом ');
TextColor(LightGray);
Writeln(Put:8:2,' м;');
TextColor(Yellow);
Write(' Скорость ');
TextColor(LightGray);
Writeln(Skor:4:1,' км/ч;');
TextColor(Yellow);
U5:=U4;
U4:=U3;
U3:=U2;
U2:=U1;
U1:=U;
Udvv:=(U1+U2+U3+U4+U5)/5;
Write(' Напряжение на электродвигателе ');
TextColor(LightGray);
Writeln(Udvv:4:2,' B;');
TextColor(Yellow);
Write(' Частота тока статора ');
TextColor(LightGray);
Writeln(f1:4:2,' Гц;');
TextColor(Yellow);
if Ptes>4400 then PteS:=4400;
Pte5:=Pte4;
Pte4:=Pte3;
Pte3:=Pte2;
Pte2:=Pte1;
Pte1:=PteS;
Pte:=(Pte5+Pte4+Pte3+Pte2+Pte1)/5;
if Pte<=50 then Pte:=50;
Write(' Мощность дизеля тепловоза ');
TextColor(LightGray);
writeln(Pte:4:2,' кВт');
TextColor(Yellow);
if Itep2>5000 then Itep2:=5000;
I5:=I4;
I4:=I3;
I3:=I2;
I2:=I1;
I1:=Itep2;
Itep2v:=(I1+I2+I3+I4+I5)/10;
if Itep2v<=0 then Itep2v:=0;
{ if Itep2v>2000 then Itep2v:=2000;}
if Itep2v>5000 then Itep2v:=5000 else Itep2v:=Itep2;
Write(' Ток тягового генератора ');
TextColor(LightGray);
Writeln(Itep2v:8:0,' A');
TextColor(Yellow);
Write(' Цикловая подача топлива ');
TextColor(LightGray);
Writeln(topcikl:2:6,' г/КВт с');
TextColor(Yellow);
RasTop:=RasTop+topcikl*Ptep;
Write(' Расход топлива дизелем тепловоза ');
TextColor(LightGray);
Writeln(RasTop/1000:12:2,' кг');
TextColor(Yellow);
Write(' Обороты коленчатого вала дизеля тепловоза ');
TextColor(LightGray);
Writeln(obkol:12:2,' об/мин');
TextColor(Yellow);
Vrem:=Vrem+1;
if tyaga<20 then tyaga:=20;
tyaga5:=tyaga4;
tyaga4:=tyaga3;
tyaga3:=tyaga2;
tyaga2:=tyaga1;
tyaga1:=tyaga;
tyagav:=(tyaga5+tyaga4+tyaga3+tyaga2+tyaga1)/5;
If kk=0 then
begin
Writeln(FD,Vrem:7,Itep2:15:2,Put:16:2);
Delay(50);
Writeln(FR,Vrem:7,Skor*35:16:2,Put*0.1:16:2,UklOb*20:16:2,
Itep2v*2:16:2,Pte*1.8:16:2,tyagav/42:16:2,RasTop/16:16:2);
Delay(50);
{ end
else
begin
Writeln(FD,Vrem:7,IEl2:15:2,Put:16:2);
Delay(50);
Writeln(FR,Vrem:7,Skor*35:16:2,Put*0.1:16:2,UklOb*20:16:2,
Itep2v*5:16:2,Pte*1.8:16:2,tyaga/42:16:2,RasTop/16:16:2);
Delay(50); }
end;
if Skor<=0 then Skor:=0.02;
If Skor<=0.0 then
begin
Okno2;
Writeln;
Writeln(' Состав данной массы не может',
' проследовать ');
Writeln(' по данному перегону ');
Readln;
Okno1;
Goto 17;
end;
end
else
begin
Okno2;
Writeln;
Writeln(' Торможение ');
Okno1;
SkorTor:=Skor;
LTMex:=SkorTor;
Repeat
SkorPr:=SkorTor;
UdSopLoc:=23.54+0.108*SkorTor+0.0034*SkorTor*SkorTor+9.81*
RezUkl[i];
OsUdSoVa:=(6.87+(29.43+0.98*SkorTor+0.0245*SkorTor*SkorTor)
/21.4+9.81*RezUkl[i])*Vag4/ObKolVag+(6.87+(78.48+
0.9*SkorTor+0.0245*SkorTor*SkorTor)/21.4+9.81*
RezUkl[i])*Vag6/ObKolVag+(6.87+(58.9+0.373*
SkorTor+0.0206*SkorTor*SkorTor)/21.4+9.81*
RezUkl[i])*Vag8/ObKolVag;
UdSopTor:=(UdSopLoc*LocMas+OsUdSoVa*MasSos)/(LocMas+MasSos);
TorSilaUd:=-(40.85*SkorTor*SkorTor/(DlinOb-Put)+UdSopTor);
TorSila:=TorSilaUd*(LocMas+MasSos);
SkorTor:=SkorTor-0.0034*abs(UdSopTor+abs(TorSilaUd));
If SkorTor<0 then SkorTor:=0; { writeln(TorSilaUd:4:4,' ',UdSopTor:4:4); readln;}
Put:=Put+(SkorPr+SkorTor)*10/(2*36);
Usk:=(SkorTor-SkorPr)/3.6;
Itep2:=0;
ClrScr;
Writeln(#10);
TextColor(Yellow);
Write(' Время движения ');
TextColor(LightGray);
Writeln(Vrem,' c');
TextColor(Yellow);
Write(' Скорость ');
TextColor(LightGray);
Writeln(SkorTor:4:1,' км/ч;');
TextColor(Yellow);
Write(' Путь ');
TextColor(LightGray);
Writeln(Put:8:2,' м;');
TextColor(Yellow);
Write(' Ток генератора тепловоза ');
TextColor(LightGray);
Writeln(Itep2:12:2,' А ');
TextColor(Yellow);
Write(' Расход топлива на движение ');
TextColor(LightGray);
Writeln(RasTop/1000:12:2,' кг');
TextColor(Yellow);
Vrem:=Vrem+1;
Writeln;
Ptep:=100; tyaga:=0;
If kk=0 then
begin
Writeln(FD,Vrem:7,Itep2:15:2,Put:16:2);
Delay(50);
Writeln(FR,Vrem:7,SkorTor*35:16:2,Put*0.1:16:2,UklOb*20:16:2,
Itep2:16:2,Ptep*3.5:16:2,tyaga/42:16:2,RasTop/16:16:2);
Delay(50);
{ end
else
begin
Writeln(FD,Vrem:7,IEl2:15:2,Put:16:2);
Delay(50);
Writeln(FR,Vrem:7,SkorTor*35:16:2,Put*0.1:16:2,UklOb*20:16:2,
Itep2:16:2,Ptep*3.5:16:2,tyaga/42:16:2,RasTop/16:16:2);
Delay(50); }
end;
until (SkorTor<=0) or KeyPressed;
If SkorTor<=0 then
begin
Okno2;
Writeln;
Writeln(' Поезд прибыл на конечную',
' станцию ');
Writeln(' Для продолжения нажмите',
' клавишу ВВОД');
Readln;
Okno1;
Goto 17;
end;
end;
until (Put>DlinOb) or KeyPressed;
17: { kk:=kk+1;
If kk<=1 then begin U:=0; Md:=Mn; Put:=0.0; Skor:=0.02; goto 20; end;}
Close(FD);
Close(FR);
TextMode(LM);
END.