GCODE: Основы

xedos
Идет загрузка
Загрузка
25.04.2016
185055
45
Техничка

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

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

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

184
Добрый день Уважаемые читатели!

GCODE: Плюшки от ПавлушкиПосле написания предыдущей статьи ко мне стали поступать вопросы на поводу G-CODE.

Решил написать пост об основах G-CODE.

И так приступим …

Не для кого не секрет, что наш с Вами 3D принтер является простым ЧПУ станком (CNC), который просто выполняет команды оператора.

Чтобы мы с принтером понимали друг друга, умными людьми в начале 1960 годов был придуман специальный язык под названием «G-CODE» (G-код).

Программа, написанная с использованием G-кода, имеет жесткое строение.

Все команды управления объединяются в кадры - состоящие из одной или более команд.

Кадр завершается символом перевода строки (CR/LF).

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

Если говорить коротко, то наш ПК через USB, просто посылают команды на порт принтера (микроконтроллера), а принтер без прикословно их выполняет.

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

Описание команд будет производится для прошивки MARLIN, возможно будет работать и на других прошивках.

Будут рассмотрены самые только самые основные команды (рабочий минимум), в поисках экзотики, можно пройти по ссылке.

Сами команды делятся на группы:

G - Подготовительные (основные) команды;

М - Вспомогательные (технологические) команды.

Эти команды имеют параметры.

X - Координата точки траектории по оси X [G0 X100 Y0 Z0]

Y - Координата точки траектории по оси Y [G0 X0 Y100 Z0]

Z - Координата точки траектории по оси Z [G0 X0 Y0 Z100]

E - Координата точки выдавливания пластика [G1 E100 F100]

P - Параметр команды [M300 S5000 P280]

S - Параметр команды [G04 S15]

F - Параметр команды, подача (скорость) [G1 Y10 X10 F1000]

G - команды

G0 - Холостой ход, без работы инструмента [G 0 X 10]

G1 - Координированное движение по осям X Y Z E [G 1 X 10]

G4 - Пауза в секундах [G4 S15]

G28 - Команда Home - паркуем головку [G28 Y0 X0 Z0]

G90 - Использовать абсолютные координаты [G90]

G91 - Использовать относительные координаты [G91]

G92 - Установить текущую заданную позицию [G92]

Пояснение:

Относительные координаты - это координаты относительно текущего положения головки.

На пример, если головка находиться в положении X10 Y10, то при подаче команды G91

G1 X10 F1000
, произойдет смещение головы на 10 мм по оси Х на скорости 1000.

Эту команду можно делать много раз, до достижения «софтового» ограничение в прошивке.

Абсолютные координаты - это координаты, строго привязанные к рабочей области.

При выполнении команды G90 G1 X10 F1000 - головка сместиться в координату X10 на скорости 1000.

Команда выполниться только один раз.

Обычные команды

M0 - Сделать паузу и ожидать нажатия кнопки на LCD дисплеи (работает если в прошивку установлен параметр ULTRA_LCD) [G0 X10 Y10 Z10 M0]

M17 - Подать ток на двигатели (двигатели руками не вращаются)

M18 - Убрать ток с двигателей (двигатели можно вращать руками, аналог M84)

M42 - Управление контактами ARDUINO MEGA 2560 [M42 P4 S255]

M80 - Включить питание, только для ATX - блок питания

M81 - Выключить питания, только для ATX - блок питания

M84 - Выключение всех осей (моторов после простоя) [M84 S10]

М112 - Экстренная остановка

M114 - Получить текущие координаты

M115 - Получить версию прошивки

M117 - Написать сообщение на экране [M117 Hello World]

M119 - Получить статус концевиков

M300 - Проиграть звук [M300 S5000 P280]

Команды SD карты

M20 - Прочитать SD карту (прочитать список файлов)

M21 - Инициализировать SD карту

M22 - Использовать SD карту

M23 - Выбрать файл с SD карты [M23 filename.gcode]

