Berechnung der geschätzten Druckzeit einer bereits geschnittenen Datei


10

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:

  1. Es scannt die gesamte G-Code-Datei, um alle Bewegungen zu identifizieren
  2. 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:

  1. Wie sollten Beschleunigung und Ruck berücksichtigt werden? und wie beschleunigen oder verlangsamen sie die Druckzeit?
  2. Wie soll ich meine Formel bearbeiten, um Beschleunigung und Ruck in die Druckzeitberechnung einzubeziehen?

Wie genau müssen Sie sein? Ja, Sie können die Beschleunigungen einstecken und kurze Läufe ausgleichen, bei denen die Motoren vor dem Abbremsen nie die volle Drehzahl erreichen, und so weiter. Wenn das Nettoergebnis jedoch nur um beispielsweise 2% abweicht, ist es Ihnen wichtig? Versuchen Sie, etwas Einfaches wie eine quadratische Pyramide zu drucken, und vergleichen Sie Ihre Vorhersage mit der Realität.
Carl Witthoft

Ich möchte so präzise wie möglich sein ... Im Moment beträgt der Unterschied zwischen Vorhersage und Realität bei einem 9-Stunden-Druck 10-15 Minuten, was sehr viel ist. Ich werde mir den Marlin-Quellcode ansehen, um herauszufinden, wie Beschleunigung und Ruck beim Drucken behandelt werden
BackSlash

Vielleicht könnten Sie slic3r überprüfen und sehen, wie es diese Parameter berechnet. Ich erinnere mich, dass ich beim Schneiden eine Zeitschätzung erhalten habe.
FarO

@FarO Ich benutze Slic3r und habe nie eine Zeitschätzung gesehen. Vielleicht suche ich nicht den richtigen Ort, aber es gibt viele Benutzer, die über das Internet nach dieser Funktion fragen. Ich fürchte, es gibt keine Möglichkeit, die Druckzeit in Slic3r zu ermitteln.
BackSlash

@BackSlash Normalerweise wird es in Repetier am Ende des Slicing im Ausgabeprotokoll angezeigt. Ich denke dann ist es von Repetier selbst!
FarO

Antworten:


5

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.


Vielen Dank für Ihre Antwort, ich werde weiter suchen. Vielen Dank, dass Sie mich in die richtige Richtung gelenkt haben: Ich kann den Marlin-Quellcode lesen und nach den Teilen für Beschleunigungs- und Rucksteuerung suchen. Es wird sicherlich helfen, ich habe nicht darüber nachgedacht! Vielen Dank!
BackSlash

3
"Ich vermute, dass die Beschleunigungseinstellung keinen großen Unterschied zu der Zeit macht, die der Druck benötigt." <- das könnte nicht falscher sein. Die Beschleunigung ist der dominierende Faktor in der Druckzeit, wenn das Verhältnis zwischen Druckgeschwindigkeit und Detailgröße hoch ist (dh schnelle Geschwindigkeitseinstellung oder kleine Details oder beides). Es ist unwahrscheinlich, dass eine Erhöhung der [maximalen] Geschwindigkeitseinstellung um den Faktor 2 die Druckzeit um 5% verkürzt.
R .. GitHub STOP HELPING ICE

5

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.


Ruck ist die Ableitung der Beschleunigung.
Trish

1
@trish: außer wenn es nicht ist. Siehe meine Frage 3dprinting.stackexchange.com/questions/10369/… .
R .. GitHub STOP HELPING ICE
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.