การคำนวณเวลาพิมพ์โดยประมาณของไฟล์ที่ถูกแบ่งแล้ว


10

ฉันเริ่มเขียนแอปพลิเคชั่นที่คำนวณเวลาการพิมพ์ทั้งหมดโดยประมาณจากไฟล์รหัส G สำหรับรุ่นที่แบ่งส่วนแล้ว

โปรแกรมทำงานได้และมันค่อนข้างแม่นยำ

มันทำงานได้ดังต่อไปนี้:

  1. มันสแกนไฟล์รหัส G ทั้งหมดเพื่อระบุการเคลื่อนไหวทั้งหมด
  2. มันคำนวณเวลาสำหรับการเคลื่อนไหวแต่ละครั้งโดยการหารระยะทางส่วนด้วยความเร็วในหน่วย 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

ฉันต้องการทำให้สามารถใช้ค่าเหล่านั้นเพื่อคำนวณเวลาการพิมพ์ที่แม่นยำยิ่งขึ้น อย่างไรก็ตามฉันไม่เข้าใจว่าค่าเหล่านั้นมีผลต่อเวลาย้ายอย่างไร:

  1. ควรพิจารณาการเร่งความเร็วและฉุดอย่างไร และพวกเขาจะเพิ่มความเร็วหรือลดเวลาพิมพ์ได้อย่างไร
  2. ฉันจะแก้ไขสูตรเพื่อรวม Acceleration และ Jerk ในการคำนวณเวลาพิมพ์ได้อย่างไร

คุณจะต้องเร่งรีบแค่ไหน? ใช่คุณสามารถเสียบการเร่งความเร็วและชดเชยการวิ่งระยะสั้นที่มอเตอร์ไม่เคยวิ่งด้วยความเร็วเต็มที่ก่อนที่จะชะลอตัวลงและต่อไป แต่ถ้าผลสุทธิถูกปิดโดยพูด 2% คุณสนใจไหม? ลองพิมพ์สิ่งที่เรียบง่ายเช่นปิรามิดสี่เหลี่ยมและเปรียบเทียบการทำนายของคุณกับความเป็นจริง
Carl Witthoft

ฉันต้องการให้แม่นยำที่สุดเท่าที่จะเป็นไปได้ ... ตอนนี้ในเวลา 9 ชั่วโมงพิมพ์ความแตกต่างระหว่างการทำนายและความจริงคือ 10-15 นาทีซึ่งมาก ฉันจะดูซอร์สโค้ดของมาร์ลินเพื่อค้นหาวิธีจัดการกับความเร่งและการกระตุกขณะพิมพ์
BackSlash

บางทีคุณสามารถตรวจสอบ slic3r และดูว่ามันคำนวณพารามิเตอร์เหล่านั้นอย่างไร ฉันจำได้ว่าได้รับการประเมินเวลาเมื่อหั่น
FarO

@FARO ฉันใช้ Slic3r และฉันไม่เคยเห็นการประมาณเวลาเลย บางทีฉันอาจไม่ได้ดูที่ที่ถูกต้อง แต่มีผู้ใช้จำนวนมากที่ขอคุณสมบัติผ่านเว็บดังนั้นฉันจึงกลัวว่าจะไม่มีทางรู้เวลาพิมพ์ใน Slic3r
BackSlash

@ BackSlash ฉันมักจะเห็นมันใน Repetier ในตอนท้ายของการแบ่งในบันทึกผลลัพธ์ ฉันเดาว่ามันมาจาก Repetier เอง!
FarO

คำตอบ:


5

ฉันลองตรวจสอบเฟิร์มแวร์เครื่องพิมพ์เพื่อดูว่าการตั้งค่าการเร่งความเร็วมีผลต่อการเคลื่อนไหวของเครื่องอย่างไร จากสิ่งที่ฉันสามารถบอกได้ว่าการเร่งความเร็วนั้นมีความแตกต่างกันขึ้นอยู่กับเฟิร์มแวร์ที่ฉันดูและยังได้รับผลกระทบจากการตั้งค่าที่ใช้ในเครื่องพิมพ์ ฉันไม่ได้มองอะไรเพิ่มเติมเพราะการเขียนกฎที่แตกต่างกันสำหรับเฟิร์มแวร์ที่แตกต่างกันดูเหมือนจะเป็นปัญหามากเกินไป บางทีคนที่รู้เพิ่มเติมเกี่ยวกับเรื่องนี้จะรู้ว่าเฟิร์มแวร์ส่วนใหญ่ใช้การคำนวณเดียวกัน

