# Phần mềm CAD, CAM, CNC > Phần mềm CNC control >  Điều khiển máy CNC với LinuxCNC (EMC2)

## CKD

*Điều khiển máy CNC với LinuxCNC (hay còn gọi là EMC2)*

Thấy có nhiều chủ đề về LinuxCNC, hoặc là EMC2 cũng là nó.

Tổng hợp các link đến những chủ đề đang bàn về LinuxCNC
- http://forum.cncprovn.com/threads/11...cnc-Machinekit
- http://forum.cncprovn.com/threads/45...may-tinh-nhung
- http://forum.cncprovn.com/threads/92...-nhung-mini-PC
- http://forum.cncprovn.com/threads/71...n-control-card
- http://forum.cncprovn.com/threads/6767-BOB-cho-linuxcnc

Trước đây rất rất lâu, khi mới tập tọe tìm hiểu về các chương trình điều khiển cnc (cnc controller) chạy được trên máy tính. Thì có khá nhiều lựa chọn, từ những chương trình điều khiển CNC chạy trên DOS, rồi trên Win thì có cả trình điều khiển chạy trên Linux OS là EMC2. Hầu hết các chương trình này đều đã nghịch qua trong một thời gian ngắn, đủ để biết các chương trình này cho mình vọc gì trong đó. Sau đó thì... chiến với Mach3, lý do là vì nó cho phép mình vọc thêm tính năng với VBscript. LinuxCNC cũng có nhiều cái để nghịch, nhưng nổi khổ là nó chạy trên Linux, mà mình thì không biết nhiều về Linux nên khi vọc rất là cực khổ. Thời gian đó, google nó không có giỏi như bây giờ  :Big Grin: 

Mãi tận bây giờ mới lôi ra vọc tiếp.
1. đọc nhanh tài liệu về linuxCNC thì thấy khá rỏ ràng và dễ hiểu, các bạn có thể tham khảo ở đây --> http://linuxcnc.org/docs/2.7/html/
2. kết nối với MESA thì.. ở đây, gọi là Mesa HostMot2 drive --> http://linuxcnc.org/docs/2.7/html/drivers/hostmot2.html
3. về kernel thì xem ở đây, cái nào tương thích với cái nào --> http://linuxcnc.org/docs/2.7/html/ge...-linuxcnc.html
4. cứ mò tiếp, bí chổ nào thì lại vào đây hỏi hoặc mò tài liệu  :Big Grin: 

Hê hê, cái background này đẹp nè  :Big Grin: 


itx AsRock H61M-VG3 + ethernet MESA 7i92 by NhatSon


Mới có clone cái image Linux vào SSD thôi, khởi động có tí trục trặc, chắc do vấn đề tương thích driver mạng. Để check lại rồi làm tiếp chủ đề vậy.

----------

Bongmayquathem, cuong, Ga con, Gamo, khoa.address, sieunhim, Tuanlm

----------


## Bongmayquathem

Cũng giống anh CKD, em đang nghiên cứu LinuxCNC. Có điều em dùng bản thuần từ trang chủ qua cổng LPT chứ không dùng bản mod của Tormach. Về nền tảng Linux thì cũng may mắn là e đựoc tiếp xúc từ năm 2010 đến giờ nên cũng thuận tiện.

----------


## nhatson

> Cũng giống anh CKD, em đang nghiên cứu LinuxCNC. Có điều em dùng bản thuần từ trang chủ qua cổng LPT chứ không dùng bản mod của Tormach. Về nền tảng Linux thì cũng may mắn là e đựoc tiếp xúc từ năm 2010 đến giờ nên cũng thuận tiện.


 nếu dùng linuxcnc 2.6 trở lên thì dùng bản mod của tormach rồi ah, trước khi bỏ mach3 qua linuxcnc hãng đã thuê chiên gia hàng TOP của nước Mỹ để viết lại Trajectory Planner của linuxcnc, trước bản 2.6 CV mode của linuxcnc tệ hơn MACH3
