Помощь со сценарием смены инструмента

marlin g-code scripts

Итак, у меня есть Raise3D Pro2, и я хочу усовершенствовать сценарий смены инструмента для него, цель которого состоит в том, чтобы уменьшить или устранить избыток пластика, который имеет тенденцию накапливаться на сопле при использовании двойного экструдера. Принтер использует аромат Marlin G-кода, и хотя я не уверен, что это имеет значение, я нарезаю в ideaMaker. Предполагается, что сценарий будет работать следующим образом:

  • Инструмент для отвода тока
  • Перейти на X30 Y300
  • Проверьте, является ли новый активный инструмент T0
    • Если T0, протрите сопло кругом 2 мм
    • Если T0, охладите T1 до 165C
    • Если T0, нагрейте T0 до 230С
    • Если T0, а не уровень 1, восстановите
    • Если T0, снова протрите насадку, на этот раз для нового инструмента
  • Проверьте, является ли новый активный инструмент T1
    • Если T1, протрите сопло кругом 2 мм
    • Если T1, охладите T0 до 165C
    • Если T1, нагрейте T1 до 230С
    • Если T1, а не уровень 1, восстановите
    • Если T1, снова протрите насадку, на этот раз для нового инструмента

Текущий сценарий, который у меня есть, выглядит так:

; extruder switch gcode start
G10 S1; Retract for current nozzle
G1 X30 Y300 F6000; Move to X:30 Y:300
[if {new_extruder}=0]; LEFT Extruder is active (T0)
[if {new_extruder}=0]G12 P2 R2; Clean inactive nozzle 2mm circle
[if {new_extruder}=0]M104 S165 T1; Cool inactive extruder to 165c (T1)
[if {new_extruder}=0]M109 S230 T0; Heat active extruder to 230c (T0) and wait.
[[if {new_extruder}=0] and [{layer_index} NE 1]]G11; Recover current nozzle when not first layer
[if {new_extruder}=0]G12 P2 R2; Clean active nozzle 2mm circle
[if {new_extruder}=1]; RIGHT Extruder is active (T1)
[if {new_extruder}=1]G12 P2 R2; Clean inactive nozzle 2mm circle
[if {new_extruder}=1]M104 S165 T0; Cool inactive extruder to 165c (T0)
[if {new_extruder}=1]M109 S230 T1; Heat active extruder to 230c (T1) and wait.
[[if {new_extruder}=1] and [{layer_index} NE 1]]G11; Recover current nozzle
[if {new_extruder}=1]G12 P2 R2; Clean active nozzle 2mm circle
; extruder switch gcode end

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

Обновление: (по Pᴀᴜʟsᴛᴇʀ2 - Добавлен новый код и логика обратно)

Новая логика:

  • Инструмент для отвода тока
  • Перейти на X30 Y300
  • Проверьте, является ли новый активный инструмент T0
    • Если T0, протрите сопло кругом 2 мм
    • Если T0, охладите T1 до 165C
    • Если T0, нагрейте T0 до 230С
    • Если T0, а не уровень 1, восстановите
    • Если T0, снова протрите насадку, на этот раз для нового инструмента
  • Проверьте, является ли новый активный инструмент T1
    • Если T1, протрите сопло кругом 2 мм
    • Если T1, охладите T0 до 165C
    • Если T1, нагрейте T1 до 230С
    • Если T1, а не уровень 1, восстановите
    • Если T1, снова протрите насадку, на этот раз для нового инструмента

Новый сценарий, который у меня есть, выглядит так:

; extruder switch gcode start
G10 S1; Retract for current nozzle
G1 X30 Y300 F6000; Move to X:30 Y:300
[if {new_extruder}=0]; LEFT Extruder is active (T0)
[if {new_extruder}=0]G12 P2 R2; Clean inactive nozzle 2mm circle
[if {new_extruder}=0]M104 S165 T1; Cool inactive extruder to 165c (T1)
[if {new_extruder}=0]M109 S230 T0; Heat active extruder to 230c (T0) and wait.
[[if {new_extruder}=0] and [{layer_index} NE 1]]G11; Recover current nozzle when not first layer
[if {new_extruder}=0]G12 P2 R2; Clean active nozzle 2mm circle
[if {new_extruder}=1]; RIGHT Extruder is active (T1)
[if {new_extruder}=1]G12 P2 R2; Clean inactive nozzle 2mm circle
[if {new_extruder}=1]M104 S165 T0; Cool inactive extruder to 165c (T0)
[if {new_extruder}=1]M109 S230 T1; Heat active extruder to 230c (T1) and wait.
[[if {new_extruder}=1] and [{layer_index} NE 1]]G11; Recover current nozzle
[if {new_extruder}=1]G12 P2 R2; Clean active nozzle 2mm circle
; extruder switch gcode end

, 👍7

Обсуждение

Добро пожаловать в 3D-печать! В вашем примере я не вижу значения "S", которое должно указывать количество повторений шаблона, который вы хотите распечатать. Я думаю, что ваша строка должна выглядеть так: **G12 P2 S1 R2 ;** (после утверждения "если", конечно). Кроме того, где находится ваша команда G11 после G10? Из [того, что я читаю](http://marlinfw.org/docs/gcode/G010.html), G10 будет проигнорирован, если за ним не последует команда G11., @Pᴀᴜʟsᴛᴇʀ2

@PᴀᴜʟSᴛᴇʀ2, G11 находится в строках "[[если {new_extruder}=0] и [{layer_index} NE 1]] G11;", в этом фрагменте кода должны быть строки 8 и 14. Что касается значения S, я попробую это сделать и посмотрю, не изменит ли это что-нибудь., @Nerevar

Теперь я вижу G11 ... Жаль, что я его пропустил. Кстати, я не эксперт в этом деле, просто любопытствую. Надеюсь, это сработает для вас., @Pᴀᴜʟsᴛᴇʀ2

Еще одна мысль ... если вы деактивировали сопло, не будет ли предоставление ему команд противоречить назначению, которое вы ему дали (т. Е. неактивно)? (или ваш комментарий в конце команды G12 (строка 5) неточен и должен указывать "Чистое ***активное*** сопло ..."), @Pᴀᴜʟsᴛᴇʀ2

У @PᴀᴜʟSᴛᴇʀ2 есть хороший момент: попробуйте реорганизовать, чтобы отправлять команды только текущему активному экструдеру, даже если вам придется добавить дополнительные команды "активировать"., @Carl Witthoft

@Carl Witthoft У меня еще не было возможности попробовать, но я обновил скрипт в списке кодов. Я думаю, что если я просто удалю эти два G12 и заменю их на тот, который запускается до того, как он начнет проверять наличие инструментов, это может сработать. Если у вас или у Paulster2 есть какие-либо другие предложения, я был бы признателен., @Nerevar

Кстати, пожалуйста, не редактируйте то, что вы поместили изначально, добавьте это ниже как новую часть и отметьте как редактирование. Вы собьете с толку тех, кто смотрит на этот вопрос., @Pᴀᴜʟsᴛᴇʀ2


1 ответ


3

Насколько я могу судить, файл g-кода не может быть оценен встроенным ПО принтера.

Ожидается, что программное обеспечение slicer будет знать о выборе инструментальной головки и изменениях инструмента процесса в соответствии с g-кодом, предоставленным при смене инструмента в большинстве слайсеров.

Лучший способ думать о g-коде (в слове RepRap)-это односторонняя связь, поскольку файл не рассматривается как сценарий, который может считывать и оценивать параметры на ходу. (возможности встроенного ПО).

список литературы:

Список G-кодов RepRap Краткое руководство по запуску принтера


,

@CarlWitthoft спасибо за ваше замечание и могу я посмотреть пример? согласно https://reprap.org/wiki/G-code, Я не обнаружил, что в слове для 3d-печати RepRap, также предоставленном в руководстве по принтеру, об этом не упоминается. Поэтому на данном этапе, если производитель принтера не упоминает о том, что в возможностях встроенного ПО я рассматриваю этот принтер как повторный, поэтому я использую g-код только для чтения. Я отредактировал свой текст, чтобы указать возможности прошивки, а не сам GCode, @profesor79

и ссылка здесь: https://cdn.shopify.com/s/files/1/1069/4816/files/Pro2_Series_-_Quick_Start_Guide.pdf?15083834668884425755, @profesor79

Ладно, вполне справедливо. Пожалуйста, вставьте свои ссылки в ответ?, @Carl Witthoft

Так... Значит, команды не могут быть прочитаны принтером? Рисунки. Я просто посмотрю, исправит ли использование главной башни мои проблемы. Я пытаюсь сделать это с помощью ABS/HIPS, и отпечаток, который я хочу снять, имеет сложную геометрию и займет не менее 8-14 часов, поэтому я не могу запустить его, пока не буду уверен, что он не испортится на 50% пути. Спасибо за помощь, ребята., @Nerevar