различные ДЗ (Солнцев)

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






Московский государственный технический университет им. Н. Э. Баумана











Домашнее задание по курсу

«Микропроцессорные устройства

управления роботами»










Выполнил: Данилов М.А.

Группа: РК10-81

Проверил: Солнцев В.И.









Москва, 2011

Задание


1. Переставить шашки в системе координат WORLD . Из положения READY выйти в зону работы. Переставить шашки из угла в угол. Вернуться в положение READY.

Использовать п/п вычисления исходного и конечного положения шашки, п/п перестановки одной шашки. Шаг доски 34.5 мм. Схват оснащен датчиком наличия шашки (вход 5). При подходе к доске для взятия и постановки шашки снизить скорость.

Обучаются только транспортные положения и положение шашки (1:1). Если робот не захватил шашку, то печатается соответствующие сообщения и эта позиция пропускается.


2. Переставить шашки в системе координат доски. Положение доски произвольное. Переобучается только положение доски (использовать FRAME). В подпрограмме вычисления начального и конечного положения шашки использовать составные положения.

Остальное аналогично первой задаче.


3. Взять шашку с номером (i,j) и поставить на позицию (k,l). I,j,k,l задаются с помощью канала ВУ , подключенного к допол­нительному терминалу.

Из положения READY выйти в зону работы. Принять по последовательному каналу ВУ номера позиций i,j,k,l. Проверить их величину (1-8) . Если ошибка, то напечатать сообщение и перейти на начало приема. Переместить шашку.

Использовать фрагменты задачи 2.

Прием номеров позиций и их проверку оформить в виде п/п.

Вводимые номера должны отображаться на экране дополнительного терминала.


4. Выполнить задачу 2 с прерыванием работы от датчика ограждения (вход 1). после прерывания робот должен продолжить свою работу.



Задание 1

.Program CHECKER1

C Программа перестановки шашек (в системе WORLD).

C Вызов подпрограммы инициализации

CALL INIT

C Выход в положение READY

GO READY

С Выход в рабочее положение (над центром доски), которое было обучено

GO #WORK

C Количество шашек по оси X

SET X.MAX=4

C Количество шашек по оси Y

SET Y.MAX=3

C Текущие номера переставляемой шашки по осям X и Y

SET X.CUR=1

SET Y.CUR=1

C Подпрограмма перестановка шашки (X.CUR, Y.CUR)

10 CALL MOVE.CHECKER

C Выполняется циклический перебор всех значений X.CUR в интервале от 1 до X.MAX и Y.CUR от 1 до Y.MAX:

C

SET Y.CUR=Y.CUR+1

IF Y.CUR>Y.MAX THEN JUMP 20

JUMP 10

20 SET Y.CUR=1

SET X.CUR=X.CUR+1

IF X.CUR>X.MAX THEN JUMP 30

JUMP 10

C Выход в рабочее положение

30 GO #WORK

C Выход в положение READY

GO READY

RETURN

.End

.Program MOVE.CHECKER

C Подпрограмма для перемещения одной шашки

С Переход в положение WORK (над центром доски)

GO #WORK

SET X.POS = X.CUR

SET Y.POS = Y.CUR

C Вызов подпрограммы вычисления координат шашки (X.POS, Y.POS). Результат

C вычислений помещается в POS.

CALL POS.XY

C Позиция, из которой надо взять шашку

LOCATE FROM=POS

C Подойти к позиции FROM на расстояние 50 мм по оси Z.

GONEAR FROM,50

C Открыть схват

OPEN

C Уменьшить скорость движения в 2 раза при подходе для взятия шашки

SPEED 50%

C Подойти по прямой к позиции, из которой можно взять шашку

GOS FROM

C Закрыть схват

CLOSE

C Подняться на 50 мм над позицией FROM

GOSNEAR FROM, 50

C Восстановить нормальную скорость

SPEED 100%

С Если датчик наличия шашки (вход 5) показывает, что шашка не захвачена, переход

C на метку 10:

IF IN -5 THEN JUMP 10

C Номер клетки, куда будет переставлена шашка:

SET X.POS=9-X.CUR

SET Y.POS=9-Y.CUR

C Расчет позиции новой клетки

CALL POS.XY

C Положение, куда нужно переставить шашку

LOCATE TO=POS

C Подойти к позиции TO на расстояние 50 мм по оси Z.

GONEAR TO,50

C Уменьшить скорость движения в 2 раза при подходе для выставления шашки

SPEED 50%

C Подойти по прямой к позиции, на которую нужно выставить шашку

GOS TO

C Открыть схват

OPEN

С Подняться по прямой на 50 мм вверх

GOSNEAR TO,50

C Закрыть схват

CLOSE