giao diện của tormach là pathpilot có thể mod lại chạy cổng LPT mà vậy thì lại làm giảm tính hiệu suất
Team ban đầu của tormach có 6 người mất 3 4 năm để hoàn thiện giao diện Pathpilot, hiện nay đã lên tới 60 người và bắt đầu ptriển cho những dòng máy cao cấp hơn, cuối năm nay hãng sẽ ra máy chạy servo và em nghĩ là fullcolsed loop, spindle closed loop để chạy rigid tapping




sau khi hd tốt, tormach đã bắt tay mesa làm phần cứng cho riêng mình

----------

CKD

----------


## Bongmayquathem

Dạ cơ bản cũng chưa có điều kiện đầu tư phần cứng để chạy với tormach nên dùng tạm lpt. Hihi. Hiện tại e đang đung bản 2.7

----------


## nhatson

> Dạ cơ bản cũng chưa có điều kiện đầu tư phần cứng để chạy với tormach nên dùng tạm lpt. Hihi. Hiện tại e đang đung bản 2.7


linuxcnc có dự án mở chạy ethernet này cũng hay
http://pekka.eu/cnc/

----------

Bongmayquathem

----------


## CKD

Chương trình buổi tối được tiếp nối với chương trình buổi sáng.
Vọc linuxCNC và thử nghiệm trên con rùa này  :Smile: 



Và có thể trên những con tốc độ cao sau này.
Từ từ sẽ show lên hết ạ.

----------

Bongmayquathem, nhatson

----------


## CKD

*Tạm kết sau hơn tháng rưỡi vọc LinuxCNC*

LinuxCNC hay EMC2 là chương trình điều khiển CNC chạy trên nền linux. Và vì chạy trên nền linux và thuộc nhóm phần mềm mã nguồn mở nên nó có nhiều cái hay cũng như dở tùy theo quan điểm của mỗi người.
Theo quan điểm cá nhân thì có thể tạm có vài ý kiến sau
Hay
Mã nguồn mở nên được rất nhiều tổ chức lẫn cá nhân cùng nhau phát triển. Nên nó có khá nhiều cái hay, lạ và nhất là thường xuyên được cập nhật.Cũng vì ý trên + với chạy trên Linux nên nó có thể làm việc trên nhiều mẫu PC hay nói cách khác là thiết bị khác nhau. Từ máy tính cá nhân cho đến những máy tính nhúng hết sức gọn nhẹ & rẻ (tiêu chí mua mới) như RPi, OrangePi, Tinker, BeagleBone cũng như rất rất nhiều máy tính siêu nhỏ khác v.v.Đồng thời linuxcnc cũng được cộng đồng phát triển thành controller cho rất nhiều mục đích khác nhau, không chỉ cho cnc mà còn robot cùng nhiều mục đích khác.Người dùng hoàn toàn có thể chỉnh sửa thoải mái linuxcnc thành cái của riêng mình.
Dở
Vì chạy trên linux nên có nhiều cái rất mới để anh em phải tìm hiểu. Khá hay nhưng rất xa lạ với anh em dùng Windowns, giống như quay lại thời kỳ đồ đá vậy. Ai đã dùng DOS thì ít bở ngở hơn  :Big Grin: Giao diện rất không thân thiện nếu ai đã dùng quen Mach3 hay PlanetCNCGiao diện thân thiện và đầy đủ hơn như Gmocappy hay ngầu hơn là PathPilot thì đòi hỏi cấu hình PC mạnh hơn, nên cũng khá kén chọn.

Tạm vậy, sau hơn tháng vọc và sử dụng thực tế LinuxCNC (trước đây nhiều năm đã vọc, nhưng không chạy thực tế) thì thấy vẫn chưa quen được nếu so với Mach3  :Big Grin: 
Cái được nhiều nhất là học và hiểu được rất nhiều thứ về Linux.
Nếu so sánh với nền tảng được nhiều người lựa chọn hiện nay là Mach3, và nhất là Mach3 giao tiếp qua LPT thì LinuxCNC tỏ ra có nhiều ưu điểm ở chổ ổn định. Mach3 qua USB thì bị delay, mach4 thì mình chưa dùng nên miễn so sánh.

