Найти в Дзене

Основные команды G-code для управления 3D-принтером

Для управления станками с числовым программным управлением, к которым относятся и 3D-принтеры, используется стандартизированный язык программирования, известный как G-code. Этот язык представляет собой набор текстовых инструкций, которые сообщают микроконтроллеру принтера, куда перемещать печатающую головку, с какой скоростью двигаться, до каких значений нагревать сопло и стол, а также сколько пластика необходимо выдавить в конкретный момент времени. Программы-слайсеры преобразуют трехмерную геометрию модели в длинный текстовый файл, состоящий из тысяч или миллионов строк этих команд. Понимание синтаксиса и логики работы базовых команд необходимо для тонкой настройки оборудования, диагностики неполадок и написания стартовых или конечных скриптов. В данной статье мы детально разберем структуру языка, основные группы команд и принципы их взаимодействия с механикой принтера. Каждая строка в файле управляющей программы обычно содержит одну основную команду и набор параметров к ней. Микроко
Оглавление

Для управления станками с числовым программным управлением, к которым относятся и 3D-принтеры, используется стандартизированный язык программирования, известный как G-code. Этот язык представляет собой набор текстовых инструкций, которые сообщают микроконтроллеру принтера, куда перемещать печатающую головку, с какой скоростью двигаться, до каких значений нагревать сопло и стол, а также сколько пластика необходимо выдавить в конкретный момент времени. Программы-слайсеры преобразуют трехмерную геометрию модели в длинный текстовый файл, состоящий из тысяч или миллионов строк этих команд.

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

Структура и синтаксис команды

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

Строка начинается с буквы, которая определяет класс команды:
G — подготовительные команды, отвечающие за геометрию, перемещение по осям и системы координат.
M — вспомогательные команды, управляющие аппаратной частью принтера (нагрев, охлаждение, питание двигателей, работа с памятью).
T — команды выбора инструмента (актуально для принтеров с несколькими экструдерами).

После буквы следует числовой код команды. За кодом могут идти параметры, которые также обозначаются буквами:
X, Y, Z — целевые координаты перемещения по соответствующим осям, измеряются в миллиметрах.
E — параметр оси экструдера, определяющий количество выдавливаемого или втягиваемого филамента в миллиметрах.
F — параметр скорости подачи (Feedrate). Измеряется в миллиметрах в минуту. Для перевода в привычные миллиметры в секунду значение F нужно разделить на 60.
S — параметр значения, применяется для установки температуры в градусах Цельсия или мощности вентилятора.
P — параметр времени или паузы, обычно измеряется в миллисекундах.

Символ точки с запятой используется для комментариев. Все символы в строке после этого знака игнорируются прошивкой принтера.

Команды позиционирования и перемещения (G)

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

G0 и G1 — команды линейного перемещения. Исторически G0 использовалась для быстрого холостого хода без рабочего инструмента, а G1 — для рабочего перемещения. В современных прошивках 3D-принтеров разницы в обработке этих команд нет, они обе инициируют линейное движение к заданным координатам.
Пример команды: G1 X150 Y150 Z0.2 E5 F3000
В данном случае принтер переместит сопло в точку с координатами X=150 и Y=150 на высоте 0.2 мм, выдавит 5 мм пластика, и все это будет сделано со скоростью 50 мм/с (3000 мм/мин).

G28 — команда автоматической парковки (Homing). При получении этой команды принтер начинает перемещать оси к нулевым позициям до срабатывания концевых выключателей. Можно парковать все оси одновременно или указывать конкретные.
Пример команды: G28 X Y
Эта строка отправит в нулевую позицию только оси X и Y, оставив ось Z на текущей высоте.

G29 — команда запуска автоматической калибровки уровня стола (Auto Bed Leveling). Применяется на принтерах, оснащенных датчиком высоты. Принтер измеряет расстояние до стола в нескольких точках и создает сетку кривизны, чтобы компенсировать неровности поверхности во время печати первого слоя.

G90 и G91 — команды выбора системы координат.
G90 включает абсолютное позиционирование. Все последующие координаты будут отсчитываться от нулевой точки (Home). Если отправить команду перехода в точку X=10 дважды, принтер переместится туда один раз и останется на месте.
G91 включает относительное позиционирование. Координаты отсчитываются от текущего положения печатающей головки. Если отправить команду перемещения по оси X на 10 мм дважды, сопло сдвинется суммарно на 20 мм от начальной точки.

