G-CODE по-русски для 3D печати (Мини-справочник)

SteamGun
Идет загрузка
Загрузка
28.11.2019
4465
21
печатает на RepRap
Техничка

Подпишитесь на автора

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

Отписаться от уведомлений вы всегда сможете в профиле автора.

69

Часто, для качественной печати, и, особенно, при подборе параметров печати, при калибровке необходимо уметь читать и править G-код.

Банальный пример: установка своих значений для "Температурной башни" или создание стартового и конечного блоков кодов в слайсерах под конкретный принтер.

На некоторых сайтах(вроде reprap.org/wiki/G-code) на русскоязычных страницах команды описаны на русском только частично, а остальное на английском. На некоторых отечественных сайтах команды переведены на русский, но некоторые приведены с ошибками, - тупо копи-паст корявого перевода. 

Надоело искать по разным сайтам, пытаясь найти ПРАВИЛЬНОЕ описание той или иной команды и ее параметров.

Сделал себе такой мини-справочник. Буду рад, если кому еще пригодится.

Старался описать максимальное количество используемых команд, кроме совсем уж специфичных.

(Да-да, особые команды для дельт, например, уж простите, считаю специфичными и мне не нужными)

Однако, большинство команд поддерживаются всеми принтерами и прошивками.

Внимание! Соответствие команд и параметров проверены только для прошивки Marlin. 

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, иначе сетка будет неверной.

Создание Mesh Bed Leveling вручную(через команды):

1. Введите G29 S0 для начала создания сетки.

2. Введите G29 S1 для установки первой точки сетки.

3. Выровняйте сопло по высоте при помощи бумажки(как обычно).

4. Введите G29 S2 для сохранения значения и перехода к новой точке

5. Повторить шаги 3 и 4, пока процедура создания не закончится.

6. Введите M500 чтобы записать полученную сетку в EEPROM.

Создание Mesh Bed Leveling при помощи меню принтера(функция должна быть активна в прошивке):

1. Выберите пункт Prepare, а после Auto home (она же команда G28).

2. Выберите пункт Prepare, а после Level Bed.

3. Ждите начала инструкций на экране. Нажмите «крутилку» на экране, при появлении надписи «Click to Begin». Голова уедет в первую точку сетки.

4. Используя «крутилку», поднимая или опуская сопло, выставите сопло по бумажке. Так же как при выравнивании стола. После того, как вы добились нужного зазора между соплом и бумажкой, нажмите на «крутилку». Голова уедет к новой точке сетки.

5. Повторяйте п.4 пока программа не пройдет все точки.

6. После окончания войдите в меню Control и выберите пункт Store memory для сохранения созданной сетки в EEPROM.

 Для использования сохраненной в EEPROM сетки при печати используйте команду  

М420 S1(См. М420).

 

G90 - Установка абсолютных координат 

Все координаты являются абсолютными относительно начала координат станка.

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 – выдавливать при любой температуре.

 

M303 Ennn Snnn Cnnn — Запустить процесс PID калибровки для стола/хотэнда 

Ennn - E0 хотэнд, E1 стол.

Snnn – температура калибровки.

Cnnn – количество циклов калибровки. Больше циклов – точнее параметры.

Пример M303 E1 C8 S110 – калибровка PID стола при температуре 110С в течении 8-ми циклов.

Параметры PID будут выведены строкой, на экран терминала программы работающей в соединении с принтером, например Repetier-Host.

 

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 – Команда для автоматической смены филамента

Подпишитесь на автора

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

Отписаться от уведомлений вы всегда сможете в профиле автора.

69
Комментарии к статье

Комментарии

28.11.2019 в 09:43
0

Спасибо.

В закладки.

28.11.2019 в 10:27
0

Аналогично. Спасибо автору!

28.11.2019 в 11:00
0

Ляяя, брат, ты лучший! Однозначно в закладки. Спасибо! ПОчему плюсики не ставятся???

28.11.2019 в 15:34
0

Тупая новая система, по которой "плюсики" не ставятся, если у вас рейтинг меньше 10.

02.12.2019 в 10:14
0

И минусики, если меньше 200)

Чтобы не было возможности быстрой левой накрутки.

28.11.2019 в 15:46
0

Спасибо, очень помогла статья. В закладки! 

28.11.2019 в 16:00
2

Я бы сюда добавил ещё M220 и M221.

