Tính thời gian in ước tính của một tệp đã được cắt


10

Tôi bắt đầu viết một ứng dụng tính toán tổng thời gian in ước tính từ tệp mã G cho một mô hình đã được cắt.

Chương trình hoạt động và nó khá chính xác.

Nó hoạt động như sau:

  1. Nó quét toàn bộ tệp mã G để xác định tất cả các chuyển động
  2. Nó tính toán thời gian cho mỗi lần di chuyển bằng cách chia khoảng cách phân đoạn cho tốc độ tính bằng mm / s.

Giả sử đây là mã G:

G28 ; home all axes
G1 Z0.200 F5400.000
G1 X158.878 Y27.769 E6.65594 F900.000

Đây là phép tính mà nó thực hiện:

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

Trong ví dụ này, bản in sẽ mất khoảng 10,7 giây.

Tổng quát hơn, công thức được sử dụng là, cho mỗi chuyển động:

moveTime = segmentLength / mmPerSecond

Bằng cách tổng hợp tất cả thời gian di chuyển, chúng tôi có tổng thời gian in ước tính.

Tôi đã thấy rằng một số diễn đàn nói rằng thời gian in 3D cũng phụ thuộc vào một số cài đặt trên máy in 3D, đặc biệt là Gia tốc X, Gia tốc Y, Gia tốc Z, Jerk và Z-Jerk.

Tôi muốn sử dụng các giá trị đó để tính thời gian in chính xác hơn; tuy nhiên, tôi không hiểu làm thế nào những giá trị đó ảnh hưởng đến thời gian di chuyển:

  1. Làm thế nào nên tăng tốc và Jerk; và, làm thế nào để họ tăng tốc hoặc làm chậm thời gian in?
  2. Tôi nên chỉnh sửa công thức của mình như thế nào để đưa Gia tốc và Jerk vào tính toán thời gian in?

Làm thế nào để tích lũy bạn cần phải được? Có, bạn có thể cắm tăng tốc và bù cho những lần chạy ngắn khi động cơ không bao giờ đạt tốc độ tối đa trước khi giảm tốc, v.v., nhưng nếu kết quả ròng chỉ bị tắt, giả sử, 2%, bạn có quan tâm không? Hãy thử in một cái gì đó đơn giản như một kim tự tháp vuông và so sánh dự đoán của bạn với thực tế.
Carl Witthoft

Tôi muốn chính xác nhất có thể ... Ngay bây giờ trên 9 giờ, sự khác biệt giữa dự đoán và thực tế là 10 - 15 phút, rất nhiều. Tôi sẽ xem mã nguồn marlin để tìm cách xử lý tăng tốc và giật khi in
BackSlash

Có lẽ bạn có thể kiểm tra lát3r và xem cách nó tính toán các tham số đó. Tôi nhớ nhận được một ước tính thời gian khi cắt.
FarO

@FarO Tôi sử dụng Dil3r và tôi chưa bao giờ thấy ước tính thời gian. Có thể tôi không tìm đúng nơi nhưng có rất nhiều người dùng yêu cầu tính năng đó qua web nên tôi e rằng không có cách nào để biết thời gian in trong Dil3r.
BackSlash

@BackSlash Tôi thường thấy nó trong Repetier ở cuối lát cắt trong nhật ký đầu ra. Tôi đoán đó là từ chính Repetier!
FarO

Câu trả lời:


5

Tôi đã thử nhìn vào phần sụn máy in để xem cài đặt Gia tốc ảnh hưởng đến chuyển động của máy như thế nào . Từ những gì tôi có thể nói, Gia tốc dường như được triển khai khác nhau tùy thuộc vào phần sụn tôi đã xem và cũng bị ảnh hưởng bởi các cài đặt được sử dụng trên máy in. Tôi không tìm kiếm gì thêm vì viết các quy tắc khác nhau cho mọi phần sụn khác nhau dường như quá nhiều rắc rối. Có lẽ ai đó biết nhiều hơn về điều này sẽ biết nếu hầu hết các phần mềm sử dụng cùng một phép tính.

Tôi nghi ngờ rằng cài đặt tăng tốc sẽ không tạo ra nhiều khác biệt so với thời gian in. Chúng dường như không tạo ra sự khác biệt trên các bản in nhỏ mà tôi đã thực hiện in với tốc độ chậm. Nếu bạn đang in các bản in lớn hơn ở tốc độ nhanh hơn có đường dẫn dài trong đó đầu phun có thời gian để tăng tốc và giảm tốc thì tôi nghi ngờ bạn sẽ nhận thấy sự khác biệt lớn hơn với thời gian.

Tôi đã thấy rằng lỗi lớn nhất giữa thời gian dự đoán và thời gian thực tế là thời gian máy dành cho việc xử lý các hướng dẫn. Khi in một mô hình có nhiều chuyển động ngắn cần gửi đến máy in và chúng cần được máy in xử lý và tính toán, tôi nhận thấy máy in sẽ tạm dừng trong một phần giây. Nó không đủ dài để thấy sự khác biệt trong các chuyển động của máy in, nhưng nó đủ đáng chú ý để nghe. Tôi nghi ngờ rằng trên các máy in rẻ hơn, điều này sẽ gây ra lỗi lớn hơn so với việc tăng tốc.