Để có thể vọc được nhiều hơn nữa với LinuxCNC thì có nhiều việc phải làm.
- Nghiên cứu nhiều hơn về Linux và đặc biệt là kernel. Đã đọc nhiều tài liệu mà thấy chung chung lắm, có quá nhiều khái niệm cần phải hiểu. Làm được mấy cái này thì mới đa dạng hóa được máy tính, tăng hiệu năng làm việc. Ví dụ như việc bung ISO + cài đặt + nâng cấp để chạy được LinuxCNC uspace (giao tiếp qua ethernet) đã gặp trở ngại không ít. Tuy đã vượt qua nhưng chưa được hài lòng.
- Cần nhiều thiết bị để thử và trải nghiệm. Dự là sẽ quay lại thử với RPi3 và cnc control via GPIO hoặc ethernet xem sao  :Big Grin:  lý do là vì có RPi2 và RPi3, RPi3 thì cấu hình tốt hơn RPi2 nhiều.
- Tạo GUI riêng để thuận lợi hơn cho thói quen dùng máy với Mach3 lâu nay  :Big Grin: . Sau khi tìm hiểu thì thấy mô hình giao diện dựa trên Glade + Py là hiệu quả. Glade thì có chương trình edit khá Ok, kết quả giao diện giống xlm, đặc biệt được hổ trợ bằng thư viện nên việc vẽ vời các button sẽ nhẹ nhàng hơn, Py thì khỏi phải bàn rồi.

Note:
- LinuxCNC hiện chỉ dành cho những bạn thật sự đam mê. Không dành cho những bạn muốn mỳ ăn liền. Với gói mỳ ăn liền thì các bạn nên đầu tư dạng full. Tức đã đóng gói, lắp đặt, cài đặt sẵn, chỉ cắm điện là dùng.
- LinuxCNC phù hợp nhất với những bạn thích sự ổn định, bền bỉ và tránh những rủi ro lâu nay mắc phải trên Mach3. Thích chọc ngoái, thêm mắm dặm muối vào controller  :Big Grin:  mà mấy cái controller china không cho làm.

----------


## nhatson

vòng tròn lẩn quẩn roài ah, nếu đã xài máy íu cơ hội làm giao điện ngon đẹp là khó rồi

----------


## CKD

> vòng tròn lẩn quẩn roài ah, nếu đã xài máy íu cơ hội làm giao điện ngon đẹp là khó rồi


Chưa có điều kiện kiểm chứng. Nhưng theo những gì có khã năng hiểu, thấy & hỏi được thì một số controller của tụi chị na nó chạy core linux. Nó có dùng linuxcnc hay không thì chưa rỏ được.
Một số thông tin hành lang là chị na có một team khủng chuyên ngồi xào nấu mấy món này rồi chuyển lại cho các doanh nghiệp nhỏ. Việc chị có team xào nấu tầm này thì chỉ thuộc dạng muổi. Dạo lòng vòng chợ nổi thì thấy rao bán đủ các loại source đã nấu, đừng nói là mấy nền tảng open này, mấy cái thuộc dạng bí mật doanh nghiệp cũng thấy có  :Big Grin: .

