GCODE: Основы
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 – звуковой сигнал
Благодарю Вас за внимание!
Еще больше интересных статей
Переделка старичка FlyingBear P905 в Core XY
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Краткая предыстория.
Полгода назад, друг отдал свой FlyingBe...
Набор аксессуаров для Bambu Lab A1 AMS
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Решил поделится своим списком дополнений для A1, на 95% это мои м...
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
Посмотрел я Ваш проект. Раньше...
Сама необходимость создания эт...
https://vk.com/wall-219972199_...
Проблема в том что плата не ви...
Уважаемые товарищи!Решил недав...
медведь 6й, купил б/у что бы н...
Всем доброго времени суток. Ес...