ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 31.05.2025

Просмотров: 168

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

Домашнее задание по курсу «Микропроцессорные устройства управления роботами»

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

Группа: РК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