Программа для программирования роботов fanuc

Обновлено: 28.06.2024


Под runtime программированием в этой статье понимается процесс создания исполняемой программы для контроллера робота (далее просто робота) на внешнем контроллере. Процесс исполнения роботом созданной программы в таком случае, происходит итерационно, путем передачи ему минимальной исполняемой команды или пакета команд. Другими словами, при runtime программировании, исполняемая программа передаётся роботу порционно, при этом робот не обладает, не хранит и не знает заранее всю исполняемую программу. Такой подход позволяет создать абстрактную параметризованную исполняемую программу, которая формируется внешним устройством «на ходу», т.е. runtime.


Под катом описание и реальный пример того, как работает runtime программирование.

Типично программа для робота представляет собой последовательность позиций, в которые должен прийти манипулятор робота. Каждая из этих позиций характеризуются положением TCP (Tool Center Point) – точкой острия инструмента, установленного на манипуляторе. По умолчанию TCP находится в центре фланца робота, см. рисунок ниже, но её положение может быть перенастроено и чаще всего так, что TCP совпадает с острием установленного инструмента на манипуляторе робота. Поэтому обычно при программировании задается положение TCP в пространстве, а положение суставов манипулятора робот определяет сам. Далее в статье будет использоваться термин «положение TCP», или другими словами точка, в которую робот должен «прийти».
Программа для робота также может содержать примитивную управляющую логику (ветвления, циклы), простые математические операции, а также команды по управлению периферией – аналоговыми и цифровыми входами/выходами. В предлагаемом подходе runtime программирования, в качестве внешнего контроллера используется обычный ПК, на котором могут быть использованы мощные средства программирования дающие необходимый уровень абстракции (ООП и прочие парадигмы) и инструменты, обеспечивающие скорость и легкость разработки сложной логики (высокоуровневые языки программирования). На роботе же остается только логика критичная к скорости реакции, для исполнения которой нужна надежность промышленного контроллера, например, оперативная и адекватная реакция на внештатную ситуацию. Управление же периферией, подключенной к роботу, попросту «проксируется» самим роботом на ПК, позволяя ПО с ПК включать или выключать соответствующие сигналы на роботе. Это чем-то похоже на управление «ножками» на Arduino.


Как отмечалось ранее, runtime программирование позволяет передавать роботу программу порционно – частями. Обычно за один раз передается набор состояний выходных сигналов и небольшое число точек или вообще только одна точка. Таким образом траектория перемещений TCP, выполняемая роботом, может строиться динамически и отдельные её части могут принадлежать как разным технологическим процессам, так и даже разным роботам (подключенным к одному внешнему контроллеру), если работает группа роботов, т.е. возникают предпосылки для динамического замещения роботов в технологическом процессе.

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

Еще немного теории и переходим к практике.

Описание существующих способов программирования промышленных роботов

Без учета, вводимого в данной статье подхода runtime программирования, принято выделять два способа программирования промышленных роботов. Офлайн- и онлайн-программирование.

Процесс онлайн программирования происходит при непосредственном взаимодействии программиста с роботом на месте его использования. При помощи пульта управления или физического перемещения осуществляется подвод инструмента (TCP), установленного на фланце робота, к необходимой точке пространства.

  • Преимущество такого способа программировании заключается в простоте подхода к программированию робота. Не нужно знать программирование как-таковое, достаточно показать роботу последовательность положений.
  • К существенным недостаткам данного подхода относятся значительные затраты времени при увеличении программы до хотя бы нескольких десятков (не говоря уже о тысячах) точек и её (программы) последующей модификации. Кроме этого, робот во время такого обучения не может быть задействован в работе.
  • Преимущество офлайн программирования, в том, что робот может быть задействован в производстве и работать, пока разрабатывается программа. Робот нужен только для отладки написанной программы. Нет необходимости выезжать на объект автоматизации и заниматься программированием робота очно.
  • Большим недостатком существующих сред офлайн программирования является их высокая стоимость. Кроме этого, невозможно динамически распределить исполняемую программу между разными роботами.

В качестве примера, рассмотрим создание программы робота в runtime режиме, обеспечивающей технологический процесс написания объявления маркером.

ВНИМАНИЕ! Видео не является рекламой, вакансия закрыта. Статья написана после того, как видео потеряло свою актуальность, для того, чтобы продемонстрировать предлагаемый подход программирования.

ПРИВЕТ, ЛЮДИ! НАМ НУЖЕН
РАЗРАБОТЧИК.ДЛЯ СОЗДАНИЯ ВЕБ
ИНТЕРФЕЙСА СИСТЕМЫ НАШИХ
ЗНАНИЙ. ТАК МЫ СМОЖЕМ ПЕРЕНЯТЬ
ОТ ВАС ГУМАНОЙДОВ ЗНАНИЯ.