ฉันสงสัยว่าการตั้งค่าความเร่งจะไม่สร้างความแตกต่างอย่างมากกับเวลาที่ใช้ในการพิมพ์ พวกเขาดูเหมือนจะไม่ได้สร้างความแตกต่างให้กับงานพิมพ์ขนาดเล็กที่ฉันได้ทำการพิมพ์ด้วยความเร็วต่ำ หากคุณกำลังพิมพ์งานที่มีขนาดใหญ่ขึ้นด้วยความเร็วที่เร็วขึ้นซึ่งมีเส้นทางยาวที่หัวฉีดมีเวลาในการเร่งความเร็วและลดความเร็วลงฉันก็สงสัยว่าคุณจะสังเกตเห็นความแตกต่างที่มากขึ้นเมื่อเวลาผ่านไป

ฉันพบว่าข้อผิดพลาดที่ใหญ่ที่สุดระหว่างเวลาที่คาดการณ์และเวลาจริงเป็นเวลาที่เครื่องใช้ประมวลผลคำแนะนำ เมื่อพิมพ์รุ่นที่มีการเคลื่อนไหวสั้น ๆ จำนวนมากที่ต้องส่งไปยังเครื่องพิมพ์และพวกเขาจำเป็นต้องประมวลผลและคำนวณโดยเครื่องพิมพ์ฉันสังเกตว่าเครื่องพิมพ์จะหยุดชั่วคราวในเสี้ยววินาที ไม่นานพอที่จะเห็นความแตกต่างในการเคลื่อนไหวของเครื่องพิมพ์ แต่ก็เห็นได้ชัดเจนพอที่จะได้ยิน ฉันสงสัยว่าในเครื่องพิมพ์ราคาถูกกว่านี้จะทำให้เกิดข้อผิดพลาดใหญ่กว่าการเร่งความเร็ว

หากมีคนสามารถทราบได้ว่าเครื่องพิมพ์คำนวณการตั้งค่าความเร่งอย่างไรและคำสั่ง G-code ใดบ้างที่สามารถนำมาใช้เพื่อรับการตั้งค่าความเร่งจากเครื่องพิมพ์ฉันจะสนใจรู้เรื่องนี้มากขึ้น


ขอบคุณสำหรับคำตอบของคุณฉันจะค้นหาต่อไป ขอบคุณที่ชี้ฉันไปในทิศทางที่ถูกต้อง: ฉันสามารถอ่านซอร์สโค้ดของ Marlin และค้นหาส่วนควบคุมความเร่งและเหวี่ยงได้แน่นอนมันจะช่วยฉันไม่ได้คิดถึงมันเลย! ขอบคุณ!
BackSlash

3
"ฉันสงสัยว่าการตั้งค่าความเร่งจะไม่สร้างความแตกต่างอย่างมากกับเวลาที่ใช้ในการพิมพ์" <- นี่คงไม่ผิดหรอก การเร่งความเร็วเป็นปัจจัยสำคัญในเวลาพิมพ์เมื่อปันส่วนระหว่างความเร็วในการพิมพ์และขนาดรายละเอียดสูง (เช่นการตั้งค่าความเร็วที่รวดเร็วหรือรายละเอียดเล็ก ๆ หรือทั้งสองอย่าง) การเพิ่มการตั้งค่าความเร็วสูงสุดที่ 2x ไม่น่าจะทำให้เวลาในการพิมพ์ลดลง 5%
. GitHub หยุดช่วยน้ำแข็ง

5

ครั้งแรกของทั้งหมดมีบางส่วนที่มีความสุขวิเคราะห์เปิดแหล่งที่มาเขียนใน JavaScript ที่คุณสามารถใช้ออนไลน์หรืออ่านมา, ที่https://www.gcodeanalyser.com/และhttp://gcode.ws/ การคาดการณ์ของพวกเขาไม่ตรงกับเฟิร์มแวร์เครื่องพิมพ์จริง แต่พวกเขาทำงานใกล้พอสมควรและการอ่านพวกเขาจะเป็นข้อมูล

