Комментарии 69
Ну G-code круто, но под данный заголовок лучше бы подошёл APT language. Из которого до сих пор постпроцессорами получается G-code.
Всю статью ждал примеры кода, особенно сложные ветвления или приведение типов :)
Так сказать, реальный код, а не из учебников
Сложные ветвления, на самом деле, не особенно и практикуются — с точки зрения производственного процесса, многое удобнее делать линейно. Максимум — с подпрограммами. А код, написанный вручную — чаще всего, небольшие, но важные вкрапления. Единственное, где мне реально встречалось «настоящее» программирование — это подпрограммы управления щупами, измеряющими детали. Но это проприетарщина, которую я показывать не могу, к большому сожалению.
Конечно жаль, что нельзя посмотреть исходники, но зато можно задать вопросы напрямую)
Случалось ли такое, что вам не хватало языковых возможностей? И как вы обходили это?
В принципе, ровно как и любой низкоуровневый язык, G-code позволяет делать «всё», что может железо, на котором он исполняется. Но с растущей сложностью кода, растет сложность его поддержки — подавляющее большинство программистов на предприятиях — это операторы CAD/CAM, за автоматизацию вообще часто отвечает аутсорс — application engineer-ы дилера, интегратора или производителя машины. И действительно, если я напишу что-нибудь вроде «взять из таблицы расширенного менеджера инструментов диаметр текущего инструмента, округлить до целых, умножить на десять, положить в переменную, вызвать подпрограмму по численному идентификатору, равному значению этой переменной» — ни оператор станка, ни оператор CAM (который тоже называется «программист») не поймут, что вообще происходит с программой и почему. Хотя вот когда я, наконец, соберу собственный станок дома и начну на нем что-то делать, там уж развернусь по полной.
Есть старый немец, тот по желанию левой пятки делал фрезеровку по дуге с «запасом», если координата была не целым числом (лишний виток большим радиусом).
Мог не поднять шпиндель, если в строке есть две команды, одна из которых М. Как оказалось сам САПР генерировал ошибочный код. Для нового ПК софта и современных ЧПУ не ошибка, автоматически корректировали, а вот старички на чистой логике не обрабатывали такое.
Пришлось завести для операторов табличку корректировок, что нужно менять в программах перед отправкой на станок.
Как связаны G-code и Gerber файлы?
Современное оборудование для серийного производства печатных плат выглядитнесколько несколько иначе — функцию фото-плоттера выполняет компьютер, который в памяти симулирует все перемещения инструментов и выдает на выходе готовый битмап высокого разрешения, который печатается на специальном принтере (пленке) и далее используется как фото-шаблон для экспозиции всей заготовки разом по аналогии с классической фотографией.
Потому, для полной переносимости и независимости от настроек, десятичная точка должна быть в цифровых значениях координат абсолютно всегда.
Я может не в том мире живу, но в моём мире давно бы уже была сделана прослойка постпроцессора, которая бы такие вещи учитывала.
Банально просто брала GCode и заменяла все координаты на числа с точкой.
Понятно почему нет универсального языка чуть более высокого уровня — он глобально не нужен.
Но у вас то на производстве нужда в таком языке очевидна.
Реализовать набор практик и просто проводить пост процесс G-кода исправляя известные проблемы(типа флоатов в координатах, с показом ворнинга или сброса всех регистров первой строчкой)
Об обучении
Уже во времена станков с ЧПУ использовалась и совершенно другая технология программирования.
Я не занимался ей, но видел ее работу «в натуре».
Станок снабжался приводами, управляемыми программно и особым блоком управления (к сожалению, точных обозначений я уже не помню)
Весь процесс программирования сводился к следующему:
Опытный рабочий включал запись действий и обрабатывал деталь на станке управляя им вручную.
Блок управления запоминал всю его последовательность действий и был способен, управляя приводами станка — полностью повторить их.
На этом процесс программирования завершался.
(да, макросы не были придуманы с нуля, это гораздо более старый метод, чем кажется :)
Преимуществом метода обучения была очень высокая скорость перенастройки оборудования, недостатком — требовался квалифицированный рабочий (с твердыми, уверенными руками :) — хотя бы один на весь участок.
Начальство, оценив работу первой пары дооборудованных станков, дало указание оборудовать подобными системами все токарные станки в цеху (станки и приводы были наши, блоки управления — импортные и стоило доп оборудование почти смешные деньги, в сравнении со стоимостью нового станка с ЧПУ).
Но на том момент политика партии была совсем другая — предприятия должны были внедрять станки с ЧПУ, не взирая на их стоимость, глючность и сложность внедрения (например, для того, чтобы получить новый токарный станок производства завода «Красный пролетарий» — вынужденно покупался станок с ЧПУ того же производителя. После установке такого станка в цеху — на нем работали как на обычном токарном, а все доп оборудование стояло рядом для отчетности).
Поэтому «метод обучения» не взлетел.
Ценность не ясна.
никакой мастер не может обработать деталь сложной формы с той же точностью и эффективностью, с какой это сделает программа, разработанная в CAM
Описанная система позволяла изготавливать детали с требуемой точностью.
Кстати, до нее все детали вытачивались вручную и брака было намного больше.
Ключевое слово — "сложной формы". Попробуйте вручную отфрезеровать по контуру, например, овал.
Ключевое слово — «сложной формы». Попробуйте вручную отфрезеровать по контуру, например, овал
А на этот случай были инженеры-конструкторы и технологи (т.е. мы :)
Нетехнологичную в производстве деталь нужно было еще хорошо обосновать.
Но гораздо чаще находили просто более технологичный вариант.
В случаях же, когда надо было реально сделать что-то сложное, например — сквозное отверстие в фильере толщиной сантиметров в 15, в виде снежинки с шириной канала в 3 мм — использовали более продвинутые (чем мехобработка) технологии — например, электрохимическое фрезерование.
Такой максрос-станок должен стоить дороже ЧПУ.
Нет, система была дешевле любого ЧПУ, так как устанавливалась на уже имеющиеся на предприятии станки.
В те времена почти все токарные ЧПУ имели функцию обучения
У станков с ЧПУ идеология применения была другая.
Они как бы предназначались для изготовления единичных деталей или мелкосерийных партий деталей (сегодня делаем одно, завтра другое, послезавтра — опять первое и т.д.)
У станков «с обучением» была другая задача — изготовление деталей для крупных серий изделий, где изменения происходили не чаще, чем раз в неделю.
То, что вы называете станками с обучением — тоже ЧПУ
Они никогда не проходили как станки ЧПУ.
Я выше писал, что была кампания по практически насильному внедрению ЧПУ в производство, и начальство, вне всякого сомнения — записало бы эти станки в ЧПУ при первой же возможности, так как это бы сильно улучшило отчетность.
Но не могло.
На самом деле машины которые программируются оператором с помощью физического перемещения инструмента существуют и очень даже популярны в автомобилестроении, только называются они уже не ЧПУ, а универсальные роботы (KUKA, FANUC, UR). Программируются они в несколько этапов — сначала так, как вы описываете, путем записи перемещения рабочего инструмента. Потом, с помощью специализированного ПО описываются зоны в которые нелья заходить инструменту на холостых перемещениях. Далее выполняется оптимизация траекторий (очевидно, что человек двигает руками не оптимально) и симуляция на ПК. В конечном счете все это конвертируется в G-код для многокоординатных систем (обычно такие роботы имеют от 7-ми кооринат).
Используются такие роботы для покраски деталей автомобилей, их сварки, сборки готового изделия, автоматизации конвейерных операций.
В 2004 году примерно тоже купили координатно-фрезерные станки с ЧПУ еще времён СССР. «Голова» на «центральном процессоре М2» от «Электроники-60», перфоленты и т.д.
Перфоленты заменили на коробочки с памятью, как в картриджах принтеров сейчас.
Для программирования перелопатил много программ (с Интернетом в те годы было не очень), самой подходящей оказалась EzCAM. в ней также была утилита для настройки постпроцессора, чтобы он выдавал G-код в нужном формате.
Процесс изготовления нестандартного оборудования на предприятии пошёл (можно сказать, полетел).
К станку, кстати, прилагалась брошюра с подробным описанием G-кодов именно для него.
После поменяли системы ЧПУ на Модмаш
К «голове» тоже была документация.
Так вот, что хочу сказать о программировании — эта штука позволяет создавать программы на языке типа Basic!
Купили ещё один станок, просто фрезерный 3-х координатный. Была задача сделать из него «шнекорезку», то есть, чтобы он мог изготавливать шнеки.
Добавили ещё одну ось — A, с приводом от шагового двигателя (мощного) через делительную головку.
Система позволяет рассчитывать 4 координаты в реальном времени, выводить их в систему ЧПУ. То есть, чтобы сразу сделать программу целиком для шнека, потребовалось создавать файл с G-кодами размером в десятки мегабайт. А здесь — нет, простенькая система на Pentium с небольшой памятью считает и выводит.
Более того, можно рассчитывать любые формы, например, лопатки для турбин или лопасти гребных винтов, да и всё, что угодно. Если для чего-то нет формул, всегда можно аппроксимировать сплайнами по нескольким контрольным точкам и рассчитать все промежуточные. Легко, арифметика Пупкина в картинках.
Я уже тут комментировал про шнек, вот ссылка на видео
У шнека имеется входной кусок с линейным постоянным шагом одной величины, выходной кусок с постоянным шагом другой величины, между ними часть, где один шаг плавно переходит в другой по параболической зависимости (кривая 2-го порядка). Всё это обрамлено кусками для захода и выхода фрезы. Для некруглых предметов берётся фреза маленького диаметра и делается несколько проходов с учетом формы.
Позже, где-то в 2016 году товарищ заказал спроектировать плоттер на бутылке, чтобы не изобретать велосипед, я взял контроллер GRBL на ATmega328, с механикой тоже всё банально.
Видео о плоттере
Подключение по воле заказчика было по Bluetooth, потом по USB, закончили на Wi-Fi через модуль ESP8266.
Для рисования и вывода в ЧПУ сделал примочку к редактору Inkscape. Пользователь рисует на экране, нажимает кнопку, и плоттер воплощает произведение в физическом мире.
Кто-то спрашивал, а почему G-коды? — Да потому, это — стандарт, но можно было сделать другой протокол, например, передавать: «иди по X на… точек».
Потом кто-то купил Line-us — маленький рисующий робот. Сделал для него расширение тоже.
Исходники — здесь
Главный вопрос в связи с ЧПУ — что на них делать?
Было время — делали детали, сейчас эти станки стоят, то есть, сказать, чтобы в стране не было станков и производства, нельзя. Проблема в том, что нужны заказы для загрузки этих производственных мощностей.
Мы недавно выполнии один такой ретрофит для отечественного плазмореза середины 90х готов выпуска. Вместе с китайскими серво-усилителями проект обошелся где-то в 200тыс руб. Все железо и механика остались преждними, пульт поменялся. Заказчик остался очень доволен.
Вопрос чем загрузить ЧПУ очень интересный и очень скользкий. К нам поступает очень много обращений на обработку сложных деталей в 5-ти координатах, но стоимость обработки (создание и отладка управляющей программы, стоимость металлорежущего инструмента, цена ошибок программиста) такова, что подавлющее число заказчиков уходят с отвисшей до пола челюстью.
один такой ретрофит для отечественного плазмореза середины 90х готов выпуска
Оригинального изготовителя плазмореза не помните?
Нет, но я могу выяснить
Спасибо. Если я угадал — то смогу передать привет его разработчикам :)
Думаю, людям будет приятно узнать, что их изделиями все еще пользуются.
Машина эта эксплуатировалась нещадно, и похоже ни разу не обслуживалась. Когда мы разобрали сдохшую серву, в надежде починить её, то обнаружили на печатных платах налет сажи (точнее, оксида железа) толщиной в 5 мм. То же самое было и внутри управляющего компа. Потребовалось не мало усилий, что бы отмыть платы и добраться до сгоревших деталей. Но уже в процессе чистки стало понятно, что «доктор прописал в морг». :)
Даёшь следующую статью: PostScript, потерявшийся брат Forth!
И в статье, и в комментариях, много раз упоминается термин "CAM". Это именно то, как программы разрабатываются сейчас. Ручное программирование — задача узкоспециальная.
Программы можно спокойно создавать в CAM системах, дальше трансляция в G-код.
остальное производное от него)
например в прошивке marlin.
Есть же документация! Можно там как раз и посмотреть, что поддерживается.
Обычно в настольных поделках специфичные или слишком сложные функции не реализуют.
Например, на 3d-принтер даже с гигабайтной sd-картой можно не реализовывать циклы, полагаясь, что слайсер их все раскрутил. Прошивка в итоге проще, а памяти флешки не жалко.
В grbl, которая много лет умещалась на atmega328 не реализована команда, которая позволяет, например, вырезать квадрат с заданной стороной, имея фрезу с заданным диаметром (не помню точно, как она называется; суть что вы даёте настройку — "у меня фреза диаметром 1см. Режем влево 10, вверх 10, вправо 10, вниз 10" — и станок режет так, что получается квадрат 10х10; т.е. просчитывает траекторию, учитывая диаметр фрезы. Там уже требуется математика, которая в атмегу просто не влезла).
Сколько вообще существует G-code команд? Десятки, сотни, тысячи?
Есть ли какая официальная спека по языку G-Code (исходный документ, таблица)?
G-code, потерявшийся брат Assembler-а