Изменение Скорости перемещений и экструзии (потока) соответственно.


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

02.12.2019 в 13:51
0

Да, пропустил. Всего не углядишь ))) Однозначно полезные команды! 

Жаль, что нет возможности отредактировать статью после публикации. ((

28.11.2019 в 18:26
0

очень хорошо. "но теория без практики мертва" (Ломоносов).

такшта в сумме с плюшками от Павлушки это будет прям очень годно! надо распечатать...

28.11.2019 в 21:58
0

Спасибо!!! Только сегодня в первый раз залез в G код, понятного там было (для меня) не более 60-70%, за остальное догадывался чисто интуитивно...

29.11.2019 в 02:31
0

Хорошая подборка.

А какую последовательность команд (листая Ваш список) Вы бы порекомендовали для записи текущей позиции сопла в EEPROM,

с последующим поднятием сопла на 5 мм НАД Изделием (+Z),

отводом сопла в X0Y0,

и выдачей сохранённых координат на Дисплейный Модуль с постфиксом/префиксом "Resume at "?

ski
02.12.2019 в 14:37
0

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

Я сам в процессе обучения )))))))

Вот тут, по ссылке есть пример считывания, но он сделан для компиляции Ардуино.

https://3dtoday.ru/questions/sostoyanie-3d-printera-kak-poluchit-programmno/

Это самая сложная часть. Используется команда М114. 

Поднять сопло можно G0 Z-5, ну и домой уйти командой G28 Х0 Y0.

Можно попробовать команду M125 - Временная парковка (в справочнике нет)

M125 [L ] [X ] [Y ] [Z ]

[L ] - Длина ретракта перед парковкой

(если не указано, то будет взято значение переменной FILAMENT_CHANGE_RETRACT_LENGTH)

[X ]  - X позиция (если не указано, то будет взято значение переменной FILAMENT_CHANGE_X_POS)

[Y ]  - Y позиция (если не указано, то будет взято значение переменной FILAMENT_CHANGE_Y_POS)

[Z ]  - подъем головы перед парковкой на значение Z. 

(если не указано, то будет взято значение переменной FILAMENT_CHANGE_Z_ADD)

Ну и вывод строки на экран M117 Resume at 

далее тоже М117, только вместо строки текста надо ставить переменную, вроде М117 #1 ;

(Обозначить в начале кода переменную можно #1; )

Про переменные можно почитать тут:

http://planetacam.ru/college/learn/10-3/

http://graf3d.xyz/g-code/parametricheskoe-programmirovanie.html

В вашей задаче есть обязательная работа с переменными получить-записать-прочитать.

Я более-менее рассмотрел различные g-cod'ы, однако как работать с переменными непосредственно, - не пробовал.

ski
04.12.2019 в 09:41
0

В дополнение к предыдущему своему ответу.

К сожалению, обнаружил, что Марлин, судя по всему( на 99% уверен) не поддерживает работу с переменными, как например, linuxcnc(исполз. для многих стандартных ЧПУ станков).

И на официальном сайте Марлина тоже нету упоминания про возможность работы с переменными в структуре G-code.

Т.е. решить Вашу задачу непосредственно через G-code невозможно.

Я опробовал различные варианты, но результата так и не добился. Возможно делал что-то не так, но...

Думаю, единственный вариант: делать отдельную функцию(подпрограмму) для прошивки на Ардуино и заливать ее в мозги принтера. Там и возможностей поболее, все-таки Г-код,- это просто исполнительные примитивные инструкции.

29.11.2019 в 12:51
0

у репитер-хоста на морде есть команда изменения скорости печати,

подскажите как ее в коде изобразить?

29.11.2019 в 22:43
3

M220 S100 - 100%

M220 S50 - 50%

29.11.2019 в 23:03
0

благодарю

01.12.2019 в 17:02
0

специально зарегистрировался что б в закладки добавить и плюсануть, но рейтинг для плюса коротковат

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Sirius Hardlight - Принтер который вы искали

Печатаем гибкую, эластичную, мягкую деталь полимерником

КОМПАС-3D v18 Home. Основы 3D-проектирования. Часть 16.3. Создание игрушечного паровоза. Крыша и тележка паровоза

Boot or not to boot или ректальная реанимация MKS TFT32.

Контейнеры для филамента, которые я использую.

Спасение новогодней елки