PDA

View Full Version : Thắc mắc thuật toán điều khiển vận tốc máy CNC khi thực hiện nhiều câu lệnh liên tiếp



banhmibt123
10-05-2018, 02:31:21 PM
Chào các bác
Khi em viết 2 lệnh G_code liên tiếp để máy CNC di chuyển đầu dao từ điểm A đến B, rồi từ B đến C thì lúc đầu dao đến điểm B thì vận tốc các trục có phải bằng 0 hay không?
Nếu vậy thì có nghĩa là sau khi thực hiện xong một lệnh thì máy sẽ đứng lại rồi mới chạy tiếp, nhưng em thấy máy thực tế chạy các câu lệnh liên tiếp nhau mà tốc độ F lúc nào cũng gần như không đổi. Vậy thì thuật toán nào dùng để điều khiển như vậy? Cám ơn các bác

CKD
10-05-2018, 04:08:38 PM
Vấn đê này có nhiều cách giải quyết. Trên thực tế thì cũng có lúc máy chạy đúng như thế, tức sau mỗi lệnh thì máy dừng lại (vận tốc các trục = 0) rồi mới chạy tiếp. Nhưng cũng có lúc máy chạy liên tục vào không dừng lại khi chuyển lệnh.

Việc dừng lại, chạy liên tục và vận tốc thay đổi thế nào khi kết thúc một lệnh và bắt đầu lệnh kế tiếp nó phụ thuộc vào nhiều yếu tố.
- Vận tốc/gia tốc máy
- Dung sai cho phép khi nội suy lệnh
- Tốc độ nội suy của controller
- Chế độ vận hành máy.

nhatson
10-05-2018, 06:01:29 PM
em nghĩ cụ có thể google với cụm từ này

trajectory planner

đây là 1video clip nói về nâng cấp trajectory planner cho linuxcnc

https://www.youtube.com/watch?v=412N5A-N8Fc

anhcos
10-05-2018, 07:41:55 PM
Cái video này rất nâng cao, mình mới xem mà sắp té xỉu.
Nhưng có cái keyword là ổn rồi, lúc nào cần sẽ mò pdf nhanh hơn clip.

goldsea
10-05-2018, 08:26:18 PM
Cái video này rất nâng cao, mình mới xem mà sắp té xỉu.
Nhưng có cái keyword là ổn rồi, lúc nào cần sẽ mò pdf nhanh hơn clip.

Quan trọng là sau khi đến điểm bác chỉ nó có làm j nữa ko? Còn không thì chỉ là đường quỹ dạo chạy dao thôi! Cái này bác hỏi chắc chắn có mong muốn j đó khi nó dừng lại !!!

nhatson
10-05-2018, 09:34:58 PM
Chào các bác
Khi em viết 2 lệnh G_code liên tiếp để máy CNC di chuyển đầu dao từ điểm A đến B, rồi từ B đến C thì lúc đầu dao đến điểm B thì vận tốc các trục có phải bằng 0 hay không?
Nếu vậy thì có nghĩa là sau khi thực hiện xong một lệnh thì máy sẽ đứng lại rồi mới chạy tiếp, nhưng em thấy máy thực tế chạy các câu lệnh liên tiếp nhau mà tốc độ F lúc nào cũng gần như không đổi. Vậy thì thuật toán nào dùng để điều khiển như vậy? Cám ơn các bác

thêm 1 keyword là cnc look ahead algorithm

chạy g64 nó cũng có những vấn đề của nó

https://www.youtube.com/watch?v=64mdq_61McQ

nhatson
11-05-2018, 12:05:33 AM
thêm chút tài liệu

http://lbms03.cityu.edu.hk/theses/c_ftt/mphil-meem-b23405430f.pdf

dungvu.129
11-05-2018, 12:40:26 PM
Chào các bác
Khi em viết 2 lệnh G_code liên tiếp để máy CNC di chuyển đầu dao từ điểm A đến B, rồi từ B đến C thì lúc đầu dao đến điểm B thì vận tốc các trục có phải bằng 0 hay không?
Nếu vậy thì có nghĩa là sau khi thực hiện xong một lệnh thì máy sẽ đứng lại rồi mới chạy tiếp, nhưng em thấy máy thực tế chạy các câu lệnh liên tiếp nhau mà tốc độ F lúc nào cũng gần như không đổi. Vậy thì thuật toán nào dùng để điều khiển như vậy? Cám ơn các bác

Nếu đơn giản chỉ là lệnh di chuyển thì trục X và Y (hoặc Z) sẽ dừng rất nhanh, sau đó di chuyển đến điểm tiếp theo.
Còn nếu di chuyển đến toạ độ nào đó để làm việc gì đó thì nó sẽ dừng, rồi mới di chuyển tiếp.

Ví dụ:
X0Y0
X10Y10
M6T2 (Dừng lại thay dao)
X20Y20

Hoặc
X0Y0
X10Y10
G04P5000 (dừng chờ 5s)
X20Y20

Hoặc
X0Y0Z10
X10Y10
Z-2 (Dừng lại, trục Z đi xuống toạ độ -2)
X20Y20

Gamo
11-05-2018, 12:57:37 PM
Nếu đơn giản chỉ là lệnh di chuyển thì trục X và Y (hoặc Z) sẽ dừng rất nhanh, sau đó di chuyển đến điểm tiếp theo.
Còn nếu di chuyển đến toạ độ nào đó để làm việc gì đó thì nó sẽ dừng, rồi mới di chuyển tiếp.

Ví dụ:
X0Y0
X10Y10


Thế sau khi tới X0Y0, nó có dừng lại trước khi đi tới X10Y10 ko bác?

Ga con
11-05-2018, 01:23:13 PM
thêm 1 keyword là cnc look ahead algorithm

chạy g64 nó cũng có những vấn đề của nó

https://www.youtube.com/watch?v=64mdq_61McQ

Hệ điều khiển máy càng mạnh look ahead càng nhiều.

CV mode trong Mach3 hiện nay như mặc định lookahead khoảng 200 lệnh, những máy đời mới hỗ trợ HSM mạnh, support chạy toàn G1 thì thường thấy cỡ trên 1000-2000 dòng lệnh.

Thanks.

dungvu.129
11-05-2018, 02:00:21 PM
Thế sau khi tới X0Y0, nó có dừng lại trước khi đi tới X10Y10 ko bác?

Bác cứ đùa em. Trong ví dụ của em thì X0Y0 là điểm đầu (gốc).

Gamo
11-05-2018, 02:43:20 PM
Hehe, trước khi bác chạy chương trình, tọa độ là X100Y100 chẳng hạn, thì nó phải chạy về X0Y0 trước chứ nhỉ?