И НАКОНЕЦ-ТО МЫ СМОЖЕМ
ЗАХВАТИТЬ УЛУЧШИТЬ ЭТОТ МИР

Для написания этого текста потребовалось передать роботу более 1700 точек.

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

Скриншот пульта управления с исполняемой программой



Итак, приступим к решению…

Имеем робота FANUC LR Mate 200iD с котроллером R-30i серии B cabinet. У робота предварительно настроена TCP на конце маркера и координатная система рабочего стола, поэтому мы можем отправлять координаты, напрямую не заботясь о преобразовании координат из координатной системы стола в координатную систему робота.

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

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

Чтобы написать текст нам потребуется вызвать последовательность функций, рисующих буквы в такой же последовательности, в которой они (буквы) указаны в тексте. RCML имеет скудный инструментарий для работы со строками, поэтому сделаем внешний скрипт на Python, который будет генерировать программу на RCML – по сути генерировать только последовательность вызовов функций соответствующих последовательности букв.

Весь код доступен в репозитории на GitHub: rct_paint_words

Рассмотрим подробнее выходной файл, исполнение начинается с функции main():

Рассмотрим код отрисовки буквы на примере буквы А: Функции перемещения маркера в точку с отрывом или без, тоже очень просты: Функции marker_up, marker_down, marker_move содержат лишь код передачи роботу изменившейся части координаты точки TCP (Z или XY)

Все константы конфигурации, в том числе размер букв, их количество в строке и пр. были вынесены в отдельный файл chars_config.rcml.

В итоге суммарно мы получили примерно 300 строк высокоуровневого кода, на проектирование и написание которого ушло не более 2 часов.

Если бы данная задача решалась «в лоб» онлайн программированием по точкам, то на это бы ушло более 9 часов (примерно по 20-25 сек на точку, с учетом того, что точек более 1700 шт.). В этом случае страдания разработчика трудно представить :), особенно когда выяснилось бы, что он забыл про отступы между буквами, или ошибся с высотой букв и текст не влез, и теперь придется начинать всё с начала.

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

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

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

Однако данный подход следует использовать с осторожностью

В продемонстрированной вариации (с передачей одной точки за раз) runtime подход имеет существенное ограничение – некорректное понимание роботом инструкции сглаживания перемещения (CNT) или её игнорирование, т.к. при передаче всегда одной-текущей точки робот ничего не знает о следующей и не может просчитать сглаженную траекторию обхода текущей точки.

Что же есть CNT?

При перемещении инструмента робота возможно влиять на два параметра:

  • Скорость перемещения — задает скорость перемещения инструмента в мм/сек;
  • Уровень сглаживания (CNT) — позволяет пройти группу точек по траектории с наименьшим расстоянием между крайними точками группы.


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

В лучшем случае робот просто игнорирует инструкцию CNT (зависит от модели).

Лечится же это передачей 2-х и более точек за раз, где CNT-точка не последняя, однако это повышает сложность программы и нагрузку на программиста.

Работаю на горизонтально-фрезерных многоцелевых станках. Кам системами для написания программ не пользуюсь ввиду простоты обрабатываемых деталей. Периодически нужно выполнить одинаковые операции но с разными размерами (фрезеровка пазов, точение канавок, сверловка отверстий, нарезание резьбы резьбофрезой, геометрические расчеты).

Поэтому хочу поделиться опытом написания таких подпрограмм.

Программирование на FANUC Fanuc, ЧПУ, Производство, Программирование, Длиннопост

Начну пожалуй с описания самих станков.

Механика представляет из себя 5ти осевой станок, три из которых стандартные X-Y-Z, а остальные две - это поворотный стол на 360 градусов (ось B ) и ось план-суппорта для токарной обработки (ось - U).

Fanuc 32i model B.

G-коды используются как от фрезерных, так и от токарных станков.

В своих подрограммах использую цикл, состоящий из 2х условий:

(подход на рабочую координату);

(контур обработки, фрезерования или точения);

(если они равны то идем далше по программе);

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

Так же удобно использовать в токарке, например для проточки фланца под 8ми угольную прокладку.

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

Возможно текст получался не очень читаемым, пытался собрать все мысли в кучку, дальше разберемся =)


Лига ЧПУшников

756 постов 7.7K подписчиков

Тоже часто пользуюсь данными циклами) в основном while do, но иногда требуется комбинировать с if. Из интересного прога для сверления 8000 отверстий на трубе в шахматном порядкена трубе в 4ой оси. Ее надо было сделать так, что бы при остановке проги или сломе сверла можно было запустить прогу с любого отверстия. Без этих циклов программа походила бы на месиво из координат, а так все красиво и эстетично)

Впервые встречаю на Пикабу адекватного ЧПУшника, который програмит в параметрах, а не генерит стопицот кадров, чтобы сделать паз. У меня есть несколько постов по этому поводу, может тебе пригодится. Однозначно зелень и подпишусь!

