Tìm hoài không biết post chỗ nào nếu sai chỗ nhờ Admin move giùm, thank.
Tình hình thời gian này trời mưa quá không làm máy được với lại cũng rảnh rỗi nên nghiên cứu linuxcnc thử.
Đầu tiên là tính thử với board BeagleBone Black ghóp tiền hoài vẫn không đủ (do rảnh rỗi nhiều) mà ngân sách không được lấy (buồn). sẵn nhà còn board Raspberry PI2 nên lấy ra ngâm cứu.
Board Raspberry Pi 2
OS Raspbian (Jessie).
kernel RT-PREEMPT realtime kernel
install link : Debian Jessie on arm7 (RPi2).
http://www.machinekit.io/docs/gettin...ling-packages/
Driver Step : RKD514L-A
Step 5 phase Quinstep.
GPIO direct step/dir driver.
Pin 29 GPIO5 -> X step
Pin 31 GPIO6 -> X Dir
Pin 32 GPIO12 -> Y Step
Pin 33 GPIO13 -> Y Dir
Pin 35 GPIO19 -> Z Step
Pin 37 GPIO26 -> Z dir
Do chân ra của Raspberry là 3v3 nên chạy chưa ngon lắm để vài hôm nữa làm cái board đệm test tiếp.
Lần sửa cuối bởi katum573, ngày 22-05-2017 lúc 10:29:19 PM.
hay quá. Bác có thể hướng dẫn setup trên linuxcnc đựoc ko ạ. Tại e thấy lúc đầu vào linuxcnc nó chỉ cho chọn vài loại card nó hỗ trợ thôi, thông dụng là LPT.
Do mình nghiên cứu là chính và dùng những board thông dụng với linh kiện có sẵn tại VN nên PLUTO hay mesa mình không tính dùng vì phải phụ thuộc phần cứng của họ PIC32 cũng có board cho Raspberry nhưng mình lại không biết về PIC32 với lại khi PIC32 cũng xuất tín hiệu điều khiển qua GPIO thôi. mình tính làm board đệm vì GPIO chỉ ra 3v3 mà driver lại cần 5v trên machinekit có 1 số board đệm cho BeagleBone có schematic mình cũng nghiên cứu vài cái thấy cũng hay lắm http://blog.machinekit.io/p/hardware-capes.html
linuxcnc mình thấy driver hỗ trợ cho các board cũng không nhiều lắm mình chỉ nghiên cứu trên 2 board là BeagleBone và Raspberry thôi. để mai nếu rảnh thì mình sẽ hướng làm về con Raspberry này.
mesa thì card cũng ko rẻ
pluto có thể dùng với bất cứ fpga nào, bác làm 1 bài hd cái linuxcnc tren rpi 3 được ko, em tèo ở cổ chảy RT kenel, sau khi cài thi ko thể khởi động được RP2 giờ ko dễ để mua và chậm nữa
https://github.com/tinkercnc/spi-fpga-driver
Lần sửa cuối bởi nhatson, ngày 23-05-2017 lúc 10:14:03 PM.
fpga thì mình chua nghiên cứu bao giờ, rpi 3 nếu bác cài kernel giống trên machinekit hướng dẫn thì thay dòng bcm2709-rpi-2-b.dtb thành bcm2710-rpi-3-b.dtb thử xem có chạy được không, do mình không có RP3 để test.
sudo -s
apt-get install linux-image-rpi2-rt
cd /boot
echo kernel=$(ls kernel_rt*.img) >> config.txt
echo device_tree=dtbs_rt/bcm2709-rpi-2-b.dtb >> config.txt
sudo -s
apt-get install linux-image-rpi2-rt
cd /boot
echo kernel=$(ls kernel_rt*.img) >> config.txt
echo device_tree=dtbs_rt/bcm2710-rpi-3-b.dtb >> config.txt
nếu bác không sửa file config.txt được trên RPI thì có thể sửa trên windows cũng đựoc \boot\config.txt đến dòng cuối cùng bác thấy dòng này device_tree=dtbs_rt/bcm2709-rpi-2-b.dtb thì đổi thành device_tree=dtbs_rt/bcm2710-rpi-3-b.dtb
Lần sửa cuối bởi katum573, ngày 24-05-2017 lúc 09:44:51 AM.
Cụ katum573 có vẻ rành về lĩnh nhỉ.
Hy vọng được chia sẻ nhiều hơn về linux cnc. Thấy nó có nhiều cái hay, nhất là có thể can thiệp vào core xử lý để vận hành với rất nhiều mô hình máy khác nhau. Mà mình thì mù tịt linux
DT: O7837277II - CKD's Youtube Channel - Facebook - Tổng hợp chủ đề
17 ds 3, Thạnh Mỹ Lợi, Q2, tp.HCM
Mình thì không rành về linuxcnc lắm vì chỉ mới nghiên cứu có 2 tuần thui, nhưng linux OS thì cũng tạm dùng. bác đừng nghĩ linux nó khó nên không dám thử vì trên phương diện người dùng giao diện của nó bây giờ cũng tương đương với windows thui, nó chỉ khó ở các dòng lệnh mà các dòng lệnh này người dùng bình thường ít khi dùng.
Để can thiệp vào core của linux nó phức tạp lắm vì phải hiểu về quy tắc hoạt động của hệ điều hành, cách quản lý các tác vụ của HĐH, quản lý tài nguyên của phần cứng nữa .v.v. cái này rất nhức đầu, nên cần cả 1 tập thể mới làm được.
Linuxcnc thì chỉ là 1 ứng dụng người dùng bình thường nó không liên quan gì tới core của linux, trong linuxcnc có 1 lớp driver gọi là HAL driver( Hardware Abstraction Layer). lớp này sẽ giao tiếp với realtime kernel (mình chỉ nhớ được 2 loại Xenomai và rt-preempt) để truy xuất phần cứng, trong linux mọi truy xuất phần cứng đều phải qua kernel không được phép truy cập trực tiếp như trong windows và hành động này phải được cấp quyền bởi root (cái này thì linuxcnc tự lo rồi). vậy để vận hành nhiều mô hình khác nhau chạy trên linuxcnc nếu phần cứng do bác thiết kế thì bác phải viết 2 driver 1 cho kernel của linux và 1 là HAL driver cho linuxcnc.
Sorry các bác tính làm hướng dẫn config linuxcnc nhưng do mới nghiên cứu với lại tài liệu từ nhiều nguồn nên không thể gom lại được, để mình test cách config đơn giản nhất rồi làm hướng dẫn sau, chắc cũng mất vài ngày.
Mình mới đo xung ra của con raspberry xong, xung mầu xanh là từ GPIO của RPI, xung mầu vàng là từ con 74LS244, các bác xem thử giùm mình liệu với xung này jitter có xảy ra không.
config chạy là 400 xung 1mm vi bước là 4 quay video lúc đang chạy file. mình test trên motor thì thấy chạy ngon hơn khi chưa có con 74LS244.
Lần sửa cuối bởi nhatson, ngày 25-05-2017 lúc 07:23:09 PM.
Hướng dẫn cài linuxcnc trên Raspberry PI 2
Cài Rasbian trên RPI2 thì các bác có thể tìm trên mạng trang chủ của Rasberry.
https://www.raspberrypi.org/document...ages/README.md
Cài Machinekit thì theo link sau :
http://www.machinekit.io/docs/gettin...ling-packages/
Config server chứa các gói của Machinekit cho apt. (màu xanh là dòng lệnh các bác có thể copy paste trực tiếp vào cửa sổ console)
mở console ta nhập vào :
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 43DDF224
sudo sh -c \
"echo 'deb http://deb.machinekit.io/debian raspbian main' > \
/etc/apt/sources.list.d/machinekit.list"
(chú ý : 3 dòng trên là 1 dòng lệnh)
sudo apt-get update
Cài realtime kernel cho RPI2 (RT-PREEMPT realtime kernel).
sudo apt-get update (có thể bỏ qua bước này vì trên đã chạy rồi)
update bootloader cho RPI
sudo apt-get install -y raspberrypi-bootloader
install kernel.
sudo -s
apt-get install linux-image-rpi2-rt
cd /boot echo kernel=$(ls kernel_rt*.img) >> config.txt
RPI2 thì chạy dòng này
echo device_tree=dtbs_rt/bcm2709-rpi-2-b.dtb >> config.txt
RPI3
echo device_tree=dtbs_rt/bcm2710-rpi-3-b.dtb >> config.txt
(chưa test thử bác nào thử rồi thì cho ý kiến).
echo dwc_otg.fiq_enable=0 dwc_otg.fiq_fsm_enable=0 dwc_otg.nak_holdoff=0 >> cmdline.txt
Thoát ra khỏi root
exit
install machinekit vì ta dùng kernel rt-preempt nên cài gói này machinekit-rt-preempt.
sudo apt-get install machinekit-rt-preempt machinekit-dev
install manual.
sudo apt-get install machinekit-manual-pages (gói này mình cài không được và cũng không quan trọng lắm).
khởi động lại hệ thống để chạy trên kernel rt.
Do mình mới nghiên cứu linuxcnc chỉ khoảng 10 ngày thôi, với lại mình không phải là dân cơ khí hoặc chuyên về cnc nên hiểu biết còn hạn chế mình biết cái gì thì share cái đó nên các bác thông cảm và góp ý thêm nhé.
Mình chỉ nghiên cứu và có mottor step nên chỉ nói về step.
Để tạo config riêng cho hệ thống của mình ta có nhiều cách tạo như sau.
- Machinekit → cài đặt những hệ thống được cài đặt sẵn (vi dụ: như sim chứa những hệ thống chạy ảo, by_interface chứa những cài đặt sãn của LPT, mesa pluto.., ARM thì chứa config của những board đệm cho BeagleBone..v..v).
- Machinekit Pncconf wizard → cài đặt config cho servo.
- Machinekit Stepconf wizard → cài đặt config cho step.
Đầu tiên ta vào Machinekit Stepconf wizard.
nhấn start ra bảng sau.
mấy dòng trên chác các bác cũng hiểu rồi. nhấn tiếp forward
Ở đây ta có :
Machine name : tên máy cần đặt (VD: mình đặt là katum-mill thì thư mục chứa config và tiêu đề của máy đều có tên này).
Configuration directory : đường dẫn thư mục chứa file config máy. thông thường là /home/<tên người dùng (mặc định là pi)>/machinekit/config/<tên máy>, sau này khi sửa file để config lại máy ta lại vào thư mục này.
Axis configuration : chọn số trục mà máy hỗ trợ.
Reset default machine unit : chọn hệ inch hay mm.
Driver type : chon kiểu driver cho step, nếu không được hỗ trợ thì chọn Other.
Step time : thời gian xung step kích chạy tính băng ns .
Step Space : thời gian nghỉ giữa 2 xung tính bằng ns .
Các bác nhìn hình dưới thời gian ON là Step time OFF là step Space
Direction hold : thời gian để step đảo chiều quay.
Direction setup : thời gian để step đảo chiều quay.
nhìn hình dưới ngay chỗ gạch đỏ DIR input, 10s sau khi kết thúc xung CW là Direction hold, 10s sau là direction setup.
one parport, Two parport : chọn 1 hay 2 cổng LPT (mặc định wizard chỉ hỗ trợ LPT nếu dùng cho board khác ta sẽ sửa file config sau).
Base Period Maimum Jitter : mình vẫn chưa hiểu rõ ý nghĩa lắm, nói nôm na hệ thống sẽ dựa trên thông số này để tính tốc độ phát xung cho step.(thông số này chỉ cao nhât là 50000ns không phù hợp với RPI ta sẽ chỉnh lại trong file sau).
nhấn tiếp forward.
Cài đặt cổng LPT ta cứ để như vậy sẽ sửa lại trong file config sau nhấn forward.
Cài thông số cho trục X :
Motor steps per revolution : số xung để step quay hết 1 vòng ở full step.
Driver Microstepping : vi bước của driver (đặt vi bước bao nhiêu thì đặt vào đây).
Pulley teeth : tỉ số của hộp số hay pulley .
Leadscrew pitch : bước răng visme.
Maximum Velocity và Maximum Acceleration : 2 thông số này các bác nào rành thì cho ý kiến giùm nhé (tìm ở đâu) trong này chỉ nói mình test rồi nhập vào.
Home location : đặt vị trí home.
Table travel : khoảng cách di chuyển của trục X.
Time to accelerate to max speed và Distance to accelerate to max speed : 2 thông số này phụ thuộc vào gia tốc và vận tốc được cài đặt bên trên.
Pulse rate at max speed : tốc độ phát xung tối đa.
Axis Scale : số bước để di chuyển 1mm.
Cài đặt cho trục Y và Z cũng giống như trên.
Cài đặt cho spindle.
Nhấn foward → chọn Done xuất hiện bảng thông báo có lưu file không chọn yes.
Xong phần cài đặt bây giờ tới phần sửa file để chạy trên raspberry.
Lần sửa cuối bởi katum573, ngày 31-05-2017 lúc 11:14:06 PM.
Xong phần cài đặt bây giờ tới phần sửa file để chạy trên raspberry.
Sau khi cài đặt xong ta mở file manager vào thư mục /home/pi/machinekit/configs/<tên máy vừa đặt>
ở đây có 6 file trở lên
custom.hal những phần cài đặt thêm vào và được load sau khi giao diện đã load xong sẽ được cài đặt trong file này, custom_postgui.hal là file cài đặt giao diện thêm vào.
Ở đây ta chỉ quan tâm tới 2 file là <tên máy vừa đặt>.in và <tên máy vừa đặt>.hal, file .ini là file config máy và file .hal là file cài đặt driver và cấu hình máy. để sửa những file này mình đề nghị dùng chương trình geany vì nó dễ theo dõi các mục hơn, click chuột phải vào file và chọn geany.
Các bác tham khảo config file .ini ở đây http://linuxcnc.org/docs/html/config/ini-config.html
Ở đây mình chỉ nói phần thay đổi thôi còn các thông số khác các bác tham khảo link trên.
[RS274NGC]
PARAMETER_FILE = machinekit.var
các bác thêm như sau
[RS274NGC]
PARAMETER_FILE = machinekit.var
USER_M_PATH = ../../nc_files/mfiles
SUBROUTINE_PATH = /home/pi/machinekit/nc_files/ngcgui_lib:/home/pi/machinekit/nc_files/gcmc_lib:/home/pi/machinekit/nc_files/ngcgui_lib/utilitysubs
phần này là nơi chứa các file thư viện hỗ trợ GCODE.
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 56000
SERVO_PERIOD = 1000000
BASE_PERIOD là thời gian phát xung step xung này phụ thuộc vào tốc độ đáp ứng của CPU để lấy được giá trị này ta vào cnc → latency test,
mở latency test lên ta để nó chạy khoảng hơn 5 phút cho đến khi giá trị trong vùng khoanh đỏ ổn định là được, trong lúc test ta mở nhiều chương trình lên để CPU chạy nhiều tác vụ thì giá trị này mới chính xác được. ở đây ta thu được giá trị 128125 ta làm tròn là 130000 hoặc nhập luôn giá trị đó vào BASE_PERIOD cũng được. sửa thành :
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 130000
SERVO_PERIOD = 1000000
[TRAJ]
AXES = 4
COORDINATES = X Y Z A
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 2.50
MAX_VELOCITY = 10.00
thành
[TRAJ]
AXES = 4
COORDINATES = X Y Z A
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 2.50
MAX_VELOCITY = 10.00
# thêm 2 dòng này
NO_FORCE_HOMING = 1
POSITION_FILE = katum-cnc-pos.txt
(tên file gì cũng được sau khi chạy máy sẽ tạo ra file này).
Các mục AXIS_0 AXIS_1 và AXIS_2 là cấu hình 3 trục xyz.
[AXIS_0]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 23.75
MAX_ACCELERATION = 750.0
STEPGEN_MAXACCEL = 937.5
SCALE = 400.0
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = -0.001
MAX_LIMIT = 250.0
HOME_OFFSET = 0.0
thêm HOME_IGNORE_LIMITS = yes vào đoạn cuối của AXIS_0
nếu MIN_LIMIT = -0.001 có giá trị dấu trừ đằng trước thì sửa nó về 0
[AXIS_0]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 23.75
MAX_ACCELERATION = 750.0
STEPGEN_MAXACCEL = 937.5
SCALE = 400.0
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = 0.0
MAX_LIMIT = 250.0
HOME_OFFSET = 0.0
HOME_IGNORE_LIMITS = yes
2 trục kia cấu hình như trên riêng trục z thì MIN_LIMIT phải có giá trị là - ,
[AXIS_2]
TYPE = LINEAR
HOME = 0.0
HOME_IGNORE_LIMITS = yes
MAX_VELOCITY = 23.75
MAX_ACCELERATION = 750.0
STEPGEN_MAXACCEL = 937.5
SCALE = 400.0
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = -200.0
MAX_LIMIT = 0.0
HOME_OFFSET = 0.0
2 thông số này MIN_LIMIT = 0.0 MAX_LIMIT = 250.0 ở các trục là giá trị giới hạn của các trục nhé.
lưu lại file.ini
giờ sửa file .hal
tìm tới dòng này khoảng dòng 7 hoặc 8
loadrt hal_parport cfg="0 out"
setp parport.0.reset-time 5000
loadrt stepgen step_type=0,0,0
dòng loadrt hal_parport cfg="0 out" là báo cho HAL load driver khi mặc định là dùng cho LPT hal_parport là tên của driver ta thay tên driver của RPI vào đây cfg=”0 out” là cổng xuất tín hiệu.
đầu tiên ta phải xác định chân xuất tín hiệu cho 3 trục, mỗi trục có 2 chân step và dir như vậy ta cần 6 chân ra cho driver step.
RPI 2 và 3 quy định thứ tự 26 chân ra như sau ta ghi ra giấy cho dễ tính.
// Raspberry2/3:
rpi2_gpios[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 21, 23, 24, 25, 26, 27 };
rpi2_pins[] = {3, 5, 7, 29, 31, 26, 24, 21, 19, 23, 32, 33, 8, 10, 36, 11, 12, 35, 38, 15, 40, 16, 18, 22, 37, 13 };
để xuất tín hiệu ra chân nào ta cần khai báo chân đó là 1. mình chọn 6 chân ra là 29, 31, 32, 33, 35, 37. ta làm như sau.
kiếm 1 cái máy tính có thể nhập được 32 số nhị phân vào.
ở đây chân 13 là bit cao nhất chân số 3 là bit thấp nhất 01000000100000110000011000
ta thu được là 16911384
ta đồi loadrt hal_parport cfg="0 out" thành
loadrt hal_gpio dir=16911384 (hal_gpio là file driver của GPIO RPI). dir=16911384 khai báo chân xuất của GPIO.
dòng setp parport.0.reset-time 5000 dòng này ta xoá bỏ.
loadrt stepgen step_type=0,0,0 dòng này là kiểu xuất xung cho step theo kiểu step/dir ta để nguyên.
sau khi sửa ta được
loadrt hal_gpio dir=16911384
loadrt stepgen step_type=0,0,0
tìm trong file tất cả các chữ parport.0 thay bằng hal_gpio
kiếm dòng này addf parport.0.reset base-thread xoá bỏ.
kéo xuồng tới đoạn này ta đặt chân xuất cho cá trục.
net estop-out => parport.0.pin-01-out
net xstep => parport.0.pin-02-out
net xdir => parport.0.pin-03-out
net ystep => parport.0.pin-04-out
net ydir => parport.0.pin-05-out
net zstep => parport.0.pin-06-out
net zdir => parport.0.pin-07-out
net astep => parport.0.pin-08-out
net adir => parport.0.pin-09-out
ở đây mình đặt chân 29 là xstep, 31 là xdir, 32 là ystep, 33 là ydir, 35 là zstep, 37 là zdir sửa thành.
#net estop-out => hal_gpio.pin-01-out
net xstep => hal_gpio.pin-29-out
net xdir => hal_gpio.pin-31-out
net ystep => hal_gpio.pin-32-out
net ydir => hal_gpio.pin-33-out
net zstep => hal_gpio.pin-35-out
net zdir => hal_gpio.pin-37-out
#net astep => hal_gpio.pin-08-out
#net adir => hal_gpio.pin-09-out
lưu file lại và test thử.
link dưới là file mình làm rồi các bác down về nghiên cứu tiếp
https://drive.google.com/file/d/0B4E...ew?usp=sharing
Lót dép ngồi hóng phần tiếp theo. Mấy phần trước em đọc thuộc luôn rồi. Kaka, thanks bác rất nhiều ạ
Mới lướt qua thấy hấp dẫn đấy, chắc cũng mần 1 em PI về ngâm chơi
em cái trên RPI3 có 2 vấn đề
vấn đề 1
khi cài tới lệnh
"echo 'deb http://deb.machinekit.io/debian raspbian main' > \ /etc/apt/sources.list.d/machinekit.list"
nó báo là no such file or dictonary vậy có vấn đề gi ko?
lệnh echo sau cũng bị tương tự
vấn đề 2 là sau khi làm tất cả các bước , khởi động lại thì nó dừng ở màn hình 7 màu
Bác sai ở đoạn này "echo 'deb http://deb.machinekit.io/debian raspbian main' > \ /etc/apt/sources.list.d/machinekit.list"
Đúng thì nó phải như vầy copy 3 dòng sau và paste vào cùng 1 dòng lệnh mới chạy được. do thư mục đó là thư mục hệ thống phải cần root mới chạy được sudo là lệnh chuyển qua root.
sudo sh -c \
"echo 'deb http://deb.machinekit.io/debian raspbian main' > \
/etc/apt/sources.list.d/machinekit.list"
nếu vẫn lỗi thì chạy lệnh như dòng sau .
sudo sh -c "echo 'deb http://deb.machinekit.io/debian raspbian main' > /etc/apt/sources.list.d/machinekit.list"
bác lấy thẻ nhớ ra vào windows mở file config.txt đến cuối file có 2 dòng như sau
kernel=kernel_rt-4.4.4-rt9-v7+.img
device_tree=dtbs_rt/bcm2710-rpi-3-b.dtb
xóa 2 dòng này đi rồi lưu lại, bỏ thẻ nhớ vào RPI rối khởi động lại.
khởi động xong rối thì làm lại từ bước bị lỗi tới hết.
khi dòng đó bị lỗi thì bác chưa cài được gì đâu.
Lần sửa cuối bởi katum573, ngày 31-05-2017 lúc 11:15:59 PM.
để em thử lại
Lần sửa cuối bởi nhatson, ngày 01-06-2017 lúc 10:10:40 AM. Lý do: sai
Bác chạy 1 dòng lệnh là như vậy nhé.
sudo sh -c "echo 'deb http://deb.machinekit.io/debian raspbian main' > /etc/apt/sources.list.d/machinekit.list"
Bác copy dòng trên rồi mở console lên ngay tại con trỏ nhấp nháy click phải chuột và paste vào.
nếu vẫn không được bác chạy lệnh bên dưới rồi cho mình 1 tấm hình xem nó hiện ra cái gì rồi tính tiếp
ls /etc/apt
có gì bác add zalo mình cho nhanh. số đt : o913164755
Lần sửa cuối bởi katum573, ngày 01-06-2017 lúc 10:58:00 AM.
tối em mới thử được, thử xong em báo cáo ah