M24 - Начать/возобновить печать с SD карты

M25 - Пауза печати с SD карты

M26 - Установить позицию SD карты в байтах [M 26 S 12345]

M27 - Узнать статус печати с SD карты

M28 - Записать файл на SD карту [M 28 filename . gcode]

M29 - Закончить записать файла на SD карте

M30 - Удалить файл с SD карты [M 30 filename . gcode]

M31 - Получить значение, сколько прошло времени с последнего M109

M32 - Выбрать файл с SD карты и начать печатать [M 32 / path / filename #]

M928 - Логирование на SD карту [M 928 filename . gcode]

Экструдер

M82 - Установить экструдер в абсолютную систему координат

M83 - Установить экструдер в относительную систему координат

M104 - Ожидание нагрева экструдера до определенной температуры [M104 S190]

M105 - Получить текущую температуру экструдера [M105 S2]

M106 - Включение вентилятора обдува детали [M106 S127] - мощность 50%

M107 - Выключение вентилятора обдува детали [M 107]

M109 - Нагреть экструдер и удерживать температуру [M109 S215]

Стол

M140 - Установить температуру стола [M140 S65]

M190 - Нагреть стол и удерживать температуру [M190 S60]

PID M301 - Записать PID параметры в EEPROM [M301 H1 P1 I2 D3]

где: H0 – стол, H1 – экструдер

M302 - Разрешить холодное выдавливание [M302 P1].

M303 - Запустить процесс PID калибровки [M303 E-1 C8 S110]

где: E-1 – стол, E0 – хотэнд, C8 – количество попыток, S – температура.

M304 – Задать PID параметры для стола [M304 P1 I2 D3]

EEPROM – внутренняя память микроконтроллера (не обнуляется при выключении)

M500 - Сохранить параметры в EEPROM

M501 - Прочитать параметры из EEPROM

M502 - Сброс параметров EEPROM

Филамент

M200 - Задать диаметр филамента [M200 D1.128]

M600 – Замена филамента.

Данные команды можно подавать в консоли из таких программ как Pronterface или Universal-G-Code-Sender.

В Pronterface можно включить режим ответа в меню Settings / Debug communications, программа будет писать все ответы от принтера.
Можно дописать в слайсерах (Slic3r и Cura) в начале и в конце G-код файла.
Или открыть файл с G-кодом в блокноте и написать все руками. =)

Чтобы не быть голословным предлагаю Вам разобрать пример G-кода программы:

M190 S60 - включаем нагрев стола и ждём, пока он не нагреется до температуры 60 градусов

M109 S210 - включаем нагрев сопла и ждём, пока оно не нагреется до температуры 210 градусов

G21 - устанавливает метрическую систему координат

G90 - устанавливает абсолютную систему координат

M82 - устанавливает абсолютную систему координат для экструдера

M107 - выключаем обдув детали

M300 S5000 P280 – звуковой сигнал

G28 X0 Y0 - команда Home X Y

G28 Z0 - команда Home Z

G1 X100 Y100 Z5 F1000 - центруем сопло относительно стола

G92 E0 - обнуляет количество выдавленного пластика

G1 F300 E4 - выдавливаем 4 мм пластика со скоростью 300 мм

M117 Printing - выводит сообщение на экран

M106 S125 - включаем обдув детали со скоростью 50%

G1 Z0 - опускаем сопло на 0 мм

G1 X96.11 Y110.92 E87.55 - ездим по координатам и выдавливаем пластик

G1 Z0.2 - поднимаем сопло на 0.2 мм

G1 X96.11 Y111.00 E89.60 - ездим по координатам и выдавливаем пластик

M140 S50 - изменяем температуру стола

.....

G1 Z4.8 - поднимаем сопло на 4.8 мм

G1 X96.11 Y110.92 E87.55 - ездим по координатам и выдавливаем пластик

G1 Z5 - поднимаем сопло на 5 мм

G1 X96.11 Y111.00 E89.60 - ездим по координатам и выдавливаем пластик