И, да, КАМщики тебя щас хуями закидают. Не обращай внимания. Просто они не умеют писать программы и обсирают всё, что им непонятно, как мой кот)

Чуть не забыл: не используй параметры до ста. Почему - это написано в RTFM к станку.

Замена инструмента ручная или автоматически?
по системе fanuc есть какой нибудь гайд по параметрам для чайников? А через g68 можно универсальную прогу по радиусу написать с шагом через градусы,сверловка расфрезировка

Парни плиз дайте список литературы что почитать начинающему.

Устроился на завод с обучением. Но как там учат..

Стойки почти все FANUC

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

Есть кто работал на станке Mazak Vortex? Стойка по сути тот же фанук. Но убивает то что приходится до сих пор выставлять параллельность детали по центроискателю и подстукиванию молотком. Все перерыл что было но так и не нашел чтобы он сам через ренишоу высчитал угол доворота и с эти учётом начал обработку. Я что-то сомневаюсь что в Японии так же стоит япошка и молотком херачит по детали чтобы ее выставить. А вот вопрос - зачем писать программу вручную, если можно кам-системой по 3д модели сгенерировать код? Он, конечно, длинный, но ведь и париться не нужно

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

IF. THEN. GOTO, вроде неограниченная вложенность поддерживается, но даже с 2мя вложенными циклами код совершенно не читаем становится.

Почему бы не перенести выход в начальную точку в начало цикла?

про обнуление осей не написал, как все происходит?

Подпишусь. Мне интересна тема. Спасибо


+1 ЧПУ Пикабушник. Пилим алюминиевый корпус

Всем привет. Меня зовут Дмитрий, решил что пора все же запилить свой первый пост на Пикабу. У меня небольшая мастерская в Санкт-Петербурге и я занимаюсь изготовлением на заказ самых разнообразных изделий и деталей.

Я уже 6 лет как подсел на ЧПУ. Сначала все началось с казалось бы безобидного 3д принтера, но я ошибся. Сначала был один 3д принтер, потом их через два года стало двое, потом они подтянули к себе фотополимерник. От одного принтера я смог избавиться, но пришла новая напасть - подогнали юзаный китайский ЧПУ фрезер на круглых валах с люфтами 0,4 мм., и без единого концевика.

+1 ЧПУ Пикабушник. Пилим алюминиевый корпус ЧПУ, Фрезеровка, Производство, Обработка, Станок, Санкт-Петербург, Длиннопост

Когда я его подосвоил и сделал на нем первый заказ я как раз узнал про его люфты, и когда отдавал Заказчику это был просто испанский стыд, о чем я его предупредил и сделал скидку. Заказчик повертел детали в руках, сказал мне норм и решил скидкой не пользоваться.

Как говорится все что ни делается - все к лучшему, т.к. именно тогда я понял что мне действительно не хватает. Покурил форумы, поднапрягся материально, сделал заказ и стал обладателем хорошего ЧПУ станка хоббийного уровня. И т.к. я здесь собираюсь выкладывать фото своих работ и процесса изготовления, то для уважаемых обладателей и пользователей техники за 100500 денег сделаю акцет, что хорошего, а не охрененно дорогого и отличного.

Имеем заказ на корпус для оборудования. В посте только одна его часть. Материал алюминий Д16, толщиной 35мм. Толщина детали 31,5мм. Корпус имеет непростую геометрию и обрабатывается в 4 положениях. На отлюбись ее делать нельзя, т.к. она сопряжена еще с 2 деталями, отверстия и резьбы мелкие, и если где-то что-то пролюбить, то это будет проблема.

Начинаем снимать лишнюю толщину и углубляться.

+1 ЧПУ Пикабушник. Пилим алюминиевый корпус ЧПУ, Фрезеровка, Производство, Обработка, Станок, Санкт-Петербург, Длиннопост

+1 ЧПУ Пикабушник. Пилим алюминиевый корпус ЧПУ, Фрезеровка, Производство, Обработка, Станок, Санкт-Петербург, Длиннопост

+1 ЧПУ Пикабушник. Пилим алюминиевый корпус ЧПУ, Фрезеровка, Производство, Обработка, Станок, Санкт-Петербург, Длиннопост

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

+1 ЧПУ Пикабушник. Пилим алюминиевый корпус ЧПУ, Фрезеровка, Производство, Обработка, Станок, Санкт-Петербург, Длиннопост

Подчищаем наклонные плоскости, делаем отверстия и сверлимся где надо. В первом положении обработку заканчиваем с таким результатом:

+1 ЧПУ Пикабушник. Пилим алюминиевый корпус ЧПУ, Фрезеровка, Производство, Обработка, Станок, Санкт-Петербург, Длиннопост

