Zacząłem pisać aplikację, która oblicza szacunkowy całkowity czas drukowania z pliku kodu G dla już pokrojonego modelu.
Program działa i jest dość dokładny.
Działa w następujący sposób:
- Skanuje cały plik G-code, aby zidentyfikować wszystkie ruchy
- Oblicza czas dla każdego ruchu dzieląc odległość segmentu przez prędkość w mm / s.
Załóżmy, że jest to kod G:
G28 ; home all axes
G1 Z0.200 F5400.000
G1 X158.878 Y27.769 E6.65594 F900.000
To jest obliczenie, które wykonuje:
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
W tym przykładzie wydruk zajmie około 10,7 sekundy.
Bardziej ogólnie, stosowana formuła jest dla każdego ruchu:
moveTime = segmentLength / mmPerSecond
Podsumowując wszystkie czasy ruchu, mamy całkowity szacowany czas drukowania.
Widziałem, że niektóre fora stwierdzają, że czas drukowania 3D zależy również od niektórych ustawień drukarki 3D, zwłaszcza Acceleration X, Acceleration Y, Acceleration Z, Jerk i Z-Jerk.
Chciałbym umożliwić wykorzystanie tych wartości do dokładniejszego obliczenia czasu drukowania; nie rozumiem jednak, w jaki sposób te wartości wpływają na czas ruchu:
- Jak należy wziąć pod uwagę Przyspieszenie i Szarpnięcie; oraz w jaki sposób przyspieszają lub spowalniają czas drukowania?
- Jak powinienem edytować moją formułę, aby uwzględnić Przyspieszenie i Szarpnięcie w obliczeniach czasu drukowania?