Я почав писати програму, яка обчислює приблизний час друку з файлу G-коду для вже нарізаної моделі.
Програма працює, і це досить точно.
Він працює наступним чином:
- Він сканує весь файл G-коду, щоб виявити всі рухи
- Він обчислює час для кожного ходу, діливши відстань відрізка на швидкість в мм / с.
Припустимо, це G-код:
G28 ; home all axes
G1 Z0.200 F5400.000
G1 X158.878 Y27.769 E6.65594 F900.000
Це такий розрахунок:
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
У цьому прикладі на друк піде приблизно 10,7 секунди.
Більш загально, використовувана формула для кожного руху:
moveTime = segmentLength / mmPerSecond
Підсумовуючи всі часи руху, ми маємо загальний орієнтовний час друку.
Я бачив, що на деяких форумах зазначено, що час друку в 3D також залежить від деяких параметрів 3D-принтера, особливо Acceleration X, Acceleration Y, Acceleration Z, Jerk і Z-Jerk.
Я хотів би дати можливість використовувати ці значення для більш точного обчислення часу друку; однак я не розумію, як ці значення впливають на час переміщення:
- Як слід розглядати прискорення і ривок; і як вони прискорюють або сповільнюють час друку?
- Як слід редагувати формулу, щоб включити прискорення та ривок у розрахунок часу друку?