G-код в 3D-печати: структура, основные команды и пример

Что представляет собой G-код, зачем в нём разбираться, какие команды встречаются чаще всего и как выглядит простой стартовый скрипт.
Что такое G-код
G-код — язык управления станками с ЧПУ. Это обычный текстовый файл с расширением .gcode, в котором каждая строка — одна команда. Станок выполняет их по порядку сверху вниз; циклов и переходов в нём нет. Первые варианты языка появились ещё в 1960-х, а в 1980 году он стал международным стандартом. 3D-принтер как разновидность станка с ЧПУ унаследовал его частично.
Написать программу можно и вручную, но для сколько-нибудь сложной формы это практически нереально. Поэтому код для принтера формирует слайсер: он превращает 3D-модель в последовательность перемещений головки и сопутствующих действий — нагрева сопла и стола, включения вентиляторов и так далее.

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

- В стартовом блоке задают начальное положение головки и стола, обнуляют координаты, заранее греют стол, добавляют процедуру очистки сопла от остатков пластика.
- В завершающем — меняют стандартное поведение: отводят стол или головку для удобного доступа к детали, оставляют нагрев включённым для быстрого запуска следующей печати, не обесточивают мотор оси Z, если она опускается под собственным весом, подают звуковой сигнал.
- В теле программы можно изменить обдув или температуру на отдельном участке, вставить паузу, чтобы заложить в деталь гайку, болт или грузик.
Строка, комментарии и системы координат
Строка состоит из команды и аргументов, если они нужны. Всё, что стоит после точки с запятой, считается комментарием и игнорируется. Команды делятся на три группы: перемещения, управление вспомогательными устройствами (нагреватели, вентиляторы, питание) и управление системой координат.
Систем координат две. Абсолютная привязана к определённой точке стола, относительная отсчитывается от текущего положения головки. Переключаются они командами G90 (абсолютные) и G91 (относительные); выбранный режим действует до следующей смены. Вручную их правят редко.


G-команды: перемещения
- G0 — быстрое перемещение без экструзии; G1 — рабочее линейное перемещение с экструзией. Аргументы: координаты X, Y, Z, скорость F и подача пластика E. Например, G1 X100 Y30 E15 переместит головку в указанную точку, выдавив по пути 15 мм материала.
- G2 и G3 — движение по дуге по часовой и против часовой стрелки. В 3D-печати встречаются очень редко: слайсеры разбивают кривые на короткие отрезки.
- G4 — пауза; G4 S2 задаёт 2 секунды, ту же паузу даёт G4 P2000.
- G28 — выход в начальную точку до концевиков по всем осям; G28 X Y — только по указанным.
- G10 и G11 — ретракт и возврат пластика; их параметры задаются командами M207 и M208.
- G92 — обнуление положения. G92 E0 сбрасывает счётчик экструдера; без этого перед началом подачи пруток может уехать в случайное положение.
M-команды: нагрев, обдув, сервис
- M104 Sxxx и M140 Sxxx — задать температуру сопла и стола без ожидания; M109 Sxxx и M190 Sxxx — то же с ожиданием, пока температура будет достигнута и стабилизируется.
- M106 Sxxx — вентилятор обдува, значение от 0 до 255 (255 — это 100 %); M107 — выключить.
- M117 — вывести текст на дисплей; M300 Sxxx Pxxx — звуковой сигнал с частотой в герцах и длительностью в миллисекундах.
- M84 Sxxx — отключить шаговые двигатели после заданного числа секунд простоя; M85 Sxxx — так же отключить основное питание. M80 и M81 включают и выключают питание, если это предусмотрено конструкцией.
- M200 Dxxx — указать реальный диаметр прутка. Позволяет поправить недо- или переэкструзию без повторной нарезки модели.
- M302 Sxxx — минимальная температура экструдера, ниже которой работа остановится; при S0 ограничение снимается.
- M600 — смена филамента. Команды с M20 по M30 работают с SD-картой и вручную почти не используются.
Отдельная группа — настроечные команды, действующие до изменения или до конца печати: M201 (максимальные ускорения по осям), M203 (максимальные скорости), M205 (рывок, jerk), M206 (смещение осей относительно концевиков), M207 и M208 (длина и скорость ретракта и возврата, подъём сопла). PID-параметры нагрева хотэнда задаёт M301, стола — M304, а автокалибровку запускает M303; для просмотра её результатов плату подключают к компьютеру по USB. Сохранить параметры в EEPROM можно командой M500, восстановить — M501, сбросить — M502.
Нагрев стола в конце печати отключает M140 S0 в завершающем коде. Не все команды поддерживаются всеми принтерами и прошивками.
Пример: скрипт очистки сопла
Простой стартовый сценарий приклеивает к столу выдавленный пластик и отрывает его вместе с налипшими на сопло остатками. Пример рассчитан на сопло 0,6 мм. Код пишут в Notepad++ или «Блокноте» (не в Word) и сохраняют с расширением .gcode.
- Подготовка: G21 (миллиметры), G90 (абсолютные координаты), M82 (абсолютная длина экструзии), M107 (вентиляторы выключены).
- Нагрев: M140 S80 запускает стол без ожидания, M109 S235 греет сопло с ожиданием, затем M190 S80 дожидается стола — так оба нагреваются одновременно.
- G28 выводит головку на концевики, после чего она поднимается на 0,4 мм.
- Экструдер обнуляется (G92 E0), выдавливается 2 мм пластика (G1 E2 F300), счётчик обнуляется ещё раз.
- G1 X100 E15 F1000 — проход по оси X до 100 мм с экструзией на скорости 1000 мм/мин.
- M106 S255 включает обдув на полную, G4 S2 даёт две секунды на застывание.
- G0 X150 Z5 F2000 — рывок ещё на 50 мм с подъёмом без подачи пластика, нить отрывается.
- В конце обдув выключается, моторы обесточиваются, нагрев сопла и стола снимается командами M104 S0 и M140 S0.