Qua đó thì thấy đẻ ra một con đường là giao diện qua một kiểu tạm gọi là HMI, tức giao tiếp chỉ dừng ở mức độ đơn giản nhất có thể. Hay nói cách khác là dạng cmd + param. Với kiểu này thì hiệu ứng màu mè nếu có nó nằm ở lớp khác không lệ thuộc vào CPU. Còn nếu không có hiệu ứng thì nó cũng chỉ là cái ảnh tỉnh, chỉ có số liệu là thay đổi nên cũng không mất nhiều tài nguyên. Cái ý HMI này là thấy trên vài controller cho laser lẫn cnc. Giao tiếp có thể nhận biết là RS232 hoặc 422 hoặc 485.
Mấy cái contrller của chị thường thấy chạy con ARM làm cpu, FPGA để giao tiếp,.. tất nhiên phải có RAM + MMC để lưu. Một số cái nó không dùng MMC (một dạng SSD hay HDD) mà lại chơi nguyên cái thẻ nhớ dấu bên trong. Chưa có rỗi để check cái thẻ xem ngoài việc dùng làm nơi chứa G-code thì nó còn chứa cái gì nữa. Biết đâu cả cái OS+soft đều trong đó.
Một số có port RS232 bên trong. Theo một số tìm hiểu thì một số cái nó cho phép kết nối RS232 với CPU để chạy SSH. Cái này cũng mới biết nên chưa có thử  :Big Grin: 

Mặt khác, bản linux dùng làm nền cho EMC2 nó chứa quá nhiều thứ dư thừa không liên quan đến CNC. Trong đó là rất nhiều hardware module (driver + lib) để tương thích nhiều cấu hình máy, không ít trong số đó phải được nạp sẳn trong quá trình boot. Rất nhiều thư viện cho rất nhiều phần mềm mà cnc không cần dùng đến.
Việc tìm hiểu linux kernel là muốn loại bỏ hết tất cả những gì không dùng đến. Việc này có thể dẫn đến việc phiên bản sẽ không thể tương thích với hệ thống khác, nhưng nó giúp giảm tải cho hệ thống đang dùng. Trò này thấy mấy anh khoai tây cũng vọc nhiều, phần chung thì cũng giống mình, dân cơ khí éo rành i tờ nên vọc nó khó nhằn. Có trao đổi mà không hiểu rỏ lý do tại sao phải thế này, tại sao phải thế kia  :Smile: 

Còn nếu muốn đu theo mấy controller kiểu mới, màn hình chạm to đùng, mọi chuyển chỉ cần chọt chọt với rất nhiều tiện ích cho sẵn thì... cứ PC cấu hình cao mà chiến  :Big Grin:  Khi đó thì ưu điểm lại nằm ở chổ éo cần cái lờ pờ tờ. À, mà Mach3/4 cũng có giải pháp. Nhưng Mach3 lỗi thời và bị chính thức khai tử để chuyển lên Mach4 nhiều tính năng mới hơn. Mà Mach4 thì mình không có nên không chém gió được.

----------

QuyND

----------


## CKD

*LinuxCNC auto login - tự động đăng nhập vào LinuxCNC*

Để có thể sử dụng được LinuxCNC thì nếu bắt đầu từ con số 0, ta phải trải qua khá nhiều bước để có thể dùng.
Mấy hôm nay vọc LinuxCNC nhiều, có những thao tác được lặp đi, lặp lại, cài tới cài lui.. có cái quên có cái nhớ. Nên cái nào nhớ được thì chia sẽ, quên rồi thì khi nào làm lại sẽ tính  :Big Grin: 

1. Việc đầu tiên nhất phải nói đến là có 1 cái PC, cấu hình thì theo khuyến cáo cũng không cần cao. Hầu như máy nào hiện giờ đều chạy được. Tùy theo nhu cầu giao tiếp thiết bị thế nào mà cần phải có phần cứng riêng.
--> Link yêu cầu cấu hình từ linuxcnc.org http://linuxcnc.org/docs/2.7/html/ge...uirements.html
VD:
- Muốn dùng cổng LPT thì máy phải có cổng LPT. Tốt nhất là LPT onboard, vì Linux nó hổ trợ driver khó khăn hơn Windows. Nên cái gì cũng onboard hết thì có khã năng dùng dễ hơn.
- Muốn dùng MESA PCI thì máy phải có khe PCI
- Muốn dùng MESA ethernet thì máy phải có cổng LAN RJ45 (cổng cáp mạng), muốn đồng thời kết nối internet thì phải có thêm LAN thứ 2, hoặc wifi. Mà wifi thì linuxcnc cũng kén chọn lắm. Đang tìm cách cập nhật cho linuxcnc có thể dùng được với USB wifi rẻ tiền. Có tìm được hướng dẫn nhưng chưa thành công nên việc này để sau  :Big Grin: 
- Ngoài ra linuxcnc còn có thể kết nối với tay game để làm handle v.v...

2. Có PC rồi thì tới phần cài đặt
--> link dowload file iso để có thể cài đặt http://www.linuxcnc.org/linuxcnc-2.7-wheezy.iso
--> link hướng dẫn của linuxcnc http://linuxcnc.org/docs/2.7/html/ge...-linuxcnc.html

Từ file ISO có nhiều cách khác nhau để cài, với những bạn dùng windows thì mình nghĩ có 2 cách
- Ghi file ISO lên đĩa DVD rồi cài
- Ghi file ISO lên USB rồi cài. Dùng công cụ Universal USB Installer – Easy as 1 2 3. Link -> https://www.pendrivelinux.com/univer...easy-as-1-2-3/ các bạn chịu khó xem rồi mạnh dạn thử. Không hư được ổ USB đâu.

Sau khi có DVD hoặc USB boot rồi thì cứ cài theo từng bước thôi.. cái này mình lười nên nếu cần thì hướng dẫn sau  :Big Grin: 

3. Tùy biến và cấu hình LinuxCNC trước khi dùng
Hì hì.. khi cài xong thì hầu hết nó là mặc định. Nên để đơn giản cho quá trình sử dụng thì... mình có mấy trò sau:

Trò đầu tiên, như tiêu đề bên trên, tự động đăng nhập.
Linux khi khởi động xong, để làm việc cần phải đăng nhập. Khá là phiền phức. Để tự động đăng nhập trên LinuxCNC hoặc Debian + XFCE + lightdm thì làm như sau

- 1. Mở terminal
- 2. Chạy lệnh: *sudo mousepad /etc/lightdm/lightdm.conf*
--- sudo là chạy lệnh dưới quyền root. Đòi hỏi bạn phải nhập password mà bạn đã nhập lúc cài đặt
--- mousepad (hoặc nano cũng Ok) là chạy trình biên tập file
- 3. Dùng phím mủi tên, tìm xuống đến dòng *#autologin-user=*, xóa dấu *#* đầu dòng, thêm hoặc sửa thành tên của bạn (đã làm lúc cài đặt) vào sau dấu =. VD *autologin-user=ckd*
- 4. Dùng phím mủi tên, tìm xuống đến dòng *#autologin-user-timeout=0*, xóa dấu *#* đầu dòng
- 5. Dùng phím mủi tên, tìm xuống đến dòng *#autologin-session=UNIMPLEMENTED*, xóa dấu *#* đầu dòng, sửa thành *autologin-session=xfce*
- 6. Save lại (nếu dùng nano thì Ctrl+X.. rồi làm từ từ theo hướng dẫn)

Khởi động máy lại sẽ thấy hiệu quả  :Big Grin: 

Trò kế là chia sẻ thư mục với SAMBA service, cho phép copy/paste file từ xa qua ethernet. Tất nhiên PC phải được nối mạng  :Big Grin:

----------

hoangson, nhatson, solero

----------


## CKD

Báo cáo!
Latency test quá tốt trên máy P4 3G





* LinuxCNC nguyên bản bum ra từ file ISO. Đã update & dist-upgrade. Cài thêm driver cho usb wireless

----------


## nhatson

> Báo cáo!
> Latency test quá tốt trên máy P4 3G
> 
> 
> 
> 
> 
> * LinuxCNC nguyên bản bum ra từ file ISO. Đã update & dist-upgrade. Cài thêm driver cho usb wireless


dùng card fpga thì latency 20000nS 30000nS là good roài, đây là con số thông thường có thể đạt được
servo period nếu dùng step/dir thì 1000hz là đủ ~1.000.000nS
nếu full closed loop hệ thống chất lượng hiện nay là 5000hz ~ 200.000nS

----------