Берем китайские точные тиски, выставляем по рычажному индикатору (Т-точность) и погнали дальше. Чтобы ничего не запилить лишнего под деталь кладем КМД. Как они меня регулярно выручают, хз как без них жил раньше.

+1 ЧПУ Пикабушник. Пилим алюминиевый корпус ЧПУ, Фрезеровка, Производство, Обработка, Станок, Санкт-Петербург, Длиннопост

+1 ЧПУ Пикабушник. Пилим алюминиевый корпус ЧПУ, Фрезеровка, Производство, Обработка, Станок, Санкт-Петербург, Длиннопост

Поворачиваем и пилим

+1 ЧПУ Пикабушник. Пилим алюминиевый корпус ЧПУ, Фрезеровка, Производство, Обработка, Станок, Санкт-Петербург, Длиннопост

Ну и еще разок. Но тут проще - тут сверловка только.

+1 ЧПУ Пикабушник. Пилим алюминиевый корпус ЧПУ, Фрезеровка, Производство, Обработка, Станок, Санкт-Петербург, Длиннопост

Ну и сам результат.

+1 ЧПУ Пикабушник. Пилим алюминиевый корпус ЧПУ, Фрезеровка, Производство, Обработка, Станок, Санкт-Петербург, Длиннопост

+1 ЧПУ Пикабушник. Пилим алюминиевый корпус ЧПУ, Фрезеровка, Производство, Обработка, Станок, Санкт-Петербург, Длиннопост

+1 ЧПУ Пикабушник. Пилим алюминиевый корпус ЧПУ, Фрезеровка, Производство, Обработка, Станок, Санкт-Петербург, Длиннопост

Деталь не на 100% идеальна по внешке, есть местами затиры от хвостовика фрезы, т.к. глубина порой большая и на вылете в 30мм фреза 4мм. издает очень неприличные звуки, но деваться некуда. Еще при чистовом проходе контура фреза на самом дне начинает звенеть и только там, что тоже сказывается - как победить не придумал еще. Но эта деталь еще красится будет, потому у Заказчика вопросов не вызывает.

Принимайте в ряды ЧПУ Пикабушников)))))


Ответ на пост «Керамическая фреза»

Что вообще представляет из себя керамика? По сути, это оксиды, или соли различных минералов. Как пример, это глина и посуда из неё. Если Вы представляете себе, как делается посуда, то примерно так же делаются и прочие изделия, в том числе токарные, или фрезерные пластинки и концевые фрезы. Отличия не очень существенны, да и компании-производители стараются держать свои технологии в тайне. Где то нагрев происходит под давлением, где то керамику чем то армируют, таких тонкостей я к сожалению не знаю.

А что по физическим свойствам? Ту всё сразу же становится интереснее для металлообработки: Керамика очень твердая, хоть и хрупкая (например оксид алюминия по шкале Мооса имеет 9 единиц твердости), а также керамика очень легко переносит нагрев. Поэтому то её и начали использовать для обработки труднообрабатываемых материалов!

Для примера я решил использовать керамическую пластину для обработки жаропрочной стали на основе никеля, для обработки жаропрочки НК78Т на токарном станке. С твердым сплавом, максимальная скорость, которую я дал бы заготовке, это 40-50метров в минуту, с обильным охлаждением эмульсией, при этом стойкость пластины по времени составила бы максимум 30 минут. А с керамикой я с легкостью увеличиваю скорость до 250 метров в минуту, при этом уменьшая примерно вдвое подачу на оборот. В результате скорость обработки вырастает в 2,5-3 раза!

Теперь конкретно по концевым фрезам.

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

Про подготовку производства.

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

Для начала нужно понимать, что не всякая керамика подойдет конкретно к Вашему материалу. Бывают химические несоответствия. Выражаться это будет в возникновении наростов, которые ни в коем случае нельзя снимать руками, потому что нарост обязательно возьмет с собой кусочек режущий кромки и фрезу придется отправлять в мусор.

Также фрезе требуется постоянство температуры- при написании программы необходимо постараться минимизировать холостые ходы, обеспечив постоянную нагрузку. Прерывистая термическая нагрузка чревата так называемым термошком: это когда на кромке образуются микротрещины, эти трещины расширяются и фреза разлетается, пробивая всё на своем пути, как я уже писал выше. Производители рекомендуют обеспечить высокую скорость вращения инструмента (300-1000 м/мин), тут лучше обращаться к каталогам, у всех производителей по разному. Также ни в коем случае не стоит использовать встречное фрезерование, только попутное.

Написал первый пост, прямо таки расстался с невинностью)

Прошу не пинать за всевозможные ошибки, я изо всех сил постараюсь ответить на вопросы, или разъяснить, если что то непонятно

Керамическая фреза

Отличаются от простых тем, что они охрененно твердые и соответственно могут резать каленые стали и им в принципе плевать на перегрев.

