Програмирование промышленных роботов
А давайте поговорим сегодня о программировании роботов. Да роботов, но не игрушек роботов, а промышленных роботов. Роботов, которые каждый день всё больше и больше завоёвывают своё место в промышленности.
Оставим в стороне программирование САПР (SPS Step S7 н/р) и робота в одну систему, предположим, у нас уже есть настроенная установка с роботом, которая соответствует нашим требованиям и она работает без ошибок. Осталось дело за малым: закинуть на робота нужную программку и нажать СТАРТ.
И вот тут и возникает первые вопросы. Если настройка установки с роботом более менее соответствуют общим требованиям промышленности и тех. безопастности, то программа робота - это ваша личная идея, ну и реализация соответсвенно тоже.
Нет, конечно же можно пригласить специалиста с фирмы производителя робота и он вам сделает одну две простенькие программки за счет покупки робота, но последующие программы будут вам уже стоить денег. И денег не малых.
Тут и возникает идея - самому писать программы для робота. Производитель роботов обычно и предлагает курсы по программированию. Тут есть обычно два варианта: Teach-in и Off-Line программирование.
Первое предусматривает метод "обучения" робота, при котором оператор с помощью джостика или пульта управления подводит робота к каждой точке будущей программы и "запоминает эту точку в мозгах робота".
Система простая, но удовольствие конечно мало, если точек очень много и доступ к точкам ограничен самой деталью (её геометрией). Нужно добавить сюда ещё тот факт, что каждый производитель роботов по своему решает систему управления роботом. Н/р, у одних движение робота по осям x, y, z, идёт через нажатие/вращение джостика в нужном направлении. И наклон робота по углам A, B, C, то же этим же джостиком, но сперва вам необходимо перейти в другое меню управления движением. Такие прыжки туда сюда отнимают очень много времени и нервов. У других, на все движения есть свои отдельные кнопки, две для каждого направления.
Если учесть ещё тот факт, что для каждой точки необходимо выставить определённое растояние и угол, и при этом держать на пульте управления нажатой клавишу включения робота (тех.безопастности), и двигать робот, то обычно не хватает 3-й, а то и 4-й руки...
Написать программку на 5000 точек, в зависимости от необходимой точности и геометрии детали, таким методом затянется на пару месяцев. При этом вам будет необходимо занять установку с роботом, т.е. установка будет стоять, так же как и продукция. Конечно, если у вас есть ещё один робот, на котором вы будете писать программу не останавливая робот на установке. Это позволит не останавливать работу установки, но не сократит время программирования. И тут еше добавится тот факт, что при переносе программы с программного робота, на робот в установке, прийдётся программу "немного" подгонять...
Но есть и позитивная сторона у этого метода: объезжая все эти точки в реальности, можно уверено сказать, что робот при объезде не врежется в деталь или в какой-либо другой объект установки, т.к. это было бы заметно уже на стадии "запоминания" этих точек. Но это не совсем верно, так как в режиме автоматики на 100%, робот может ехать не совсем так, как на этапе программирования в ручном режиме.
Второй вариант программирования предусматривает создание программы на компьютере. Для этого необходим конечно эдитор (обычно от роботопроизводителя или же другого разработчика), CAD модель детали (иногда с механизмом крепления), CAD модель рабочего инструмента на роботе и CAD модель измерительного инструмента (необходимого для калибровки программы непосредственно в установке). CAD робота, а так же его кинетическая модель обычно уже заложены в эдиторе.
И в зависимости от эдитора нам открываются по истине великолепные возможности программирования.
Самыми важными пунктами является возможность работы с поверхностью и гранями CAD детали. Кстати CAD формат должен поддерживаться эдитором (н/р .igs или .stp) иначе программирование значительно затрудняется и приходится импровизировать, что сказывается на времени, точности ну и качестве программы.
Предположим, нам необходимо сделать программу для обработки всей поверхности простой детали, как на фото.
И обработка подразумевает под собой объезд всей верхней поверхности "змейкой" с определённым растоянием между дорожками (растер) и с углами 90°. Такое применяется н/р для пескоструя или покраски поверхности.
При использовании первого метода, необходимо иметь саму деталь, расчертить на ней дорожки, закрепить на рабочем столе и задавать все эти точки (обычно это те места, где меняется направление движения) роботу в необходимой последовательности с необходимыми условиями (растояние и угол инструмента к каждой точке). Задавать такие данные, как тип движения (линейное, свободное или по окружности), точность движения (насколько точно робот должен подъехать к этой точке, н/р 1мм или 5мм), скорость движения к этой точке и каким инструментом робот должен подъехатъ к ней. Одни из этих параметров перенимаются автоматически от предыдущей точки, другие надо задавать каждый раз заново.
Задав таким образом все точки, вы создаёте часть программы, которая отвечает за движение робота. (Другая часть - контакт с внешним миром через САПР или подача/считывание сигнала на выход/вход, делается обычно один раз и перенимается от программы к программе и здесь не будет расматриваться.) После этого программа контролируется в ручном, в тестовом и автоматическом режимах. Если всё ОК - работа сделана. Можно пойти за кофеёчком.
А что, если завтра или через месяц прийдёт другая пластина для обработки, которая чуток длиннее или шире? Можно конечно измерить изменения и в текстовом эдиторе изменять координаты X, Y, Z точкам в старой программе не останавливая робот и надеятся, что всё получится ОК. Ну или же менять старую программу непосредственно на роботе перезабивая старые точки на новые. При этом сперва накидав новые дорожки на новой детали.
Более продвинутые программисты, н/р от производителя робота, для таких задач/деталей могут написать программку, которая сама генерирует программу для движения. Для неё будет только необходимо объехать три точки детали и запомнить их. Из этих точек программа считает координаты X, Y, Z, определит размер поверхности, расчитает сдвиг от дорожки к дорожке и сгенерирует движение на всю поверхность детали. Контроллер робота - это же компьютер и позволяет производить логические, арифметические операции. Главное тут правильно разработать алгоритм.
Но если детали каждый раз имеют разную форму, то облегчить себе работу вышеописанным образом не получится.
Вот тут и приходит на помощь Off-Line программирование.
Для простых задач этот вариант в принципе не нужен, но для более серьёзных ему нет замены.
Давайте разберём сперва тот же первый пример с фото выше.
(Настройку эдитора мы не будем тут расматривать)
Помещаем в эдитор CAD детали и распологаем её по возможности точно так же по отношению к роботу, как в установке. Желательно на этом этапе произвести калибровку детали, т.е. промерить её положение в установке и перенести это положение в эдитор. Этим достигается то, что робот действительно достанет все точки детали, плюс, можно увидеть уже в эдиторе как поведёт себя робот при обработке детали, н/р перекрутятся у него оси или нет.
Создаём дорожку на парралельных рёбрах детали методом их захвата.
Полученные дорожки сегментируем (делим точками) под длину будущего растера.
Создаём змеевидную дорожку методом захвата раннее созданных точек в необходимой последовательности.
Выделяем нашу дорожку, заносим уже известные нам параметры (скорость движения, точность итд.), оптимируем угол инструмента к точкам. Включаем симуляцию программы
(убрал инструмент из фото, т.к. всё под авторскими правами, синяя полоска - симулирует н/р струю пескоструя)
и если всё прошло без "танцев с бубнами в исполнении робота", то генерируем программный код/файл, который переписываем на контролер робота. Контролируем программу в установке, жмём на СТАРТ, идём за кофе.
Давайте расмотрим другой пример задачи.
На эту деталь необходимо нанести клей на верхнюю плоскость, от края рёбр 15мм по периметру и от края круглых, больших отверстий 5мм то же по периметру.
Так же как и в впредыдущем примере, захватываем рёбра поверхности. (серая линия - предложения эдитора для захвата ребра, белая - будущая дорожка, если мы подтвердим её)
Созданная дорожка
Создаём паралельную дорожку со сдвигом 15 мм внутрь предыдущей. (Кстати, цвертные стрелки показывают направление инструмента, во всех точках, оно при создании разное и его надо будет потом исправлять)
Добавляем точки въезда и выезда. Повторяем то же самое с круглыми отверстиями.
Заносим нужные параметры точкам как и в предыдущем примере, исправляем ориентирование инструмента, включаем симуляцию.
При необходимости заносим команды вкл./выкл. контроль, входов/выходов, генерируем программу, заносим на робот, тестируем, запускаем в автоматике, хлопаем себя по плечу и со словами: "ай какой молодца" - идём за кофем.
Теперь немного про $$$.
За работу продвинутого программиста из примера выше (создание программы для генерирования программы движения исходя из трех точек) производитель роботов возмёт ~200€/час, солидно да?
И ещё пример, на ebay.de был один программист, который продавал свои услуги по программированию робота первым методом, teach-in. За неделю работы: 5 дней по 8-10 часов в день он просил 5000€ вместе с приездом и жильём. За 5 дней продажи, за этим предложением наблюдало около 50 покупателей. Правда, мне не известно, сколько раз он смог так "продать" свой сервис.
Ну, вот такой краткий обзор по программированию роботов.
Тут кажется нет вообще ничего на эту тему и решил исправить этот пробел.
Не пинайте сильно, да и вообще не пинайте :-), первая попытка в таком роде.
Если будет интересно, могу ещё накидать пару статеек.
Всем бобра!











