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 – звуковой сигнал
Благодарю Вас за внимание!
Еще больше интересных статей
Klipper - восстановление прерванной печати
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Внезапно выяснилось что у стокового клиппера есть странная особенно...
Датчик наличия пластика для Bambu Lab Х1 Carbon.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
Код .plgx сгенерированный Poly...
если вы будете использовать то...
В общем RepRap надо использова...
Привет.Принтер долго стоял, се...
При автовыравнивании после 12...
Полиамид и полипропилен с 30%...
Неделю назад пришел с сопла 0....