Про применение математики на производстве или как смешны ножеделы и лопаты из рельсовой стали

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

Не только этим занимался, только это была очень большая часть работы. Проблемы с производством рельс были огромные, сейчас об одной части проблем – при механических испытаниях результаты были всего на несколько единиц выше минимума. То есть временного сопротивления и пластичности едва хватало для приёмки и это в момент сразу после производства. А у металлов есть особенность менять свои характеристики со временем – просто распадаются фазы и характеристики меняются.

И вот я стал искать варианты изменить эту ситуацию на этапе закалки рельс. Это должны были делать другие люди, но как то не сложилось, сейчас не об этом.

Выбрал программу расчёта, тогда её сильно пиарили как новое слово в отрасли, а мне она понравилась человекопонятным интерфейсом, знаний тогда было маловато для нормальных исследований. И вот покрутил я эти данные, вроде понятно, что от чего зависит. Стал проверять на данных из производства и ничего не сходится. И в той программе была возможность расчёта через нейросеть. Посчитал, посмотрел – ну вроде похоже. Беда нейросетей та, что человек не в состоянии понять, что выдаётся в результате. Обычный вывод результатов в виде if ()<> иногда else, но как эта область данных разбита, почему так получился результат – не понятно, и этих областей столько, что просто в мозги не вкладывается.

Стал учить теорию. В университете у меня был этот курс, но одно дело разбирать термины на жуткой абстракции и совершенно другое применить знания на практической задаче. Есть всего две русскоязычных книги, в которых понятно объяснялась теория и давались примеры. И ещё - статистика как наука логично понятна и стройна, только порог входа зашифрован и спрятан. Есть там несколько допущений, без знания которых ничего не получится.

И вот мои исходные позиции следующие. У меня есть данные из двух сотен таблиц базы данных, есть параметры конкретно оборудования, характеристики заготовки - нужно их вручную совместить их друг с другом, что бы поля совпадали, проверить на ошибки, исключить ложные данные, проверить на аномальность. Я пробовал это делать автоматически, пришлось это делать в полуавтоматическом режиме, лучше всего это делать в экселе, и видно данные и есть формулы.

Стал работать в хороших программах, получать результаты и сравнивать с теорией из учебников. Металлургия - это культурная основа человечества и конечно такие исследования сделали многократно до меня. В советском союзе была золотая пора таких исследований — длилось это примерно 25 – 30 лет, с пятидесятых до семидесятых годов, тогда эту науку развивали, в другое время было не до этого. За рубежом тоже такие вопросы исследовали, но там другие проблемы. Это очень дорогостоящие исследования и что-то делалось за счёт государства, а больше за счёт частных средств, на частных предприятиях. А если это частные исследования, то зачем их разглашать, то же за свой счёт просто развивать конкурента. В лучшем случае патент, а чаше вообще ничего нет. Современные исследования не в счёт, почти всегда это конъюнктура.

Поэтому я долго-долго готовил данные и понемногу их исследовал. Тут я могу даже небольшую книгу написать, как это было. Вышел на задачу временных рядов, брал данные с бирж, перепробовал большинство методов исследований, изучил выводы нобелевских лауреатов по экономике, немного по математике, физике. Выдвинул кучи теорий, которые оказались бредовые, перепробовал что только можно из смежных отраслей – от медицины до истории. И я нашел нужные зависимости, временное сопротивление увеличивалось, а пластичность не ухудшалась. Единиц 15 выигрывали со старта.

И итоге я сделал почти две сотни значимых исследований – что влияет на качество железнодорожных рельсов, что не влияет, какие должны быть условия, параметры оборудования, нашёл три фактора, два из которых вообще не описаны в литературе, а один описан очень невнятно. От закалки дошёл до прокатки, а потом по всем участкам и переделам, потом до заготовки и немного конверторное производство. Я даже позже написал магистерскую диссертацию, только оказалось это никому не нужно – мне даже дважды это говорили посвящённые в бизнес планы предприятия, но в моей голове это не укладывалось. И сделал такую же работу по больше чем сотне профилей, которые тогда умели катать, тоже никому не нужно.

И после таких исследований и многих лет промышленного опыта, смешно видеть видео ножеделов и лопаты из рельсовой стали. Это секта шаманов, лучше бы в бубен стучали над своими поделками и манипуляциями. Может быть, как художественное изделие это имеет право на жизнь, а как продукция - нет. Люди от их изделий покалечатся.

Я выложу часть работы, можете посмотреть, что получилось, только предупреждаю – это металлургия, рельсы железнодорожные, мало кому будет интересно.

Сейчас бы делал это немного по-другому, но если акционерам это не нужно, то больше вообще никому не нужно.

Последствия COVID-19 отражаются на промышленных компаниях по всему миру. Многие производства стоят на месте или работают при частичной загрузке, сотрудники работают посменно или удаленно, только начинают постепенно возвращаться на свои рабочие места.