G91 - устанавливает относительную систему координат

G1 E-5 F200 - всасывание экструдером 5 мм прутка

M104 S0 - отключением нагрев экструдера

M140 S0 - отключением нагрев стола

M107 - выключаем обдув детали

M84 - выключаем шаговые двигатели

M300 S5000 P280 – звуковой сигнал

Благодарю Вас за внимание!

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

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

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

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

Комментарии

25.04.2016 в 16:20
5

Лучше читайте в оригинале (там вики ресурс, который может быть изменён)
http://reprap.org/wiki/G-code

25.04.2016 в 16:37
0

Спасибо, почитаем)

25.04.2016 в 16:38
1

Как всегда, хороший пост)

25.04.2016 в 23:56
1

Xedos, Благодарствую !
Добавил в своё Избранное !

С Уважением,
Ski.

28.04.2016 в 15:57
1

Спасибо! Самое нужное в одном месте, и искать не надо. 
Тоже добавил в избранное ;)
P.S. я не графофаг, но, пожалуйста, прочитайте правила про ТСЯ и ТЬСЯ- аж глаз 'режет'.

28.04.2016 в 15:59
1

Благодарю за замечание, исправлюсь.

06.05.2016 в 22:49
1

Добрый день. А куда статья GCODE: Плюшки от Павлушки   пропала? 

19.07.2016 в 12:58
0

спасибо,добавил в избранное !
у меня вот какая проблема...сейчас пытаюсь печатать Innofil на PICASO 250 через Kisslicer. не могу подобрать параметры и все...
нашел старую джикодину,которой раньше (давно) печатал иннфоилом,запустил ее-печатает отлично.
так вот,собственно ,вопрос ...как вычислить настройки ретракта,слоев,loops, и т.д. из старого g-code ?
может кто шарит и кто-то подсобит ?

19.07.2016 в 14:37
0

Привет. Спасибо за статью.
Может кто подскажет, от чего инициализация карты не происходит?
Конкретно в симплифае в 'содружестве' с мегой/рампс.
Только посмотрев про команды понял, что что-то идёт не так.. И именно если использовать стандартную настройку симплифая, т.е. там прописаны М-команды как должно быть, однако, если использовать команду M21 , то карта становится не видной как через меню принтера так и в программе, а если 'передёрнуть' карту и нажать прочитать файлы карты, то читаются и видятся и даже на печать можно отправить. Как только снова использовать М21 - карта снова становится не видимой ( в статусе проходит 'ошибка инициализации карты'.

Надеюсь понятно написал...

19.07.2016 в 17:05
0

Как понять цифры,например при обдуве- M106 S125-это 50 %
а как будет 100 %?

19.07.2016 в 17:12
0

M106 S255

19.07.2016 в 17:36
0

дайте угадаю ....1 %-2,5 ?

19.07.2016 в 17:53
4

M106 Sxxx, где xxx - целое беззнаковое восьмибитное число, т.е., значение от 0 до 255. В слайсерах 'как бы для удобства' это пересчитывается в проценты.

23.09.2016 в 07:42
1

Есть ещё интересная команда
M145 S90; Нагрев стола, без ожидания о остановок, до следующей команды для стола. Так можно включить одновременный нагрев стола и экструдера.(Точка с запятой - однострочный комментарий)8)

02.05.2017 в 10:26
0

А нет случайно такой же команды для экструдера? ))

04.05.2017 в 00:22
1

А зачем? Вы просто следом за этой командой ставите команду нагрева экструдера, как обычно. И принтер нагревая стол, будет одновременно нагревать и экструдер.

04.05.2017 в 09:45
1

Во время процесса печати необходимо сменить температуру.
уже разобрался М104 SXXX команда, вместо 'ХХХ' число.

20.10.2016 в 11:56
0

там ошибка в строчке G91 G1 X10 F1000, в разделе об  абсолютных координатов.

20.11.2016 в 02:50
0

