Программа 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.
|