Ich begann eine Anwendung zu schreiben, die die geschätzte Gesamtdruckzeit aus der G-Code-Datei für ein bereits geschnittenes Modell berechnet.
Das Programm funktioniert und es ist ziemlich genau.
Es funktioniert wie folgt:
- Es scannt die gesamte G-Code-Datei, um alle Bewegungen zu identifizieren
- Es berechnet die Zeit für jede Bewegung, indem die Segmententfernung durch die Geschwindigkeit in mm / s dividiert wird.
Nehmen wir an, dies ist der G-Code:
G28 ; home all axes
G1 Z0.200 F5400.000
G1 X158.878 Y27.769 E6.65594 F900.000
Dies ist die Berechnung, die es macht:
totalTime = 0
# G28 ; home all axes
currentX = 0 mm
currentY = 0 mm
currentZ = 0 mm
# G1 Z0.200 F5400.000
newZ = 0.2 mm
mmPerSecond = 5400 / 60 = 90 mm/s
deltaZ = newZ - currentZ = 0.2 - 0 = 0.2 mm
segmentLength = deltaZ = 0.2 mm
moveTime = segmentLength / mmPerSecond = 0.2 / 90 = 0.002 s
totalTime = totalTime + moveTime = 0 + 0.002 = 0.002 s
# G1 X158.878 Y27.769 E6.65594 F900.000
newX = 158.878 mm
newY = 27.769 mm
mmPerSecond = 900 / 60 = 15 mm/s
deltaX = newX - currentX = 158.878 - 0 = 158.878 mm
deltaY = newY - currentY = 27.769 - 0 = 27.769 mm
segmentLength = square_root(deltaX² + deltaY²) = 161.287 mm
moveTime = deltaZ / mmPerSecond = 161.287 / 15 = 10.755 s
totalTime = totalTime + moveTime = 0.002 + 10.755 = 10.757 s
In diesem Beispiel dauert der Druckvorgang ungefähr 10,7 Sekunden.
Allgemeiner lautet die verwendete Formel für jede Bewegung:
moveTime = segmentLength / mmPerSecond
Durch Summieren aller Verschiebungszeiten erhalten wir die geschätzte Gesamtdruckzeit.
Ich habe gesehen, dass in einigen Foren angegeben ist, dass die 3D-Druckzeit auch von einigen Einstellungen des 3D-Druckers abhängt, insbesondere von Beschleunigung X, Beschleunigung Y, Beschleunigung Z, Ruck und Z-Ruck.
Ich möchte es möglich machen, diese Werte zu verwenden, um die Druckzeit genauer zu berechnen. Ich verstehe jedoch nicht, wie sich diese Werte auf die Verschiebungszeit auswirken:
- Wie sollten Beschleunigung und Ruck berücksichtigt werden? und wie beschleunigen oder verlangsamen sie die Druckzeit?
- Wie soll ich meine Formel bearbeiten, um Beschleunigung und Ruck in die Druckzeitberechnung einzubeziehen?
quelle
Antworten:
Ich habe versucht, in die Druckerfirmware zu schauen, um festzustellen, wie sich die Beschleunigungseinstellung auf die Maschinenbewegung auswirkt. Soweit ich es beurteilen konnte, schien die Beschleunigung je nach der von mir betrachteten Firmware unterschiedlich implementiert zu sein und wurde auch von den auf dem Drucker verwendeten Einstellungen beeinflusst. Ich habe nicht weiter gesucht, weil das Schreiben unterschiedlicher Regeln für jede Firmware zu schwierig schien. Vielleicht würde jemand, der mehr darüber weiß, wissen, ob die meisten Firmware die gleichen Berechnungen verwenden.
Ich vermute, dass die Beschleunigungseinstellung keinen großen Unterschied zu der Zeit macht, die der Druck benötigt. Sie schienen bei den kleinen Drucken, die ich mit langsamer Geschwindigkeit gedruckt habe, keinen Unterschied zu machen. Wenn Sie größere Ausdrucke mit höheren Geschwindigkeiten drucken würden, die lange Wege hatten, auf denen die Düse Zeit zum Beschleunigen und Abbremsen hatte, würden Sie vermutlich einen größeren Unterschied mit der Zeit bemerken.
Ich habe festgestellt, dass der größte Fehler zwischen der vorhergesagten Zeit und der tatsächlichen Zeit die Zeit war, die die Maschine mit der Verarbeitung der Anweisungen verbringt. Beim Drucken eines Modells mit vielen kurzen Bewegungen, die an den Drucker gesendet und vom Drucker verarbeitet und berechnet werden müssen, ist mir aufgefallen, dass der Drucker für den Bruchteil einer Sekunde pausiert. Es ist nicht lang genug, um einen Unterschied in den Druckerbewegungen zu erkennen, aber es ist spürbar genug, um es zu hören. Ich vermute, dass dies bei billigeren Druckern einen größeren Fehler verursachen würde als die Beschleunigung.
Wenn jemand herausfinden kann, wie die Beschleunigungseinstellungen vom Drucker berechnet werden und mit welchem G-Code-Befehl die Beschleunigungseinstellungen aus dem Drucker abgerufen werden können, wäre ich wirklich daran interessiert, mehr darüber zu erfahren.
quelle
Zuallererst gibt es einige nette Open-Source-Analysatoren, die in JavaScript geschrieben sind und die Sie online verwenden oder unter https://www.gcodeanalyser.com/ und http://gcode.ws/ lesen können . Ihre Vorhersagen stimmen nicht vollständig mit der tatsächlichen Druckerfirmware überein, aber sie leisten einen ziemlich engen Job, und das Lesen wäre informativ.
Grundsätzlich ist die Geschichte hinter Beschleunigung und Ruckeln, dass Sie die Geschwindigkeit (Geschwindigkeit oder Richtung) des Druckkopfs nicht sofort ändern können. Es braucht Zeit, um zu beschleunigen und zu verlangsamen. Die Beschleunigung ist die maximale Geschwindigkeit, mit der sich die Geschwindigkeit des Druckkopfs ändern kann. Ruck ist so etwas wie eine Fehlbezeichnung / ein Hack und ist die maximale gefälschte augenblickliche Änderung der Geschwindigkeit, die an der Kreuzung zweier Segmente / Kurven zulässig ist. Der Punkt des Ruckelns besteht darin, unruhige Bewegungen zu vermeiden, wenn Sie sich entlang einer Kurve bewegen, die aus vielen Segmenten besteht, indem Sie an jeder winzigen Ecke beschleunigen / verlangsamen. Beachten Sie, dass es zwei Einstellungen für Beschleunigung und Ruck gibt:
Ein maximaler absoluter Wert (3D-Vektorlänge), der sich häufig als Teil des G-Codes geändert hat, um unterschiedliche Beschleunigungsprofile für Druckbewegungen gegenüber Fahrbewegungen, Wände gegenüber Füllungen usw. zu verwenden.
Absolutwerte pro Achse (Standard-1D-Absolutwert) für die Einschränkungen des Geräts, die normalerweise in den Druckereinstellungen oder im Start-Gcode-Profil für Ihren Drucker festgelegt und nie geändert werden.
Die Bewegung ist darauf beschränkt, immer beide Einstellungen zu berücksichtigen.
Die Druckerfirmware verwendet Beschleunigungs- und Ruckeinstellungen sowie Lookahead bei bevorstehenden Bewegungsbefehlen, um zu entscheiden, wie die Motoren tatsächlich betrieben werden sollen. Wenn eine Bewegung gestartet wird, muss sie innerhalb der Beschleunigungsbeschränkungen auf die konfigurierte Höchstgeschwindigkeit beschleunigen. Es muss auch auf halbem Weg wieder langsamer werden, es sei denn, es weiß, dass die nächste Bewegung genau in die gleiche Richtung fortgesetzt wird. Wie viel es verlangsamen muss, hängt von der Differenz der Bewegungsvektoren ab. Wenn die nächste Bewegung ungefähr in die gleiche Richtung verläuft, kann möglicherweise eine Verlangsamung vermieden werden, indem die Ruckzugabe verwendet wird, um eine "sofortige" Geschwindigkeitsänderung an der Ecke vorzunehmen. Nur wenn Sie lange (relativ zur Geschwindigkeit) lineare oder annähernd lineare Bewegungen haben, werden Sie jemals die gewünschte Geschwindigkeit erreichen.
Um die Druckzeit abzuschätzen, müssen Sie dies modellieren . Behalten Sie die Geschwindigkeit des Druckkopfs bei, während Sie den Gcode verarbeiten / simulieren, und berechnen Sie für jeden Bewegungsbefehl die Geschwindigkeit als Funktion der Zeit unter Verwendung der Beschleunigungsgrenzen (Beschleunigung mit der maximal zulässigen Geschwindigkeit). Sie müssen auch die Endgeschwindigkeit ermitteln, mit der Sie die Bewegung beenden möchten, um den nächsten Bewegungsbefehl starten zu können, und einen Punkt, an dem Sie bei Bedarf mit dem Abbremsen beginnen können, um dies zu erreichen.
quelle