- •Дипломный проект
- •Задание на выполнение дипломного проекта
- •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.2 Блок-схема программы PotyagVv
3.3 Программа PotyagVv
Program PotyagVV;
Uses CRT,Graph,Dos;
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,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,
met1,met2,met3,met4,met5,met6,met7,met8,met9;
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;
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,Lob,Vrem,Op,kk,Pr,p,
ObKolVag,Vag8,Vag6,Vag4,Wvf,Ns,Nr,m1,Kdv:integer;
LM:Word;
LUklon,Uklon,DeltaUkl,Uslov,bmin,bmax,SkorDl,TyagDl,TyagTr,
OsudsoLo,OsudsoVa,Put,Skor,SkorPr,UdSopLoc,UdSopSos,SopLoc,
SopSos,SopPo,UdSopPo,Tyag,UdTyag,SilOs,Ksi,LocMas,MasSos,Dk,Mn,
MasPoez,DlSos,DlLoc,DlPoez,TokElek,RasEner,TyagPr,SkorKr,sn,f2n,SkorZad,UklUch,Usk,UskZad,DeltaUsk,DeltaTyaga,Kpr,SosMasPr,X0,
DlinOb,PutProm,UdSopTor,TorSila,SkorTor,PrUkl,TorDel,TorSilaUd,
UklOb,PutTek,Prom,Unl,Inf,Pnd,fn,kpd,cofi,lsras,Dsr,bzub,rs,
rrp,Xs,Xrp,delta,mu:real;
L:Dl;
Ukl:Uk;
Rad:Rds;
RezL:DlRez;
RezUkl:UkRez;
DlRds:DRd;
PrUklRez:PUk;
u:real;
c:char;
{ Сигнал ошибки }
Procedure Zvuck1;
begin
Sound(4600);
Delay(200);
NoSound;
end;
{ Сигнал смены окна }
Procedure Zvuck2;
begin
Sound(800);
Delay(100);
NoSound;
end;
{ Информационное окно }
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 Vvod;
begin
okno2;
zvuck1;
TextColor(Red);
Writeln(' Внимание:');
TextColor(Blue);
Writeln(' Параметр вне диапазона. Повторите ввод,');
Writeln(' нажав клавишу <N>');
okno1;
end;
{ Процедура ввода целых чисел }
PROCEDURE str1(var x:integer);
begin
repeat
u:=0;
c:=readkey
until ( c in ['y','Y','n','N','Q','q']);
case c of
'n','N': begin
write(' Введите новое значение ');
readln(x);
Okna(st1,st2,st3);
end;
'y','Y': writeln(' Сохраняется старое
значение');'q','Q':u:=1;
end;
end;
{ Процедура ввода вещественных чисел }
PROCEDURE str2(var z:real);
begin
u:=0;
repeat
c:=readkey
until( c in ['y','Y','n','N','q','Q']);
case c of
'n','N':begin
write(' Введите новое значение ');
readln(z);
Okna(st1,st2,st3);
end;
'y','Y':writeln(' Сохраняется старое значение');
'q','Q':u:=1;
end;
end;
{ Основная программа }
BEGIN
TextBackGround(Black);
LM:=LastMode;
met1: ClrScr;
{ Создание окон ввода профиля пути }
st1:=' Нажмите клавишу:<Y> - чтобы оставить старое значение; ';
st2:=' <N> - чтобы внести новое значение; ';
st3:=' <Q> - для прекращения ввода.';
Okna(st1,st2,st3);
{ Открытие файла профиля пути }
assign(fv,'C:\PodstaAs\AsPotyag\profil.dat');
reset(fv);
read(fv,n);
i:=1;
while not EOF(fv) and (i<=n) do
begin
readln(fv,l[i],rad[i],DlRds[i],ukl[i]);
inc(i)
end;
close(fv);
{ Ввод профиля пути }
TextColor(Red);
GotoXY(25,1);
Writeln('Ввод профиля пути');
Window(4,4,76,16);
TextColor(Yellow);
1: writeln(#10,' Количество участков n <',n,'>: ');
str1(n);
If u>0 then goto met2;
amin:=1; amax:=20;
if (n<amin) or (n>amax) then
begin
Vvod;
Goto 1;
end;
For i:=1 to n do
begin
ClrScr;
2: writeln(#10,' Длина участка L',i,'<',l[i]:5,'>: ');
str1(l[i]);
If u>0 then goto met2;
amin:=200; amax:=20005;
if (L[i]<amin) or (L[i]>amax) then
begin
Vvod;
goto 2;
end;
3: writeln(#10,' Радиус кривой Rad ',i,'< ',rad[i]:5,'>: ');
str1(rad[i]);
If u>0 then goto met2;
amin:=0; amax:=5000;
if (Rad[i]<amin) or (Rad[i]>amax) then
begin
Vvod;
goto 3;
end;
4: writeln(#10,' Длина криволинейного участка пути DlRds',i,
'< ',DlRds[i]:5,'>: ');
str1(DlRds[i]);
If u>0 then goto met2;
amin:=0; amax:=5000;
if (DlRds[i]<amin) or (DlRds[i]>amax) then
begin
Vvod;
goto 4;
end;
5: writeln(#10,' Уклон ',i,' участка < ',ukl[i]:3:2,'>: ');
str2(ukl[i]);
If u>0 then goto met2;
bmin:=-15.0; bmax:=15.0;
if (Ukl[i]<bmin) or (Ukl[i]>bmax) then
begin
Vvod;
goto 5;
end;
readln;
end;
Okno1;
met2: TextColor(Red);
Writeln(#10,' Ввод исходных данных профиля пути завершен.');
TextColor(Yellow);
Okno2;
Writeln;
Writeln(' Нажмите клавишу - "Y" чтобы продолжить работу',
' программы');
Writeln(' или - "N" чтобы вернуться в режим повторного',
' ввода данных');
Repeat
c:=readkey
until (c in ['n','N','y','Y']);
Case c of
'y','Y': begin end;
'n','N': goto met1;
end;
{'Создание файла исходных данных профиля пути '}
Write;
Assign(FV,'C:\PodstaAs\AsPotyag\profil.dat');
Rewrite(FV);
Writeln(FV,n:12);
For i:=1 to n do Writeln(FV,l[i]:10,rad[i]:10,DlRds[i]:10,
ukl[i]:10:2);
Close(FV);
{ Ввод данных состава }
met3: ClrScr;
st1:=' Нажмите клавишу:<Y> - чтобы оставить старое значение; ';
st2:=' <N> - чтобы внести новое значение; ';
st3:=' <Q> - для прекращения ввода.';
Okna(st1,st2,st3);
TextColor(Red);
GotoXY(25,1);
Writeln('Ввод данных о составе поезда ');
Window(4,4,76,15);
TextColor(Yellow);
assign(fc,'C:\PodstaAs\AsPotyag\DanPoezd.dat');
reset(fc);
readln(fc,ObKolVag,Vag8,Vag6,Vag4);
readln(fc,MasSos,SkorZad,UskZad);
close(fc);
6:writeln(#10,' Общее количество вагонов ObKolVag <',
ObKolVag:5,'>: ');
str1(ObKolVag);
If u>0 then goto met4;
bmin:=0; bmax:=80;
if (ObKolVag<bmin) or (ObKolVag>bmax) then
begin
Vvod;
Goto 6;
end;
7: writeln(#10,' Количество 8-осных вагонов Vag8 <',Vag8:5,'>: ');
str1(Vag8);
If u>0 then goto met4;
bmin:=0; bmax:=ObKolVag;
if (Vag8<bmin) or (Vag8>bmax) then
begin
Vvod;
Goto 7;
end;
8: writeln(#10,' Количество 6-осных вагонов Vag6 <',Vag6:5,'>: ');
str1(Vag6);
If u>0 then goto met4;
bmin:=0; bmax:=ObKolVag-Vag8;
if (Vag6<bmin) or (Vag6>bmax) then
begin
Vvod;
Goto 8;
end;
9: writeln(#10,'Количество 4-осных вагонов Vag4 <',Vag4:5,'>: ');
str1(Vag4); If u>0 then goto met4;
bmin:=0; bmax:=ObKolVag-Vag8-Vag6;
if (Vag4<bmin) or (Vag4>bmax) then
begin
Vvod;
Goto 9;
end;
10:writeln(#10,'Укажите массу состава MasSos <',MasSos:5:0,'>: ');
str2(MasSos);
If u>0 then goto met4;
bmin:=0; bmax:=9000;
if (MasSos<bmin) or (MasSos>bmax) then
begin
Vvod;
Goto 10;
end;
11:writeln(#10,' Укажите заданную скорость движения состава SkorZad <',SkorZad:5:2,'> [км/ч]: ');
str2(SkorZad);
If u>0 then goto met4;
bmin:=0; bmax:=160;
if (SkorZad<bmin) or (SkorZad>bmax) then
begin
Vvod;
Goto 11;
end;
12:writeln(#10,' Укажите ускорение движения состава UskZad <',
UskZad:1:4,'> [м/с2]: ');
str2(UskZad);
If u>0 then goto met4;
bmin:=0; bmax:=2;
if (UskZad<bmin) or (UskZad>bmax) then
begin
Vvod;
Goto 12;
end;
{ Создание файла исходных данных состава }
met4: Okno1;
TextColor(Red);
Writeln;
Writeln(' Ввод данных поезда завершен');
TextColor(Yellow);
Okno2;
Writeln;
Writeln(' Нажмите клавишу - "Y" чтобы продолжить работу',
' программы');
Writeln(' или - "N" чтобы вернуться в режим повторного',
' ввода данных');
Repeat
c:=readkey
until (c in ['n','N','y','Y']);
Case c of
'y','Y': begin end;
'n','N': goto met3;
end;
Write;
Assign(FC,'C:\PodstaAs\AsPotyag\DanPoezd.dat');
Rewrite(FC);
Writeln(FC,ObKolVag:11,Vag8:11,Vag6:11,Vag4:4);
Writeln(FC,MasSos:11:1,SkorZad:11:2,UskZad:11:4);
Close(FC);
{ Ввод данных электровоза }
met5: Okna(st1,st2,st3);
Okno1;
Writeln;
TextColor(Red);
Writeln(' Ввод данных электровоза');
TextColor(Yellow);
assign(fe,'C:\PodstaAs\AsPotyag\Electra.dat');
reset(fe);
readln(fe,mu,Kdv,DlLoc,LocMas);
close(fe);
13:writeln(#10,' Укажите передаточное отношение тягового редуктора электровоза mu <',
mu:3:2,'>: ');
str2(mu);
If u>0 then goto met6;
bmin:=0; bmax:=5;
if (mu<bmin) or (mu>bmax) then
begin
Vvod;
Goto 13;
end;
14:writeln(#10,' Укажите количество тяговых двигателей на электровозе Kdv <',
Kdv:2,'> : ');
str1(Kdv);
If u>0 then goto met6;
bmin:=0; bmax:=20;
if (Kdv<bmin) or (Kdv>bmax) then
begin
Vvod;
Goto 14;
end;
15:writeln(#10,' Укажите длину локомотива DlLoc <',
DlLoc:4:1,'> [м]: ');
str2(DlLoc);
If u>0 then goto met6;
bmin:=0; bmax:=250;
if (DlLoc<bmin) or (DlLoc>bmax) then
begin
Vvod;
Goto 15;
end;
16:writeln(#10,' Укажите массу локомотива в тоннах LocMas <',
LocMas:4:1,'> [т]: ');
str2(LocMas);
If u>0 then goto met6;
bmin:=0; bmax:=10000;
if (LocMas<bmin) or (LocMas>bmax) then
begin
Vvod;
Goto 16;
end;
met6: Okno1;
TextColor(Red);
Writeln;
Writeln(' Ввод данных электровоза завершен.');
TextColor(Yellow);
Okno2;
Writeln(' Нажмите клавишу - "Y" чтобы продолжить работу',
' программы');
Writeln(' или - "N" чтобы вернуться в режим повторного',
' ввода данных');
Repeat
c:=readkey
until (c in ['n','N','y','Y']);
Case c of
'y','Y': begin end;
'n','N': goto met5;
end;
assign(fe,'C:\PodstaAs\AsPotyag\Electra.dat');
rewrite(fe);
writeln(fe,mu:11:2,Kdv:11,DlLoc:11,LocMas:11:2);
close(fe);
met7: Okna(st1,st2,st3);
Okno1;
Writeln;
TextColor(Red);
GotoXY(25,1);
Writeln('Ввод данных электродвигателя ');
Window(4,4,76,15);
TextColor(Yellow);
assign(fa,'C:\PodstaAs\AsPotyag\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);
close(fa);
17:writeln(#10,' Укажите номинальное линейное напряжение питания Unl <',Unl:4:2,'> [ B ]: ');
str2(Unl);
If u>0 then goto met8;
bmin:=0; bmax:=3000;
if (Unl<bmin) or (Unl>bmax) then
begin
Vvod;
Goto 17;
end;
18:writeln(#10,' Укажите номинальный фазный ток двигателя Inf <',
Inf:4:2,'> [ A ]: ');
str2(Inf);
If u>0 then goto met8;
bmin:=0; bmax:=1000;
if (Inf<bmin) or (Inf>bmax) then
begin
Vvod;
Goto 18;
end;
19:writeln(#10,' Укажите мощность продолжительного режима двигателя Pnd <',
Pnd:4:2,'> [кBA]: ');
str2(Pnd);
If u>0 then goto met8;
bmin:=0; bmax:=1300;
if (Pnd<bmin) or (Pnd>bmax) then
begin
Vvod;
Goto 19;
end;
20:writeln(#10,' Укажите число полюсов двигателя p <',
p:2,'>: ');
str1(p);
If u>0 then goto met8;
bmin:=0; bmax:=6;
if (p<bmin) or (p>bmax) then
begin
Vvod;
Goto 20;
end;
21:writeln(#10,' Укажите номинальную частоту питающего напряжения fn <',fn:3:2,'> [Гц]: ');
str2(fn);
If u>0 then goto met8;
bmin:=0; bmax:=250;
if (fn<bmin) or (fn>bmax) then
begin
Vvod;
Goto 21;
end;
22:writeln(#10,' Укажите коэффициент полезного действия двигателя kpd <', kpd:2:3,'> : ');
str2(kpd);
If u>0 then goto met8;
bmin:=0; bmax:=0.99;
if (kpd<bmin) or (kpd>bmax) then
begin
Vvod;
Goto 22;
end;
23:writeln(#10,' Укажите коэффициент мощности двигателя cofi <',
cofi:2:3,'> : ');
str2(cofi);
If u>0 then goto met8;
bmin:=0; bmax:=1.0;
if (cofi<bmin) or (cofi>bmax) then
begin
Vvod;
Goto 23;
end;
24:writeln(#10,' Укажите число витков фазы двигателя Wvf <', Wvf:3,'> : ');
str1(Wvf);
If u>0 then goto met8;
bmin:=0; bmax:=999;
if (Wvf<bmin) or (Wvf>bmax) then
begin
Vvod;
Goto 24;
end;
25:writeln(#10,' Укажите расчетную длину статора двигателя lsras <', lsras:2:3,'> [м]: ');
str2(lsras);
If u>0 then goto met8;
bmin:=0; bmax:=2.0;
if (lsras<bmin) or (lsras>bmax) then
begin
Vvod;
Goto 25;
end;
26:writeln(#10,' Укажите диаметр расточки статора двигателя Dsr <',
Dsr:2:3,'> [м]: ');
str2(Dsr);
If u>0 then goto met8;
bmin:=0; bmax:=1.0;
if (UskZad<bmin) or (UskZad>bmax) then
begin
Vvod;
Goto 26;
end;
27:writeln(#10,' Укажите число пазов статора двигателя Ns <',
Ns:4,'> : ');
str1(Ns);
If u>0 then goto met8;
bmin:=0; bmax:=200;
if (Ns<bmin) or (Ns>bmax) then
begin
Vvod;
Goto 27;
end;
29:writeln(#10,' Укажите диаметр колеса электровоза Dk <',
Dk:3:2,'> : ');
str2(Dk);
If u>0 then goto met8;
bmin:=0; bmax:=2.0;
if (Nr<bmin) or (Nr>bmax) then
begin
Vvod;
Goto 29;
end;
30:writeln(#10,' Укажите ширину коронки зубца статора bzub <',
bzub:2:3,'> [м]: ');
str2(bzub);
If u>0 then goto met8;
bmin:=0; bmax:=0.1;
if (bzub<bmin) or (bzub>bmax) then
begin
Vvod;
Goto 30;
end;
31:writeln(#10,' Укажите активное сопротивление фазы статора двигателя Rs <',
Rs:2:4,'> [Ом]: ');
str2(Rs);
If u>0 then goto met8;
bmin:=0; bmax:=0.1;
if (Rs<bmin) or (Rs>bmax) then
begin
Vvod;
Goto 31;
end;
32:writeln(#10,' Укажите активное приведенное сопротивление фазы ротора Rrp <', Rrp:2:4,'>[Ом]:');
str2(Rrp);
If u>0 then goto met8;
bmin:=0; bmax:=0.1;
if (Rrp<bmin) or (Rrp>bmax) then
begin
Vvod;
Goto 32;
end;
33:writeln(#10,' Укажите индуктивное сопротивление фазы статора Xs <', Xs:2:4,'> [Ом]: ');
str2(Xs);
If u>0 then goto met8;
bmin:=0; bmax:=0.3;
if (Xs<bmin) or (Xs>bmax) then
begin
Vvod;
Goto 33;
end;
34:writeln(#10,'Укажите приведенное индуктивное сопротивление фазы ротора Xrp<', Xrp:2:4,'>[Ом]:');
str2(Xrp);
If u>0 then goto met8;
bmin:=0; bmax:=0.3;
if (Xrp<bmin) or (Xrp>bmax) then
begin
Vvod;
Goto 34;
end;
35:writeln(#10,' Укажите количество фаз тягового двигателя m1 <',
m1:2,'> : ');
str1(m1);
If u>0 then goto met8;
bmin:=0; bmax:=6;
if (m1<bmin) or (m1>bmax) then
begin
Vvod;
Goto 35;
end;
36:writeln(#10,' Укажите величину рабочего зазора двигателя delta <', delta:2:1,'> [мм]: ');
str2(delta);
If u>0 then goto met8;
bmin:=0; bmax:=5.0;
if (delta<bmin) or (delta>bmax) then
begin
Vvod;
Goto 36;
end;
37:writeln(#10,'Укажите величину реактивного сопротивления контура ');
writeln(#10,' намагничивания двигателя X0 <', X0:2:5,'> [Oм]: ');
str2(X0);
If u>0 then goto met8;
bmin:=0; bmax:=10.0;
if (X0<bmin) or (X0>bmax) then
begin
Vvod;
Goto 37;
end;
38:writeln(#10,' Укажите величину номинального скольжения ротора двигателя sn <', sn:2:4,'>: ');
str2(sn);
If u>0 then goto met8;
bmin:=0; bmax:=1.0;
if (sn<bmin) or (sn>bmax) then
begin
Vvod;
Goto 38;
end;
39:writeln(#10,' Укажите величину номинальной частоты ротора двигателя f2n <', f2n:2:2,'>: ');
str2(f2n);
If u>0 then goto met8;
bmin:=0; bmax:=10.0;
if (f2n<bmin) or (f2n>bmax) then
begin
Vvod;
Goto 39;
end;
40:writeln(#10,' Укажите величину номинального момента двигателя Mn <', Mn:6:2,'> [Нм]: ');
str2(Mn);
If u>0 then goto met8;
bmin:=0; bmax:=20000.0;
if (Mn<bmin) or (Mn>bmax) then
begin
Vvod;
Goto 40;
end;
met8: Okno1;
TextColor(Red);
Writeln;
Writeln(' Ввод данных тягового электродвигателя завершен.');
TextColor(Yellow);
Okno2;
Writeln(' Нажмите клавишу - "Y" чтобы продолжить работу',
' программы');
Writeln(' или - "N" чтобы вернуться в режим повторного',
' ввода данных');
Repeat
c:=readkey
until (c in ['n','N','y','Y']);
Case c of
'y','Y': begin end;
'n','N': goto met7;
end;
Assign(fa,'C:\PodstaAs\AsPotyag\ElDvig.dat');
Rewrite(fa);
writeln(fa,Unl:11:1,Inf:11:1,Pnd:11:1,fn:11:1,p:11,Ns:11,Dk:11:2,sn:11:2);
writeln(fa,kpd:11:3,cofi:11:3,lsras:11:3,Dsr:11:3,bzub:11:3,rs:11:7,rrp:11:7);
writeln(fa,Xrp:11:7,m1:11,delta:11:4,Wvf:11,Xs:11:7,X0:11:7,f2n:11:2,Mn:11:2);
Close(fa);
{ Спрямление }
St1:='';
St2:=' Результат спрямления ';
St3:='';
Okna(St1,St2,St3);
Assign(fv,'C:\PodstaAs\AsPotyag\Profil.dat');
Reset(fv);
Readln(fv,n);
i:=1;
While not EOF(fv) and (i<=n) do
begin
readln(fv,L[i],Rad[i],DlRds[i],Ukl[i]);
inc(i);
end;
{ for i:=1 to n do
writeln(L[i]:5,Rad[i]:5,DlRds[i]:5,Ukl[i]:5:2);
readln;}
Close(fv);
RezL[1]:=L[1];
PrUklRez[1]:=Ukl[1];
PrUklRez[1]:=0;
Writeln(#10);
Writeln(' В ',1,' спрямленный участок вошел ',1,
' участок профиля ');
Writeln(' Длина участка ',RezL[1]:6);
Writeln(' Уклон участка ',RezUkl[1]:3:3);
Writeln(' Приведенный уклон ',PrUklRez[1]:3:3);
Readln;
i:=2; LUklon:=0; Lob:=0; k:=2; m:=2; z:=2;
Okno1;
ClrScr;
Repeat
LUklon:=LUklon+L[i]*Ukl[i];
Lob:=Lob+L[i];
Uklon:=LUklon/Lob;
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;
For j:=k to i do
begin
DeltaUkl:=abs(Uklon-Ukl[j]);
If DeltaUkl<0.01 then DeltaUkl:=0.01;
Uslov:=2000/DeltaUkl;
If (Uslov>=L[j]) then
begin
If j=i then
begin
di:=i;
RezUkl[m]:=Uklon;
RezL[m]:=Lob;
PrUklRez[m]:=PrUklRez[m]+PrUklRez[j];
end;
end
else
begin
m:=m+1;
ClrScr;
Writeln(#10);
Writeln(' В ',m-1,' спрямленный участок вошли',
' участки профиля с ',z,' по ',i-1);
LUklon:=0;
Lob:=0;
z:=i;
i:=di;
k:=i+1;
Writeln(' Длина участка ',RezL[m-1]:6);
Writeln(' Уклон участка ',RezUkl[m-1]:3:3);
Writeln(' Приведенный уклон ',PrUklRez[m-1]:3:3);
Writeln;
Readln;
PrUklRez[m]:=0;
Goto met9;
end;
end;
PrUkl:=0;
met9: i:=i+1;
until i>n-1;
ClrScr;
Writeln(#10);
Writeln(' В ',m,' спрямленный участок вошли участки профиля с ', z,' по ', n-1);
Writeln(' Длина участка ',RezL[m]:6);
Writeln(' Уклон участка ',RezUkl[m]:3:3);
Writeln(' Приведенный уклон ',PrUklRez[m]:3:3);
Readln;
RezL[m+1]:=L[n];
RezUkl[m+1]:=0;
PrUklRez[m+1]:=Ukl[n];
ClrScr;
Writeln(#10);
Writeln(' В ',m+1,' спрямленный участок вошел участок ',
n,' профиля ');
Writeln(' Длина участка ',RezL[m+1]:6);
Writeln(' Уклон участка ',RezUkl[m+1]:3:3);
Writeln(' Приведенный уклон ',PrUklRez[m+1]:3:3);
{ Создание файла спрямленного профиля пути }
Assign(fo,'C:\PodstaAs\AsPotyag\SprProfA.dat');
Rewrite(fo);
Writeln(fo,m+1:12);
For i:=1 to m+1 do
writeln(fo,RezL[i]:12,RezUkl[i]:10:2,PrUklRez[i]:10:2);
Close(fo);
TextMode(LM);
END.