РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное
образовательное
учреждение высшего образования
«РОССИЙСКИЙ УНИВЕРСИТЕТ ТРАНСПОРТА
(МИИТ)»
ПРОГРАММИРОВАНИЕ РОБОТОВ НА
ЯЗЫКЕ RAPID
ЧАСТЬ 1
Учебно-методическое пособие к практическим
занятиям
Москва – 2018
0
МИНИСТЕРСТВО ТРАНСПОРТА
РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное
образовательное
учреждение высшего образования
«РОССИЙСКИЙ УНИВЕРСИТЕТ ТРАНСПОРТА
(МИИТ)»
ПРОГРАММИРОВАНИЕ РОБОТОВ НА
ЯЗЫКЕ RAPID
ЧАСТЬ 1
Учебно-методическое пособие
Для студентов направлений
15.03.01 «Машиностроение»,
15.04.06 «Мехатроника и робототехника»
Москва – 2018
1
УДК 004.89
Н 47
Рецензент:
Доцент кафедры «Электропоезда и
локомотивы» РУТ (МИИТ) к.т.н. Володин С.В.
2
ВВЕДЕНИЕ
Фирмы-производители промышленных
роботов разрабатывают собственные языки
программирования и средства разработки.
Большинство промышленных роботов имеют
комплексную программную оболочку, в которую по
необходимости можно интегрировать разнообразные
дополнительные модули расширения. Написание
программ происходит в обычном текстовом
редакторе или в собственных встроенных
текстовыми редакторами. Программы одного
производителя робота не подходят для робота
другого.
Программирование промышленных роботов
делится на два вида:
- Online-программирование;
- Offline-программирование.
Как правило, для программирования робота
могут использоваться оба вида. Существуют также
различия относительно методов программирования,
возможностей самих языков программирования и
возможностей роботов.
Online-программированием называют
программирование робота непосредственно на месте
его установки, с помощью пульта робота.
К данному способу относятся два метода:
Teach-In (обучение) и Playback (проигрывание).
Метод Teach-In. При этом методе движение
робота в пространстве к заданному участку
3
производится управляющей консолью. В
большинстве случаев в самом роботе (в первую ось)
заложена система координат, связанная в свою
очередь посредством кинематической цепи с самой
удаленной точкой робота (например, 6- й осью у
шестиосевого робота). Таким образом,
местоположение и ориентация всех осей и
предполагаемого инструмента робота в пространстве
всегда известны. Достигнутое местоположение
(пункт) запоминается котроллером робота и
выполняется до тех пор, пока робот не выполнит все
требуемые операции. Совокупность таких пунктов
определяет траекторию самостоятельного движения
робота. Каждый пункт имеет определенное
количество изменяемых параметров таких как
скорость движения и углового вращения, точность
конфигурацию осей.
Метод Playback. Рабочий орган робота
оператором вручную обводится по траектории
предполагаемого движения, которая в последствии в
точности повторяется роботом. Этот метод часто
применяется при программировании роботов,
занимающихся лакированием и покраской.
К недостаткам Online-программирования
относится то, что производственный процесс во
время программирования приостанавливается. К
тому же такое программирование не обеспечивает
высокой точности обработки и конечно не очень
удобно для каких-либо изменений.
4
Offline-программирование Данный вид
программирования производится на компьютере без
непосредственного участия робота, что дает
возможность программирования робота без
остановки производственного процесса.
Offline-программирование осуществляется
следующими видами программирования:
- Текстовое программирование. Это обычный
вид программирования, когда используется
текстовой язык программирования. Программа
описывает алгоритм работы всех частей робота,
опрос сенсоров и т.д. Программа непосредственно
или удаленно загружается в контроллер робота.
- Графическое программирование:
Программирование контуров обрабатываемых
деталей посредством запоминания отдельных точек
достаточно кропотливая работа, занимающая много
времени. С развитием компьютерной техники и
конструкторских программ стало возможным
применение CAD моделей для программирования
траектории движения робота на графические модели
деталей и затем интерпретировать их в язык
программирования роботов. Данные программы
позволяют также создавать модели и прототипы
робототехнических комплексов с роботами и
периферийным оборудованием, которые наглядно
отображают технологический процесс. Конечно,
такие программы не лишены недостатков и должны
быть впоследствии адаптированы непосредственно
5
на месте. Преимущество таких программ: экономия
времени и практически не останавливают
производства, возможность работать с программами
моделирования, которые позволяют увидеть работу
робота на экране монитора. Получаемое наглядное
изображение дает возможность предварительной
оценки многих параметров еще на стадии
планирования и конструирования
роботизированного комплекса:
- выбор типа робота;
- будет ли робот держать деталь или
инструмент;
- в состоянии ли робот достичь желаемой
позиции в пространстве.
Позиционирование детали в пространстве,
возможное столкновения робота и вспомогательного
оборудования, время рабочего цикла и т.д.
Виртуальная оценка рабочего пространства
робота дает четкое представление о расположении
узлов установки, что в реальности не всегда
возможно.
Но есть и недостатки такого
программирования. Offline-программирование
предполагает наличие CAD-данных по возможности
всех узлов роботизированного комплекса. Чем
точнее и полнее данные, тем точнее осуществляется
программирование робота. На практике не всегда
возможно получение всех 3D-моделей. Также
довольно трудно оценить расположение проводок
6
водо-, газо-, и энергоснабжения монтированных на
роботе и изменяющих свое положение в зависимости
от конфигураций осей робота.
MODULE MainModule
VAR num length;
VAR num width;
VAR num area;
PROC main()
length := 10;
width := 5;
area := length * width;
TPWrite "Square" \Num:=area;
END PROC
ENDMODULE
8
Для присвоения значения переменной
используют инструкцию := (двоеточие равно):
length := 10;
pi := 3.141592653589793;
name := "Иван"
finished := TRUE;
Стоит отметить, что «:=» - это символ
присваивания. Выражение справа записывается в
переменную слева (только переменная может быть
слева от :=). Например, после выполнения
следующего кода переменная reg1 примет значение
3:
reg1 := 2;
reg1 := reg1 + 1;
Присвоение может быть осуществлено в
момент объявления переменных:
VAR num length := 10;
VAR dnum pi := 3.141592653589793;
VAR string name := "Иван";
VAR bool finished := TRUE;
Реманентная (persistance) переменная
запоминает последнее значение, которое ей было
присвоено, даже если программа остановилась и
снова запустилась (без выключения питания
контроллера).
Реманентная переменная объявляется с
помощью ключевого слова PERS. При объявлении
нужно сразу присвоить ей значение:
PERS num nbr := 1;
9
PERS string string1 := "Привет";
Рассмотри на примере:
PERS num nbr := 1;
PROC main()
nbr := 2;
ENDPROC
Если выполнить эту программу, то значение
изменится на 2. Когда в следующий раз программа
будет выполняться, программный код будет
выглядеть следующим образом:
PERS num nbr := 2;
PROC main()
nbr := 2;
ENDPROC
1.2 ПОСТОЯННЫЕ
10
1.3 ОПЕРАТОРЫ
11
1.4 УСЛОВИЕ И ЦИКЛЫ
Условие IF-THEN.
Инструкция условия IF может быть
использована, когда ряд операторов должен быть
исполнен при определенном условии, встреченном в
программе.
Если логическое утверждение в постановке
условия IF – правда, тогда программа выполняет ту
часть кода, которая заключена между ключевыми
словами THEN и ENDIF. Если утверждение – ложь,
то код не выполняется и продолжает выполнение
после ENDIF.
В нижеприведенном примере строка string1
выводится на дисплей FlexPendant, если строка не
пуста. Если string1 пуста (нет символов), тогда
ничего не происходит.
VAR string string1 := "Привет";
IF string1 <> "" THEN
TPWrite string1;
12
ENDIF
Утверждение IF также может содержать код
программы для исполнения, если условие его
выполнения - ложь.
Если логическое условие в IF – правда, то
выполняется часть программы между словами THEN
и ELSE. Если логическое условие – ложь, то
выполняется часть программы между словами ELSE
и ENDIF.
В следующем примере строка string1
выводится на дисплей FlexPendant, если строка не
пуста. Если string1 пуста, тогда на дисплей будет
выведена строка «Строка пуста».
VAR string string1 := "Привет";
IF string1 <> "" THEN
TPWrite string1;
ELSE
TPWrite "Строка пуста";
ENDIF
Иногда выходит, что имеется более двух
альтернатив, тогда используется ELSEIF для их
разрешения:
VAR num time := 38.7;
IF time < 40 THEN
TPWrite "Станок работает в быстром режиме";
ELSEIF time < 60 THEN
TPWrite " Станок работает в среднем режиме ";
ELSE
13
TPWrite " Станок работает в медленном
режиме ";
ENDIF
В данном примере прописывается разный
текст в зависимости от значения переменной time.
Отметим, что при первом условие – правда, текст
будет выведен на дисплей (два оставшихся не будут
выведены, несмотря на то, что время будет меньше
60).
Примеры использования цикла IF:
Цикл FOR.
Другой способ контроля потока программы –
это повторять код программы несколько раз.
Рассмотрим на примере программы, которая
повторит написание слова «Привет» 5 раз:
FOR i FROM 1 TO 5 DO
TPWrite "Привет";
15
ENDFOR
Синтаксис FOR следующий:
FOR счетчик цикла FROM начальное значение
TO конечное значение DO
Программный код для повторения
ENDFOR
Счетчик не должен быть объявлен, но
считается числовой переменной внутри цикла FOR.
В первый раз выполнения кода значение счетчика
определяется начальным значением. И каждый раз
при выполнении кода значение счетчика
увеличивается на 1. В последний раз код
выполняется, когда счетчик равен конечному
значению. После этого выполняется код после
ENDFOR.
Счетчик может быть использован внутри
цикла FOR. Например, вычислим сумму чисел от 1
до 50 используя следующую программу.
VAR num sum := 0;
FOR i FROM 1 TO 50 DO
sum := sum + i;
ENDFOR
В ходе цикла FOR счетчику цикла не
присваивается значение.
Цикл WHILE.
С циклом WHILE программа будет повторять
код до тех пор, пока условие не станет правдивым.
Цикл имеет следующий синтаксис:
16
WHILE условие DO
Программный код для повторения
ENDWHILE
Если условие сразу же ложное, то код
выполнится ни разу.
Если условие правдиво, то код будет
выполняться пока условие не перестанет быть
правдивым.
Следующий код будет прибавлять числа, пока
сумма не достигнет 100.
1.5 СИНТАКСИС
FOR ENDFOR
WHILE ENDWHILE
PROC ENDPROC
- Комментарии, начинающиеся с восклицательного
знака (!), не воспринимаются контроллером робота.
Используйте свободно в коде. Пример:
! Вычисление площади прямоугольника
area := length * width;
- В RAPID рекомендуется все зарезервированные
слова (VAR, PROC) писать с заглавной буквы.
- Для удобного восприятия код находящийся между
PROC и ENDPROC необходимо делать с отступами.
Когда программируете с помощью FlexPendant,
отступы реализуются автоматически. Пример:
21
Зона: определяет угловую зону постоянной
типа данных zonedata. Есть много
предустановленных значения, такие как: fine – робот
движется прямо к указанной точке; z10 – робот по
пути может срезать углы, когда до точки остается
меньше 10 мм; z50 – робот по пути может срезать
углы, когда до точки остается меньше 50 мм.
Полный список предустановленных значений
zonedata так же можно найти в технической
документации. Как и со скоростью, используя
предустановленные значения, их не нужно
объявлять и присваивать.
Результатом следующей инструкции RAPID
будет путь, показанный ниже:
MoveL p10, v1000, z50, tool0;
MoveL p20, v1000, fine, tool0;
22
данных tooldata. Если робот оборудован сварочным
пистолетом, пульверизатором с клеем или ручкой, то
мы хотим запрограммировать точку назначения для
данного рабочего органа. Это произойдет
автоматически, если tooldata объявлена, присвоена и
используется в инструкции MoveL. tool0 –
предустановленный инструмент, обозначающий
робота без установленного на нем какого-либо
инструмента, и который не должен быть объявлен
или присвоен. Иной инструмент должен быть
объявлен и присвоен до начала использования.
Позиция, к которой, согласно инструкциям,
происходит движение, определена как координаты в
системе координат. Если система координат не
определена, заданная позиция относиться к базовой
системе координат робота, находящаяся в основании
робота (см. схему ниже). Другая система координат
может быть определена и использована
инструкциями движения. Какая система координат
для движения будет использована, определяется с
помощью опционального аргумента \WObj:
MoveL p10, v1000, z50, tool0 \WObj:=wobj1;
Для большей информации, как определять
систему координат, можно ознакомиться с
технической документацией.
Примеры использования MoveL.
1) Робот держит ручку (в качестве рабочего
органа) над бумагой на столе. Требуется опустить
кончик ручки на бумагу, и затем нарисовать квадрат.
23
Программа:
PROC main()
MoveL p10, v200, fine, tPen;
24
MoveL p20, v200, fine, tPen;
MoveL p30, v200, fine, tPen;
MoveL p40, v200, fine, tPen;
MoveL p10, v200, fine, tPen;
ENDPROC
PROC main()
MoveL p10, v200, fine, tPen;
MoveL p20, v200, z20, tPen;
MoveL p30, v200, fine, tPen;
MoveL p40, v200, z50, tPen;
MoveL p10, v200, fine, tPen;
ENDPROC
26
Оглавление
1. ОСНОВЫ ЯЗЫКА RAPID................................ 8
1.1 ПЕРЕМЕННЫЕ......................................... 8
1.2 ПОСТОЯННЫЕ ...................................... 10
1.3 ОПЕРАТОРЫ .......................................... 11
1.4 УСЛОВИЕ И ЦИКЛЫ............................ 12
1.5 СИНТАКСИС.......................................... 18
2. ФУНКЦИОНИРОВАНИЕ РОБОТОВ С
RAPID ................................................................... 20
2.1 ИНСТРУКЦИИ ДВИЖЕНИЯ................... 20
27
Учебно-методическое издание
ПРОГРАММИРОВАНИЕ РОБОТОВ НА
ЯЗЫКЕ RAPID
ЧАСТЬ 1
Учебно-методическое пособие
28