Несмотря на тяжелую и непредсказуемую ситуацию, сейчас самое время подготовить производство и сотрудников к периоду завершения пандемии, так как здравый смысл подсказывает нам: эффективность и гибкость производства, а также внедрение ноу-хау сотрудниками будут определять выживание компаний. Чтобы поддержать их в решении этой задачи компания FANUC (Япония) предложила всем тем свое интеллектуальное программное обеспечение ROBOGUIDE и CNC GUIDE с расширенным бесплатным пробным периодом до конца сентября 2020 года.

Шиничи Танзава, президент и генеральный директор FANUC Europe Corporation

«Сложившаяся ситуация очень сложна для большинства отраслей, но те, кто сейчас готовится к следующему этапу, несомненно, получат преимущество, и FANUC решительно поддержит эти шаги», — говорит Шиничи Танзава, президент и генеральный директор FANUC Europe Corporation.

Сам FANUC увеличил число дистанционных обучений и вебинаров для собственных 1600 сотрудников в Европе с начала пандемии. Многочисленные возможности обучения были также созданы и создаются для клиентов.

ROBOGUIDE — программа, с помощью которой можно моделировать движение роботов FANUC и весь производственный процесс. Она используется не только для автономного программирования, но и для создания среды трехмерного моделирования, помогая пользователям эффективно разрабатывать и оптимизировать свои производственные ячейки.

Создание, обновление, расчет эффективности ячеек возможны без остановки производства. После этого симуляция может быть передана на контроллеры реальных роботов через соединение Ethernet. Таким образом, время простоя машины сводится к минимуму, а неисправности исключаются. Интегрированная база данных САПР предоставляет пользователям доступ ко всем роботам FANUC, а также к машинам и простым инструментам. Таким образом, даже сложные приложения с несколькими роботами могут быть смоделированы и протестированы. Это значительное повышение эффективности и сокращение временных затрат как для системных интеграторов, так и для конечных пользователей, например, компаний-производителей.

ROBOGUIDE – программа, с помощью которой можно моделировать движение роботов FANUC и весь производственный процесс

CNC GUIDE позволяет пользователям писать, моделировать и тестировать программы обработки деталей на персональном компьютере. Оно идеально подходит как для пользователей станков, так и для производителей станков, которые благодаря CNC GUIDE могут легко разрабатывать и тестировать программное обеспечение для станочных программ на ПК. Кроме того, производители станков могут также поддерживать своих клиентов удаленно, используя Руководство по ЧПУ: это позволяет им имитировать станочные программы и предоставлять рекомендации в случае ошибок программирования. К дополнительным функциям Руководства по ЧПУ относится «Функция оценки времени цикла», которая с высокой точностью рассчитывает соответствующее время цикла программы обработки детали.

CNC GUIDE также представляет интерес для образовательных учреждений, которые предлагают обучение программированию ЧПУ и теперь могут использовать программное обеспечение бесплатно до конца сентября 2020 года. Поскольку CNC GUIDE отображает клавиатуру настоящей ЧПУ FANUC, работа контроллеров FANUC может также обучаться в форме дистанционного обучения на ПК или ноутбуке без необходимости использования реального станка. Новый высококачественный графический интерфейс пользователя iHMI для FANUC CNC также может быть протестирован. Программы обработки деталей содержат стандартный код ISO и цикл обработки и могут быть смоделированы в 3D-графике.

«После начала пандемии все больше компаний осознают необходимость автоматизации», — объясняет г-н Танзава. «FANUC хочет поддержать всех этих клиентов, но также стремится помочь в обучении следующего поколения специалистов». Также это направление поддерживается Глобальным партнерством с 2018 года с некоммерческой организацией WorldSkills.

О компании FANUC

Японская компания FANUC — один из мировых лидеров в области решений для промышленной автоматизации. FANUC является пионером в разработке систем с числовым программным управлением в сфере автоматизации. Мировая доля рынка FANUC в производстве систем ЧПУ составляет 65%. Начиная с 1956 года, компания обладает опытом установки в разных странах свыше 4,2 миллионов систем ЧПУ, 600 000 промышленных роботов и 60 000 термопластавтоматов ROBOSHOT, 30 000 электроэрозионных центров, 260 000 фрезерных обрабатывающих центров ROBODRILL.

Программирование для робототехники: на каких языках программируют роботов

Программирование роботов

Робототехника относится к междисциплинарной области исследований на стыке науки, техники и технологий. Цель исследования - разработать машины, которые не только будут копировать человеческие действия, но и в конечном итоге заменят людей.

В результате робототехника включает в себя проектирование, конструирование и эксплуатацию интеллектуальных машин, называемых роботами. Такие машины используются в различных отраслях промышленности, таких как аэрокосмическая промышленность, здравоохранение, электронная коммерция, освоение космоса и транспорт и т.д.

