3DPrintStory    Процесс 3D печати    Основы G-кода для 3D печати: список и руководство

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

G-код - это язык программирования для числового программного управления (ЧПУ). Другими словами, это язык, на котором говорит компьютер, управляющий машиной, и он передает все команды, необходимые для движения и других действий.

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

Тем не менее, если вы хотите глубже понять 3D-печать, важно изучить основы G-кода. Эти знания позволят вам лучше диагностировать и контролировать процессы 3D печати, а также настроить прошивку 3D принтера, такую как RepRap или Marlin.

В этой статье мы расскажем об основах G-кода, в том числе о том, как читать, понимать и писать команды, даже если вы новичок в программировании!

Что такое G-код?

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

Хотя термин "G-код" используется для обозначения языка программирования в целом, это также один из двух типов команд, используемых в 3D-печати: "основные" и "вспомогательные" команды.

Основные командные строки отвечают за типы движения в 3D-принтере. Такие команды обозначаются буквой "G". Помимо управления движением по трем положительным осям, выполняемым печатающей головкой, они также отвечают за экструзию нити.

С другой стороны, разные команды заставляют машину выполнять не геометрические задачи. В 3D-печати такие задачи включают команды нагрева сопла и станины, а также управление вентилятором и т.п. Вспомогательные команды обозначаются буквой "M".

Синтаксис G-кода

Каждая строка с G-код командами имеет определенный синтаксис. Каждая строка соответствует только одной команде, что может привести к очень длинным кодам.

Первым аргументом любой строки является сам код команды. Как вы видели, это может быть код типа "G" или "M", за которым следует номер, идентифицирующий команду. Например, "G0" соответствует команде линейного перемещения.

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

Комментарии в G-коде

Когда вы будете читать G-код команды, вы увидите точки с запятой после букв и чисел, которые объясняют, что делает код. Вот пример строки с комментарием к коду:

G1 X25 Y5; Я комментирую код!

Программистам часто необходимо включать объяснения на понятном языке, чтобы другие программисты могли понять определенные строки или участки кода. Также может случиться так, что вы забудете, почему вы написали что-то определенным образом, в результате чего вам будет трудно снова разобраться. Для решения этой проблемы используются комментарии к коду. Комментарии включают все (в той же строке) после точки с запятой и полностью игнорируются машиной при выполнении G-кода. Таким образом, они предназначены исключительно для глаз программистов.

Важные команды для 3D печати

Хотя существуют буквально сотни команд G-кода, в следующих нескольких разделах мы рассмотрим самые основные и важные из них. Как только вы освоитесь, вы сможете самостоятельно изучить и другие команды.

G0 и G1: линейное движение

Команды G0 и G1 выполняют линейные перемещения. По соглашению, G0 используется для движений без экструзии, таких как начальные и холостые перемещения, в то время как G1 охватывает все линейные движения с экструзией материала.

Однако обе команды работают одинаково. Параметры для G0 или G1 включают конечные положения для всех осей X, Y и Z, степень экструзии, выполняемую во время перемещения, и скорость, определяемую скоростью подачи в заданных единицах.

Пример

G1 X90 Y50 Z0.5 F3000 E1 сообщает 3D принтеру двигаться по прямой линии (G1) к конечным координатам X = 90 мм, Y = 50 мм, Z = 0,5 мм при скорости подачи (F) 3000 мм / мин. и выдавливании (E) 1 мм материала в экструдере.

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

G90 и G91: абсолютное и относительное позиционирование

Команды G90 и G91 сообщают машине, как интерпретировать координаты, используемые для движения. G90 устанавливает "абсолютное позиционирование", которое обычно используется по умолчанию, а G91 - "относительное позиционирование".

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

Пример

Допустим, мы хотим переместить печатающую головку на X = 30 в строке. В режиме абсолютного позиционирования это будет выглядеть так:

G90; устанавливает абсолютное позиционирование
G0 X30; перемещается в координату X = 30

Этот простой ход скажет принтеру переместить печатающую головку так, чтобы она располагалась на X = 30. Теперь, для перемещения относительного позиционирования, нам нужно знать, где печатающая головка находится в данный момент. Предположим, что это X = 10:

G90; устанавливает относительное позиционирование
G0 X20; перемещается на +20 мм по оси X

G91 сначала указывает 3D принтеру интерпретировать координаты относительно текущего положения (X = 10). Зная это, достаточно просто нужно переместиться на 20 мм в положительном направлении оси X, таким образом достигнув X = 30, как нам хотелось бы.

G28 и G29: автоматическое возвращение "в нуль" и калибровка стола

"Возвращение в исходное положение" -  это процесс перемещения вплоть до физических ограничений для всех осей движения. Команда G28 выполнит эту задачу, перемещая печатающую головку до тех пор, пока не сработают концевики по всем осям.

Перемещение "в нуль" важно не только для ориентации устройства, но и для предотвращения выхода печатающей головки за границы. Команда G28 обычно выполняется перед каждым началом 3D печати.

Конкретная ось может быть индивидуально перемещена в исходное положение путем включения X, Y или Z в качестве параметров. В противном случае только G28 обеспечит перемещение в нуль по всем осям.

Пример

G28 X Y; только оси X и Y
G28; в нуль по всем осям

Другая команда, G29, запускает последовательность автоматической калибровки стола. Существует множество различных методов выравнивания стола перед 3D печатью. Обычно эта операция обеспечивается прошивкой, а не конечными пользователями. По этой причине мы не будем вдаваться в подробности, касающиеся методов и параметров команд. Просто знайте, что G29 обычно отправляется после автоматического возврата в исходное положение (G28). В результате должна выполняться автоматическая калибровка стола, которая определяется прошивкой.

G29; выполнить последовательность автоматического выравнивания станины

M104, M109, M140 и M190: установка температуры

Это важные команды, которые, опять же, не связаны с движением.

Для запуска команда M104 устанавливает целевую температуру, которую должен достичь хот-энд, и удерживает ее до тех пор, пока не будет указано иное.

Некоторые из параметров включают фактическое значение температуры (S) и печатающую головку (T) для нагрева.

Пример

M104 S210; установить целевую температуру для хот-энда на 210 градусов

Эта командная строка указывает 3D принтеру нагреть хот-энд до 210 ° C. После установки целевой температуры принтер продолжит выполнение следующей командной строки, нагревая хотэнд.

В качестве альтернативы, если мы хотим подождать, пока эта цель не будет достигнута, прежде чем перейти к следующей строке, мы можем использовать команду M109.

M109 S210; установить целевую температуру горячего конца 210 градусов и ничего не делать, пока она не будет достигнута

Установка температуры стола очень похожа, но вместо этого утсанавливается с помощью команд M140 и M190:

M140 S110; установить целевую температуру стола на 110 градусов
M190 S110; установить целевую температуру кровати на 110 градусов и ничего не делать, пока она не будет достигнута

M106 и M107: Управление вентилятором

Еще одна важная команда для 3D принтеров: команды M106 и M107 обеспечивают управление вентилятором.

M106 включает вентилятор и устанавливает его скорость. Это особенно полезно для вентилятора охлаждения детали, так как во время процесса 3D печати во время печати первого слоя и перемычки требуются разные скорости.

Параметр скорости должен иметь значение от 0 до 255. Значение 255 обеспечивает 100% мощности, и любое число в этом диапазоне будет указывать соответствующий процент в процентах.

Пример

M106; включить вентилятор на максимальной (100%) скорости
M106 S128; включите вентилятор и установите его на 50% мощности

Несколько вентиляторов с регулируемой скоростью можно определить с помощью параметров индекса (P), поскольку каждому вентилятору присваивается индекс встроенным ПО.

Наконец, команда M107 отключит указанный вентилятор. Если индексный параметр не указан, обычно отключается частичный охлаждающий вентилятор.

Структура программы

Теперь у нас есть хорошая возможность взглянуть на реальный фрагмент кода, который используется для 3D печати. Как мы увидим далее, программы G-кода можно разделить на три отдельных раздела.

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

Этап 1: Инициализация

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

G90
M82
M140 S80
M104 S200
G28
G29

Как мы уже теперь знаем, первая строка говорит, что при движении необходимо использовать абсолютное позиционирование, а вторая строка говорит экструдеру также интерпретировать экструзию в абсолютных единицах.

Третья и четвертая линии начинают нагревать слой и сопло до заданных температур. Обратите внимание, что он не будет ждать достижения целевой температуры, а это означает, что принтер автоматически вернется в исходное положение и выровняет стол при нагревании.

Некоторые процедуры инициализации (например, тот, который используется PrusaSlicer) включают в себя процесс очистки сопла или печать одной прямой линии перед переходом к процессу 3D печати.

Этап 2: 3D печать

Вот где начинается волшебство. Если вы посмотрите на нарезанный на слои файл G-кода, вы осознаете, что на самом деле невозможно понять, что на самом деле делает сопло.

3D печать - это послойный процесс, поэтому вы обнаружите, что этот этап включает в себя множество движений в плоскости XY при печати одного слоя. Как только это будет сделано, одно крошечное движение в направлении Z определит начало следующего слоя.

Вот пример того, как команды G-кода могут выглядеть на этапе 3D печати:

G1 X103.505 Y153.291 E4.5648; движение и выдавливание в плоскости XY
G1 X103.291 Y153.505 E4.5804; движение и выдавливание в плоскости XY
G1 Z0.600 F3000; сменить слой
G1 X104.025 Y154.025 F9000; движение в плоскости XY
G1 X95.975 Y154.025 E0.4133 F1397; движение и выдавливание в плоскости XY

Этап 3: перезагрузка 3D принтера

Наконец, когда 3D печать завершена, некоторые последние строки команд G-кода переводят принтер в состояние по умолчанию.

Например, сопло может перейти в заранее определенное положение, нагреватели хот энда и стола выключены, а двигатели отключены.

M107; выключить вентилятор
G1 Z10; отодвиньте сопло от печати
M104 S0; выключить обогрев горячего конца
M140 S0; выключить обогрев кровати
M84; выключить моторы

Ввод и вывод данных через терминал

До сих пор мы говорили только о том, что компьютер отправляет на 3D принтер команды G-кода (обычно передаются через SD-карту). Однако это не единственный способ коммуникации.

Некоторые программные продукты для управления 3D принтером, такие как Pronterface и OctoPrint, позволяет напрямую взаимодействовать с 3D-принтером, и в этом случае вы можете вводить команды вручную.

По понятным причинам было бы непрактично печатать что-либо, отправляя строки кодов по отдельности. Но иногда этот метод коммуникации требуется для других целей, например, для получения ценной информации для калибровки или когда в 3D принтере отсутствует дисплей.

Например, команда M105 "сообщить о температурах" извлечет текущие температуры сопла и слоя (которые затем могут отображаться чем-то вроде OctoPrint).

Эта связь также очень полезна для просмотра и изменения настроек EEPROM, которые жестко запрограммированы на уровне прошивки. Такие параметры, как шаги двигателя / мм, максимальная скорость подачи или ПИД-регулятор, можно визуализировать с помощью M503 ("настройки отчета"), изменить вручную, а затем сохранить с помощью M500 ("сохранить настройки").

Написание G-кода

К настоящему времени вы должны быть в состоянии читать и понимать G-код намного лучше. Рекомендуем посмотреть в сторону следующих вариантов для углубления своих знаний:

Совместимость

Мы надеемся, что с пониманием команд G-кода вы станете более продвинутым пользователем 3D принтера. Хотя G-код - не самый сложный компьютерный язык, он все же требует практики и изучения.

Прежде чем завершить эту статью, возможно, стоит немного поговорить о совместимости G-кода.

Существует много типов прошивок для 3D печати, и каждый может иметь разные "разновидности" G-кода. Это может привести к серьезным проблемам совместимости, поскольку команды, работающие на одной машине, могут не работать на другой.

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

Надеемся, что вам понравилось это краткое руководство. Удачного кодинга и 3D печати!