G92 — команда установки текущей позиции. Она сообщает принтеру, что его текущее физическое положение теперь соответствует указанным координатам. Чаще всего применяется для обнуления оси экструдера перед началом новой линии экструзии.
Пример команды:
G92 E0

Команды управления оборудованием (M)

Эта группа инструкций управляет нагревательными элементами, вентиляторами, двигателями и параметрами прошивки.

M104 и M109 — управление температурой хотэнда (сопла).
M104 дает команду нагревательному элементу достичь указанной температуры, но не останавливает выполнение последующих строк кода.
M109 дает аналогичную команду, но принтер приостанавливает выполнение программы и ждет, пока термистор не зафиксирует достижение заданного значения.
Пример команды:
M109 S215
Принтер установит целевую температуру 215 градусов и не начнет печать до её достижения.

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

M106 и M107 — управление вентилятором охлаждения модели.
M106 включает обдув. Мощность задается параметром S в диапазоне от 0 (выключено) до 255 (100% мощности).
Пример команды:
M106 S127
Эта строка включит вентилятор на 50% мощности.
M107 полностью отключает вентилятор охлаждения модели (аналогично M106 S0). Вентилятор охлаждения радиатора хотэнда этими командами не управляется, так как он включается автоматически прошивкой при достижении температурой значения около 50 градусов.

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

Команды настройки калибровки и памяти

Многие системные параметры принтера хранятся в энергонезависимой памяти (EEPROM) и могут быть изменены через терминал отправкой текстовых команд.

M92 — установка количества шагов двигателя на один миллиметр перемещения (Steps per mm). Эта команда используется для калибровки осей и экструдера.
Пример команды:
M92 E415
Команда сообщает плате управления, что для выдавливания 1 мм филамента двигатель экструдера должен сделать 415 микрошагов.

M303 — запуск автоматической калибровки ПИД-регулятора (PID Autotune). Применяется для стабилизации температуры нагревателей. Принтер несколько раз нагревает и остужает сопло или стол, вычисляя оптимальные коэффициенты для плавного удержания температуры без колебаний.

M500 — сохранение текущих параметров в EEPROM. Если не выполнить эту команду после изменения настроек (например, после M92 или M303), новые значения сбросятся при перезагрузке принтера.

M501 — загрузка параметров из EEPROM в рабочую память.

M502 — сброс всех настроек до заводских значений, прописанных в конфигурационном файле прошивки.

M503 — вывод текущих настроек принтера в терминал. При отправке этой команды принтер ответит текстовым сообщением, содержащим текущие значения шагов, ускорений, ПИД-коэффициентов и оффсетов.

Дополнительные команды и паузы

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

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

M0 или M1 — безусловная остановка или пауза. Принтер останавливает выполнение кода и ждет нажатия кнопки на экране устройства для продолжения работы.

M117 — вывод текстового сообщения на экран принтера.
Пример команды: M117 Printing...

Структура файла управляющей программы

Стандартный файл для 3D-печати имеет четкую структуру, состоящую из трех основных блоков.

Первый блок — стартовый скрипт (Start G-code). Этот раздел генерируется слайсером на основе пользовательских настроек и содержит команды подготовки принтера. Обычно скрипт включает в себя включение нагрева стола и сопла (M140, M104), ожидание достижения температур (M190, M109), парковку осей (G28), загрузку сетки уровня стола (M420 или G29), обнуление экструдера (G92 E0) и печать очисточной линии для заполнения сопла пластиком перед стартом основной детали.

Второй блок — тело печати. Это самая объемная часть файла, состоящая из сотен тысяч строк команд G1, перемещающих сопло по слоям детали. В этом блоке также встречаются команды изменения скорости вентилятора (M106) для разных элементов модели, например, при печати мостов или нависаний.

Третий блок — конечный скрипт (End G-code). Выполняется после завершения печати последнего слоя. Скрипт отключает нагреватели (M104 S0, M140 S0), отключает вентилятор обдува (M107), отводит печатающую головку от модели по осям X и Y, немного поднимает ось Z для предотвращения повреждения пластика горячим соплом и отключает питание шаговых двигателей (M84).

В процессе изучения настройки оборудования и поиска справочной информации по 3D-печати можно обращаться к профильным площадкам. На сайте https://1-sloy.ru/ представлены статьи и руководства по работе со слайсерами и механикой принтеров.

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