Солнцев (1040449)
Текст из файла
Московский государственный технический университет им. Н. Э. Баумана
Домашнее задание по курсу
«Микропроцессорные устройства
управления роботами»
Выполнил: Данилов М.А.
Группа: РК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
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.