Re: Pausenfunktion - Taste am Drucker & M3070 GCode
Verfasst: Di 17. Mär 2015, 21:16
Hallo mjh11,
dann werde ich mal versuchen alle Themen vollumfänglich zu beantworten.
Die Firmware weiß nicht ob du gerade druckst oder einfach ein paar G-Codes hintereinander ausführst (z.B. ein manuelles Homing oder das manuelle Fahren irgendwohin) ... da das Pausieren für das Pausieren des Drucks gemacht worden ist prüft es aber eben, ob in der FIFO überhaupt Druckbefehle drin sind. So wirklich sinnvoll wäre die Pause-Funktionailtät ja auch nicht, wenn gerade kein Druck stattfindet ... weil dann könnte man die notwendigen Positionen jederzeit auch über manuelles Fahren erreichen.
Dass der Druck weiter geht kommt daher dass man den Anwender nicht zwingen will, nach dem Einschalten der Stepper immer zuerst ein Homing zu machen (obwohl alles andere streng genommen sehr wenig Sinn macht).
Du kannst aber einstweilen die Hardwaretaster verwenden um den Extruder raus/rein zu fahren.
Wenn du das entladen automatisiert machen willst dann sollte es auch möglich sein, dass du an der gewünschten Stelle die neue Extruder-Temperatur vorgibst, b) wartest bis diese erreicht ist, c) das Filament rausschiebst und d) dann pausierst. Also in etwa so:
M104 S120 ; setze die Extruder-Solltemperatur auf 120 °C
M109 ; warte bis der Extruder 120 °C (+/- 2 °C) erreicht hat
G92 E0 ; setze die aktuelle Extruder-Position auf 0
G1 E-90 F500 ; ziehe das Filament aus dem Extruder
M3070 S2 ; pausiere den Druck und fahre den Druckkopf weg
M3071 ; warte bis der Continue-Knopf gedrückt worden ist
M104 Sxyz ; setze die Extruder-Solltemperatur zurück auf den korrekten Wert
M109 ; warte bis der Extruder die Drucktemperatur erreicht hat
G92 E0 ; setze die aktuelle Extruder-Position auf 0
G1 E90 F100 ; schiebe das neue Filament in den Extruder
Etwas unschön an dieser Lösung ist, dass das neue Filament erst in den Extruder geschoben wird nachdem der Drucker zurück auf die Continue-Position gefahren ist. D.h. das letzte G1 E90 müsste so gewählt werden, dass gerade noch kein Filament unten rauskommt. Besser wäre es wohl das Filament an der Pause-Position reinzuschieben, aber das geht im Moment nicht über G-Codes (d.h. dafür müsste man den Hardware-Taster verwenden).
mfG
RF1000
dann werde ich mal versuchen alle Themen vollumfänglich zu beantworten.
Ich denke dass man die Doku an dieser Stelle noch verbessern muss. Ich werfe das auf unsere Liste.Etwas von dieser Information gehört für alle dokumentiert. Wahrscheinlich direkt in die "RF1000.h"-Datei reingeschrieben. Oder steht es schon wo & ich habs einfach übersehen?
In deinem Szenario würde die Firmware pausieren, falls in der FIFO Druckbefehle enthalten sind. Grundsätzlich ist dieses Szenario aber auch schon wieder ein Spezialfall - gerade beim Aufheizen gibt es ja die Möglichkeit zu warten, bis die Solltemperatur erreicht ist (d.h. in dem Fall wäre die FIFO leer, weil die Firmware auch keine weiteren G-Codes verarbeitet bis das Warten vorbei ist).Dass die Firmware nur auf die Hardware.Pausetaste reagiert, wenn gerade gedruckt wird, ist kein optimales Vorgehen. Die Firmware sollte immer auf die Taste reagieren. Beispiel: ich starte einen Druck, der Drucker wartet bis die Temperaturen erreicht werden (druckt also nicht). Ich komme noch während dieser Wartezeit auf einen Fehler drauf und drücke die Pause Taste. Da (gerade) nichts gedruckt wird, ignoriert die Firmware die Taste? Ich hoffe ich habe deine Erklärung richtig verstanden.
Die Firmware weiß nicht ob du gerade druckst oder einfach ein paar G-Codes hintereinander ausführst (z.B. ein manuelles Homing oder das manuelle Fahren irgendwohin) ... da das Pausieren für das Pausieren des Drucks gemacht worden ist prüft es aber eben, ob in der FIFO überhaupt Druckbefehle drin sind. So wirklich sinnvoll wäre die Pause-Funktionailtät ja auch nicht, wenn gerade kein Druck stattfindet ... weil dann könnte man die notwendigen Positionen jederzeit auch über manuelles Fahren erreichen.
Wie gesagt, M84 ist während dem Druckvorgang nicht sinnvoll. Wenn es dir nur um den Extruder geht könnte man ein entsprechendes Kommando hinzufügen (als M-Code und/oder im Menü). Das Problem mit dem Ausschalten der Stepper ist dass die Firmware danach (bis zum nächsten Homing) nicht mehr sicher sein kann, wo die x/y/z/e-Achsen stehen. D.h. du könntest die x-Achse bei ausgeschaltetem Stepper ganz nach rechts schieben und danach per G-Code noch einmal um 200 mm nach rechts fahren - da es keinen x-Max Endschalter gibt würde die Firmware das ausführen und du bekommst im günstigsten Fall nur unschöne Geräusche zu hören. Pause + Continue muss auch fahren und wenn nicht sichergestellt werden kann dass man wirklich fahren (und exakt den selben Weg zurück fahren) kann dann macht das schlicht keinen Sinn.Nach dem Weiterdrucken wird die Pause Taste aber ignoriert, da die Home-Position unbekannt ist (durch das Ausschalten der Extruder - "M84"). Drucken tut er aber fleissig -> ein bisschen ironisch, zum Pausieren braucht er die Home Position, aber zum Weiterdrucken nicht .
Dass der Druck weiter geht kommt daher dass man den Anwender nicht zwingen will, nach dem Einschalten der Stepper immer zuerst ein Homing zu machen (obwohl alles andere streng genommen sehr wenig Sinn macht).
Hmm. D.h. du gibst speziellen G-Code für jeden Layer-Wechsel ein? Wenn du nichts angibst dann kommt in den G-Code kein "M400" rein, aber wenn du nur ein "M3070 S2" angibst dann kommt in den G-Code "M400" und "M3070 S2" rein?Aus was für welchen Grund auch immer, setzt mir die Slicer-Software ein M400 davor ein (darüber habe ich kaum Kontrolle)
Wenn du den Extruder auch bei Temperaturen unter 160 bewegen willst, dann musst du UI_SET_MIN_EXTRUDER_TEMP entsprechend anpassen (und auf einen kleineren Wert setzen). Der Menüeintrag "Unload Filament" ist exakt das, was die Firmware im Moment aufhängt - der war bisher nicht dafür gedacht, dass er verwendet wird während der Druck pausiert ist ...Ich hatte vor, länger zuzuwarten, damit das Hot End auf 100-120° abkühlt, und dann das Filament zu entfernen. Dadurch wird die Schmelzkammer besser 'entleert' und der Farbwechsel geht schneller/besser vor sich. Dummerweise weigert sich die (ungeänderte) Firmware, unter 150° mitzumachen. Also entweder an der Configuration.h basteln, oder, macht da der Menüeintrag "Unload Filament" bei den niedrigeren Temperaturen mit?
Du kannst aber einstweilen die Hardwaretaster verwenden um den Extruder raus/rein zu fahren.
Wenn du das entladen automatisiert machen willst dann sollte es auch möglich sein, dass du an der gewünschten Stelle die neue Extruder-Temperatur vorgibst, b) wartest bis diese erreicht ist, c) das Filament rausschiebst und d) dann pausierst. Also in etwa so:
M104 S120 ; setze die Extruder-Solltemperatur auf 120 °C
M109 ; warte bis der Extruder 120 °C (+/- 2 °C) erreicht hat
G92 E0 ; setze die aktuelle Extruder-Position auf 0
G1 E-90 F500 ; ziehe das Filament aus dem Extruder
M3070 S2 ; pausiere den Druck und fahre den Druckkopf weg
M3071 ; warte bis der Continue-Knopf gedrückt worden ist
M104 Sxyz ; setze die Extruder-Solltemperatur zurück auf den korrekten Wert
M109 ; warte bis der Extruder die Drucktemperatur erreicht hat
G92 E0 ; setze die aktuelle Extruder-Position auf 0
G1 E90 F100 ; schiebe das neue Filament in den Extruder
Etwas unschön an dieser Lösung ist, dass das neue Filament erst in den Extruder geschoben wird nachdem der Drucker zurück auf die Continue-Position gefahren ist. D.h. das letzte G1 E90 müsste so gewählt werden, dass gerade noch kein Filament unten rauskommt. Besser wäre es wohl das Filament an der Pause-Position reinzuschieben, aber das geht im Moment nicht über G-Codes (d.h. dafür müsste man den Hardware-Taster verwenden).
Also nur die Temperaturen auszuschalten und den Extruder verzweifelt versuchen lassen das kalte Filament durch die Düse zu pressen finde ich etwas brutal. Im Repetier-Host kann man im "Manual Control" Tab aber den "Dry Run" aktivieren - das sollte exakt das tun was du willst, nämlich alle x/y/z Positionen anfahren ohne dass der Extruder verwendet wirdIst es OK wenn ich die Temperaturen ausschalte, damit nichts extrudiert wird?
mfG
RF1000