我开始编写一个应用程序,该应用程序根据 G 代码文件为已经切片的模型计算估计的总打印时间。
该程序有效并且非常准确。
它的工作原理如下:
- 它扫描整个 G 代码文件以识别所有动作
- 它通过将段距离除以速度(以 mm/s 为单位)来计算每次移动的时间。
让我们假设这是 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、Jerk 和 Z-Jerk。
我想让使用这些值更准确地计算打印时间成为可能;但是,我不明白这些值如何影响移动时间:
- Acceleration 和 Jerk 应该如何考虑;以及,他们如何加快或减慢打印时间?
- 我应该如何编辑我的公式以便在打印时间计算中包括加速度和加速度?