Nếu ai đó có thể tìm hiểu cách các cài đặt tăng tốc được tính toán bởi máy in và lệnh G-code nào có thể được sử dụng để đưa các cài đặt tăng tốc ra khỏi máy in, tôi sẽ thực sự quan tâm đến việc biết thêm về điều này.


Cảm ơn câu trả lời của bạn, tôi sẽ tiếp tục tìm kiếm. Cảm ơn đã chỉ cho tôi đi đúng hướng: Tôi có thể đọc mã nguồn Marlin và tìm kiếm các bộ phận điều khiển tăng tốc và giật, nó chắc chắn sẽ giúp ích, tôi đã không nghĩ về nó! Cảm ơn bạn!
BackSlash

3
"Tôi nghi ngờ rằng cài đặt tăng tốc sẽ không tạo ra nhiều khác biệt so với thời gian in." <- điều này không thể sai hơn. Gia tốc là yếu tố chi phối thời gian in bất cứ khi nào tỷ lệ giữa tốc độ in và kích thước chi tiết cao (nghĩa là cài đặt tốc độ nhanh hoặc chi tiết nhỏ hoặc cả hai). Vì vậy, việc tăng cài đặt tốc độ [tối đa] lên gấp 2 lần là không thể giảm được 5% thời gian in.
R .. GitHub DỪNG GIÚP ICE

5

Trước hết, có một số trình phân tích mã nguồn mở tuyệt vời được viết bằng JavaScript mà bạn có thể sử dụng trực tuyến hoặc đọc nguồn tới, tại https://www.gcodeanalyser.com/http://gcode.ws/ . Dự đoán của họ không hoàn toàn khớp với phần mềm máy in thực tế, nhưng họ thực hiện một công việc khá gần gũi và việc đọc chúng sẽ có nhiều thông tin.

Về cơ bản, câu chuyện đằng sau khả năng tăng tốc và giật là bạn không thể thay đổi tốc độ (tốc độ hoặc hướng) của đầu in ngay lập tức. Phải mất thời gian để tăng tốc và chậm lại. Gia tốc là tốc độ tối đa mà tại đó vận tốc của đầu in có thể thay đổi. Jerk là một cái gì đó của một sai lầm / hack, và là sự thay đổi vận tốc giả tức thời tối đa được phép tại giao điểm của hai đoạn / đường cong. Điểm giật là để tránh chuyển động khó khăn khi di chuyển dọc theo một đường cong được tạo thành từ nhiều phân đoạn bằng cách tăng tốc / giảm tốc ở mỗi góc nhỏ. Lưu ý rằng có hai bộ cài đặt cho cả tăng tốc và giật:

  • một giá trị tuyệt đối tối đa (chiều dài vectơ 3D) thường được thay đổi như một phần của mã để sử dụng các cấu hình gia tốc khác nhau cho di chuyển in so với di chuyển, tường so với thấm, v.v.

  • giá trị tuyệt đối trên mỗi trục (giá trị tuyệt đối 1D tiêu chuẩn) cho các giới hạn của máy, thường được đặt trong cài đặt của máy in hoặc cấu hình mã bắt đầu cho máy in của bạn và không bao giờ thay đổi.

Chuyển động bị hạn chế để luôn tôn trọng cả hai bộ cài đặt.

Firmware máy in sử dụng cài đặt tăng tốc và giật cùng với lookahead tại lệnh chuyển động sắp tới để quyết định làm thế nào để thực sự vận hành động cơ. Khi nó bắt đầu một chuyển động, nó phải tăng tốc lên đến vận tốc tối đa được cấu hình trong các ràng buộc gia tốc. Nó cũng phải bắt đầu chậm lại giữa chừng trừ khi nó biết chuyển động tiếp theo sẽ tiếp tục theo cùng một hướng; nó phải giảm bao nhiêu tùy thuộc vào sự khác biệt trong các vectơ chuyển động. Nếu chuyển động tiếp theo sẽ có cùng hướng, nó có thể tránh bị chậm lại bằng cách sử dụng trợ cấp giật để thực hiện thay đổi vận tốc "tức thời" ở góc. Chỉ khi bạn có chuyển động tuyến tính dài (liên quan đến tốc độ) hoặc gần như tuyến tính thì bạn mới thực sự đạt được tốc độ yêu cầu.

Vì vậy, để ước tính thời gian in, bạn cần mô hình hóa điều này. Theo dõi vận tốc đầu in trong khi xử lý / mô phỏng mã, và với mỗi lệnh chuyển động, hãy tính vận tốc theo hàm thời gian bằng cách sử dụng các giới hạn gia tốc (tăng tốc ở tốc độ tối đa mà chúng cho phép). Bạn cũng cần tìm ra vận tốc cuối cùng mà bạn muốn kết thúc chuyển động để có thể bắt đầu lệnh chuyển động tiếp theo, và một điểm để bắt đầu giảm tốc nếu cần thiết để đạt được điều đó.


Jerk là đạo hàm của gia tốc.
Trish

1
@trish: ngoại trừ khi nó không. Xem câu hỏi của tôi 3dprinting.stackexchange.com/questions/10369/ cấp .
R .. GitHub DỪNG GIÚP ICE
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.