C Восстановить прежнюю скорость

SPEED 100%

C Вернуться в положение над центром доски

GO #WORK

C Выйти из подпрограммы

RETURN

C Печать сообщения об ошибке, если шашка не захвачена

10 PRINT ‘error: checker not grabbed’

RETURN

.End

.Program POS.XY

С Подпрограмма для вычисления координат шашки по номеру ее клетки

С С11 – положение шашки в нижнем левом углу доски, было обучено

C Присвоение положения C11 положению CIJ

LOCATE CIJ = C11

С Выполнение цикла (X.POS-1) раз:

10 IF X.POS <= 1 THEN JUMP 20

C Смещение положения CIJ относительно текущего по горизонтали на 34.5 мм

C (размер клетки)

SHIFT CIJ = 34.5,0,0

SET X.POS = X.POS - 1

JUMP 10

С Выполнение цикла (Y.POS-1) раз

20 IF Y.POS <= 1 THEN JUMP 30

C Смещение положения CIJ относительно текущего на 34.5 мм по вертикали

SHIFT CIJ = 0,34.5,0

SET Y.POS = Y.POS - 1

JUMP 20

C Найденная позиция I,j шашки записывается в POS

30 LOCATE POS = CIJ

RETURN

.End

.Program INIT

С Подпрограмма инициализации

C Скорость перемещения схвата манипулятора = 150 мм/c

SPEED 100

C Масштабный коэффициент скорости

SPEED 100%

C Задержка при открытии схвата = 0.5 c

ODELAY .5

C Задержка при закрытии схвата = 0.5 с

CDELAY .5

RETURN

.End


Задание 2


.Program CHECKER2

C Программа перестановки шашек с использованием FRAME.

CALL INIT

GO READY

GO #WORK

SET X.MAX=4

SET Y.MAX=3

SET X.CUR=1

SET Y.CUR=1

10 CALL MOVE.CHECKER

SET Y.CUR=Y.CUR+1

IF Y.CUR>Y.MAX THEN JUMP 20

JUMP 10

20 SET Y.CUR=1

SET X.CUR=X.CUR+1

IF X.CUR>X.MAX THEN JUMP 30

JUMP 10

30 GO #WORK

GO READY

RETURN

.End

.Program MOVE.CHECKER

C Подпрограмма для перемещения одной шашки

GO #WORK

SET X.POS = X.CUR

SET Y.POS = Y.CUR

CALL POS.XY

LOCATE FROM=POS

GONEAR FROM,50

OPEN

SPEED 50%

GOS FROM

CLOSE

GOSNEAR FROM, 50

SPEED 100%

IF IN -5 THEN JUMP 10

SET X.POS=9-X.CUR

SET Y.POS=9-Y.CUR

CALL POS.XY

LOCATE TO=POS

GONEAR TO,50

SPEED 50%

GOS TO

OPEN

GOSNEAR TO,50

CLOSE

SPEED 100%

GO #WORK

RETURN

10 PRINT ‘error: checker not grabbed’

RETURN

.End

.Program POS.XY

С Подпрограмма для вычисления координат шашки по номеру ее клетки

LOCATE CIJ = C11

10 IF X.POS <= 1 THEN JUMP 20

SHIFT CIJ = 34.5,0,0

SET X.POS = X.POS - 1

JUMP 10

20 IF Y.POS <= 1 THEN JUMP 30

SHIFT CIJ = 0,34.5,0

SET Y.POS = Y.POS - 1

JUMP 20

C Позиция шашки задается относительно плоскости BOARD

30 LOCATE POS = BOARD(CIJ)

RETURN

.End

.Program INIT

SPEED 100

ODELAY .5

CDELAY .5

C Формирование плоскости с осями X и Y и центром в точке O

FRAME BOARD=O,X,Y

RETURN

.End


Задание 3


.Program CHECKER3

C Программа перестановки шашки, координаты присылаются.

CALL INIT

GO READY

C Получить 4 значения, присвоить их переменным I,J,K,L

CALL RECEIVE.BYTE

SET I=VAL

CALL RECEIVE.BYTE

SET J=VAL

CALL RECEIVE.BYTE

SET K=VAL

CALL RECEIVE.BYTE

SET L=VAL


GO READY

RETURN

.End


.Program RECEIVE.BYTE

C Подпрограмма получает байт данных, обрабатывает и определяет,

C является ли его значение допустимым

C Пока бит 7 в регистре состояния приемника не установлен, ждать

10 IF INGROUP RSPM2 < 128 THEN JUMP 10

C Выделить младший байт регистра данных приемника битовой маской

SET BYTE = INGROUP RDPM2 AND BYTE.MASK

PRINT ‘received byte = ‘, BYTE

