ฉันเริ่มเขียนแอปพลิเคชั่นที่คำนวณเวลาการพิมพ์ทั้งหมดโดยประมาณจากไฟล์รหัส 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 โดยเฉพาะ Acceleration X, Acceleration Y, Acceleration Z, Jerk และ Z-Jerk
ฉันต้องการทำให้สามารถใช้ค่าเหล่านั้นเพื่อคำนวณเวลาการพิมพ์ที่แม่นยำยิ่งขึ้น อย่างไรก็ตามฉันไม่เข้าใจว่าค่าเหล่านั้นมีผลต่อเวลาย้ายอย่างไร:
- ควรพิจารณาการเร่งความเร็วและฉุดอย่างไร และพวกเขาจะเพิ่มความเร็วหรือลดเวลาพิมพ์ได้อย่างไร
- ฉันจะแก้ไขสูตรเพื่อรวม Acceleration และ Jerk ในการคำนวณเวลาพิมพ์ได้อย่างไร