Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Антропов.docx
Скачиваний:
4
Добавлен:
08.09.2019
Размер:
1.9 Mб
Скачать

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.