Куда же без основ. Дело хорошее.

23.12.2016 в 13:44
0

скажите, а как пользоваться командой G29, то есть я запускаю ее, принтер калибруется по столу и зависает над ним, а потом при печати откатывается сначала домой и печатает, так вот калибровка не скидывается?

12.01.2017 в 00:45
0

По G коду, такой вопрос, допустим деталь имеет 70 слоев, высота слоя 0.2 , на слое 40вом мне нужна высота слоя 0,1, какие команды прописать в коде, где вставлять я по моему понял уже.

02.04.2017 в 09:27
0

Благодарю за пост! добавил в избранное.

05.09.2017 в 14:24
0

Спасибо большое ! пригодилась данная статья :)

28.02.2018 в 09:41
1

Хорошая статья, но 'маловато будет'.
Почему в статье не описан код G29, для тех у кого автоуровень - знать про нее обязательно нужно.

25.04.2018 в 15:06
0

Добрый день! Принтер Flashforge Dreamer. Команду М104 в г-коде не видит. G28 выполняет, М104 пропускает и бросается в бой с холодным экструдером. При этом температура поднимается,  то есть М109 работает. Можете что-то подсказать? Спасибо.

25.04.2018 в 21:00
0

Добрый день!
Пытаюсь вникнуть в GCODE не могу разобраться как изменяется объем выдавленного пластика.
Поясню - по команде G1 X96.11 Y111.00 E89.60 - 
поехала голова и за время движения выдавила 89,6 мм пластика. Если в эту же команду вставить E189.60 - увеличится скорость подачи пластика или после остановки головы в заданных координатах будет продолжаться подача пластика?
Спасибо!

17.05.2018 в 21:57
0

Добрый день.
Может быть кто-нибудь знает команду реверса экструдера? Очень нужно. 
И как задать команду отключить охлаждение при достижении температуры ниже пороговой. Спасибо заранее.

17.10.2018 в 12:05
0

G10: Откат пластика (Ретракт) [TABLE] [TR] [TH] Поддержка [/TH] [TH] FiveD [/TH] [TH] Teacup [/TH] [TH] Sprinter [/TH] [TH] Marlin [/TH] [TH] Repetier [/TH] [TH] Smoothie [/TH] [TH] RepRapFirmware [/TH] [TH] Machinekit [/TH] [TH] MakerBot [/TH] [TH]   grbl   [/TH] [TH] Redeem [/TH] [TH] MK4duo [/TH][/TR] [TR] [TD]Нет [/TD] [TD]Нет [/TD] [TD]Нет [/TD] [TD]Да [/TD] [TD]Да: 0.92 [/TD] [TD]Да [/TD] [TD]dc42,ch [/TD] [TD]Нет [/TD] [TD] ??? [/TD] [TD] ??? [/TD] [TD]Нет [/TD] [TD]Да [/TD][/TR][/TABLE] Параметры Snnn длинна отката (S1 = длинный откат, S0 = короткий откат = по умолчанию) (только RepetierFirmware) Пример G10
Откат нить в соответствии с настройками M207 (Marlin, RepRapFirmware) или в соответствии со значением S (Repetier).
RepRapFirmware распознает команду G10 в качестве команды, чтобы установить смещение инструмента и / или температуры, если параметр Р присутствует, и как команду отката, если данная переменная отсутствует.

13.12.2018 в 09:51
0

Добрый день!
Подскажите как действовать.
Хочу, чтобы после окончания печати вентиляторы обдува экструдера выключались не сразу, а только когда температура сопла достигнет, скажем, 50 градусов. Каким образом будет выглядеть G-код?

28.01.2019 в 10:37
1

Приветствую.
Не подскажет ли кто.
Настраиваю блятач.
Но ниже 0 по z никакими командами голова не опускается.
В прошивке(2.0 для Тево Торнадо) стоит ограничение в 0.
Вроде как есть комадна которая должна выключить ограничение.
Пробовал в прошивке ограничение ставить на -10.
После этого прошивка вообще себя ведет адово(если интересно опишу)

