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).
Рассмотрим пример подпрограммы рисования линии определенной длины.
Добавление кода
В общем случае задание систем координат в подпрограмме не обязательно, поскольку, как было указано выше, подпрограмма не может быть запущена самостоятельно, а только посредством основной программы. В свою очередь задание систем координат в основной программе обязательно, которые являются глобальными (сточки зрения программирования), то есть по умолчанию подпрограмма должна использовать заданные системы координат. Однако рекомендуется задание систем координат в подпрограммах поскольку:
Случай 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: IF (R[100] <10), JMP_LBL[1] ;// условный переход к началу цикла (метка LBL[1])
Данная программа 10 раз вызовет UP070, причем каждый раз после вызова смещая позиционный регистр 17 по координате X на 10. Таким образом будет нарисована пунктирная линия.