Солнцев (Архив готовых домашних заданий)
Описание файла
Файл "Солнцев" внутри архива находится в следующих папках: Архив готовых домашних заданий, дз-2011. Документ из архива "Архив готовых домашних заданий", который расположен в категории "". Всё это находится в предмете "микропроцессорные устройства" из 8 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "микропроцессорные устройства управления" в общих файлах.
Онлайн просмотр документа "Солнцев"
Текст из документа "Солнцев"
Московский государственный технический университет им. Н. Э. Баумана
Домашнее задание по курсу
«Микропроцессорные устройства
управления роботами»
Выполнил: Данилов М.А.
Группа: РК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 Подпрограмма обработки прерывания
PRINT ‘interrupt’
C Ожидание, пока не исчезнет сигнал по каналу 1 (датчик ограждения)
WAIT IN -1
C Включение прерываний (были отключены при срабатывании прерывания)
ENABLE INCALLS
.End