Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

СПО_курсовой

.doc
Скачиваний:
5
Добавлен:
26.05.2014
Размер:
267.26 Кб
Скачать

25..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;

}

Соседние файлы в предмете Системное программное обеспечение