C Т.к. ASCII-код ‘0’ = 48, ‘1’=49 и т.д.:

SET VAL = BYTE – 48

C Допустимыми являются значения VAL от 1 до 8

IF VAL>8 THEN JUMP 20

IF VAL<1 THEN JUMP 20

RETURN

20 PRINT ‘error value received, repeat’

JUMP 10

.End


.Program MOVE.CHECKER.IJKL

C Подпрограмма для перемещения одной шашки из позиции I,J в позицию K,L

GO #WORK

SET X.POS = I

SET Y.POS = J

CALL POS.XY

LOCATE FROM=POS

GONEAR FROM,50

OPEN

SPEED 50%

GOS FROM

CLOSE

GOSNEAR FROM, 50

SPEED 100%

IF IN -5 THEN JUMP 10

SET X.POS=K

SET Y.POS=L

CALL POS.XY

LOCATE TO=POS

GONEAR TO,50

SPEED 50%

GOS TO

OPEN

GOSNEAR TO,50

CLOSE

SPEED 100%

GO #WORK

RETURN

10 PRINT ‘error: checker not grabbed’

RETURN

.End

.Program POS.XY

С Подпрограмма для вычисления координат шашки по номеру ее клетки

LOCATE CIJ = C11

10 IF X.POS <= 1 THEN JUMP 20

SHIFT CIJ = 34.5,0,0

SET X.POS = X.POS - 1

JUMP 10

20 IF Y.POS <= 1 THEN JUMP 30

SHIFT CIJ = 0,34.5,0

SET Y.POS = Y.POS - 1

JUMP 20

30 LOCATE POS = BOARD(CIJ)

RETURN

.End

.Program INIT

SPEED 100

ODELAY .5

CDELAY .5

FRAME BOARD=O,X,Y

С Адрес регистра состояния приемника данных

SET RSPM=-152

C Адрес регистра данных приемника данных

SET RDPM= -150

C Битовая маска для выделения присланного байта

SET BYTE.MASK=255

RETURN

.End


Задание 4


.Program CHECKER2

C Программа перестановки шашек с использованием FRAME.

CALL INIT

GO READY

GO #WORK

SET X.MAX=4

SET Y.MAX=3

SET X.CUR=1

SET Y.CUR=1

10 CALL MOVE.CHECKER

SET Y.CUR=Y.CUR+1

IF Y.CUR>Y.MAX THEN JUMP 20

JUMP 10

20 SET Y.CUR=1

SET X.CUR=X.CUR+1

IF X.CUR>X.MAX THEN JUMP 30

JUMP 10

30 GO #WORK

GO READY

RETURN

.End

.Program MOVE.CHECKER

C Подпрограмма для перемещения одной шашки

GO #WORK

SET X.POS = X.CUR

SET Y.POS = Y.CUR

CALL POS.XY

LOCATE FROM=POS

GONEAR FROM,50

OPEN

SPEED 50%

GOS FROM

CLOSE

GOSNEAR FROM, 50

SPEED 100%

IF IN -5 THEN JUMP 10

SET X.POS=9-X.CUR

SET Y.POS=9-Y.CUR

CALL POS.XY

LOCATE TO=POS

GONEAR TO,50

SPEED 50%

GOS TO

OPEN

GOSNEAR TO,50

CLOSE

SPEED 100%

GO #WORK

RETURN

10 PRINT ‘error: checker not grabbed’

RETURN

.End

.Program POS.XY

С Подпрограмма для вычисления координат шашки по номеру ее клетки

LOCATE CIJ = C11

10 IF X.POS <= 1 THEN JUMP 20

SHIFT CIJ = 34.5,0,0

SET X.POS = X.POS - 1

JUMP 10

20 IF Y.POS <= 1 THEN JUMP 30

SHIFT CIJ = 0,34.5,0

SET Y.POS = Y.POS - 1

JUMP 20

30 LOCATE POS = BOARD(CIJ)

RETURN

.End

.Program INIT

SPEED 100

ODELAY .5

CDELAY .5

FRAME BOARD=O,X,Y

C Включить прерывания

ENABLE INCALLS

C По появлению сигнала на входе 1 (датчик ограждения) вызвать обработчик –

C подпрограмму INTERRUPT

INCALL 1, INTERRUPT

RETURN

.End

.Program INTERRUPT

C Подпрограмма обработки прерывания

PRINTinterrupt

C Ожидание, пока не исчезнет сигнал по каналу 1 (датчик ограждения)

WAIT IN -1

C Включение прерываний (были отключены при срабатывании прерывания)

ENABLE INCALLS

.End


Случайные файлы

Файл
66251.rtf
56225.rtf
123034.rtf
90893.rtf
10172-1.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.