Teil 2 des vorhergehenden Beitrags.
In den letzten Tagen bin ich über einige Hinweise im Forum gestolpert, wonach Nibbels in nächster Zeit sich kaum der Firmware-Programmierung zuwenden wird können. Dadurch fühlte ich mich leider auf mich allein gestellt, was die Umsetzung meines Vorschlags im vorherigen Beitrag betraf.
Da ich nicht sonderlich begabt bin, was die meisten modernen Programmiersprachen angeht, dauerte es allein schon einige Stunden, bis ich die Stelle fand, wo sich die Textbausteine der Log-Ausgabe befanden. Dazu noch etliche Stunden, über mehrere Tage verteilt, bis ich die Firmware so ändern konnte, dass auch der Digit-Wert ausgegeben wurde (nicht ganz fehlerfrei, aber brauchbar – siehe dazu spoiler ‚Nummernfehler‘ später im Beitrag). Dazu musste die Firmware etliche Male kompiliert und beanstandete Fehler bearbeitet werden. Falls fehlerfrei, wurde ein pseudo-Druckauftrag gestartet (ohne Filament) und die entstandene Log-Datei betrachtet. Das Ganze so lange wiederholt, bis auch der Digit-Wert wie gewünscht, erschien. Dabei rauchte mein Kopf derartig stark, dass in der gesamten Gegend die Feinstaubwerte mehrere Tage durch die Decke gingen (vermutlich entstand dadurch auch eine weitere Klimaerwärmung um einige Zehntel Grad, leider).
Da der Digit-Wert nun endlich greifbar wurde, ging es ans Datensammeln.
Nach dem Erfolg wurde die Repetier-Log-Datei ‚geleert‘. Ein repräsentativer Druckauftrag wurde gestartet: ein nützlicher Spulenadapter. Wie hier:
PrintJob_#1.jpg
Repräsentativ deshalb, da zwei ‚Hauptinseln‘ existieren, durch die zwei getrennten Objekte. Pro Objekt gibt es zusätzlich mehrere Gelegenheiten für einen Retract, da Unterbrechungen vorhanden sind.
Gedruckt wurde mit schwarzem Polymaker PETG, 1.75mm. Die Düse war 0.6mm, die Layer-Höhe 0.45mm.
Der Auftrag dauerte ca. 85 Minuten. Bald am Anfang sah ich, dass die Digit-Werte recht hoch waren. Und so erhöhte ich die Temperatur schrittweise insgesamt um 14 Grad. (Vermutete Ursache: Da ich die Firmware neu aufspielte, dürften die PID-Werte nicht mehr gestimmt haben und die Temperatur-Regelung erreichte die gewünschte Temperatur nie ganz.)
Die entstandene Log-Datei hatte eine Größe von 14.5 MB. Die Log-Datei wurde mit einem Editor bearbeitet, um jene Zeilen zu entfernen, die für die Untersuchung nicht von Belang waren (z.B. Temperatur-Meldungen). Das Ergebnis davon kam in eine Tabellenkalkulation zur weiteren Bearbeitung und Analyse. Durch die weitere Bearbeitung wuchs die Datei auf knapp 35MB (das Arbeiten wurde dadurch recht langsam und mühselig)
. Dabei wurde ein Nummernfehler in der Zeilennummerierung gefunden
Nachdem der Nummernfehler beseitigt wurde, wurde eine grafische Darstellung der Digit-Werte erstellt. Ich war erstaunt darüber, wie gut diese meiner Vorstellung entsprach.
Weitere Analysen stellten fest, dass es zu einer Verzögerung von ca. 0.5 Sekunden zwischen der Bestätigung des Retract-GCodes und des ersten feststellbaren Druckabfalls gibt. Übrigens, die durchschnittliche Verzögerung zwischen dem Einlangen eines GCode-Befehls und der rechnerischen Abarbeitung liegt bei unter 0.3 Sekunden. In der selben Zeit kommen 4 bis 5 weitere GCode-Befehle in die Bearbeitungsschleife. Ob der GCode mit dem Liefern der ‚OK-Meldung‘ auch mechanisch abgearbeitet wurde, ist mir nicht bekannt.
Jetzt geht es zu den tatsächlichen Kurven der Digit-Werte während eines Druckauftrags. Um alles etwas verständlicher zu machen, habe ich mehrere Ausführungen. (Ein Bild der gesamten 80 Minuten ist praktisch unbrauchbar, da so viele Punkte auf begrenztem Raum dargestellt werden (über 168000). Als erstes kommt eine Darstellung über 8 Minuten Dauer. Es beginnt kurz nachdem der erste Füllvorgangs (100%) beginnt:
8MinutesOfDigits(annotated).jpg
Die vertikale Achse zeigt den F-Digit-Wert, wie dieser an den Log gemeldet wird. Die horizontale Achse zeigt die Zeilennummer aus dem Log.
Auch die 8 Minuten Graphik sagt nicht sonderlich viel aus.
Eine schöne Übereinstimmung mit meiner ursprünglichen Vorstellung ergibt hingegen die Grafik über 30 Sekunden:
30SecondsOfDigits.jpg
Die Analyse des GCodes erlaubt die Klassifizierung der einzelnen Abschnitte der Kurve:
30SecondsOfDigits(annotated).jpg
Um es bildlich noch schöner darstellen zu können, hier die Phasen in der Repetier-Host Vorschau:
30SecondsOfPrint.jpg
Links sieht man den Rest der Schürze, das gedruckt wurde (in orange hervorgehoben), rechts dann den ersten Umriss der Bohrung (Perimeter), gefolgt vom äußeren Umriss und schließlich die ersten Bahnen der Füllung. Das entspricht den abgearbeiteten Zeilen in dem Bild zuvor (entspricht 30 Sekunden Druck). Die blauen Abschnitte sind noch zu drucken (Ausnahme: die blauen Teile der Schürze wurden bereits gedruckt!).
Wie in der Grafik angegeben, war der Leerlaufwert der DMS ca. 650. Damit ist zu erkennen, dass bei einem Retract der Digit-Wert meist kurzzeitig auf den Leerlaufwert zurückfällt.
Interessant ist der Unterschied zwischen dem ersten Umriss (die kleine Bohrung, 6mm Durchm.) und dem äußeren Umriss. Hier ist ein Anstieg von ca. 500 zu erkennen. Die vermutliche Begründung dafür liegt an einer Einstellung im Slicer (hier: Prusa Slicer) bei dem bei kleineren Umrissen eine geringere Geschwindigkeit vorgegeben werden kann. Als kleinerer Umriss gilt ein Durchmesser <= 6.5mm. Bei mir ist die Einstellung hier mit ca. 50% der normalen Geschwindigkeit zu drucken. Das wirkt sich sofort auf die Digit-Werte aus, wie man sieht (ein weiteres Argument für das Drucken mit konstantem Volumen, dass manche Slicer seit einigen Jahren anbieten).
Wählt man ein noch kürzeres Zeitfenster, ergibt sich das folgende Bild (6 Sekunden Druckdauer):
6SecondsOfDigits(annotated).jpg
Hier sieht man, dass man bereits an die Rechengrenze der Systemplatine (oder an die Reaktionsgrenze der DMS) stößt. Die meisten Digit-Werte sind über 3 oder 4 Zeilen ident, als ob diese nicht extra gerechnet/ermittelt wurden. Im Bild sind nur der letzte Teil der Schürze und der erste Umriss (die 6mm Bohrung) abgebildet.
So.
Damit dürfte meine Idee bewiesen sein. Offen bleiben noch das Fräsen und der Druck im Vasenmodus. Diese werde ich in den nächsten Tagen auch noch durchführen. Den Vasenmodus zu simulieren geht ohne Aufwand. Das Fräsen des Filaments werde ich provozieren indem ich die Temperatur um 30 oder 40 Grad reduziere.
Aber das Ganze hier in die Firmware einzuarbeiten bekomme ich nie und nimmer hin
. Dazu kann ich nicht ausreichend programmieren - es ist schon eine Leistung, dass ich es fertig brachte, die Digit-Werte auszudrucken (es waren im Endeffekt
nur 3 geänderte Zeilen).
Genug für jetzt. (Ich verzichte auf das letzte Bild, Dauer 44 Sekunden, zeigt nur die Phase der 100%-igen Füllung.)
Möge COVID-19 alle verschonen!
mjh11
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.