Marlin nach Kill automatisch neu starten
Unter bestimmten kritischen Umständen wie Thermalschutz tritt Marlin in einen Killed-Zustand ein. Normalerweise müssen Sie das Mainboard nach Eintritt in diesen Zustand hart-resetten. In Umgebungen mit physischem Zugriff auf die Maschine ist ein Hart-Reset von Marlin jedoch nicht möglich, sodass Sie möglicherweise eine automatische Lösung implementieren müssen.
Beachten Sie, dass die Diagnose und Behebung des zugrunde liegenden Problems, das den Reset ausgelöst hat, extrem wichtig ist und das Ignorieren zu weiteren Problemen bis hin zur Brandgefahr oder zur Zerstörung des Druckers führen kann. Stellen Sie also sicher, dass Sie wissen, was Sie tun, bevor Sie fortfahren.
Die folgende Anleitung wurde mit Marlin 2.0.9.1 getestet. Sie sollte mit den meisten Marlin 2.x-Versionen mit kleinen Anpassungen funktionieren.
Beachten Sie zuerst, dass es als Alternative zum Hart-Reset des Mainboards die Option SOFT_RESET_ON_KILL gibt, die es Ihnen ermöglicht, einen Soft-Reset aus dem Kill-Modus über einen an einen Pin angeschlossenen Taster auszulösen. Wir werden hier nicht weiter darauf eingehen, da dies die Anforderung für physischen Zugriff auf den Drucker nicht wirklich ändert.
Öffnen Sie Marlin/src/MarlinCore.cpp und finden Sie die Funktion minkill(bool).
Am Ende enthält diese Funktion einen präprozessor-gesteuerten Zweig der folgenden Struktur:
#if EITHER(HAS_KILL, SOFT_RESET_ON_KILL)
// Branch 1 ...
#else
// Branch 2 ...
#endifWir werden diesen gesamten Zweig durch diese Zeilen ersetzen:
// 5 Sekunden warten, damit der Controller aufholen kann
for (int i = 5000; i--;) { DELAY_US(1000); watchdog_refresh(); } // 5000*1ms = 3s
// Automatischer Reset nach Kill
HAL_reboot();Ich ziehe es vor, die 5-Sekunden-Verzögerung in die Reset-Logik einzufügen, damit kein übergeordneter Controller (wie ein Raspberry Pi mit OctoPrint) übersieht, dass das Marlin-Board getötet wurde. Obwohl die meisten Controller in der Lage sein sollten, den Killed-Zustand aus dem G-Code zu erkennen, simuliert diese 5-Sekunden-Verzögerung das Standardverhalten, nach Erreichen des Killed-Zustands gar nicht zurückzusetzen. Beachten Sie jedoch, dass es normalerweise sicher ist, die Warteschleife wegzulassen, wenn Sie unbedingt so schnell wie möglich nach Erreichen des Kill-Zustands zurücksetzen müssen.