G-Code для очень начинающих

Платы управления от LERDGE: K, X
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

G-Code для очень начинающих

Сообщение demonlibra »

В искусственный интеллект и восстание машин верят только те кто ни разу не писал ручками программы на g-code`е и не программировал для Arduino.
Код прошивок Marlin и Lerdge похож, но некоторые команды и синтаксис всё-таки отличаются. Помнить все команды дело бесполезное, главное знать где подсмотреть. Ссылка на on-line документ с описанием G-кодов,
эта же ссылка присутствует в верхнем меню ⇨ Firmware / Прошивки.

Разберем простой пример:

Код: Выделить всё

G92 E0.0; Какую-бы координату не имела ось Е (экструдер), сбросить в 0
G1 X240.0 E25.0 F2200.0; Переместить ось X в координату 240 и ось E в 25 (т.е. продавить 25 мм прутка) со скоростью 2200 мм/мин
G1 Y5.3 F1000.0; Переместить ось Y в координату 5.3 со скоростью 1000 мм/мин
G1 X55.0 E25 F1400.0; Переместить ось X в координату 55 со скоростью 1400 мм/мин и ось E в 25 (странная команда так как ось E уже имеет эту координату, т.е. экструдер останется неподвижен)
G1 Z0.20 F1000.0; Переместить ось Z (стол) в координату 0.2 со скоростью 1000 мм/мин (странно, но похоже на перемещение к первому слою)
G1 X5.0 E4.0 F1000.0; Переместить ось X в координату 5 и ось E в 4 (до этого была координата 25, т.е. произойдет вытягивание прутка наружу на 21 мм) со скоростью 1000 мм/мин
G92 E0.0; Опять сброс оси E в 0
Код очень "странный" и приведён только для примера.
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: G-Code для очень начинающих

Сообщение demonlibra »

Если Вы хотите написать стартовый и завершающий код для слайсера сперва необходимо описать словами последовательность действий, которую должна выполнить железяка.
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: G-Code для очень начинающих

Сообщение demonlibra »

Например,

- обнулить ось Z (логично начать с этого, если концевик оси Z находится внизу)
- обнулить оси X и Y
- приблизить сопло к столу на безопасное расстояние, например 100 вдоль оси X, 50 - Y и 40 мм между соплом и столом

Обнуление осей - G28.
  • В команде G28 можно указать одну или несколько осей. Без указания оси будет проведено обнуление всех осей.
G28 Z
G28 XY

Перемещение без экструзии - G0.
  • Далее после символа F указывается скорость в мм/мин. Эти единицы являются стандартом для ЧПУ. В слайсерах же скорость задается в мм/сек (100 мм/сек = 6000 мм/мин).
  • Далее указываем оси и координаты для перемещения. Например, X100 переместит ось X в координату 100.
    Если в конце дописать символ R, то перемещение для всех осей будет относительным. Т.е. X10 R сместит ось на 10 мм относительно текущего положения.
G0 F1000 X100 Y50 Z40
Результат

Код: Выделить всё

G28 Z
G28 XY
G0 F1000 X100 Y50 Z50
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: G-Code для очень начинающих

Сообщение demonlibra »

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

Включение питание моторов - M17
  • В команде M17 можно указать одну или несколько осей. Без указания осей будут включены все моторы.
M17

Звуковой сигнал - M300
  • Параметр P задает длительность сигнала в миллисекундах (P500 - звуковой сигнал длительность 500 миллисекунд)
M300 P500

Пауза - M0
  • параметром S задается задержка в секундах (S1 - задержка 1 секунду), P - в миллисекунда (P500 - задержка 500 миллисекунд)
M0 S1
Результат

Код: Выделить всё

M17
M300 P500
M0 S1
G28 Z
G28 XY
G0 F1000 X100 Y50 Z50
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: G-Code для очень начинающих

Сообщение demonlibra »

Если Вы пользуетесь слайсером CURA, то он автоматический добавит команды нагрева стола и HOTEND`а перед стартовым кодом. Вы можете добавить их самостоятельно непосредственно в стартовый код.

M140 - задание температуры стола и немедленное продолжение исполнения следующей команды. Т.е. дожидаться достижения температуры стола система не будет.

M190 - задание температуры стола и ожидание достижения заданной температуры перед продолжением.

В качестве параметров для этих двух команд указывается символ S и значение температуры в градусах Цельсия.
Например: S60 - 60 градусов Цельсия.

Задавать в стартовом коде конкретное значение температуры не имеет смысла, так как для разных пластиков и профилей будут задаваться разные температуры, а стартовый код должен быть более менее универсальным.
В CURA`е существует возможность подставить значение температуры из заданных параметров. Для этого используется команда: {material_bed_temperature_layer_0}

Т.е. если в стартовом коде будет строка: M190 S{material_bed_temperature_layer_0}
а в профиле печати будет задано следующее:
Изображение
В конечном файле с g-кодом Вы получите строку: M190 S85

Добавим команду нагрева стола с ожиданием в начало, так как это довольная долгая стадия.
Результат

Код: Выделить всё

M190 S{material_bed_temperature_layer_0}
M17
M300 P500
M0 S1
G28 Z
G28 XY
G0 F1000 X100 Y50 Z50
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: G-Code для очень начинающих

Сообщение demonlibra »

Добавим так же нагрев HOTEND`а.

M104 - задание температуры HOTEND`а и немедленное продолжение исполнения следующей команды. Т.е. дожидаться достижения температуры HOTEND`а система не будет.
M109 - задание температуры HOTEND`а и ожидание достижения заданной температуры перед продолжением.

Чтобы CURA подставила значение температуры из заданных параметров используется команда: {material_print_temperature_layer_0}
Добавим команду нагрева HOTEND`а без ожидания достижения температуры перед последним перемещением. Пока оси будут перемещаться HOTEND будет греться.

Последней командой добавим нагрева HOTEND`а с ожиданием. Это необходимо чтобы исполнение основной программы печати не началось до достижения HOTEND`ом температуры плавления пластика.
Простой стартовый код готов

Код: Выделить всё

M190 S{material_bed_temperature_layer_0}
M17
M300 P500
M0 S1
G28 Z
G28 XY
M104 S{material_print_temperature_layer_0}
G0 F1000 X100 Y50 Z50
M109 S{material_print_temperature_layer_0}
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: G-Code для очень начинающих

Сообщение demonlibra »

Пора бы и завершающий набор команд написать.

Например,
  • Переместить стол вниз
  • Отключить питание моторов
  • Выключить нагрев HOTEND`а
  • Выключить нагрев стола
  • Выключить вентилятор обдува модели


Перемещение мы уже проходили и выполняется командой G0. Вам необходимо только правильно указать координату Z, чтобы сопло не столкнулось с деталью и стол не пытался уехать ниже допустимого предела.
Например, G0 F1000 Z280

Можно так же для перемещения стола вниз воспользоваться командой обнуления оси Z. Это медленно, но более универсально, так как Вам не придется указывать координату.
G28 Z

Отключение питания моторов выполняется командой M18. Без указания осей будут выключены все моторы.

Выключение нагрева HOTEND`а и стола осуществляется теми же командами M104 и M140 только необходимо указать температуру 0.
M104 S0
M140 S0

Выключение вентилятора обдува модели выполняется командой M107.
Простой завершающий код готов

Код: Выделить всё

G0 F1000 Z280
M18
M104 S0
M140 S0
M107
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
Evg33
Активист
Сообщения: 145
Зарегистрирован: 19 янв 2020, 02:31
Откуда: Earth

Re: G-Code для очень начинающих

Сообщение Evg33 »

Полное описание G-Code по версии Marlin: https://marlinfw.org/meta/gcode/
UNI Mini, UNI 2.2, ZAV Mini, ZAV Max.
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: G-Code для очень начинающих

Сообщение demonlibra »

Evg33 писал(а): 12 апр 2020, 03:12 Полное описание G-Code по версии Marlin: https://marlinfw.org/meta/gcode/
Полученный код Marlin отработает?
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
Evg33
Активист
Сообщения: 145
Зарегистрирован: 19 янв 2020, 02:31
Откуда: Earth

Re: G-Code для очень начинающих

Сообщение Evg33 »

Это он и есть.
Тож в слайсерах марлиновский и прописываешь.
UNI Mini, UNI 2.2, ZAV Mini, ZAV Max.

Вернуться в «LERDGE»