28.01.2019 в 10:50
1

Настраиваю блятач.
...
После этого прошивка вообще себя ведет адово(если интересно опишу)
Только по блюпупу.
Пиши исчо.

ski
28.01.2019 в 14:40
1

непонял. 
хоть по вифи.
как снять запрет?

20.09.2019 в 13:00
0

>> непонял

Жаль, это была эмоциональная шутка в ответ на использованные Вами термины.

Вот для Вас референс на юмореску:

https://youtu.be/s8Plp8IGopw

P.S.1.

Совет (добрый):

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

P.S.2.

У это юморески есть и продолжение:

https://youtu.be/Oxk8hTgjGNQ

ski
08.04.2019 в 23:36
1

)))

ski
20.09.2019 в 08:43
1

ИМХО: по-олбански правильно будет "Пеши исчо". 

А то, коллега Вас неправильно поймёт...

20.09.2019 в 13:08
0

>> А то, коллега Вас неправильно поймёт...

Вы правы.

Разьяснения уже дадены, равно как и добрый совет (см.выше).

01.03.2019 в 08:20
0

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

14.04.2019 в 20:37
0

Добрый день. У меня такой вопрос: хочу чтобы вначале печати, при возврате экструдера в положение home, скорость была ниже чем установлено по умолчанию в прошивке (экструдер не хило ударяется в концевики, из-за инерции каретка не успевает остановится при срабатывании концевика). В общем для уменьшения износа хочу уменьшить скорость возврата. Можно-ли с командой G28 использовать команду F, и если да, то с какими параметрами? Заранее спасибо за ответ.

19.05.2019 в 11:45
0

как подобрать и сохранить начальную точку оси z? выполняю команды... g28 потом подбираю высоту z например g0z1.2 жму м500. но  не сохраняется

13.10.2019 в 01:28
0

Вы, скорее всего, уже нашли ответ, но для истории и других поисков отвечу:

M851 - команда выставления Z offset.

Порядок:

M851 Z0 - устанавливаем offset 0;

G28 - все домой и голова поднимется на 10мм в стандартной настройке;

Ручками опускаем голову на 10мм, подкладываем листок бумаги и начинаем медленно дальше опускать голову до прижатия листка. На экране будет указана высота по Z (в вашем случаи, я так понимаю, 1.2мм);

M851 Z1.2 - выставляем offset 1.2

M500 - все сохраняем

И все выставится.

Если же у вас окажется отрицательное значение (как выше по топику описано realchel) голова не захочет опускаться ниже 0, то нужно первым пунктом добавить команду

M211 S0  - так мы разрешим двигаться ниже нуля, ну и после всех процедур не забываем M211 S1

14.06.2019 в 18:14
0

M190 S60 - включаем нагрев стола и ждём, пока он не нагреется до температуры 60 градусов
M109 S210 - включаем нагрев сопла и ждём, пока оно не нагреется до температуры 210 градусов
А могу ли я найти то место в программе, где принтер уже напечатает несколько слоёв (пару миллиметров) и просто вставить такую строку
M190 S0
А то, когда я печатаю большие детали, то они начинают отходить от стола и по углам подниматься (печатаю с постоянной температурой, выставленной в принтере)

13.07.2019 в 09:53
0

Подскажите есть ли команда ожидания по времени.
К примеру после окончания печати не выключать нагрев экструдера 10 минут.

24.08.2019 в 09:52
1

Есть такая команда G04 Sxx (хх - количество секунд)(смотри ВиКи). Вставляешь в конец кода перед командой отключения нагрева.

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

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

FreeCad первые шаги

Вот и я вляпался в это...

Приглашаем на «День открытых дверей» | Новый офис в Москве

Bestoбзор: новая декада - новые надежды!

Какой 3Д принтер лучше ? Hercules 2018 VS Zenit VS Bizon 2.

"Киянка".