Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка(исправлено).docx
Скачиваний:
9
Добавлен:
21.09.2019
Размер:
1.19 Mб
Скачать

10. Алгоритм работы

Описание алгоритма работы программы управления.

В начале работы программы система управления выполняет подпрограмму START. Здесь выполняется опрос концевых выключателей и датчика груза для того чтобы определить находится ли робокара в исходном положении, если нет, то в каком направлении двигаться для возвращения в одно из исходных положений. Далее система ожидает в зависимости от положения либо когда на робокару опустят груз, либо когда его снимут. Затем генерируется временная задержка, после которой начинается движение. Во время движения с помощью подпрограммы RUL робокара движется вдоль проложенного в полу магнитного провода, в это же время опрашиваются бесконтактные концевые выключатели для прекращения движения в случае прибытия робокары в конечную позицию. Далее программа выполняет новый цикл, который начинается с ожидания одного из событий, разрешающих движение. Этот цикл повторяется 100 раз, обеспечивая 50 ездок в каждом из направлений

11. Управляющая программа

  • KV1 - бесконтактный концевой выключатель 1;

  • KV2 - бесконтактный концевой выключатель 2;

  • DG - датчик груза;

  • ID1 - левый индукционный датчик;

  • ID2 - правый индукционный датчик;

  • P1 - сигнал движения вперед на привод ведущих колес;

  • P2 - сигнал движения назад на привод ведущих колес;

  • P3 - сигнал поворота колеса влево;

  • P4 - сигнал поворота колеса вправо;

Согласно технологическому процессу поворот стола робокары не требуется, поэтому концевые датчики стола и привод поворота стола не используются.

Адрес:

Метки:

Команда:

Примечание:

0001

alpha:

CALL START

Вызов п/п START

0002

MOV ax,100

Поместить в Акк параметра цикла

0003

MOV cx,ax

Задаем параметр цикла в регистре cx

0004

m1:

IN ax,KV1

Опрос KV1

0005

CMP ax,1

Сравнение содержимого ax и 1

0006

JZ m2

Если KV1=1, то переход на m2

0007

JMP m5

Иначе переход на m5

0008

m2:

IN ax,DG

Опрос датчика груза

0009

CMP ax,0

Сравнение содержимого ax и 0

0010

JNZ m2

Если DG<>0, то переход на m2

0011

CALL DELAY

Вызов п/п DELAY

0012

MOV ax, 1

Поместить управляющее воздействие 1 в Акк

0013

OUT P1,ax

Движение вперед

0014

m3:

CALL RUL

Вызов п/п RUL

0015

IN ax,KV2

Опрос KV2

0016

CMP ax,1

Сравнение содержимого ax и 1

0017

JZ m4

Если KV2=1, то переход на m4

0018

JMP m3

Иначе переход на m3

0019

m4:

MOV ax,0

Поместить управляющее воздействие 0 в Акк

0020

OUT P1,ax

Останов привода

0021

JMP m8

Переход на m8

0022

m5:

IN ax,DG

Опрос датчика груза

0023

CMP ax,1

Сравнение содержимого ax и 1

0024

JNZ m5

Если DG<>0, то переход на m5

0025

CALL DELAY

Вызов п/п DELAY

0026

MOV ax, 1

Поместить управляющее воздействие 1 в Акк

0027

OUT P2,ax

Движение назад

0028

m6:

CALL RUL

Вызов п/п RUL

0029

IN ax,KV1

Опрос KV1

0030

CMP ax,1

Сравнение содержимого ax и 1

0031

JZ m7

Если KV1=1, то переход на m7

0032

JMP m6

Иначе переход на m6

0033

m7:

MOV ax,0

Поместить управляющее воздействие 0 в Акк

0034

OUT P2,ax

Останов привода

0035

m8:

LOOP m1

Цикл по cx с переходом на m1

0036

HLT

Завершение программы

Подпрограмма START для приведение системы в исходное состояние

0037

START:

IN ax,KV1

Опрос KV1

0038

CMP ax,0

Сравнение содержимого ax и 0

0039

JZ m9

Если KV1=1, то переход на m9

0040

JMP m13

Иначе переход на m13

0041

m9:

IN ax,KV2

Опрос KV2

0042

CMP ax,0

Сравнение содержимого ax и 0

0043

JZ m10

Если KV2=1, то переход на m10

0044

JMP m13

Иначе переход на m13

0045

m10:

IN ax,DG

Опрос датчика груза

0046

CMP ax,0

Сравнение содержимого ax и 0

0047

JZ m11

Если DG=0, то переход на m11

0048

MOV ax,1

Поместить управляющее воздействие 1 в Акк

0049

OUT P1,ax

Движение вперед

0050

JMP m12

Переход на m12

0051

m11:

MOV ax,1

Поместить управляющее воздействие 1 в Акк

0052

OUT P2,ax

Движение назад

0053

m12:

CALL RUL

Вызов п/п RUL

0054

IN ax,KV1

Опрос KV1

0055

MOV bx,ax

Пеместить ax в bx

0056

IN ax,KV2

Опрос KV2

0057

ADD ax,bx

Сложить ax и bx

0058

CMP ax,0

Сравнение содержимого ax и 0

0059

JZ m12

Если ax=0, то переход на m12

0060

MOV ax,0

Поместить управляющее воздействие 1 в Акк

0061

OUT P1,ax

Остановка при движении вперед

0062

OUT P2,ax

Остановка при движении назад

0063

m13:

RET

Возврат в основную программу

Подпрограмма DELAY для формирования задержки

0064

DELAY:

MOV ax,cx

Переслать параметр цикла в Акк

0065

MOV dx,ax

Переслать параметр цикла из Акк в регистр

dx для временного хранения

0066

MOV ax,1000

Поместить новый параметр цикла в Акк

0067

MOV cx,ax

Переместить параметр цикла в регистр cx

0068

m14:

NOP

нет операции

0069

LOOP m14

Цикл по cx с переходом на m14

0070

MOV ax,dx

Переслать из dx в Акк прежний параметр цикла

0071

MOV cx,ax

Переслать прежний пораметр цикла в cx

RET

Возврат в основную программу

Подпрограмма RUL для управления поворачивающимся колесом

0072

RUL:

IN ax,ID1

Опрос левого индукционного датчика

0073

MOV dx,ax

Переслать из Акк в dx

0074

IN ax,ID2

Опрос правого индукционного датчика

0075

CMP ax,dx

Сравнение ax и dx

0076

JM m15

Если ax<dx, то перход на m15

0077

JP m16

Если ax>dx, то перход на m16

0078

JMP m17

Переход на m17

0079

m15:

MOV ax,1

Поместить управляющее воздействие 1 в Акк

0080

OUT P3,ax

Поворот колеса влево

0081

m16:

MOV ax,1

Поместить управляющее воздействие 1 в Акк

0082

OUT P4,ax

Поворот колеса вправо

0083

m17:

RET

Возврат в основную программу