โดยพื้นฐานแล้วเรื่องราวเบื้องหลังการเร่งความเร็วและการกระตุกคือคุณไม่สามารถเปลี่ยนความเร็ว (ความเร็วหรือทิศทาง) ของหัวพิมพ์ได้ในทันที ใช้เวลาในการเร่งความเร็วและช้าลง การเร่งความเร็วคืออัตราสูงสุดที่ความเร็วของหัวพิมพ์สามารถเปลี่ยนแปลงได้ Jerk เป็นสิ่งที่เรียกชื่อผิด / แฮ็คและเป็นการเปลี่ยนแปลงความเร็วสูงสุดปลอมทันทีที่ได้รับอนุญาตที่ทางแยกของสองส่วน / โค้ง จุดของการกระตุกคือการหลีกเลี่ยงการเคลื่อนไหวที่ขาด ๆ หาย ๆ เมื่อเคลื่อนที่ไปตามเส้นโค้งที่ประกอบด้วยหลายส่วนโดยการเร่ง / ลดความเร็วที่มุมเล็ก ๆ แต่ละมุม โปรดทราบว่ามีการตั้งค่าสองชุดสำหรับการเร่งความเร็วและการกระตุก:

  • ค่าสัมบูรณ์สูงสุด (ความยาวเวกเตอร์ 3 มิติ) ที่เปลี่ยนแปลงบ่อยซึ่งเป็นส่วนหนึ่งของ gcode เพื่อใช้โปรไฟล์การเร่งความเร็วที่แตกต่างกันสำหรับการย้ายการพิมพ์เทียบกับการเคลื่อนย้ายการเดินทางกำแพงเทียบกับอินฟิล ฯลฯ

  • ค่าสัมบูรณ์ต่อแกน (ค่าสัมบูรณ์ 1D มาตรฐาน) สำหรับข้อ จำกัด ของเครื่องซึ่งโดยปกติจะตั้งค่าในการตั้งค่าเครื่องพิมพ์หรือโปรไฟล์ gcode เริ่มต้นสำหรับเครื่องพิมพ์ของคุณและไม่เคยเปลี่ยนแปลง

การเคลื่อนไหวมีข้อ จำกัด ในการเคารพการตั้งค่าทั้งสองชุด

เฟิร์มแวเครื่องพิมพ์ใช้การเร่งความเร็วและกระตุกพร้อมกับการตั้งค่าlookaheadที่คำสั่งการเคลื่อนไหวที่จะเกิดขึ้นในการตัดสินใจวิธีการใช้งานจริงของมอเตอร์ เมื่อเริ่มการเคลื่อนไหวจะต้องเร่งความเร็วสูงสุดที่กำหนดไว้ภายในข้อ จำกัด การเร่งความเร็ว นอกจากนี้ยังต้องเริ่มชะลอตัวลงกลางคันจนกว่าจะรู้ว่าการเคลื่อนไหวครั้งต่อไปจะดำเนินต่อไปในทิศทางเดียวกัน การลดความเร็วขึ้นอยู่กับความแตกต่างของเวกเตอร์ของการเคลื่อนไหว หากการเคลื่อนไหวครั้งต่อไปจะเป็นไปในทิศทางเดียวกันโดยประมาณอาจจะสามารถหลีกเลี่ยงการชะลอตัวลงได้โดยใช้ค่าเผื่อการกระตุกเพื่อทำการเปลี่ยนความเร็ว "ที่มุมทันที" เฉพาะในกรณีที่คุณมีการเคลื่อนที่เชิงเส้น (สัมพันธ์กับความเร็ว) หรือการเคลื่อนที่เชิงเส้นโดยประมาณคุณจะถึงความเร็วที่ร้องขอได้จริง

ดังนั้นเพื่อประเมินเวลาพิมพ์คุณจะต้องทำแบบนี้ ติดตามความเร็วหัวพิมพ์ขณะประมวลผล / จำลอง gcode และสำหรับแต่ละคำสั่งการเคลื่อนไหวให้คำนวณความเร็วเป็นฟังก์ชันของเวลาโดยใช้ขีด จำกัด การเร่งความเร็ว (เร่งความเร็วสูงสุดที่อนุญาต) คุณต้องคิดความเร็วสุดท้ายที่คุณต้องการจะหยุดการเคลื่อนไหวด้วยเพื่อที่จะสามารถเริ่มต้นคำสั่งการเคลื่อนไหวครั้งต่อไปและจุดที่จะเริ่มชะลอตัวลงถ้าจำเป็นเพื่อให้บรรลุ


Jerk เป็นต้นกำเนิดของการเร่งความเร็ว
ทริช

1
@trish: ยกเว้นเมื่อไม่มี ดูคำถามของฉัน3dprinting.stackexchange.com/questions/10369/...
.. GitHub หยุดช่วยเหลือน้ำแข็ง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.