Слово робот происходит от чешского слова robota. Карел Чапек - чешский писатель - первым использовал термин «робот» в своей пьесе « RUR» 1920 года («Универсальные роботы Россума»). В то время Чапек использовал этот термин для описания созданных на фабриках людей, которых можно было принять за людей. Действительно, это похоже на современное представление об андроидах или гуманоидах.

В 1959 году в США родился первый промышленный робот Unimate, открыв новую эру развития промышленности. Подробнее про первых в истории роботов смотрите здесь: Краткая история робототехники

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

Управление и программирование промышленных роботов

Каковы пять основных областей робототехники

1. Интерфейс оператора

Интерфейс оператора относится к взаимодействию между роботом и его человеком-контроллером. Это механизм связи между человеком и машиной, например, сенсорная панель, джойстик.

2. Подвижность или передвижение

Подвижность или передвижение описывает, как робот перемещается из одного места в другое в заданном пространстве. И это зависит от типа машины. Например, летающие роботы и дроны используют пропеллеры для движения. Точно так же гуманоиды ходят на двух ногах, как люди. Другие варианты мобильности включают плавники и колеса.

3. Манипуляторы

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

4. Ощущения и восприятие

Ощущения и восприятие сосредотачиваются на том, как машина идентифицирует вещи в своей среде и реагирует на эти факторы. Благодаря этому полю робот может получить доступ к такой информации, как:

  • Где это ;
  • Куда идти ;
  • Как избежать препятствий.

Например, когда робот встречает препятствие, в каком направлении он должен двигаться. Программисты вводят такие компоненты в машину, чтобы помочь ей принять правильное решение.

5. Программирование

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

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

Что такое программирование роботов?

Программирование роботов относится к процессу разработки схемы управления тем, как машина взаимодействует с окружающей средой и достигает своих целей. Обычно для этого требуются базовые знания математики и языка программирования. Например, Python сегодня является одним из самых популярных языков программирования роботов.

Помимо разработки машинного обучения, Python также можно использовать для создания пакетов операционной системы роботов. Прежде чем мы исследуем другие языки программирования, давайте сначала рассмотрим программное обеспечение.

Робототехника и программирование роботов

Какое программное обеспечение используется для программирования роботов

Операционная система роботов (ROS)

Операционная система роботов - это промежуточное ПО - набор программных фреймворков для разработки программного обеспечения роботов.

Например, проект с открытым исходным кодом ROS-Industrial включает интерфейсы, уникальные для промышленных роботов. К ним относятся промышленные манипуляторы, захваты, датчики и сети устройств.

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

Автономное программирование роботов OLP

При автономном программировании роботизированная ячейка представлена в симуляторе посредством графической 3D-модели .

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

Автономное программирование (OLP) может выполняться с помощью программных платформ, специфичных для непосредственных производителей оборудования (OEM), или с помощью сторонних решений.

OLP также дает опытным и начинающим программистам роботов возможность создавать, тестировать и изменять программу или задачу робота в удобной виртуальной среде программирования на ПК до того, как они будут реализованы на операционном уровне.

Робот запрограммирован на перемещение от точки к точке, однако необходимо планировать путь в соответствии с конкретными элементами, такими как приспособления для удержания деталей. При планировании траектории проще запрограммировать робота для маневрирования вокруг фиксированных точек, поскольку он активирует обнаружение столкновений для предотвращения нарушений движения.

Если несколько роботов работают в непосредственной близости, важно, чтобы они были запрограммированы на работу в команде. Во время автономного процесса программирования функция обнаружения столкновений сигнализирует о потенциальном риске сбоя, позволяя программисту внести необходимые корректировки перед загрузкой программы на рабочий уровень.

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

Гибкость программного обеспечения OLP предлагает множество преимуществ и позволяет лучше сочетать задачи с легким переходом от одной задачи к другой.

Автономное программирование роботов OLP

Программное обеспечение для управления роботами

Как вы уже догадались, в робототехнике программное обеспечение - это программа для управления роботами. Это набор закодированных команд, которые сообщают машине, какие задачи выполнять автономно.

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

Программное обеспечение роботов имеет очень частную природу. Таким образом, производители оборудования для роботов обычно должны предоставлять собственное программное обеспечение для работы с машиной.

Как научиться программировать робототехнику?

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

Паскаль - это базовый язык, разработанный для поощрения хороших практик программирования. Это потому, что он использует структурированное программирование и структурирование данных.

Этот язык программирования является также основой для нескольких промышленных роботов языков. По этой причине это отличная отправная точка для тех, кто хочет программировать промышленных роботов.

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

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

В результате он идеально подходит для начинающих программистов - пользователей в возрасте от восьми до шестнадцати лет. Кроме того, Scratch - язык, предпочитаемый большинством клубов робототехники и школьных технических кружков.

