Я начал писать приложение, которое вычисляет приблизительное общее время печати из файла 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-принтере, особенно от ускорения X, ускорения Y, ускорения Z, рывка и Z-рывка.
Я хотел бы сделать возможным использование этих значений для более точного расчета времени печати; однако я не понимаю, как эти значения влияют на время перемещения:
- Как следует учитывать ускорение и рывок; и как они ускоряют или замедляют время печати?
- Как мне отредактировать формулу, чтобы включить ускорение и рывок в расчет времени печати?