СПО_курсовой
.doc25..26: Time_Zal:=58;
27..28: Time_Zal:=59;
29..30: Time_Zal:=60;
31..32: Time_Zal:=60;
33..34: Time_Zal:=60;
35: Time_Zal:=61;
36: Time_Zal:=61;
37: Time_Zal:=61;
38: Time_Zal:=62;
39: Time_Zal:=62;
40: Time_Zal:=62;
41: Time_Zal:=63;
42: Time_Zal:=63;
43: Time_Zal:=63;
44: Time_Zal:=64;
45: Time_Zal:=64;
46: Time_Zal:=66;
47: Time_Zal:=67;
48: Time_Zal:=68;
49: Time_Zal:=70;
50: Time_Zal:=72;
51: Time_Zal:=73;
52: Time_Zal:=75;
53: Time_Zal:=76;
54: Time_Zal:=77;
55: Time_Zal:=79;
56: Time_Zal:=80;
57: Time_Zal:=82;
58: Time_Zal:=84;
59: Time_Zal:=86;
60: Time_Zal:=88;
61: Time_Zal:=89;
62: Time_Zal:=90;
63: Time_Zal:=91;
64: Time_Zal:=92
end;
{ коррекция времени заливки при окончании геля в бутылке }
case new_bottl of
1: Time_Zal:= round(Time_Zal*1.25);
2: Time_Zal:= round(Time_Zal*1.24);
3: Time_Zal:= round(Time_Zal*1.23);
4: Time_Zal:= round(Time_Zal*1.22);
5: Time_Zal:= round(Time_Zal*1.20);
6: Time_Zal:= round(Time_Zal*1.18);
7: Time_Zal:= round(Time_Zal*1.16);
8: Time_Zal:= round(Time_Zal*1.14);
9: Time_Zal:= round(Time_Zal*1.12);
10: Time_Zal:= round(Time_Zal*1.10);
11: Time_Zal:= round(Time_Zal*1.08);
12: Time_Zal:= round(Time_Zal*1.06);
13: Time_Zal:= round(Time_Zal*1.04);
14: Time_Zal:= round(Time_Zal*1.02)
end;
end;
{*************************************************************************}
{ процедура заливки геля на поддон }
procedure full_poddon;
begin
Zalivka; { тут будет задержка рассчитываться }
for r:=oll_full to numberMax do
begin
Cut(KoordX,KoordY,Mass1[r].Xbeg+KoordXPlace,Mass1[r].Ybeg+KoordYPlace);
{ если была нажата кнопка ОСТ то выходим из подпрограммы }
if err=4 then exit;
tormoz;
{ остановились на точке разлива геля }
{ проверка нажатия кнопоки ОСТ }
Port[$301]:=152;
Port[$301]:=136; { считываем кнопки управления }
R08:=Port[$300];
Port[$301]:=152;
if (( R08 and 4 ) = 4 ) then
begin
err:=4;
exit;
end;
{ включение клапана открывания геля }
Port[$301]:=28+128;
Port[$300]:=5;
Port[$301]:=12+128;
Port[$301]:=28+128;
{ начало заливки }
for Time_Gel:=0 to Speed[Sp] do
begin
{ окончание заливки по кнопкам }
{ проверка нажатия кнопоки ОСТ }
Port[$301]:=152;
Port[$301]:=136; { считываем кнопки управления }
R08:=Port[$300];
Port[$301]:=152;
if (( R08 and 4 ) = 4 ) then
begin
err:=4;
{ включение клапана закрывания геля }
Port[$301]:=28+128;
Port[$300]:=6;
Port[$301]:=12+128;
Port[$301]:=28+128;
exit;
end;
delay(Time_Zal );
end; { конец заливки геля }
oll_full:=oll_full+1;
{ включение клапана закрывания геля после полной заливки }
Port[$301]:=28+128;
Port[$300]:=6;
Port[$301]:=12+128;
Port[$301]:=28+128;
{ выключение двигателей : конец удержания }
Port[$301]:=19+128;
Port[$300]:=0;
Port[$301]:=3+128; { вывод управления на двигатель X }
Port[$301]:=19+128;
Port[$301]:=20+128;
Port[$300]:=0;
Port[$301]:=4+128; { вывод управления на двигатель Y }
Port[$301]:=20+128;
{ перевод источника питания на высокое напряжение }
Port[$301]:=153;
Port[$300]:=0;
Port[$301]:=137;
Port[$301]:=153;
{ подсчёт и вывод количества коммутаторов, которые можно разлить }
New_bottl:= New_bottl-1;
OutNumber( New_bottl );
if New_bottl<2 then
begin
tormoz;
err:=4;
exit;
end;
end; { очередной коммутатор залили }
end;
{**************************************************************************}
{ программа заливки геля }
procedure Gell;
begin
{ гашение светодиода ГОТОВ }
Led_ready:=0;
Led;
{ включение высокого напряжения на двигатели }
Port[$301]:=153;
Port[$300]:=0;
Port[$301]:=137;
Port[$301]:=153;
{ возвращение в точку 00 }
GOTO_00;
case poddon of
1: begin { заливается только первый поддон }
KoordXPlace:=0;
KoordYPlace:=0;
full_poddon;
if err=4 then
begin
{ зажигание светодиода ГОТОВ }
Led_ready:=128;
Led;
exit;
end;
{ возвращение в точку 00 }
GOTO_00;
{ зажигание светодиода ГОТОВ }
Led_ready:=128;
Led;
end;
2: begin { заливается только второй поддон }
KoordXPlace:=0;
KoordYPlace:=158;
full_poddon;
if err=4 then
begin
{ зажигание светодиода ГОТОВ }
Led_ready:=128;
Led;
exit;
end;
{ возвращение в точку 00 }
GOTO_00;
{ зажигание светодиода ГОТОВ }
Led_ready:=128;
Led;
end;
3: begin { заливается только третий поддон }
KoordXPlace:=193;
KoordYPlace:=158;
full_poddon;
if err=4 then
begin
{ зажигание светодиода ГОТОВ }
Led_ready:=128;
Led;
exit;
end;
{ возвращение в точку 00 }
GOTO_00;
{ зажигание светодиода ГОТОВ }
Led_ready:=128;
Led;
end;
4: begin { заливается только четвёртый поддон }
KoordXPlace:=193;
KoordYPlace:=0;
full_poddon;
if err=4 then
begin
{ зажигание светодиода ГОТОВ }
Led_ready:=128;
Led;
exit;
end;
{ возвращение в точку 00 }
GOTO_00;
{ зажигание светодиода ГОТОВ }
Led_ready:=128;
Led;
end;
5: begin { заливаются все поддоны поочереди }
writeln('все');
if NumberPoddon= 1 then
begin
{ заливается первый поддон }
KoordXPlace:=0;
KoordYPlace:=0;
full_poddon;
if err=4 then
begin
{ зажигание светодиода ГОТОВ }
Led_ready:=128;
Led;
exit;
end;
NumberPoddon:=2;
oll_full:=1;
end;
if NumberPoddon=2 then
begin
{ заливается второй поддон }
KoordXPlace:=0;
KoordYPlace:=158;
full_poddon;
if err=4 then
begin
{ зажигание светодиода ГОТОВ }
Led_ready:=128;
Led;
exit;
end;
NumberPoddon:=3;
oll_full:=1;
end;
goto_00;
if NumberPoddon =3 then
begin
writeln('3');
{ заливается третий поддон }
KoordXPlace:=193;
KoordYPlace:=158;
full_poddon;
if err=4 then
begin
{ зажигание светодиода ГОТОВ }
Led_ready:=128;
Led;
exit;
end;
NumberPoddon:=4;
oll_full:=1;
end;
if NumberPoddon =4 then
begin
{ заливается четвёртый поддон }
KoordXPlace:=193;
KoordYPlace:=0;
full_poddon;
if err=4 then
begin
{ зажигание светодиода ГОТОВ }
Led_ready:=128;
Led;
exit;
end;
end; { возвращение в точку 00 }
GOTO_00;
end
end; { case }
{ все поддоны залиты }
end; { gell }
{***************************************************************************}
procedure Manual;
label aa,bb;
begin
Port[$301]:=19+128;
Port[$300]:=0;
Port[$301]:=3+128; { вывод управления на двигатель X }
Port[$301]:=19+128;
Port[$301]:=20+128;
Port[$300]:=0;
Port[$301]:=4+128; { вывод управления на двигатель Y }
Port[$301]:=20+128;
man:=1;
avt:=0;
Led;
Port[$301]:=17+128;
Port[$301]:=1+128; { считываем кнопки управления }
R01:=Port[$300];
Port[$301]:=17+128;
case R01 of
2 : begin { уменьшение скорости заливки }
if Sp=9 then Sp:=0;
Sp:=Sp+1;
OutSpeed(Sp);
Delay(1000);
end;
32 : begin { указание на рабочий поддон }
{ зажигание светодиода поддон }
podd:=2;
Led;
{ вывод номера поддона }
aa: if poddon < 5 then
begin { гасим ненужные индикаторы и выводим номер поддона }
Port[$300]:= 240+poddon;
Port[$301]:=150;
Port[$301]:=134;
Port[$301]:=150;
Port[$300]:=15;
Port[$301]:=151;
Port[$301]:=135;
Port[$301]:=151;
end
else { выводим 1 4}
begin
Port[$300]:= 244;
Port[$301]:=150;
Port[$301]:=134;
Port[$301]:=150;
Port[$300]:=1;
Port[$301]:=151;
Port[$301]:=135;
Port[$301]:=151
end;
delay(1000);
Port[$301]:=17;
Port[$301]:=1; { считываем кнопки управления }
R01:=Port[$300];
Port[$301]:=17;
if ((R01 and 32) =32) then
begin { всё ещё нажата кнопка поддон }
{ начинаем изменять номер подона }
if poddon=5 then poddon:=1 else poddon:=poddon+1;
goto aa;
end;
delay(1000);
podd:=0;
Led;
OutNumber(New_bottl);
exit;
end;
8: begin { установка ёмкости бутылки }
litr:=4;
Led;
bb: if litr_bottl < 5 then
begin { гасим ненужные индикаторы и выводим объём бутылки }
case litr_bottl of
1: OutLitr:=5;
2: OutLitr:=16;
3: OutLitr:=21;
4: OutLitr:=32
end;
Port[$300]:= OutLitr;
Port[$301]:=150;
Port[$301]:=134;
Port[$301]:=150;
Port[$300]:=15;
Port[$301]:=151;
Port[$301]:=135;
Port[$301]:=151;
end ;
delay(1000);
Port[$301]:=17;
Port[$301]:=1; { считываем кнопки управления }
R01:=Port[$300];
Port[$301]:=17;
if ((R01 and 8) =8) then
begin { всё ещё нажата кнопка литр }
{ начинаем изменять номер литр }
if litr_bottl= 4 then litr_bottl:=1 else litr_bottl:= litr_bottl+1;
goto bb;
end;
delay(1000);
litr:=0;
Led;
case litr_bottl of
1: New_bottl:=55;
2: New_bottl:=160;
3: New_bottl:=245;
4: New_bottl:=320;
end;
OutNumber(New_bottl);
exit;
end;
16: begin { сброс таймера схватывания геля }
{ установка максимального количества коммутаторов }
SetTime(0,0,0,0);
Led_ostatok:=16;
Led;
case litr_bottl of
1: New_bottl:=55;
2: New_bottl:=160;
3: New_bottl:=245;
4: New_bottl:=320;
end;
delay(1000);
led_ostatok:=0;
Led;
OutNumber(New_bottl);
exit;
end;
4: begin { вывод времени, оставшегося до схватывания геля }
Led_time:=8;
Led;
Gettime(h,min,s,ms);
time:=120-(h*60+min);
OutNumber(time);
delay(1000);
Led_time:=0;
Led;
OutNumber(New_bottl);
exit;
end;
64: begin { нажали кнопку вперёд }
err:=0;
writeln('ghj');
if oll_full< NumberMax then
begin
Led_Ready:=0;
Led;
{ включение высокого напряжения на двигатели }
Port[$301]:=153;
Port[$300]:=0;
Port[$301]:=137;
Port[$301]:=153;
writeln('ghj');
Cut(KoordX,KoordY,Mass1[oll_full+1].Xbeg+KoordXPlace,Mass1[oll_full+1].Ybeg+KoordYPlace);
oll_full:=oll_full+1; { увеличение номера позиции }
tormoz;
Led_Ready:=128;
Led;
end;
end;
128:begin { нажали кнопку назад }
err:=0;
if oll_full > 1 then
begin
Led_Ready:=0;
Led;
{ включение высокого напряжения на двигатели }
Port[$301]:=153;
Port[$300]:=0;
Port[$301]:=137;
Port[$301]:=153;
Cut(KoordX,KoordY,Mass1[oll_full-1].Xbeg+KoordXPlace,Mass1[oll_full-1].Ybeg+KoordYPlace);
oll_full:=oll_full-1; { уменьшение номера позиции }
{ прибыли на точку , тормозим двигателями }
tormoz;
Led_Ready:=128;
Led;
end;
end;
end; { case }
end;
{***************************************************************************}
{***************************************************************************}
procedure Avtom;
label TT;
begin
Port[$301]:=19+128;
Port[$300]:=0;
Port[$301]:=3+128; { вывод управления на двигатель X }
Port[$301]:=19+128;
Port[$301]:=20+128;
Port[$300]:=0;
Port[$301]:=4+128; { вывод управления на двигатель Y }
Port[$301]:=20+128;
avt:=64;
man:=0;
Led;
Port[$301]:=152;
Port[$301]:=136; { считываем кнопки управления }
R08:=Port[$300];
Port[$301]:=152;
case ( R08 and 31 ) of
1:begin { нажали пуск, начинаем разливать гель }
{ проверка оставшегося времени }
Gettime(h,min,s,ms);
time:=(h*60+min);
if time > 118 then { времени осталось мало }
begin { автоматически разливать нельзя }
Led_time:=8;
Led;
delay(100);
Led_time:=0;
Led;
delay(100);
exit;
end;
err:=0;
oll_full:=1;
NumberPoddon :=1;
gell;
end;
2:begin { нажали стоп, возвращаемся в точку 00 }
err:=0;
{ включение высокого напряжения на двигатели }
Port[$301]:=153;
Port[$300]:=0;
Port[$301]:=137;
Port[$301]:=153;
{ возвращение в точку 00 }
GOTO_00;
oll_full:=1; { сброс количества разлитых коммутаторов }
{ начинаем всё сначала }
NumberPoddon:=Poddon; { устанавливаем указатель поддона }
{ на начальный поддон }
end;
4:begin { нажали остановка }
{ тут включение двигателей на удержание : перевод источника питания }
{ на низкое напряжение }
Port[$301]:=153;
Port[$300]:=1;
Port[$301]:=137;
Port[$301]:=153;
{ включение двигателей }
Port[$301]:=19+128;
Port[$300]:=a;
Port[$301]:=3+128; { вывод управления на двигатель X }
Port[$301]:=19+128;
Port[$301]:=20+128;
Port[$300]:=b;
Port[$301]:=4+128; { вывод управления на двигатель Y }
Port[$301]:=20+128;
end;
16: begin { установка температуры }
OutNumber(Temp); { вывод температуры }
delay(1500);
tt: Port[$301]:=152;
Port[$301]:=136; { считываем кнопки управления }
R08:=Port[$300];
Port[$301]:=152;
if ((R08 and 16) =16) then
begin { всё ещё нажата кнопка температура }
{ начинаем изменять температуру }
if Temp= 29 then Temp:=15 else Temp:= Temp+1;
OutNumber(Temp); { вывод температуры }
delay(1500);
goto tt;
end;
delay(1000);
OutNumber(New_bottl);
exit;
end;
8:begin { нажали продолжение }
err:=0;
gell;
end
end; {case}
end;
******************************************}
{ П Р О Г Р А М М А }
begin
{ перевод источника питания на высокое напряжение }
Port[$301]:=153;
Port[$300]:=0;
Port[$301]:=137;
Port[$301]:=153;
Temp:=20;
Start_Time:=10; { первые шаги с ускорением }
a:=1;
b:=1;
goto_00;
Read_File;
Sp:=3; { начальная скорость заливки }
avt:=0;
man:=0;
podd:=0;
litr:=0;
Led_ready:=0;
Led_ostatok:=0;
time:=120;
Led_time:=0;
{ рабочий первый поддон }
poddon:=1;
{ бутылка 0.5 л }
litr_bottl:=1;
Led_ready:=128;
OutSpeed(sp);
port[$301]:=128; { включение исполнительных устройств }
Speed[4]:= 50;
Speed[5]:= 63;
Speed[6]:= 78; { установка соответствия скоростей заливки }
Speed[7]:= 93;
Speed[8]:= 110;
Speed[9]:= 130;
Speed[0]:= 25;
Speed[1]:= 30;
Speed[2]:= 35;
Speed[3]:= 42;
a:=1;
b:=1;
New_bottl:=100;
OutNumber(New_bottl);
ss:
{ OutNumber(New_bottl); }
tormoz;
Port[$301]:=24;
Port[$301]:=8; { считываем кнопки управления }
R08:=Port[$300];
Port[$301]:=24;
if ((R08 and 32)=32) then Avtom else Manual;
goto ss;
end.
{ проверка оставшегося геля }
if New_bottl < 1 then
begin
led_ostatok:=16;
Led;
delay(1000);
led_ostatok:=0;
Led;
delay(1000);
end;
{
repeat
ss:
read(a);
{ включение высокого напряжения на двигатели }
Port[$301]:=153;
Port[$300]:=a;
Port[$301]:=137;
Port[$301]:=153;
goto ss;
until keypressed;
Port[$301]:=153;
Port[$300]:=1;
Port[$301]:=137;
Port[$301]:=153;
exit;
}