Большинство опытных робототехников вряд ли напишут промышленных роботов на Scratch. Тем не менее, этот язык дает новичкам удобный способ познакомиться с робототехникой.

Обучение робототехнике

3. Языки промышленных роботов

Сегодня почти каждый робот имеет собственный язык программирования роботов.

Как вы уже догадались, это давняя проблема промышленной робототехники. Это означает, что пользователям приходится изучать новый язык каждый раз, когда они используют новый бренд роботов.

Например, роботы Fanuc используют язык Karel, Yaskawa использует INFORM, Kuka - KRL, а ABB имеет свой язык программирования RAPID. Этот список можно продолжить.

Некоторые среды программирования общего назначения, такие как ROS Industrial (Robot Operating System Industrial), начинают предлагать стандартизированные параметры. Однако технические специалисты по-прежнему могут использовать собственный язык программирования.

4. LISP и Пролог

В последнее время все более популярной стала область искусственного интеллекта. В результате различные языки программирования искусственного интеллекта сейчас привлекают больше внимания, чем когда-либо прежде. LISP и Prolog - два таких языка.

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

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

Действительно, вы можете программировать искусственный интеллект, используя другие языки из этого списка. Однако LISP и Prolog являются неотъемлемой частью некоторых реализаций искусственного интеллекта.

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

5. Язык описания оборудования

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

Благодаря HDL программисты могут быстро описать схему с помощью слов и символов. Программное обеспечение для разработки может затем преобразовать это текстовое описание в данные конфигурации для реализации.

Самыми популярными языками описания оборудования являются Verilog и VHDL. И они широко используются в программировании PLD (programmable logic device), на русскоям языке - это программируемые логические интегральные схемы (ПЛИС).

Промышленная робототехника

Инженеры-робототехники полагаются на MATLAB для анализа данных и разработки систем управления. Помимо обработки данных, некоторые университетские курсы также используют этот язык программирования в исследовательских целях.

Однако инженеры-робототехники используют MATLAB и Simulink для проектирования в различных целях ( а лгоритмы настройки , м оделирование реальных систем ).

Java- это объектно-ориентированный язык программирования общего назначения, основанный на классах. Он предназначен для того, чтобы разработчики приложений могли писать один раз и запускать их где угодно.

Другими словами, код J ava может работать на любой платформе, поддерживающей J ava , без необходимости перекомпиляции. Таким образом, становится возможным использовать один и тот же код на старых машинах.

Язык программирвоания J ava весьма полезен в некоторых аспектах робототехники. Например, это один из основных языков современных систем искусственного интеллекта, таких как AlphaGo и IBM Watson.

Python - один из самых популярных языков программирования благодаря быстрорастущей области машинного обучения. Фактически, IEEE Spectrum назвал его лучшим языком программирования в 2019 году.

Существенным преимуществом этого языка программирования является простота использования. С Python вещи, которые отнимают время в программировании, такие как определение и приведение типов переменных, становятся ненужными.

Кроме того, для Python доступно большое количество бесплатных библиотек. В результате программистам не придется «изобретать велосипед» для реализации некоторых основных функций.

Python полезен в робототехнике, потому что это один из основных языков программирования в операционной системе для роботов ROS (помимо C ++). Тем не менее, он может стать еще более популярным, поскольку более дружелюбная к роботам электроника, например одноплатные компьютеры Raspberry PI, поддерживает этот язык по умолчанию.

C и C++ - язык программирования номер один в робототехнике.

Некоторые аппаратные библиотеки в робототехнике используют C или C++. Кроме того, эти библиотеки позволяют взаимодействовать с низкоуровневым оборудованием. И они также поддерживают работу в реальном времени.

Сегодня C ++, возможно, более полезен в робототехнике, чем C. Однако последний остается одним из наиболее энергоэффективных языков программирования.

Обратите внимание, что языки C и C++ не так просты в использовании, как Python или MATLAB. Реализация той же функциональности с использованием C не только занимает больше времени, но также требует большего количества строк кода.

Однако робототехника во многом полагается на работу в реальном времени. В результате C и C++ - самые близкие к стандартному языку программирования роботов.

Робототехника для начинающих

Заключительное слово: какой язык программирования роботов вам следует изучить?

Основываясь на этом посте, вы можете сделать вывод, что изучение Python или C / C++ должно быть первым шагом. Хотя этот вывод может быть правильным, ответ на вопрос не так прост.

Правильный ответ - выучить тот язык программирования, который в настоящее время имеет для вас наибольший смысл. И вот почему.

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

Для большинства людей этим языком программирования является Python. Его легко освоить, и он мощный - благодаря огромным библиотекам. После Python вы можете изучить языки C и C++ для взаимодействия с драйверами роботизированного оборудования.

Читайте также: