завершающий g код cura
UNI Форум
G-Code для очень начинающих
G-Code для очень начинающих
Сообщение demonlibra » 07 апр 2020, 21:29
В искусственный интеллект и восстание машин верят только те кто ни разу не писал ручками программы на g-code`е и не программировал для Arduino. Код прошивок Marlin и Lerdge похож, но некоторые команды и синтаксис всё-таки отличаются. Помнить все команды дело бесполезное, главное знать где подсмотреть. Ссылка на on-line документ с описанием G-кодов,
эта же ссылка присутствует в верхнем меню ⇨ Firmware / Прошивки.
Разберем простой пример:
Re: G-Code для очень начинающих
Сообщение demonlibra » 07 апр 2020, 21:43
Re: G-Code для очень начинающих
Сообщение demonlibra » 08 апр 2020, 11:56
Re: G-Code для очень начинающих
Сообщение demonlibra » 08 апр 2020, 22:53
Re: G-Code для очень начинающих
Сообщение demonlibra » 09 апр 2020, 10:17
Если Вы пользуетесь слайсером CURA, то он автоматический добавит команды нагрева стола и HOTEND`а перед стартовым кодом. Вы можете добавить их самостоятельно непосредственно в стартовый код.
Т.е. если в стартовом коде будет строка: M190 S
а в профиле печати будет задано следующее:
В конечном файле с g-кодом Вы получите строку: M190 S85
Добавим команду нагрева стола с ожиданием в начало, так как это довольная долгая стадия.
Результат
G-CODE по-русски (Справочник 3D-шника)
Fockus
Администратор
М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.
Каждая команда «выдавливания» будет классифицироваться как ретракт, в зависимости от значения (положительное или отрицательное).
М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 – Команда для автоматической смены филамента
Макросы для 3D-принтера
Структура G-code файлов
Каждый файл GCODE можно разделить на 2 части: комментарий, встречающийся в начале программы и после команд, и сами команды. Рассмотрим на примере модели, нарезанной с помощью PrusaSlicer (Версия 2.3.0).
В первой строчке нас встречает название слайсера, его версия, дата и время слайсинга:
; generated by PrusaSlicer 2.3.0+win64 on 2021-04-22 at 12:31:50 UTC
Обратите внимание, что в самом начале строки стоит знак “точка с запятой”, он обозначает комментарий. Всё что находится в строке до него читает принтер, а на то что после он не обращает внимание.
Далее мы видим несколько строк, в которых нам показываются настройки ширины линии, которые слайсер использовал для нарезки модели. Все они являются комментариями.
; external perimeters extrusion width = 0.45mm
; perimeters extrusion width = 0.45mm
; infill extrusion width = 0.45mm
; solid infill extrusion width = 0.45mm
; top infill extrusion width = 0.40mm
; first layer extrusion width = 0.40mm
После идут строчки, в которых описываются начальные температуры, команда нахождения нулевой точки координат и команды перемещения. Все команды, которые участвуют в начале и процессе печати будут рассмотрены далее.
Совет: Многие слайсеры, при нарезке GCODE для принтера оставляют в файле комментарии, указывающие на смену слоя и/или его номер. Это поможет в ориентировании в командах при ручном редактировании.
Gcode команды
Многие заблуждаются, называя данный язык для работы 3D-принтера языком программирования. На самом деле это общепринятый формат работы с ЧПУ станками, в том числе и с 3D-принтерами. Каждая команда находится в отдельной строчке и представляет собой название команды (буква и число) и её параметры (также буквы и числа). Например, команда перемещения сопла к определенной координате с выдавливанием пластика:
G1 X101.912 Y136.607 E2.04825
Все команды подразделяются на два основных типа:
Есть и другие малочисленные типы, но в 3D-принтерах они не используются, поэтому в данной статье мы их опустим.
G-команды
Все команды данной группы предназначены для перемещения или калибровки. 3D-принтер использует не все из них, при этом не каждый 3D-принтер использует те же команды, что и другой. Например есть команда для автокалибровки стола. Очевидно, если в вашем принтере данная функция не предусмотрена конструкцией, то и исполняться данная команда не будет. Далее таблица самых популярных G-команд:
Команда | Параметры | Описание |
---|---|---|
G0 | Параметры отличаются в зависимости от прошивки. | Автоматическое построение карты высот стола |
— | Переход в абсолютную систему координат (все координаты относительно нуля) | |
— | Переход в относительную систему координат (все координаты относительно нынешнего положения сопла) | |
Установить позицию без перемещения и выдавливания |
M-команды
Данные команды являются вспомогательными. В основном они связаны с настройкой и калибровкой температур, работой с файлами и настройками параметров перемещения.
Команда | Параметры | Описание |
---|---|---|
Подача питания на все моторы, если не указано параметров. Иначе включаются только указанные | ||
M18 |
Некоторые из вышеуказанных команд можно использовать перед печатью для оценки состояния принтера, например M20 и M119. Но многие остальные команды используются для создания макросов, которые мы опишем далее.
Виды макросов для 3D-принтеров
Начальные
Все макросы данного типа предназначены для подготовки принтера перед печатью. Например, с помощью одной команды M301 можно настроить PID на принтере для разной температуры. Это может быть очень важно, так как PID зависит не только от характеристик принтера и его конструкции, но и от температуры печати. Если хотенд очень инертный, то значение PID для разных температур будут слабо отличаться, поэтому нет смысла каждый раз изменять их. Но если хотенд имеет малую инертность, то разница коэффициентов PID для разных температур достаточно велика, чтобы испортить модель из-за скачков температур. Подробнее о настройке PID вы можете прочитать в статье о выборе температуры печати на нашем сайте. Как только вы найдете значение параметров PID для температур, которыми вы чаще всего печатаете, их можно подставить в начальный GCode. В PrusaSlicer это можно сделать в окне “Настройка принтера”, внутри вкладки “Пользовательский Gcode”.
Для удобства можно создать сразу несколько профилей принтеров для разных температур.
Заправка филамента
Если при каждой печати вы меняете пластик, то для удобства можно использовать небольшой макрос для смены/заправки филамента перед печатью:
G91; установка начала координат относительно последней позиции
G1 E-100 F2400; Вытаскивание филамента
G4 S15; Пауза на 15 секунд
G1 E100 F2400; Заправка филамента
G90; Переход к абсолютным координатам
G92 E0; Установка координаты экструдера на значение ноль
Значение параметра E в двух командах G1 необходимо подобрать для вашего принтера. Если у вас боуден экструдер, то измерьте длину трубки в миллеметрах и прибавьте 30-50 миллиметров, затем полученное значение вставьте в параметр E. Если же у вас директ экструдер, то можете вставить значение 50-70мм. Весь полученный код вставьте в окно “Стартовый G-код” после стандартных команд.
Внимание: после каждого изменения не забывайте сохранять профиль!
Между слоями
В данной группе находятся макросы, прямо влияющие на процесс печати. Зачастую они вызывают наибольшую сложность из-за необходимости ручного редактирования файла GCode в блокноте или другом текстовом редакторе. Но на самом деле в этом нет ничего сложного, ведь в каждом таком файле есть комментарии, по которым можно легко найти нужный участок кода. Например можно добавить звуковой сигнал при смене слоя. Для этого необходимо использовать команду M300:
Стоит учитывать, что в принтере установлен простейший спикер, поэтому не стоит указывать частоту ниже 500 Гц, так как звук будет тише и сильно искажен. Для подбора частоты можно использовать этот сайт. Квадратная форма волны наиболее сильно похожа на звук спикера. Как только вы выберите подходящую частоту и время, полученную строку можно вставить в окно “G-код, выполняемый при смене слоя”.
Смена филамента
Данный макрос позволяет печатать одну модель несколькими цветами на принтере, имеющим один экструдер. Есть всего 2 ограничения: цвет будет меняться ровно на границе между слоями и при каждой смене слоя нужно вручную менять филамент.
В начале нужно определить место смены слоя. Для этого рассчитайте высоту, на которой находится граница между слоями. Это легко сделать по формуле:
Высота смены слоя = номер слоя * высоту слоя (в миллиметрах).
После того, как вы найдёте высоту, необходимо открыть файл Gcode и найти в нём первую строку, в которой находится параметр Z с искомой высотой слоя. Например, нам нужно изменить цвет калибровочного кубика на десятом слое, при этом мы печатаем с высотой слоя в 0.2 мм. Значит в файле Gcode нужно найти первую строчку, где есть Z5. Затем, после комментариев, который поставил слайсер, нужно вставить следующий макрос:
G91; переход в относительную систему координат
G1 Z5; поднятие сопла на 5 мм
G90; переход в абсолютную систему координат
G1 Y10 X10 F1000; перемещение к краю стола
G4 S60; пауза 60 секунд (в это время нужно вставить пластик)
G91; переход в относительную систему координат
G1 E100 F100; заправка пластика
G92 E0; обнуление координат экструдера
G90; переход в абсолютную систему координат
В итоге ваш файл должен выглядеть примерно как на изображении ниже:
Если перевести эти команды на человеческий язык: как только начнется следующий слой, принтер поднимает сопло и отодвигает его на край стола. Затем он ждёт 60 секунд, за которые вы должны заменить пластик. После этого принтер выдавит 100 мм заправленного пластика, чтобы стабилизировать поток, и продолжит печать. Данную команду можно вставлять несколько раз, но учтите: каждая смена слоя добавляет к общему времени печати 1-2 минуты и требует ваших активных действий.
Конечные
Все слайсеры в конце печати оставляют стандартные команды: поднятие сопла, выключение нагревателей и обдува. Но если идет печать нескольких моделей друг за другом, то на повторный нагрев сопла и стола будет уходить большое количество времени. Чтобы принтер не отключал нагрев, необходимо убрать команду M104 S0 из окна “Завершающий G-код”. Также увеличить удобство работы с 3D-принтером можно путем добавления макроса воспроизведения звукового сигнала в конце печати.
Звуковое оповещение
Для воспроизведения мелодии, обозначающей конец печати, необходимо добавить одну или несколько команд M300 после стандартных команд в окне “Завершающий G-код”. Например, можно вставить три последовательных писка:
Или начальную тему из Марио:
И даже музыку из Индианы Джонса:
Простор для фантазии огромен, так что можете придумать свою композицию и записать её в виде последовательностей команд M300.
Интересный факт: автор канала Make Anything сыграл мелодию из сервиса Nintendo используя 3D-принтер. Изюминкой данного видео является использование не только спикера на плате принтера, но и звука моторов и даже своеобразного маракаса, напечатанного на этом же принтере.
Особые
В данную группу макросов относятся исключительные макросы, которые зачастую неприменимы, но в некоторых ситуациях они могут сильно упростить печать. Например, макрос для последовательной печати моделей. То есть принтер печатает модель, затем либо сам принтер, либо человек отделяет деталь от стола, и принтер начинает печатать следующую модель. Данный процесс имеет множество ограничений и его крайне сложно настроить именно под ваш принтер. Пример исполнения данной идеи можно увидеть в данном видео.
Очистка сопла
Если сопло быстро пачкается и вы устали его чистить, а силиконового чехла на хотенд у вас нет, то можно чистить сопло перед каждой печатью с помощью металлической щетки. Для этого необходимо закрепить в дальнем углу стола металлическую щётку, а в начальный G-код, после команд нагрева сопла, добавить данные строки:
G28; Движение к началу координат
G90; переход в абсолютную систему координат
G0 Z10; поднятие сопла на “Высоту очистки”
G0 Xnnn Ynnn; перемещение к дальнему краю щётки
G0 X(nnn-10) Ynnn; перемещение к ближнему краю щётки
G28; возвращение в начало координат
Здесь вместо Xnnn и Ynnn должны находится координаты, в которых находится дальний край щетки. Например, для стола размером 200х200мм команды передвижения будут выглядеть так:
Высоту, на которой будет находится сопло, необходимо подобрать экспериментальным путем. Желательно, чтобы щетина щетки полностью покрывала сопло, но не мешала его передвижению.
Внимание: щетка должна быть крепко зафиксирована, иначе при ее отделении от стола она может заблокировать механику передвижения и сломать двигатели!
Макросы в Cura
Относительно недавно слайсер Cura обзавелся возможностью редактирования Gcode в самой программе. Отличительным преимуществом данного способа является обратная связь между слайсером и этой функцией, что позволяет, например, выводить оставшееся время печати прямо на экране принтера.
Для начала работы с макросами необходимо открыть окно пост-обработки. Для этого выберите в тулбаре вкладку “расширения”, затем “постобработка” и нажмите “Изменить G-код”.
Перед вами откроется окно постобработки. В левой половине будет список плагинов, справа настройки выбранного плагина. Работа с несколькими плагинами похожа на работу со слоями в фотошопе. Скрипты будут редактировать файл Gcode по порядку, то есть скрипт может влиять на вышестоящие скрипты, но не наоборот.
Далее список скриптов и их краткое описание:
Данный скрипт позволяет изменять скорость, температуру, поток и мощность обдува на определенной высоте. Значения применяются на все последующие слои. Также можно включить отображение изменений на экране принтера. В основном скрипт используется для печати тестовых моделей.
Этот скрипт предназначен для экструдеров смешивания (например, A10M от компании Geeetech). В отличии от просто двухцветной печати, в данном экструдере возможно смешивание двух пластиков, что позволяет создавать переходные оттенки.
Создание значков для файлов Ultimaker Format Package (.ufp). Используется при внедрении слайсера в Octoprint.
Display filename and layer on LCD
Название говорит само за себя: отображение названия файла и номера слоя на экране.
Display progress on LCD
Отображение оставшегося времени печати на экране принтера
Автоматизация процесса редактирования Gcode для смены филамента.
Insert at layer change
Является аналогом окон вставки Gcode при смене слоя в PrusaSlicer
Позволяет добавить откат во время движения сопла между частями модели
Search and Replace
Удаляет указанные символы и заменяет их. Если заменять на символ “пробела”, то данный скрипт просто удаляет указанные символы
Данный скрипт помогает в создании высококачественных таймлапсов при помощи камеры. На каждом слое принтер будет убирать каретку в сторону и отправлять команду, которая может активировать камеру.
Use Previous Probe Measurements
Если в вашем принтере есть возможность постройки карты высот стола, то данный скрипт будет заменять повторное измерение высот на результат предыдущих измерений.
Самыми часто используемыми и полезными плагинами являются Change At Z и Search and Replace. Они покрывают 80% всех необходимых изменений в Gcode. Поэтому, даже если вы не собираетесь в ближайшее время их использовать, всё равно лучше их изучить хотя бы на поверхностном уровне.
Таблицы основных команд
При обслуживании принтера финальным этапом проверки и настройки является самодиагностика принтера и проверка его в действии. Но не все действия можно сделать из меню принтера. Для удобства мы собрали все необходимые команды в одной маленькой таблице, которую вы можете быстро открыть и использовать.
Команда | Параметры | Описание | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
; Ender 5 Custom End G-code |
G4 ; Wait |
M220 S100 ; Reset Speed factor override percentage to default (100%) |
M221 S100 ; Reset Extrude factor override percentage to default (100%) |
G91 ; Set coordinates to relative |
G1 F1800 E-3 ; Retract filament 3 mm to prevent oozing |
G1 F3000 Z20 ; Move Z Axis up 20 mm to allow filament ooze freely |
G90 ; Set coordinates to absolute |
G1 X0 Y220 F1000 ; Move Heat Bed to the front for easy print removal |
M106 S0 ; Turn off cooling fan |
M104 S0 ; Turn off extruder |
M140 S0 ; Turn off bed |
M107 ; Turn off Fan |
M84 ; Disable stepper motors |
M117 Th a t ‘s All Folks! |
; End of custom end GCode |
This comment has been minimized.
Copy link Quote reply
cnyper commented Feb 6, 2020
Hey Jazzsequence.
found your code as Marlin 2.0.3 has upset my Ender 5.
when I home, it goes to back right, as before, but previously when a print started it printed a line along the right side to the front and then the back. Now it comes to front left and prints the line to the back left and front again.
Worse than that, though, when it finishes, it comes to front left, bashing my (modded) direct extruder and part fan into the front rail.
So, I went looking for possible solutions.
if I do manual G1 X0 Y0 it comes to front left, but autohome sends it to back right, I have double checked the X&Y settings in Config.h and they appear to be the same with everyone elses.
So that’s my problem.
All I meant to say was, on your end.gcode ln 9. your comment is «Move Heat Bed to the front for easy print removal», but the ender 5 doesn’t have a bed that moves front to back, only up and down. what G1 X0 Y220 does is to send the nozzle to the back left.
Was that a copy paste error from Ender 3??
This comment has been minimized.
Copy link Quote reply
jazzsequence commented Feb 6, 2020
It may well have been a copy/paste error. Most of this was a hodgepodge of different things from a variety of sources that I was experimenting with. YMMV ¯_(ツ)_/¯
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
- С чем связывается необходимость хранения архивных документов
- appdata local temp можно ли удалить содержимое windows 10