Pause über Octoprint
Hallo Allerseits,
ich möchte gern ein Teil drucken, welches Filamentwechsel und eine Pause enthält. Wenn ich das Teil über den USB Stick direkt am Drucker anschließe klappt alles reibungslos. Wenn ich die Datei über OctoPrint drucken lasse werden die Filamentwechsel ordentlich durchgeführt. Die Druckpause (M601) welche ich über den PrusaSlicer hinzugefügt habe wird aber ignoriert.
Was muss ich hier machen?
LG
Carl
Prusa Mini+ mit Druckkabine
RE: Pause über Octoprint
@carl-carlson
Hallo Carl,
man kann Octoprint ebenso wie den Repetier-Server zu einer Pause durch einen G-Code veranlassen.
Für Octoprint nutzt man den GCode "M0". Zusätzlich sollte aber der Extruder etwas angehoben werden und ein Retract vom Filament erfolgen.
Diesen Code kann man an geeigneter Stelle (Layer) im GCode-File einfügen.
Der Druck wird durch Klick auf den Button "Fortsetzen" in Octoprint fortgesetzt. Dazu muss die ursprüngliche Position vom Extruder wieder hergestellt werden, was auch etwas zusätzlichen Code nach dem "M0" erfordert.
Hier ein Beispiel:
; start script insert pause octoprint --> ; M83 ; set extruder to relative mode only if extruder is in absolute mode G91 ; set xyz to relative positioning G92 E0; reset extruder length G1 E-2.000000 F6000 ; retract 2.0mm G1 Z50 F1000 ; move z 50mm upwards ; M82 ; set extruder back to absolute mode G90 ; set xyz back to absolut positioning M0 ; pause octoprint ; M83 ; set extruder to relative mode only if extruder is in absolute mode G91 ; set xyz to relative positioning G92 E0; reset extruder length G1 E2.000000 F6000 ; re-retract 2.0mm G1 Z-50 F1000 ; move z 50mm downwards G90 ; set xyz back to absolut positioning ; M82 ; set extruder back to absolute mode ; <-- end pause script octoprint
Viel Erfolg!
Grüße Holger 🙂
2x Personal MK3IR-BMG09 (Full) BEAR + MMU3 mod., ...
RE: Pause über Octoprint
Hi,
das Problem hatte ich am MK3S auch seit der Firmware 3.10 (kann mich mit der Version auch vertun), während M600 (Farbwechsel) einwandfrei lief, funktionierte M601 mit Octoprint überhaupt nicht, sondern nur über die SD-Karte.
Ich habe irgendwo die Lösung gefunden, die nur einen minimalen gcode benötigt und zumindest beim MK3S einwandfrei läuft:
Im Bereich "Nach dem Pausieren eines Druckjobs" M601 eintragen, wie Karl schon schreibt, aber im Feld "Vor dem Fortsetzen eines Druckjobs" noch die 2 Zeilen einfügen:
M602 G4 P5000
Wenn du den pausierten Druck fortsetzt, dann lässt G4 P5000 den Drucker für 5 Sekunden pausieren und arbeitet dann weiter. Warum die Pause dadurch ausgerechnet korrekt funktioniert, kann ich dir nicht erklären, aber bei mir klappt es.
Da du einen anderen Druckertyp als ich hast, solltest du das erst mal mit einem Testdruck testen.
RE:
Auf Github wurde zu diesem Thema auch schon etwas geschrieben: https://github.com/prusa3d/Prusa-Firmware/issues/3148
(siehe Beitrag von 3d-gussner).
Ich selber arbeite noch immer mit der 3.8.1, welche auch bzgl. Pause/Resume einwandfrei arbeitet.
Schöne Grüße,
Karl
Statt zu klagen, dass wir nicht alles haben, was wir wollen, sollten wir lieber dankbar sein, dass wir nicht alles bekommen, was wir verdienen.
RE: Pause über Octoprint
Auf Github wurde zu diesem Thema auch schon etwas geschrieben: https://github.com/prusa3d/Prusa-Firmware/issues/3148
(siehe Beitrag von 3d-gussner).
Ich selber arbeite noch immer mit der 3.8.1, welche auch bzgl. Pause/Resume einwandfrei arbeitet.
Schöne Grüße,
Karl
Ja genau, das war der Thread zu dem Thema, zumindest wird in dem Post der Code erwähnt, den ich benutze. Mit dem MK3S reicht der Code vollkommen, aber mangels Mini kann ich das leider nicht auf Funktionalität testen.
RE: Pause über Octoprint
Hallo Ihr 😊,
seid Ihr sicher, dass der M601 mit diesem work around M602, G4 tatsächlich 100%ig funktioniert? 😉
Dann müsst Ihr weitere Tricks dazu verraten. Bei mir funzt nur die FW 3.9.3 einwandfrei.
Zur FW 3.11.0 gibt es auf Github erneut eine Bug-Meldung, die kann ich bei mir so auch auf allen Druckern bestätigen.
M601 funktioniert so nicht, das Hotend wird danach nicht mehr korrekt aufgeheizt.
Wenn man schnell genug ist, lässt sich das manuell natürlich leicht beheben.
Evtl. gibt es ja auch Drucker, bei denen das so tatsächlich richtig funktioniert.
Die FW 3.8.1 habe ich auch noch am Laufen, die hat das selbe Problem und noch andere dazu.
@Karl, verrate doch mal bitte Deine Tricks für die FW 3.8.1 in Bezug auf die Verwendung vom M601.
Wegen dieser Probleme verwende ich den M601 nicht mehr sondern benutze das oben genannte script.
Das script wirkt nur auf Octoprint allein, der angeschlossene Drucker und die Firmware spielen damit keine Rolle mehr.
Es lässt sich auch erweitern, um z. B. die Heizung vom Hotend abzuschalten und wieder einzuschalten.
Für den Repetier-Server gibt es ähnliche Server-CMD's.
Es ist etwas aufwändiger, aber funktioniert dafür zuverlässig bei allen Druckern, auch chinesischer Bauart.
Beste Grüße
Holger 🙂
2x Personal MK3IR-BMG09 (Full) BEAR + MMU3 mod., ...
RE: Pause über Octoprint
Ich habe noch schnell etwas probiert und ja, mit OctoPrint funktioniert der M601 wenn man M602 unter "Vor dem Fortsetzen eines Druckjobs" in den GCODE Scripts einträgt. Ein G4 P5000 Eintrag brauchte es dafür nicht. Ich verwende aktuell OctoPrint 1.7.3 Python 3.7.3 OctoPi 0.18.0.
Ob man vergleichbares beim von mir fast ausschließlich genutzten Repetier-Server konfigurieren kann, werde ich bei Gelegenheit herausfinden.
Beste Grüße
Holger 🙂
2x Personal MK3IR-BMG09 (Full) BEAR + MMU3 mod., ...
RE:
Servus Holger, servus @all:
ich hab mich jetzt auch mal vor den Ur MK3 gesetzt und geschaut, wie ich es dazumal gelöst hatte. Pause über Octoprint funktioniert bei mir (mod. FW) mit folgender Sequenz fehlerfrei:
; pause ?
{if layer_z==xxx}; set pause-z-coordinate (replace xxx with value; close insert)
G4 S0
M117 pause printing
M300 S1000 P500; beep
G91
G1 Z50; pause, move print head up (check max_z) <- hier wird die max. Z-Höhe nicht geprüft
M104 S170; reduce nozzle temp
M0 pause - press knob to continue
M104 S[temperature]; set nozzle temp
M109 S[temperature]; wait for nozzle temp <- während dieser Phase Düse von eventuellen Filamentresten befreien
G1 Z-50; continue, move print head down
M400; wait finishing moves
G90
G4 S0
M117 continue printing
{endif}
Meine restlichen Drucker habe ich mit Duet2 Boards (RepRap FW mit DWC und DUEUI) oder Klipper ausgestattet. Bei der Kombi Octoprint-Klipper konnte ich auch teilweise nicht nachvollziehbares Verhalten (Pause M601 wurde übersprungen) feststellen, weshalb ich mich dann für Mainsail und Moonraker entschieden habe, zumal ich keine Plugins benötige und die ganze Sache (GUI und API) etwas kompakter und übersichtlicher wirkt. Die Pause/Resume Funktion funktioniert da jedenfalls sowohl über die Gcode-, als auch über die Consolensteuerung.
Um aber bei der orig. Prusa Marlin FW zu bleiben - ich denke, da hat Prusa bei den neueren FW Versionen sicherlich Änderungen eingepflegt und das Eigenleben Octoprint's etwas ausser Acht gelassen. Vielleicht testen diejenigen, welche Probleme mit der Pause/Resume Funktion haben, Holger's oder meine veröffentlichte Sequenz. Die sollte eigentlich auch bei den neuesten FW Versionen funktionieren. Andernfalls würde ich dies bei Github veröffentlichen oder mich direkt an Prusa wenden.
Ich habe der Sache aber keine große Aufmerksamkeit mehr geschenkt, da der Ur MK3 (mod. Prusa FW 3.8.1, Einsy 1.1a und Octoprint 1.16.x) soweit läuft, ich daran auch nicht mehr schrauben werde, und mich für zukünftige Projekte auf, wie bereits erwähnt, RepRap und Klipper konzentriere. Da ergeben sich für mich mehr Möglichkeiten und Ressourcen Erweiterungen und Funktionen einzubauen und der manchmal leidige Prozess des FW Flashens entfällt zudem.
(Konfiguration Ur-MK3/S, Start 2018, Finalisierung 2021)
Schöne Grüße,
Karl
Statt zu klagen, dass wir nicht alles haben, was wir wollen, sollten wir lieber dankbar sein, dass wir nicht alles bekommen, was wir verdienen.
RE: Pause über Octoprint
Hallo Karl und @all,
danke für Deinen Post.
Dein script entspricht ja weitgehend auch meinem o. g. Beispiel, nur etwas erweitert (Temperatur) und im PS eingestellt.
Nach meinen bisherigen Recherchen im Netz handelt es sich hier um eine überwiegend gemeinsame Spezialität von Prusa und OctoPrint, die inzwischen bei RepRap auch als "Action commands" bekannt gemacht wurden. Diese Spezialitäten sind bisher noch nicht bei allen Anbietern wie z. B. Repetier-Server, Marlin, Klipper in gleicher Weise implementiert (Beiträge im R-S Forum und hier). Letztlich erfolgt damit derzeit eine Spaltung im 3D-Druck wenn man sich nicht selber mit passenden Scripten helfen kann. Enttäuschend.
Beste Grüße,
Holger 🙂
2x Personal MK3IR-BMG09 (Full) BEAR + MMU3 mod., ...
RE:
Hallo Ihr 😊,
seid Ihr sicher, dass der M601 mit diesem work around M602, G4 tatsächlich 100%ig funktioniert? 😉
Dann müsst Ihr weitere Tricks dazu verraten. Bei mir funzt nur die FW 3.9.3 einwandfrei.
Hi Holger,
bei mir läuft es wie gesagt auf einem Prusa MK3S mit aktueller Firmware und neuestem PrusaSlicer, nen Mini zum Testen habe ich nicht zur Verfügung. Kann ja auch sein das der Mini da Probleme macht, wobei ich dachte die Einstellung bei Octoprint, unter Drucker/GCODE Scripts, ist eine Druckerunabhängige Option.
Sorry, ich hatte die weiteren Postings nicht gesehen.
RE:
Prusa scheint sich durchaus Gedanken über das Thema "Host actions" zu machen. Dafür müssen sie aber Code optimieren und "abspecken", da der Board Speicherplatz begrenzt ist. Auf jeden Fall wurde ab der FW 3.10.0 zum Thema Hostkommunikation lt. Prusa einiges getan bzw. aufgeräumt (Prusa Dev Diaries #4).
Inwieweit das schon funktioniert, welche Actions an Octoprint übermittelt werden? Nun, so wie es aussieht, muss man sich gelegentlich mit "Selfmadescripten" behelfen.
Duet (RepRap) hat den Vorteil, dass FW und GUI (DWC) eine gemeinsame Entwicklung erfahren. Da gibt es in der Regel keine Probleme in der Kommunikation Host/GUI-Firmware. Ähnlich bei Klipper-Mainsail-Fluidd...
In der Entwicklung ist aber über all noch Luft nach oben - mal sehen in welche Richtung die 3D-Druck-Technik bzgl. FW/Steuerung weiterläuft.
Ich selber bin und bleibe ein Fan von opensource Technologie. Da kann man die eigene Experimentierfreude ausleben und freut sich gelegentlich über Erfolgserlebnisse 😊
Schöne Grüße,
Karl
Statt zu klagen, dass wir nicht alles haben, was wir wollen, sollten wir lieber dankbar sein, dass wir nicht alles bekommen, was wir verdienen.
RE: Pause über Octoprint
Hallo zusammen,
Ich habe Probleme mit der Pause Funktion an meinem prusa Mini.
Ich habe den Code von Holger verwendet, funktioniert auch gut mit der Pause, allerdings extrudiert der Drucker nach der Pause kein Material mehr. Die Bahnen werden abgefahren.
Kann evtl. jemand behilflich sein?
Viele Grüße,
Stefan
RE: Pause über Octoprint
Grundsätzlich sollte Pause/Resume den nachfolgenden Gcode nicht beeinflussen.
Kontrollier mal, ob sich im Gcode zwischendurch eine absolute Extruder Verfahrbewegung eingeschlichen hat (M82).
Möglicherweise liegt auch ein mechanisches Problem vor (verstopfte Düse, Filament klemmt im Hotend, Idler Federspannung zu gering, heatcreep...)
Schöne Grüße,
Karl
Statt zu klagen, dass wir nicht alles haben, was wir wollen, sollten wir lieber dankbar sein, dass wir nicht alles bekommen, was wir verdienen.
RE: Pause über Octoprint
Hallo,
ich habe jetzt nochmal getestet, auch mit deinem Code karl-herbert. Der Motor vom Extruder läuft nach der Pause einfach nicht mehr an. Mechanisch ist das Problem nicht. Druck Abbruch und erneut starten und er druckt wieder…
Wenn jemandem eine Idee hat, gerne melden.
Danke.
RE: Pause über Octoprint
Könntest Du den Gcode mal uploaden (gezipped) ? Welche FW Version hast Du aktuell installiert? Ist die Düsentemperatur nach dem Fortsetzen des Drucks ok?
Schöne Grüße,
Karl
Statt zu klagen, dass wir nicht alles haben, was wir wollen, sollten wir lieber dankbar sein, dass wir nicht alles bekommen, was wir verdienen.