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


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

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



Для перемещения к метке например 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].

Блок-схема работы данной программы представлена на рисунке 6.

Рис.6. Блок-схема программы с условным переходом

 

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

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

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

Доступно 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 Все права принадлежат авторам размещенных материалов.