Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

ОТЧЁТ О НАУЧНО-ИССЛЕДОВАТЕЛЬСКОЙ РАБОТЕ

 

по курсу: Основы мехатроники

 

 

 

Выполнил: ……………………………………………….…… Асатрян Т.А.

 

Группа: ………………………………………………….….… МХТ.Б-51

 

Руководитель: ……………………..…………………………. Пащенко В.Н.

 

Калуга. 2013 г.

Постановка задачи:

1. Изучение программной части робота FANUK R200iB/165F

2. Исследование регистров

3. Научиться программировать, используя подпрограммы

 

 

Во время практики в лаборатории кафедры «Мехатроника и робототехника», мною было проведено исследование промышленного манипулятора FANUK R200iB/165F(Рис.1).

Рис.1. Манипулятор FANUK R200iB/165F

В частности исследование касалось программной части робота. Работа велась по темам подпрограммы и регистры. Целью работы было изучение регистров и программирования с использованием подпрограмм.

 

Регистры.

Служат для хранения чисел. Обозначается R[i]. Например R[1] = 1, число 1 записано в регистр 1.

       
           
           
         

 

Доступно 200 регистров (количество может быть увеличено)

 

Возможна прямая и косвенная адресации регистра.

При прямой адресации индекс регистра задается как номер - R[2] = 5 В данном случае инструкция присваивает регистру номер 2 значение 5, при этом старое значение регистра будет удалено.

При косвенной адресации индекс регистру задается не как номер, а косвенно, с помощью другого регистра т.е. R[R[3]] = 5. В данном случае инструкция содержит внутренний регистр R[3] и внешний регистр R[R[3]]. Если, например значение регистра R[3] равно 2, внешний регистр будет адресован с индексом 2 - (R[2] = 5).

Возможны следующие арифметические операции:

R[…] = …+… подсчет (суммирование)

R[…] = …-… вычитание

R[…] = …*… умножение

R[…] = …/… деление

R[…] = …DIV… целочисленное деление

R[…] = …MOD… остаток после деления.

Замечание. В рамках одной инструкции позволено несколько арифметических операций, но с ограничениями (не смешивать операции (АND/OR) использовать не более 5 операторов.

 

Добавление инструкции по работе с регистром

Для присвоения регистру значения (код R[1]=0), с помощью F1 (INST) вызвать окно (Рис.2).

Рис.2. Меню Instruction

Выбрать пункт Registers. Откроется окно (Рис. 3).

Рис.3. Меню регистров

В нем выбрать R[ ]=(…) (многоточия заменяются константой аналогично выбору системы координат(UFRAME_NUM или UTOOL_NUM) и написать R[1] = 1.

Для написания выражения с присвоением (R[1]=R[1]+1)нажатьF1 (INST) вызвать окно, изображенное на рисунке 1. Выбрать меню Registers и откроется окно (Рис. 4).

Рис.4. Меню шаблонов

В нем выбрать шаблон выражения в котором заменить многоточия на нужные выражения.

 

Операторы безусловного перехода

Для создания циклов и ветвлений программы используются операторы безусловного перехода (JMP_LBL). Вид инструкции:

JMP_LBL[i], где i – номер метки, в которую необходимо осуществить переход.

LBL[i] – инструкция описывающая метку, i – номер метки.

 

Пример 1:

Рассмотрим пример использования регистра в качестве счетчика, а так же операторов безусловного перехода.

Пусть имеется программа

1: J P[1] 100% FINE

2: J P[2] 100% FINE

3: J P[3] 100% FINE

[END]

Добавим в программу следующие операторы

В данном примере –R[1] – регистр выступающий в качестве счетчика. Начальное значение регистра ноль. Инструкция JMP_LBL[1] (безусловный переход) – переводит выполнение программы в метку 1 (строка 2). Таким образом блок кода реализующий обход трех точек (строки 3, 4, 5) будет выполняться бесконечное количество раз. Причем в регистре номер 1 будет содержаться число выполненных итераций.
1: R[1] = 0

2: LBL[1]

3: J P[1] 100% FINE

4: J P[2] 100% FINE

5: J P[3] 100% FINE

6: R[1] = R[1] + 1

7: JMP_LBL[1]

[END]

 

Добавление инструкции безусловного перехода

Для перемещения к метке например JMP LBL[4]или установки метки нужно нажать F1 (INST) и выбрать в открывшемся меню - JMP/LBL. Откроется меню (Рис.5).

Рис.5. Меню меток

 

 

Оператор IF

Условный оператор IF служит для ветвления программы.

Пример 2:

Для примера 1 из предыдущей главы написать условие при котором выход из цикла осуществляется после 3й итерации.

1: R[1] = 0 // регистр играющий роль счетчика

2: LBL[1] // метка LBL[1], начало цикла

3: J P[1] 100% FINE // движение в точку P[1]

4: J P[2] 100% FINE // движение в точку P[2]

5: J P[3] 100% FINE // движение в точку P[3]

6: R[1] = R[1] + 1 // прибавление к регистру-счетчику единицы

7: IF (R[1] <> 3), JMP_LBL[1] // условный переход в метку LBL[1]

8: J P[4] 100% FINE // движение в точку P[4]

[END]

Из примера видно, что в 7 строке происходит ветвление кода, то есть, в зависимости от значения регистра 1 может выполниться либо блок кода обхода трех точек, либо переход в точку P[4].

 

 

 

Позиционный регистр

Служит для хранения координат точек. Обозначается PR[i]

В инструкции с позиционным регистром выполняется арифметическая операция или смещение позиции - является переменной, содержащей позиционные данные.

Доступно 100 регистров.

Возможны следующие арифметические операции

PR[…] = …+… подсчет (суммирование)

PR[…] = …-… вычитание

PR[…] = …*… умножение

PR[…] = …/… деление

PR[…] = …DIV… целочисленное деление

PR[…] = …MOD… остаток после деления.

Кроме того операции:

· Смещения – PR[i]-(регистр), например PR[n]=PR[m];

· смещение по отдельной оси - PR[i,j]=(регистр)(оператор)(регистр), например PR[1,2]=1500.

· Арифметическая операция для оси PR[i,j]=()параметр)(оператор)(параметр), например PR[1,2]=PR[1,2]+100.

i - номер позиционного регистра

j – обозначение координаты.

j=1 X j=2 Y j=3 Z
j=4 W j=5 P j=6 R

 

Например PR[2,3]= 100 – это присвоение значения 100 координате Z находящейся во втором позиционном регистре.

 

Пример 1:

Рассмотрим программу, которая обходит 3 точки в плоскости XOY 6й пользовательской системы координат, образующие прямоугольный треугольник с катетами 40 и 60.

Предполагаем, что в позиционном регистре номер 10 записаны координаты точки на плоскости XOY (в системах UF=6, UT=4).

 

1: UFRAME_NUM=6 ;

2: UTOOL_NUM=4 ;

3: J PR[10] 100% FINE ; // двигаться в позиционный регистр 10 (ПР10)

4: PR[10,1]=PR[10,1]-60 ; // вычесть 60 из значения координаты Х ПР10

5: L PR[10] 500mm/sec FINE ; //двигаться в ПР10

6: PR[10,2]=PR[10,2]+40 ; //прибавить 40 к значению координаты У ПР10

7: L PR[10] 500mm/sec FINE ;//двигаться в ПР10

8: PR[10,1]=PR[10,1]+60 ; //вернуть координате Х ПР10 начальное значение

9: PR[10,2]=PR[10,2]-40 ; //вернуть координате У ПР10 начальное значение

10: L PR[10] 500mm/sec FINE ;//двигаться в ПР10

 

Отметим так же, что позиционный регистр хранит лишь числовые значения координат X Y Z W P R, поэтому один и тот же регистр можно использовать в разных системах координат.

 

Пример 2:

Рассмотрим программу, которая рисует треугольник из примера 1 в двух разных пользовательский системах координат:

Предполагаем что регистр PR[11] хранит значения точки на плоскости XOY (координата Z равна нулю).

1: UFRAME_NUM=6 ; // активная пользовательская система координат

2: UTOOL_NUM=4 ; // активная система координат инструмента

3: R[100]=0 ; //регистр-счетчик

4: LBL[1] ; //метка LBL[1], начало цикла

5: PR[10] = PR[11] ; //начальная точка

6: J PR[10] 100% FINE ; //движение в PR[10]

7: PR[10,1]=PR[10,1]-60 ; // смещение PR[10] по оси X на 60

8: L PR[10] 500mm/sec FINE ; //движение в PR[10]

9: PR[10,2]=PR[10,2]+40 ; // смещение PR[10] по оси Y на 40

10: L PR[10] 500mm/sec FINE ; //движение в PR[10]

11: PR[10,1]=PR[10,1]+60 ; // смещение PR[10] по оси X на 60

12: PR[10,2]=PR[10,2]-40 ; // смещение PR[10] по оси Y на 40

13: L PR[10] 500mm/sec FINE ; //движение в PR[10]

14: UFRAME_NUM=7 ; // смена активной пользовательской системы координат

15: R[100]=R[100] + 1 ; // прибавление к регистру-счетчику единицы

16: IF (R[100] <> 2) JMP_LBL[1] // условный переход в метку LBL[1]

 

В результате выполнения данной программы, блок кода для рисования треугольника (строки 4-16) будет выполнен дважды (регистр R[100] выступает в роли счетчика, а оператор IF на 16 строке обеспечивает выход из цикла после второй итерации). Причем в первый раз данный блок кода будет выполняться при активной системе координат UF6 (строка 1), второй раз треугольник будет нарисован в плоскости XOY системы координат UF7 (строка 14).

 

 

Подпрограммы

Для программирования движений робота кроме основных исполнительных программ, используются подпрограммы. Имена создаваемых подпрограмм, так же как и имя исполнительной программы могут быть настраиваемым в зависимости от используемых на предприятии стандартов. Рассмотрим один из стандартов, в котором используются следующие основные подпрограммы.

UP -подпрограмма, не может быть запущена самостоятельно, но также как и исполнительная программа может использовать инструкции перемещения и т.д.

MAKRO –подпрограмма, которая не может быть запущена самостоятельно, и не может использовать инструкции перемещения.

 

Создание имени подпрограммы

Для задания имени, создаваемой программы необходимо выполнить следующую последовательность действий.

 

1. Нажать на пульте управления SELECT F2 (CREATE)

В результате появиться окно написания программы (Рис.6).

Рис.6. Окно написания программы.

2. С помощью функциональных клавиш F1 – F5 ввести имя создаваемой программы

Например, если нажатьF2 - UPто в имени программы появиться тип создаваемой подпрограммы (Рис.7).

Рис.7. Создание подпрограммы

 

Затем в меню Alpha input выбрать:

 

uppercase (заглавные символы),

lowercase(строчные символы).

И с помощью клавиш F1 – F5 набрать комментарий.

Набрать цифры можно непосредственно набирая на клавиатуре.

Если нажать Options, то появиться клавиатура (Рис.8)

 

Рис.8. Клавиатура.

 

На которой можно непосредственно ввести имя подпрограммы.

Введем, например 070 и нажмем ENTER. В результате введем имя подпрограммы UP070, как показано на (Рис.9).

 

Рис.9. Ввод имени подпрограммы

 

 

Для ввода кода подпрограммы необходимо нажать ENTER. В результате появиться соответствующее окно (рис.10).

Рис.10. Окно ввода кода подпрограммы.

 

Рассмотрим примеры правильных\неправильных имен подпрограмм:

 

Правильные имена программ:

UP001, UP999.

 

Неправильные имена программ:

UPA, UPA1, UP1A.

 

 

Рассмотрим пример подпрограммы рисования линии определенной длины.

Добавление кода

В общем случае задание систем координат в подпрограмме не обязательно, поскольку, как было указано выше, подпрограмма не может быть запущена самостоятельно, а только посредством основной программы. В свою очередь задание систем координат в основной программе обязательно, которые являются глобальными (сточки зрения программирования), то есть по умолчанию подпрограмма должна использовать заданные системы координат. Однако рекомендуется задание систем координат в подпрограммах поскольку:

Случай 1: если в подпрограмме присутствуют инструкции перемещения, не использующие позиционных регистров, то данные инструкции могут быть не выполнены (ошибка Invalid uframe num), в случае если координаты их точек записаны в системе координат отличной от той, что определены в основной программе.

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

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

 

Пример 3:

Напишем подпрограмму которая рисует горизонтальную линию длиной 50 мм:

1. Перед написанием программы в 17-й позиционный регистр записать координаты точки, отстоящей от начальной точки отрезка на 20 мм от плоскости XOY.

2. Добавим следующий код в подпрограмму UP070 (Рисунок 11).

 

Рис.11. Код подпрограммы UP070

 

Рассмотрим код подпрограммы:

Строка 1 – определение активной пользовательской системы координат (в данном случае ранее определенная система координат UF6, привязанная к доске)

Строка 2 – определение активной системы координат инструмента ( TCP инструмента -UT=4)

Строка 4 – двигаться TCP инструмента в PR[17], с координатами точки, отстоящей от доски на 20 мм

Строка 6 – изменить значение координаты Z позиционного регистра PR[17], сместив тем самым TCP его на поверхность XOY СК UF6

Строка 8 – двигаться в новую позицию PR[17]

Строка 10 – изменить значение координаты Х позиционного регистра PR[17]

Строка 12 – двигаться в новую позицию PR[17], нарисовав таким образом горизонтальную линию

Строка 14 – изменить значение координаты Z, т.е. отступив от XOY обратно на 20 мм.

Строка 16 – двигаться в новую позицию PR[17]

 

Теперь данную подпрограмму можно вызывать из программы или из других подпрограмм. Рассмотрим пример использования данной подпрограммы:

 

Пример 4:

Напишем программу, которая рисует на плоскости XOY пунктирную линию:

 

1: UFRAME_NUM=6 ;//определение активной пользовательской системы координат

2: UTOOL_NUM=4 ;//определение активной системы координат инструмента

3: R[100]=0 ;// регистр, выполняющий роль счетчика

4: LBL[1] ;// метка LBL[1], начало цикла

5: CALL UP070 ;// вызов подпрограммы UP070

6: PR[17, 1] = PR[17,1] + 10 ;// смещение начальной точки по оси X на 10 мм

7: R[100] = R[100] + 1 ;// прибавление к регистру-счетчику единицы

7: IF (R[100] <10), JMP_LBL[1] ;// условный переход к началу цикла (метка LBL[1])

 

Данная программа 10 раз вызовет UP070, причем каждый раз после вызова смещая позиционный регистр 17 по координате X на 10. Таким образом будет нарисована пунктирная линия.

 

 

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.