Настройка печати отключена невозможно изменить файл с g кодом
Последнее время я часто печатаю большие модели, время печати которых от суток и более. При этом начали проявляться проблемы с электроснаблежнием. Поскольку проблема повторяется уже во второй раз, хочу закрепить полученный опыт в этой статье на тему того, как можно продолжить печать с того же места после прерывания.
Я использую 3д-принтер Wanhao Duplicator i3 Plus на прошивке Marlin , однако статью постараюсь сделать универсальной, с изложением базовых принципов. Это должно быть применимо и для других FDM принтеров.
Восстановление печати
В моей версии прошивки Marlin на данный момент не реализована функция сохранения последней команды (youtube) или координат инструмента в энергонезависимую flash-память. А также нет алгоритма который мог бы рассчитать текущую позицию проведя инструмент до концевика. Ввиду этого, после перезагрузки, принтер не знает где у него находиться инструмент и какая должна быть следующая команда. И для того, чтобы исполнить любую операцию (и понимать где она будет сделана), нам нужно взять какую-то точку за начало координат и дальше проводить относительно неё все перемещения.
M104 и M109 — температура экструдера
Команды M104 и M109 задают температурные значения в градусах Цельсия (S) для экструдера (экструдеров). При использовании команды M104 3D-принтер может производить другие действия в процессе нагрева. Команда M109 указывает принтеру не предпринимать других действий, пока не будет достигнута заданная температура. При использовании 3D-принтера с двумя экструдерами используются команды T0 для установления температуры правого экструдера и T1 — для левого.
Пример: M104 S190 T0 — начать разогревать правый экструдер до температуры 190 °C.
G28 — вернуться в исходное положение
Эта команда сообщает 3D-принтеру о необходимости вернуться в нулевую точку. С этой команды начинается работа 3D-принтера, а также этой командой заканчивается печать. Печатающая головка перемещается в дальний угол печатной камеры, чтобы пользователь мог легко извлечь деталь.
Популярные команды G-code
G92 — установить текущее положение
Команда задает текущее положение осей. Одно из наиболее распространенных применений команды — это ось E (положение филамента). Если переопределить текущее положение нити, то все будущие команды будут определяться по новому значению. Обычно это делается в начале каждого слоя.
Пример: G92 E0 — установить текущее положение нити в качестве нулевого.
В каких случаях использовать G-code?
В абсолютном большинстве случаев слайсеры составляют корректный G-code, который обеспечит отличный результат в процессе печати, но существует несколько сценариев, когда оправдана ручная правка G-code.
Случаи, когда целесообразно переписать G-код:
Специальные настройки — выполнение 3D-принтером определенных действий, таких как изменение температуры экструдера в конкретные моменты времени, при печати деликатных/тонких или просто важных областей модели, если слайсер не имеет такого функционала.
Решение проблемы — при печати крупной сложной детали могут возникнуть сложности на определенном этапе. Для устранения проблемы можно добавить специальную команду, например — включение или выключение обдува или добавление ряда своих команд.
Краткая теория
Для начала нужно понимать, из чего состоит и как работает любой станок. В основном это несколько актуаторов по осям (движущих механизмов с электродвигателями) и некоторая электроника и механика для управления рабочим инструментом. Все эти части управляются соотвествующими драйверами, драйвера в свою очередь подключены к контроллеру.
На старых станках в качестве контроллера использовались десктопы с LPT портом, тоесть контроллер фактически был вынесен из станка. Однако сейчас роль контроллера может выполнять даже Arduino Uno с её atmega328 . Это решает ряд проблем при использовании компьютера в качестве контроллера.
Надо понимать что обычно, роль контроллера – всего лишь выполнять команды, такие как сделай перемещение по оси X на столько-то , включи подогрев стола , используй текущую позицию как начало координат и тд. Закономерно, это привело к созданию абстракции (общего протокола численного программного управления (ЧПУ)) – G-code . Программа-slicer (например Cura , Fusion 360 ) создает управляющую программу как раз в формате G-code , однако не стоит забывать, что у G-code есть диалекты, тоесть каждый производитель прошивки, может немного поменять значения тех или иных команд, добавить функционал и тд. Для того, чтобы понимать чтоже самом деле происходит при посылке той или иной команды в станок, нужно:
- Узнать что именно за прошивка у вас установлена.
- Найти описание G-code команд на сайте производителя прошивки или просмотреть исходный код из которого прошивка собрана.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
В этой статье разберем что представляет из себя Gcode для 3d принтеров. Детально рассмотрим структуру, виды команд, принцип формирования кадров.
Итак, Gcode — это язык программирования для машин и станков с числовым программным управлением. Для 3d принтеров он формируется программой слайсером, предварительно загрузив в нее 3d модель и задав необходимые параметры печати.
По какому же принципу работает ПО для 3d печати?
Принцип по которому работает любой 3d принтер – это разбиение 3d модели на множество горизонтальных слоев. Каждый слой вне зависимости от способа его формирования (экструдером FDM принтер, лазером SLA, DLMS) разбивается на множество линий определенной толщины и ширины или формируется в виде растрового изображения если это DLP принтер. Например ширина такой линии для FDM 3d принтера – это диаметр сопла, высота это толщина слоя. Для того чтобы задать экструдеру маршрут необходимо сформировать своего рода карту. Простыми словами – этот набор команд и есть gcode, а формируется он автоматически, программой сласером типа Cura, Slick3r и т.д., при подгрузке в нее 3d модели .
Каждый вектор траектории в gcode описывается декартовыми координатами, по которым и перемещается экструдер. В этом файле еще описываются такие параметры как нагрев, скорость перемещения, скорость выдавливание пластика и т.д. Вообще Gcode создавался для ЧПУ станков, он имеет множество различных команд и функций. Для этих устройств G-код на много сложнее, нежели для 3d принтеров. Для sla и dlp 3d принтеров слайсеры устроены немного по другому принципу, т.к. sla иcпользую лазеры, которые управляются гальванометрами с зеркалами, а dlp — проекторы засвечивают каждый слой пятном созданным в виде растрового изображения.
Немного истории, gcode был создан компанией Electronic Industries Alliance ещё в 1960-х годах. В дальнейшем распространился по всему как стандарт для применения во всех устройствах с ЧПУ.
Итак, ваш 3 d принтер – это устройство с числовым программным управлением. Работает он в соответствии с командами которые описаны в запушенном Gcode .
Файл содержащий код имеет расширение. gcode и условно его структура выглядит следующим образом:
1. Подготовительные операции. Здесь подготавливается 3 d принтер к печати, запускаются нагрев стола, экструдера, устанавливается параметры системы координат, включается охлаждение, перемещение головки в нулевую точку отсчета, выдавливается тестовая порция пластика и другие установленные параметры.
2. Непосредственно 3 d печать объекта.
3. Заключительный этап. Перемещение экструдера и стола в исходное положение, отключение нагрева всех элементов 3 d принтера и т.д.
Весь код состоит из строк, каждая из них называется кадром. При этом для каждого кадра или группы кадров, для того что бы было понятно что будет выполняться можно прописать комментарии которые понятны только разработчикам и начинаются они со знака точка с запятой ; , например:
Ну а прошивка (машина воспринимает только 0 и 1) работает только по командам которые можно разделить на:
1. G – Основные (называемые в стандарте подготовительными) к оманды которые выполняют перемещение от точки к точке по прямой линии, в высоту или заданной дуге окружности определенного радиуса. Т.е. позиционирование экструдера или инструмента в пространстве.
2. М – Вспомогательные (технологические ) команды. Различные команды которые включают рабочие элементы нагрев, охлаждение, передача, считывание параметров и их вывод на дисплей и др. Это самая многочисленная группа.
3. T — смена инструмента т.е. в нашем случае переход от с первого на второй экструдер T 0, T 1.
Ниже идут параметры которые необходимо передать команде для ее выполнения. Это конкретные числовые значения:
1. X , Y , Z – координаты для позиционирования инструмента в пространстве. Могут быть целыми, дробными, отрицательными, положительными.
2. F — скорость движения печатающей головки в мм/мин.
3. S – значение температуры, время в секундах, напряжение
4. P – параметры в миллисекундах для настройки PID -контроллеров
5. Е – кол-во пластика в мм. Зависит от указанного диаметра сопла и диаметра нити. В Gcode устанавка скорость работы мотора подающий пластик в самом начале с помощью параметра F 200 [G1 F200 E10], так же в настройках самого 3 d принтера, можно увеличить обороты двигателя в %. До обнуления в каждом кадре указывается общее кол-во в мм начиная сначала. Может принимать отрицательные значения если необходимо втягивание нити.
6. H — номер нагревателя. H 0 — Для стола, H 1 — H … для экструдера и т.д.
7. R – радиус дуги
8. D – диаметр нити.
Основные команды G , которые применяются для управления 3 d принтерами:
- G0 — Холостой ход, без выдавливания пластика. Например [G0 F5400 X92.570 Y102.081 Z0.300] – Перемещение в точку с координатами X92.570 Y102.081 Z0.300, со скоростью 5400 мм/мин.
- G1 — Прямолинейное движение по осям X Y Z, с выдавливаем пластика Е в мм. Например [G1 F1200 X93.754 Y101.488 E0.0660] – это координаты точки куда необходимо перемеcтиться экструдеру, со скоростью 20 мм/с, при этом израсходуется 0.066 мм нити.
- G2 и G3 – перемещение по дуге. Эта команда практически не применяется если ее не задать вручную, т.к. периметр всегда представляет из себя ломанную (поверхность состоит из треугольников), а заполнение формируется прямыми линиями. Для этой команды необходимо задать R радиус окружности дуги.
- G4 — Пауза в секундах в S – в сек, P – миллисекундах. [G4 S15] — Останавливаемся на 15 мин.
- G21 – значения единиц измерения в мм. Устанавливается один раз в подготовительной части.
- G28 — Команда Home — паркуем головку. [G28 Y0 X0 Z0] – перемещение экструдера в указанные координаты.
- G90 — Использовать абсолютные координаты . В этой команде отсчет производиться от начально нулевой точки декартовой системы координат. Устанавливается один раз в подготовительной части.
- G91 — Использовать относительные координаты . В этой команде отсчёт производится от последней точки траектории перемещения.
- G92 — Установить текущую заданную позицию.
Основные команды M которые применяются для управления 3 d принтерами:
Обязатльные:
Команды для SD карты
Команды для экструдер а:
- M82 — Установить экструдер в абсолютную систему координат
- M83 — Установить экструдер в относительную систему координат
- M104 — Нагрева экструдера до определенной температуры [ M104 S210] – нагрев до 210 град.
- M105 — Получить текущую температуру экструдера [ M105 S2]
- M106 — Включение вентилятора обдува детали [ M106 S255] — мощность 100% , [ M106 S128]- мощность 50%
- M107 — Выключение вентилятора обдува детали
- M109 — Нагреть и удерживать температуру экструдера [M109 S210] – температура 210 град
Управление стол для 3d печати:
- M140 — Установить температуру стола [ M140 S75] – температура 75 град.
- M190 — Нагреть стол и удерживать температуру [M190 S70] — температура 70 град
PID (параметры для регуляторов температуры):
- M301 — Записать PID параметры в EEPROM [M301 H1 P1 I2 D3]
- где: H0 – стол, H1 – экструдер – это обязательные параметры.
- M302 — Разрешить холодное выдавливание [M302 P1].
- M303 — Запустить процесс PID калибровки [M303 E-1 C8 S110]
- где: E-1 – стол, E0 – хотэнд, C8 – количество попыток, S – температура.
- M304 – Задать PID параметры для стола [M304 P1 I2 D3]
EEPROM – внутренняя память микроконтроллера (не обнуляется при выключении)
- M500 — Сохранить параметры в EEPROM
- M501 — Прочитать параметры из EEPROM
- M502 — Сброс параметров EEPROM
Параметры для пластиковой нити:
- M200 — Задать диаметр нити [M200 D1.75] – диаметр 1.75
- M600 – Заменить пластик.
А теперь разберем Gcode сформированный программой Ultimaker — Cura , 3 d модель 3 dbenchy с двумя экструдерами. Поддержки печатаем вторым экструдером.
Приложено 2 скриншота, с основными настройками и продвинутыми:
Сопоставить параметры Cura и исходных записей Gcode :
M 190 S 70.000000 – температура стола
M 104 T 1 S 210.000000
M 109 T 0 S 210.000000 — температура первого экструдера 210
M 109 T 1 S 210.000000– температура второго экструдера 210
Дальше описываются параметры первого и второго экструдера + комментарии:
Выбираются единицы измерения, система координат, точки начального отсчета.
M 107 – включается вентилятор.
Дальше идет формирование первого слоя LAYER 0
G0 F5400 X92.570 Y102.081 Z0.300 – Холостой ход со скоростью 90 мм/с. Обратите внимание на продвинутые настройки.
G1 F1200 X93.754 Y101.488 E0.06606 – скорость первого слоя 20 мм/с, расход нити на этот кадр 0.066 мм.
Ниже указывается скорость для структур заполнения:
G1 F4800 E18.03179
G1 F1200 X134.460 Y114.661 E18.06728
G0 F5400 X133.848 Y115.470
Смена экструдера для печати поддержек
Заключительный этап 3 d печати: Перемещение экструдера и стола в исходное положение, отключение нагрева всех элеменетов 3 d принтера и т.д.
Аддитивные технологии на современном уровне развития дают возможность пользователю создавать сложнейшие объекты, практически не вникая в суть техпроцесса. Тем не менее, пользователи 3D-принтеров часто интересуются тем, как работает G-code и как его наиболее эффективно использовать — это помогает глубже погрузиться в процесс и понять все тонкости.
Читайте нашу подробную инструкцию о командах G-code, чтобы узнать — что такое G-code для 3D-принтера и как с ним работать.
gCodeViewer
Облачное приложение, которое оптимизировано для создания команд для 3D-принтеров. Среди специфических функций — послойный просмотр изделия в 2D-режиме.
Принцип кодировки команд для 3D-принтера
Каждая строка G-кода — это команда, которую выполняет 3D-принтер. Если ваш принтер “делает что-то не так”, а механика его при этом исправна и настроена правильно, скорее всего дело в коде, где-то в него закралась неверная или находящаяся не на своем месте команда.
Рассмотрим типичную команду:
G1 X-9.2 Y-5.42 Z0.5 E0.0377
В этой кодировке содержится следующая информация:
G1 — перемещаться по прямой;
Координата X — -9,2 мм;
Координата Y — -5,42 мм;
Координата Z — 0,5 мм;
Экструзия — 0,0377 мм.
Как видно на примере, кодировка G-code имеет простой синтаксис. Разобраться в командах может любой пользователь и помнить их все не обязательно — достаточно иметь под рукой список.
Рекомендуем заглянуть в “Энциклопедию Тридэшника” Там можно найти описание и параметры большинства команд.
M140 и M190 — температура рабочего стола
Эти команды указывают на необходимость нагреть рабочий стол до заданной температуры в градусах Цельсия (S). Аналогично примеру выше, команда M140 будет выполняться 3D-принтером одновременно с другими процессами, а команда M190 указывает на необходимость ожидания, пока рабочий стол не будет нагрет до заданной температуры.
Пример: M140 S50 — разогревать рабочий стол до 50 °C.
На какие принтеры можно загружать G-code?
Большинство популярных принтеров работает на G-code. Поскольку этот код можно генерировать в любых доступных слайсерах, таких как как Simplify3D, Cura, Chitubox, CreatWare, Slic3er, и легко редактировать в обычном блокноте или NotePad++, то пользователи самых доступных 3D-принтеров Anet A8, профессиональных 3D-принтеров Wanhao Duplicator 6 Plus и 3D-принтеров с двумя экструдерами Hercules Strong DUO могут перенастроить работу аппаратов для достижения оптимального результата.
Но бывают случаи, когда оборудование работает на зашифрованном G-code. Как пример — это Zortrax и их Слайсер Z-suite, что генерирует файл в расширении Z-code. Увы, такие файлы уже не открыть блокнотом и NotePad++, а сторонний слайсер с этим принтером использовать нельзя.
Поиск системы координат
Нулевая точка отсчета на принтере обуславливается расположением концевиков и, в моём случае, находится на плоскости стола в ближнем левом углу. Если не производить механическую настройку принтера между печатями смещение модели относительно этой точки будет в пределах повторяемости вашего принтера, что вполне удовлетворительно для восстановления печати.
- Аккуратно снять мешающуюся модель, точно запомнив место её нахождения;
- Добавить в G-code операцию паузы (такие используются для смены пластика) или приостановить принтер из его меню после обнуления координат и поднятия инструмента на рабочую высоту;
- Установить вашу модель назад (например с помощью клея);
- Продолжить печать.
Основные команды языка
Основные команды языка начинаются с буквы G (отсюда и его название), это например:
- перемещение рабочих органов оборудования с заданной скоростью (линейное и круговое,
- выполнение типовых команд (таких, как запуск вентиляторов, нагревателей и т.д.),
- управление параметрами, системами координат ( абсолютное или относительное исчисление).
Также существует большое количество команд, что начинаются с букв M и T, они относятся к вспомогательным и используются в фрезерных станках и фрезерных обрабатывающих центрах.
Каждая строка G-code содержит в себе конкретную команду и набор параметров, характеризующий само действие оборудования. Так, обычное перемещение во время печати может характеризоваться рядом параметров, таких как направление, время работы приводов, для перемещения на заданное расстояние, количество выдавленного пластика, скорость и ускорение.
Если раньше программировать действия станков приходилось вручную, то в наше время существует большое многообразие программ, что могут преобразовать загруженный 3D-объект в код управления, необходимый станку для создания этого объекта.
Для 3D-принтеров применяются программы, называющиеся слайсерами.
Такие слайсеры, как Cura, Simplify3D и множество подобных, помогают автоматизировать процесс написания кода управления, пользователю остается лишь использовать полученный с их помощью код. Возможная ручная корректировка сводится к коррекции одного или двух параметров, или поиску лишней команды. Теперь не требуется писать 100-200 строк кода, достаточно лишь сгенерировать код в слайсере и, если требуется, внести небольшие правки.
Для ручного внесения правок в G-code рекомендуем использовать бесплатную программу NotePad++. С её помощью можно найти вредоносную команду, пометить все её повторения в коде и удалить их.
Подробнее о командах читайте далее, в разделе “Популярные команды G-code”.
Редактирование G-code
Все манипуляции нужно произвести в файле G-code текущей модели вручную. Он представляет из себя текстовый файл, зачастую большого размера. При попытке открытия такого обычным блокнотом у вас могут возникнуть проблемы, тк алгоритм данного редактора не рассчитан на работу с большими файлами и то и дело, то пытается весь файл прочитать, то весь файл записать и тд. Мне очень нравится редактор Visual Studio Code , который советую и вам.
G-code файл (FDM принтера) можно разделить на две части:
Шапка, там где производиться подогрев стола и инструмента, обнуление системы координат. Также зачастую в ней содержатся комментарии.
Повторяющиеся по своему виду наборы комманд для печати слоёв. При использовании, в качестве slicer’a, программы Cura , в G-code все слои любезно прокоментированы.
У нас получается примерно следующий алгоритм:
Смотрим всё что находится в шапке и разбираем, что это означает.
Например, мб такая ситуация, использования датчика уровня стола BLTouch – команда G30 . Её нужно заменить на использование концевика.
В целом убираем всё лишнее кроме подогрева стола и инструмента, обнуления координат. Если вы не используете специальных настроек или датчика уровня стола, в принципе можете не изменять настройки, главное понимать их смысл и чтобы он не противоречил с тем, что вам требуется.
Затем нужно максимально точно измерить высоту напечанной модели.
В моём случае получилось 143.5 мм. Поделив данную высоту на толщину слоя можно получить номер слоя на котором прервалась печать: 143.5 мм / 0.15 мм = 956.[6].
Я всегда округляю величину в меньшую сторону, тк экструдер горячий и не сильно страшно, если он чуть прижмет деталь при печати, в отличии от того, если он начнет класть слой в воздухе.
Теперь следует удалить из файла G-code все операции печати слоёв влоть до 956 (не совсем так).
Имейте ввиду, что нумерация слоёв в Cura идёт с нуля, а не с единицы, поэтому в комментариях ищите 955 слой.
Найти нужный вам слой можно воспользовавшись поиском (ища по слову ;LAYER:955 ). В месте откуда вы хотите удалить код, установить курсор и не меняя его положении прокрутите до начала файла, зажав Shift и установив курсор в новом месте, у вас выделится весь кусок для удаления.
Печать каждого слоя начинается с команды перемещения инструмента на новую высоту, однако в случае, с Cura эта команда содержится в конце предыдущего слоя, соотвественно её нужно тоже сохранить.
Также за этой командой следует несколько других перемещений, я их тоже оставляю тк эта последовательность не мешает и с неё продолжается печать отсутствующего слоя.
Кстати проверить правильно ли вы определили слой можно как раз исходя из значения Z в этой команде.
Как было сказано выше: «Печать каждого слоя обычно начинается с команды перемещения в некоторую точку, с которой начинается печатать слоя». Однако не факт, что алгоритм реализованный в прошивке выполнит не быстрое перемещение (одновременное перемещение по всем осям), а сначала подъём по оси Z, а уже затем по осям XY. В случае быстрого перемещения есть вероятность того, что инструмент, двигаясь с нулевой точки в точку на которой находится продолжение печати, заденет модели.
Поэтому после операции обнуления координат (шапки G-code), я добавляю команду перемещения в точку над уже напечатанными моделями – G0 F0 X0 Y0 Z145 . Подробнее можно прочитать здесь.
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
GCODE: Плюшки от ПавлушкиПосле написания предыдущей статьи ко мне стали поступать вопросы на поводу G-CODE.
Решил написать пост об основах G-CODE.
И так приступим …
Не для кого не секрет, что наш с Вами 3D принтер является простым ЧПУ станком (CNC), который просто выполняет команды оператора.
Чтобы мы с принтером понимали друг друга, умными людьми в начале 1960 годов был придуман специальный язык под названием «G-CODE» (G-код).
Программа, написанная с использованием G-кода, имеет жесткое строение.
Все команды управления объединяются в кадры - состоящие из одной или более команд.
Кадр завершается символом перевода строки (CR/LF).
Порядок команд в кадре строго не оговаривается, но традиционно предполагается, что первыми указываются подготовительные команды, затем команды перемещения, затем выбора режимов обработки и технологические команды.
Если говорить коротко, то наш ПК через USB, просто посылают команды на порт принтера (микроконтроллера), а принтер без прикословно их выполняет.
Немного забегая вперед скажу, что G-код для принтера местами отличается от привычного G-кода. Какие-то команды были переделаны под нужды принтера, какие-то были удалены, какие-то вообще не используются, но в целом все очень похоже.
Описание команд будет производится для прошивки MARLIN, возможно будет работать и на других прошивках.
Будут рассмотрены самые только самые основные команды (рабочий минимум), в поисках экзотики, можно пройти по ссылке.
Сами команды делятся на группы:
G - Подготовительные (основные) команды;
М - Вспомогательные (технологические) команды.
Эти команды имеют параметры.
X - Координата точки траектории по оси X [G0 X100 Y0 Z0]
Y - Координата точки траектории по оси Y [G0 X0 Y100 Z0]
Z - Координата точки траектории по оси Z [G0 X0 Y0 Z100]
E - Координата точки выдавливания пластика [G1 E100 F100]
P - Параметр команды [M300 S5000 P280]
S - Параметр команды [G04 S15]
F - Параметр команды, подача (скорость) [G1 Y10 X10 F1000]
G0 - Холостой ход, без работы инструмента [G 0 X 10]
G1 - Координированное движение по осям X Y Z E [G 1 X 10]
G4 - Пауза в секундах [G4 S15]
G28 - Команда Home - паркуем головку [G28 Y0 X0 Z0]
G90 - Использовать абсолютные координаты [G90]
G91 - Использовать относительные координаты [G91]
G92 - Установить текущую заданную позицию [G92]
Пояснение:
Относительные координаты - это координаты относительно текущего положения головки.
На пример, если головка находиться в положении X10 Y10, то при подаче команды G91
G1 X10 F1000, произойдет смещение головы на 10 мм по оси Х на скорости 1000.
Эту команду можно делать много раз, до достижения «софтового» ограничение в прошивке.
Абсолютные координаты - это координаты, строго привязанные к рабочей области.
При выполнении команды G90 G1 X10 F1000 - головка сместиться в координату X10 на скорости 1000.
Команда выполниться только один раз.
Обычные команды
M0 - Сделать паузу и ожидать нажатия кнопки на LCD дисплеи (работает если в прошивку установлен параметр ULTRA_LCD) [G0 X10 Y10 Z10 M0]
M17 - Подать ток на двигатели (двигатели руками не вращаются)
M18 - Убрать ток с двигателей (двигатели можно вращать руками, аналог M84)
M42 - Управление контактами ARDUINO MEGA 2560 [M42 P4 S255]
M80 - Включить питание, только для ATX - блок питания
M81 - Выключить питания, только для ATX - блок питания
M84 - Выключение всех осей (моторов после простоя) [M84 S10]
М112 - Экстренная остановка
M114 - Получить текущие координаты
M115 - Получить версию прошивки
M119 - Получить статус концевиков
M300 - Проиграть звук [M300 S5000 P280]
Команды SD карты
M20 - Прочитать SD карту (прочитать список файлов)
M21 - Инициализировать SD карту
M22 - Использовать SD карту
M23 - Выбрать файл с SD карты [M23 filename.gcode]
M24 - Начать/возобновить печать с SD карты
M25 - Пауза печати с SD карты
M26 - Установить позицию SD карты в байтах [M 26 S 12345]
M27 - Узнать статус печати с SD карты
M28 - Записать файл на SD карту [M 28 filename . gcode]
M29 - Закончить записать файла на SD карте
M30 - Удалить файл с SD карты [M 30 filename . gcode]
M31 - Получить значение, сколько прошло времени с последнего M109
M928 - Логирование на SD карту [M 928 filename . gcode]
M82 - Установить экструдер в абсолютную систему координат
M83 - Установить экструдер в относительную систему координат
M104 - Ожидание нагрева экструдера до определенной температуры [M104 S190]
M105 - Получить текущую температуру экструдера [M105 S2]
M106 - Включение вентилятора обдува детали [M106 S127] - мощность 50%
M107 - Выключение вентилятора обдува детали [M 107]
M109 - Нагреть экструдер и удерживать температуру [M109 S215]
M140 - Установить температуру стола [M140 S65]
M190 - Нагреть стол и удерживать температуру [M190 S60]
PID M301 - Записать PID параметры в EEPROM [M301 H1 P1 I2 D3]
где: H0 – стол, H1 – экструдер
M302 - Разрешить холодное выдавливание [M302 P1].
M303 - Запустить процесс PID калибровки [M303 E-1 C8 S110]
где: E-1 – стол, E0 – хотэнд, C8 – количество попыток, S – температура.
M304 – Задать PID параметры для стола [M304 P1 I2 D3]
EEPROM – внутренняя память микроконтроллера (не обнуляется при выключении)
M500 - Сохранить параметры в EEPROM
M501 - Прочитать параметры из EEPROM
M502 - Сброс параметров EEPROM
M200 - Задать диаметр филамента [M200 D1.128]
M600 – Замена филамента.
Данные команды можно подавать в консоли из таких программ как Pronterface или Universal-G-Code-Sender.
В Pronterface можно включить режим ответа в меню Settings / Debug communications, программа будет писать все ответы от принтера.
Или открыть файл с G-кодом в блокноте и написать все руками. =)
Чтобы не быть голословным предлагаю Вам разобрать пример G-кода программы:
M190 S60 - включаем нагрев стола и ждём, пока он не нагреется до температуры 60 градусов
M109 S210 - включаем нагрев сопла и ждём, пока оно не нагреется до температуры 210 градусов
G21 - устанавливает метрическую систему координат
G90 - устанавливает абсолютную систему координат
M82 - устанавливает абсолютную систему координат для экструдера
M107 - выключаем обдув детали
M300 S5000 P280 – звуковой сигнал
G28 X0 Y0 - команда Home X Y
G28 Z0 - команда Home Z
G1 X100 Y100 Z5 F1000 - центруем сопло относительно стола
G92 E0 - обнуляет количество выдавленного пластика
G1 F300 E4 - выдавливаем 4 мм пластика со скоростью 300 мм
M106 S125 - включаем обдув детали со скоростью 50%
G1 Z0 - опускаем сопло на 0 мм
G1 X96.11 Y110.92 E87.55 - ездим по координатам и выдавливаем пластик
G1 Z0.2 - поднимаем сопло на 0.2 мм
G1 X96.11 Y111.00 E89.60 - ездим по координатам и выдавливаем пластик
M140 S50 - изменяем температуру стола
G1 Z4.8 - поднимаем сопло на 4.8 мм
G1 X96.11 Y110.92 E87.55 - ездим по координатам и выдавливаем пластик
G1 Z5 - поднимаем сопло на 5 мм
G1 X96.11 Y111.00 E89.60 - ездим по координатам и выдавливаем пластик
G91 - устанавливает относительную систему координат
G1 E-5 F200 - всасывание экструдером 5 мм прутка
M104 S0 - отключением нагрев экструдера
M140 S0 - отключением нагрев стола
M107 - выключаем обдув детали
M84 - выключаем шаговые двигатели
M300 S5000 P280 – звуковой сигнал
Благодарю Вас за внимание!
Итоги
Использование языка программирования G-code не только насущно необходимо, но и способствует пониманию 3D-печати. Пользователь не обязан следовать рекомендациям производителей филамента или 3D-принтера, чтобы получить идеально напечатанный объект. Экспериментируя с настройками слайсеров и возможностью ручного редактирования команд G-кода, пользователь может получить любой результат, опираясь на собственный опыт работы с различными материалами и свою фантазию.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.
Fockus
Администратор
G-команды
G0(G1) Xnnn Ynnn Znnn Ennn Fnnn – перемещение.
G0 - быстрое холостое перемещение
G1 – линейное рабочее перемещение
Xnnn, Ynnn, Znnn – координаты.
Еnnn - кол-во выдавливаемого материала в мм(при отрицательных значениях -ретракт).
Fnnn – скорость перемещения в мм/мин.(эта скорость будет использ. до след. изменения).
G0 X12 (переместится на 12 мм по оси X)
G0 F1500 (Установить скорость перемещения равной 1500 мм/мин.)
G1 X90.6 Y13.8 E22.4 (Переместиться на 90.6 мм по оси X и на 13.8 мм по оси Y в тоже время выдавить 22.4 мм материала.)
G4 Pnnn (или Snnn) – ожидание.
Pnnn - Время ожидания, в миллисекундах
Snnn - Время ожидания в секундах.
"G4 S2" и "G4 P2000" – эквивалентны
G10 - Откат пластика (Ретракт)
Откат филамента в соответствии с настройками M207.
G11 - Подача пластика
Подача / восстанавливает положение пластика в соответствии с настройками M208.
G20 - Установка единиц измерения в дюймах
G21 - Установка единиц измерения в миллиметрах
С этого момента отсчет будет вестись в дюймах/миллиметрах.
G28 - Перемещение в начало ("домой") до сработки концевых выключателей
G28 – домой по всем осям.
G28 X Z - Перемещение домой только по осям X и Z
G29 - Создание сетки кривизны стола (MESH_BED_LEVELING)
Команда позволяет создать компенсационную(по высоте Z) сетку и использовать ее в дальнейшем при печати. Сетку можно использовать многократно, даже после выключения принтера.
После использования команды G28 сетка, созданная командой G29 «слетает».
Необходимо сохранять сетку стразу после ее создания! Для вызова сетки из памяти использовать команду М420.
Перед использованием G29 обязательно использовать G28, иначе сетка будет неверной.
- Введите G29 S0 для начала создания сетки.
- Введите G29 S1 для установки первой точки сетки.
- Выровняйте сопло по высоте при помощи бумажки(как обычно).
- Введите G29 S2 для сохранения значения и перехода к новой точке
- Повторить шаги 3 и 4, пока процедура создания не закончится.
- Введите M500 чтобы записать полученную сетку в EEPROM.
- Выберите пункт Prepare, а после Auto home (она же команда G28).
- Выберите пункт Prepare, а после Level Bed.
- Ждите начала инструкций на экране. Нажмите «крутилку» на экране, при появлении надписи «Click to Begin». Голова уедет в первую точку сетки.
- Используя «крутилку», поднимая или опуская сопло, выставите сопло по бумажке. Так же как при выравнивании стола. После того, как вы добились нужного зазора между соплом и бумажкой, нажмите на «крутилку». Голова уедет к новой точке сетки.
- Повторяйте п.4 пока программа не пройдет все точки.
- После окончания войдите в меню Control и выберите пункт Store memory для сохранения созданной сетки в EEPROM.
- Для использования сохраненной в EEPROM сетки при печати используйте команду М420 S1 (См. М420).
G91 - Установка относительных координат
Все координаты с этого момента становятся относительными по отношению к последней позиции. Марлин переводит все оси в относительные координаты, в том числе экструдер.
G92 Xnnn Ynnn Znnn Ennn - Установить позицию
Эта команда может быть использована без каких-либо дополнительных параметров.
G92 - сбросит все координаты осей на ноль.
Xnnn - новая координата X
Ynnn - новая координата Y
Znnn - новая координата Z
Ennn - новая позиция экструдера
Пример: G92 X10 E90
М-команды
M17 - Включить/Подать питание на все шаговые двигатели
M18 - Убрать ток с двигателей
Двигатели можно вращать руками. Аналог команды M84
M20 - Список файлов на SD карте
M21 - Инициализация SD карты
Если SD карта загружена при включении принтера, то это произойдет по умолчанию. SD карта должна быть проинициализирована для работы других функций SD карты.
M22 - Освобождение SD карты
Указанная SD карта будет освобождена. При будующих (случайных) попытках чтения происходит гарантированная ошибка. Полезно перед извлечением SD карты.
M23 - Выбор файла на SD карте
Пример: M23 filename.gco
M24 - Начало/продолжение печати с SD карты
Принтер будет печатать из файла выбранного с помощью команды M23.
M25 - Пауза печати с SD карты
M28 - Начать запись на SD карту
Пример: M28 filename.gco.
На SD карте создается файл, обозначенный как filename.gco (если файл существует, то он перезаписывается) и все последующие команды на принтер записываются в этот файл.
M29 - Остановить запись на SD карту
Пример: M29 filename.gco
Файл, открытый командой M28 закрывается и все последующие команды исполняются принтером в нормальном режиме.
M30 - Удалить файл с SD карты
Пример: M30 filename.gco. filename.gco будет удален.
M32 - Выбрать файл и начать печать с SD карты
Пример: M32 filename.gco.
Используется для печати с SD карты и работает так же как M23 и M24
M80 - Включить блок питания ATX
Переводит блок питания ATX из спящего режима в рабочий режим. Не работает на электронике без спящего режима.
M81 - Выключить блок питания ATX
M82 - Установить экструдер в абсолютный режим
M83 - Установить экструдер в относительный режим
Позволяет экструдеру производить экструзию в абсолютных/относительных единицах
M84 Snnn X,Y,Z,E – Перевести моторы в режим ожидания
Snnn – время в секундах.
Если тайм-аут задан с помощью Snnn, эта команда просто устанавливает таймаут неактивности шагового двигателя.
Если моторы(X,Y,Z или E) не указаны, эта команда немедленно отключает все.
Если указана одна или несколько осей, эта команда немедленно отключает указанные. Например, "M84 S10" переведет шаговые двигатели в режим ожидания после 10 секунд простоя.
M92 Xnnn Ynnn Znnn Ennn - Установить количество шагов по осям на единицу
Xnnn, Ynnn, Znnn – шаги на единицу по осям.
Еnnn – шаги на единицу для экструдера
Примеры: M92 X87.489 Y87.489 Z87.489 или M92 E420
Позволяет устанавливать количество шагов на единицу (обычно мм) для двигаетелй. Эти значения заменяются на значения из прошивки при включении питания, если не записать их в EEPROM см. M500.
M104 Snnn - Установить температуру экструдера и НЕ ждать
Snnn - Заданная температура
Пример: M104 S190
Устанавливает температуру активного экструдера 190C и сразу же возвращает управление (то есть НЕ ЖДЕТ пока экструдер достигнет заданной температуры). Еще см. М109
M105 - Получить температуру экструдера
Получает температуру активного экструдера и горячего стола в градусах Цельсия. Температура передается на подключенный компьютер. Ответ, переданный на компьютер может выглядеть так: ok T:201 B:117
M106 Snnn - Включить вентилятор обдува детали
Snnn - Скрорость вращения вентилятора от 0 до 255 (значение 127 – 50% скорости)
M107 - Выключить вентилятор
M108 - Отменить нагрев
Обрывает ожидание достижения заданной командами M109 и M190 температуры, продолжает печать.
M109 Snnn - Установить температуру экструдера и ждать
Устанавливает температуру в градусах Цельсия и ожидает ее достижения. Еще см. М104
M110 Nnnn - Установить номер текущей строки
Nnnn - Номер строки
Пример: M110 N123
В этом примере устанавливается номер текущей строки 123. Таким образом ожидается, что следующая строка после этой команды будет 124.
M112 – Экстренная остановка
M114 - Получение текущих позиций
M115 - Получить версию прошивки
M119 - Получить статус концевиков
M140 - Установить температуру стола и НЕ ждать
Пример: M140 S65
Устанавливает температуру стола 65C и сразу же возвращает управление (то есть НЕ ЖДЕТ пока стол достигнет заданной температуры). Еще см. М190
M190 - Установить температуру стола и ждать
Устанавливает температуру в градусах Цельсия и ОЖИДАЕТ ее достижения. см. М140
М200 Dnnn Tnnn – Установить РЕАЛЬНЫЙ диаметр прутка филамента.
Dnnn – диаметр в мм.
Tnnn – номер экструдера. (для одноэкструдерных принтеров можно не указывать)
Пример: М200 D1.65
Используется для вычислений реального выдавливаемого объема.
Для установки номинальных параметров см. М404.
M201 Xnnn Ynnn Znnn Ennn – Установка максимальных ускорений (в мм/сек.в кв)
Xnnn, Ynnn, Znnn – ускорения в мм/сек в кв. для осей.
Ennn – ускорения в мм/сек в кв. для экструдера.
Можно использовать только один/два из параметров.
Пример: M201 X1000 Y1000 Z100 E2000
Для сохранения параметров в EEPROM использовать M500
М202 – Установка максимального ускорения для простого(холостого) перемещения.
!Не используется в Марлин! В мм/сек в кв. Пример: M202 X1000 Y1000
М203 Xnnn Ynnn Znnn Ennn – Установка максимальной скорости (в мм/сек)
Xnnn, Ynnn, Znnn – макс.скорость для осей.
Ennn – макс.скорость для экструдера.
Можно использовать только один/два из параметров.
Пример: M203 X6000 Y6000 Z300 E10000
Для сохранения параметров в EEPROM использовать M500.
М204 Pnnn Rnnn Tnnn – Установка ускорений (в мм/сек.в кв)
Pnnn – Ускорения при печати
Rnnn – Ускорение ретракта
Tnnn – Ускорения при холостых перемещениях
Можно использовать только один/два из параметров.
Пример: M204 P800 T3000 R9000
Для сохранения параметров в EEPROM использовать M500.
М205 Xnnn, Znnn, Ennn – Установка максимальных рывков(jerk) (мм/сек)
Xnnn – рывок по осям Х и Y. (по этим осям рывки одинаковые)
Znnn – рывок по оси Z.
Ennn – рывок для экструдера.
Можно использовать только один/два из параметров.
Пример: M205 X30 Z5 – Установить рывок по X/Y = 30, по Z рывок = 5.
Для сохранения параметров в в EEPROM использовать M500.
М206 Xnnn, Ynnn, Znnn – Установка смещений относительно концевиков(ноля)
Подобие команды G92, но эти смещения можно записать в EEPROM см. М500.
Пример: M206 X10.0 Y10.0 Z-0.4
M207 Snnn Fnnn Znnn – Установка параметров ретракта (втягивание прутка)
Snnn – положительное значение ретракта в мм.
Fnnn – скорость подачи мм/сек.
Znnn – лифт(подъем) головы по оси Z в мм при ретракте. (Помогает не задеть модель)
Пример: M207 S4.0 F2400 Z0.075
Используется впоследствии для команд G10 и G11.
Для сохранения параметров в в EEPROM использовать M500.
M208 Snnn Fnnn – Параметры восстановления подачи прутка после ретракта
Snnn – положительное значение подачи в мм.
Fnnn – скорость подачи мм/сек.
Для сохранения параметров в в EEPROM использовать M500.
M209 Snnn – Вкл/выкл автоматического ретракта
Snnn – значение 1 – вкл, 0- выкл.
Используется, если слайсер не поддерживает команды G10 и G11.
Каждая команда «выдавливания» будет классифицироваться как ретракт, в зависимости от значения (положительное или отрицательное).
M218 Tnnn Xnnn Ynnn – Установка смещения головы
Tnnn - номер головы
Xnnn, Ynnn – координаты по Х,Y.
Пример: M218 T0 X50 Y10.5
M301 Hnnn Pnnn Innn Dnnn — Записать PID параметры хотэнда(!)
Hnnn – номер экструдера. H1 – первый эксрудер(хотэнд).
Pnnn - Коэффициэнт proportional (Kp)
Innn - Коэффициэнт integral (Ki)
Dnnn - Коэффициэнт derivative (Kd)
Пример: M301 H1 P1 I2 D3
Для сохранения параметров в EEPROM использовать M500.
Для записи PID стола смотри М304.
M302 Snnn – Разрешить выдавливание при температуре Snnn и выше.
Snnn - Заданная температура
Пример: M302 S170 – разрешить выдавливать(включать мотор экструдера) при температуре сопла 170С и выше. М302 S0 – выдавливать при любой температуре.
M304 Pnnn Innn Dnnn — Записать PID параметры стола(!)
Pnnn - Коэффициэнт proportional (Kp)
Innn - Коэффициэнт integral (Ki)
Dnnn - Коэффициэнт derivative (Kd)
Пример: M301 H1 P1 I2 D3
М301 – без параметров выведет текущие параметры.
Для сохранения параметров в EEPROM использовать M500.
Для записи PID экструдера смотри М301.
М404 Wnnn – Установка номинальной толщины филамента 1.75 или 3.
Wnnn – номинальная(теоретическая) толщина филамента в мм.
Пример: M404 W1.75
M404 – без параметров выведет текущее номинальное значение строкой.
Это значение используется для определения процентной разницы при автоматической настройке расхода в ответ на измеренную ширину нити и должно соответствовать значению, используемому для ширины нити в настройках слайсера.
Установка реальной толщины филамента см. М200.
М420 Snnn – Вкл/выкл использования сетки компенсации кривизны стола (MESH_BED_LEVELING)
Snnn – S1 вкл., S0 выкл.
M420 S1 – использовать при печати сетку компенсации кривизны стола загруженной из EEPROM.
См. G29 чтобы получить текущий статус и создать сетку компенсации кривизны стола.
М500 – Сохранение данных в EEPROM
М501 – Чтение данных из EEPROM
М600 – Команда для автоматической смены филамента
G1 — линейное движение
С этой команды начинается около 95% строк в файле для печати. Команда G1 задает и направление перемещения печатающей головки. В этой же строке может содержаться команда E, которая указывает, сколько филамента (в миллиметрах) необходимо протолкнуть в сопло. Также в строке можно указать команду F, которая задает скорость движения в миллиметрах в минуту.
Пример: G1 X30 E10 F1800 — протолкнуть 10 мм филамента в экструдер, пока печатающая головка перемещается на 30 мм по координате X со скоростью 1800 мм/мин.
Содержание
Notepad++
Бесплатная программа, в которой можно настроить выделение синтаксиса G-code. ПО доступно для ОС Windows.
Simplify3D
Популярный слайсер, имеет собственный редактор G-code. Пользователю доступно создание автоматических сценариев, например — стандартное выполнение 3D-принтером определенных действий в начале и в конце процесса печати.
Как отредактировать G-code?
Для редактирования G-code можно использовать различные оффлайн- и онлайн-программы. Рассмотрим основные инструменты.
Что такое G-code?
G-code — условное наименование языка программирования устройств с числовым программным управлением (ЧПУ) и написанного на этом языке кода. Был создан компанией Electronic Industries Alliance в начале 1960-х. Программа, написанная с использованием G-code, имеет жесткую и последовательную структуру. В отличие от других языков программирования, в G-code нет циклов, функций и логических команд, т.е. оборудование выполняет ровно то, что подготовила программа, либо пользователь ручным набором.
Также важно понимать что все 3D-принтеры , фрезерные станки, CO2-станки и прочее станки ЧПУ работают практически на одном языке. Разница может быть сугубо в “богатстве языка”, т.е. количестве уникальных команд для того или иного типа устройств.
M106 — скорость вращения кулера
Эта команда задает скорость вращения кулера, который охлаждает изделие. Скорость вращения (S) устанавливается в диапазоне значений от 0 (выключен) до 255 (максимальная скорость).
Пример: M106 S128 — включить кулер на скорости 50%.
Читайте также: