Hilfe mit einem Tool Change Script

7

Ich habe also einen Raise3D Pro2 und möchte ein Werkzeugwechselskript dafür perfektionieren, dessen Ziel es ist, den überschüssigen Kunststoff, der sich bei Verwendung des Doppelextruders auf der Düse ansammelt, zu reduzieren oder zu beseitigen. Der Drucker verwendet die Marlin-G-Code-Variante, und obwohl ich nicht sicher bin, ob dies wichtig ist, schneide ich in ideaMaker. Das Skript soll wie folgt ablaufen:

  • Aktuelles Werkzeug einfahren
  • Wechseln Sie zu X30 Y300
  • Überprüfen Sie, ob das neue aktive Werkzeug T0 ist
    • Wenn T0, Düse 2 mm Kreis abwischen
    • Wenn T0, T1 auf 165 ° C abkühlen lassen
    • Wenn T0, T0 auf 230 ° C erhitzen
    • Wenn T0 und nicht Schicht 1, erholen Sie sich
    • Wenn T0, wischen Sie die Düse erneut ab, diesmal für das neue Werkzeug
  • Überprüfen Sie, ob das neue aktive Werkzeug T1 ist
    • Wenn T1, Düse 2 mm Kreis abwischen
    • Wenn T1, T0 auf 165 ° C abkühlen lassen
    • Wenn T1, T1 auf 230 ° C erwärmen
    • Wenn T1 und nicht Schicht 1, erholen Sie sich
    • Wenn T1, Düse erneut abwischen, diesmal für das neue Werkzeug

Das aktuelle Skript, das ich habe, sieht folgendermaßen aus:

; 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

Das Problem ist, dass beim Ausführen eines Druckvorgangs nicht alle Befehle ausgeführt werden. Es macht die Bewegung und das Kühlen / Heizen, aber das Zurückziehen / Wiederherstellen und das Abwischen der Düse scheint nicht zu lesen. Ich bin mir nicht sicher, ob dies an einem Drucker- oder Syntaxproblem liegt oder ob diese Befehle nicht so funktionieren, wie ich denke.

EDIT: (von Pᴀᴜʟsᴛᴇʀ2 - Neuer Code und neue Logik wieder hinzugefügt)

Neue Logik:

  • Aktuelles Werkzeug einfahren
  • Wechseln Sie zu X30 Y300
  • Überprüfen Sie, ob das neue aktive Werkzeug T0 ist
    • Wenn T0, Düse 2 mm Kreis abwischen
    • Wenn T0, T1 auf 165 ° C abkühlen lassen
    • Wenn T0, T0 auf 230 ° C erhitzen
    • Wenn T0 und nicht Schicht 1, erholen Sie sich
    • Wenn T0, wischen Sie die Düse erneut ab, diesmal für das neue Werkzeug
  • Überprüfen Sie, ob das neue aktive Werkzeug T1 ist
    • Wenn T1, Düse 2 mm Kreis abwischen
    • Wenn T1, T0 auf 165 ° C abkühlen lassen
    • Wenn T1, T1 auf 230 ° C erwärmen
    • Wenn T1 und nicht Schicht 1, erholen Sie sich
    • Wenn T1, Düse erneut abwischen, diesmal für das neue Werkzeug

Das neue Skript, das ich habe, sieht folgendermaßen aus:

; 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
Nerevar
quelle
Willkommen beim 3D-Druck! In Ihrem Beispiel wird der Wert "S" nicht angezeigt, der die Anzahl der Wiederholungen des zu druckenden Musters angeben sollte. Ich denke, Ihre Linie sollte so aussehen: G12 P2 S1 R2; (natürlich nach der "if" -Anweisung). Wo ist Ihr G11-Befehl nach dem G10? Nach dem, was ich lese , wird der G10 ignoriert, wenn ihm der Befehl G11 nicht folgt.
Pᴀᴜʟsᴛᴇʀ2
@ Pᴀᴜʟsᴛᴇʀ2, Das G11 befindet sich in den Zeilen "[[if {new_extruder} = 0] und [{layer_index} NE 1]] G11;", sollte in diesem Codefragment die Zeilen 8 und 14 enthalten. Was den S-Wert betrifft, werde ich es versuchen und sehen, ob er etwas ändert.
Nerevar
Ich sehe den G11 jetzt ... Entschuldigung, ich habe ihn verpasst. Übrigens, ich bin kein Experte für dieses Zeug, ich stöbere nur ein bisschen herum. Hoffe es funktioniert für dich.
Pᴀᴜʟsᴛᴇʀ2
1
Ein anderer Gedanke ... Wenn Sie die Düse inaktiviert haben, würde es dann nicht zu Konflikten mit der Zuweisung kommen, die Sie ihr gegeben haben (dh: inaktiv)? (oder ist Ihr Kommentar am Ende des G12-Befehls (Zeile 5) ungenau und soll " Aktive Düse
reinigen
@ Pᴀᴜʟsᴛᴇʀ2 hat einen guten Punkt: Versuchen Sie, sich neu zu organisieren, damit Sie Befehle nur an den aktuell aktiven Extruder senden, auch wenn Sie zusätzliche "Aktivierungs" -Befehle hinzufügen müssen.
Carl Witthoft

Antworten:

3

Soweit ich erkennen kann, kann die G-Code-Datei nicht von der Druckerfirmware ausgewertet werden .

Es wird erwartet, dass die Slicer-Software die Auswahl des Werkzeugkopfs kennt und Werkzeugänderungen gemäß dem G-Code verarbeitet, der bei den meisten Slicern bei einem Werkzeugwechsel bereitgestellt wird.

Der beste Weg, um über G-Code (in RepRap-Worten) nachzudenken, ist eine Einwegkommunikation, da die Datei nicht als Skript behandelt wird, das Parameter unterwegs lesen und auswerten kann. (Firmware-Funktionen).

Verweise:

RepRap G-Code-Liste Schnellstartanleitung für den Drucker

profesor79
quelle
@CarlWitthoft danke für deine Bemerkung & darf ich ein Beispiel sehen? wie pro reprap.org/wiki/G-code , habe ich das nicht in einer RepRap finden 3D - Wort gedruckt wird , auch zur Verfügung gestellt Druckerhandbuch erwähnt nicht , dass. Wenn der Druckerhersteller zu diesem Zeitpunkt nicht erwähnt, dass ich diesen Drucker in Bezug auf die Firmware-Funktionen als RepRap wie einen behandle, drohe ich G-Code als schreibgeschützt. Ich habe meinen Text so bearbeitet, dass er auf die Firmware-Funktionen und nicht auf GCode selbst verweist
profesor79
und die Referenz hier: cdn.shopify.com/s/files/1/1069/4816/files/…
profesor79
OK Fair genug. Bitte verschieben Sie Ihre Referenzen in die Antwort?
Carl Witthoft
Also ... Die Befehle können dann nicht vom Drucker gelesen werden? Zahlen. Ich werde nur sehen, ob die Verwendung eines erstklassigen Turms meine Probleme behebt. Ich versuche dies mit ABS / HIPS zu tun, und der Druck, den ich entfernen möchte, hat eine komplexe Geometrie und dauert mindestens 8 bis 14 Stunden. Daher kann ich das erst ausführen, wenn ich sicher bin, dass er gewonnen hat. ' t 50% des Weges vermasseln. Danke für die Hilfe Jungs.
Nerevar