+ Vi diều khiển Master : ch-ơng trình có nhiệm vụ nhận dữ liệu từ máy tính , sử lý và truyền 8byte dữ liệu cho từng vi điều khiển Slaver.
Chuơng trình chính : có nhiệm vụ khởi tạo các thông số ban dầu cho vi điều khiển , thực hiện kiểm tra xem có dữ liệu khơng , và gọi các ch-ơng trình con truyền reset hay tuyền dữ liệu cho các vi điều khiển Slaver.
MAIN: ; khoi tao cac Port MOV A,#0FFH MOV P0,A MOV P1,A MOV P2,A MOV P3,A
; dua cac cong ra cua 74HC573 len 1 MOV R1,#6
MOV A,#0F0H L_1: MOV P2,A
INC A DJNZ R1,L_1
; doc vao so luong VDK_SL cho phep lam viec MOV A,P3
ANL A,#30H SWAP A
MOV MT_STATUS,A ; hien thi LED
CLR LED_1 ; --- khoi tao cac ngat --
MOV IE,#85H ; cho phep cac ngat E0,E1 hoat dong SETB IT1 ; dat E1 hoat dong theo suon
SETB IT0
CLR RESET_ON ; RESET_ON tich cuc duong CLR DATA_ON ; DATA_ON tich cuc duong CLR CLK_REC ; cho phep nhan du lieu
CLR E_REC ; cho phep ngat nhan
; ----------- LOOP: CLR LED_1 KT_RESETON: JNB RESET_ON,KT_DATAON LCALL RESET KT_DATAON: JNB DATA_ON,LOOP ; --- co du lieu --- SETB LED_1 CLR LED_3 ORL P2,#0FH MOV P0,#0FFH ANL P2,#0F6H MOV A,P0 ORL A,#11111010B CJNE A,#11111010B,KT_RESETON SETB LED_3 SETB IE0
; --- bao san sang nhan du lieu --- CLR CLK_REC
CLR DATA_ON
CLR E_REC JMP LOOP
Đoạn ch-ơng trình nhận dữ liệu từ máy tính : đ-ợc thực hiện bằng ch-ơng trình ngắt tạo bởi máy tính , nó sẽ thực hiện việc nhận dữ liệu và thơng báo lại với ch-ơng trình chính (
main ) đó là khối dữ liệu dể Reset robot hay khối dữ liệu thực hiện diều khiển di chuyển các động cơ.
Đoạn ch-ơng trình truyền dữ liệu cho các vi diều khiển Slaver : đ-ợc ch-ơng trình chính gọi để truyền 8 byte dũ liệu cho các vi diều khiển Slaver. Ch-ơng trình này tạo ra ngắt ngồi cho các VĐK Slaver để truyền dũ liệu. Kết thúc ch-ơng trình nó sẽ thơng báo lại với ch-ơng trình chính là truyền có thành cơng hay khơng.
Ch-ơng trình cho Vi diều khiển Slaver : ( các vi điều khiển Slaver đều có chung một ch-ơng trình )
Đoạn ch-ơng trình chính : có nhiệm vụ khởi tạo các thơng số hoạt động của ch-ơng trình , là một vịng lặp vơ tận kiểm tra xem có dữ liệu khơng, khởi tạo các ch-ơng trình định thời thực hiện việc quay động cơ.
MAIN: ; CHUONG TRINH CHINH ; --- Khoi tao cac tham so ban dau MOV P1,#0FFH
MOV P3,#0FFH MOV P0,#0FFH MOV P2,#0FFH ; --- khoi tao cac gia tri ngat
MOV IE,#8BH ; Cho phep E0,T0,T1 SETB IT0 ; E0 ngat theo suon
MOV TMOD,#011H ; T0,T1 Dinh thoi che do 1 = 16 Bit MOV BUF_STEP,#0FFH
CLR TR0 ; dung dinh thoi CLR TR1 MOV PMW1_TIME,#10 CLR F_PMW1 CLR LED_1 CLR RESET_ON CLR RESETA_ON CLR RESETB_ON CLR DATA_ON
CLR E_REC ; cho phep nhan du lieu LOOP: ; --- Chuong trinh nen
; kiem tra dat co nhan du lieu
MOV P2,#11111110B ; LED_1 SANG
LCALL PMW_PRO1 JNB DATA_ON,LOOP ; co du lieu ? MOV 70H,78H MOV 71H,79H MOV 72H,7AH MOV 73H,7BH MOV 74H,7CH MOV 75H,7DH MOV 76H,7EH MOV 77H,7FH
; nap du lieu cho nut dieu khien tiep theo MOV A_STATUS,TT_A
ORL A_STATUS,#3FH ; lay gia tri status cua A MOV B_STATUS,TT_B
ORL B_STATUS,#3FH ; lay gia tri status cua B
ANL TT_A,#3FH ; ANL TT_B,#3FH MOV A,SB_A CJNE A,#00H,KHOITAO_A CLR RESETA_ON JMP TEST_B KHOITAO_A:
; khoi tao dinh thoi cho dong co A MOV BUF_A,TT_A ; BUF_a = R6 MOV TL0,#250
MOV TH0,TH_A ; dong co A bat dau quay SETB TR0 TEST_B: MOV A,SB_B CJNE A,#00H,KHOITAO_B CLR RESETB_ON JMP MOTOR_RUN KHOITAO_B:
; khoi tao dinh thoi cho dong co B MOV BUF_B,TT_B ; BUF_B = R7 MOV TL1,#250
MOV TH1,TH_B ; dong co B bat dau quay SETB TR1 MOTOR_RUN: CLR DATA_ON CLR CLK_REC JB RESETA_ON,WAIT JB RESETB_ON,WAIT CLR E_REC WAIT: JB TR0,PMW2 JB TR1,PMW2 JNB RESET_ON,LOOP CLR RESET_ON CLR RESETA_ON CLR RESETB_ON CLR E_REC
JMP LOOP ; Ket thuc vong lap chinh
JMP WAIT
Các ch-ơng trình định thời : có nhiệm vụ tạo ra những khoảng thời gian chính xác và gọi đến ch-ơng trình thực hiện quay động cơ t-ơng ứng. Khi quay hết số b-ớc sẽ tự động tắt định thời và thơng báo cho ch-ơng trình chính là thực hiện xong.
6.Lập trình điều khiển Ro bot MRM
Yêu cầu điều khiển Robot :
+ Robot MRM đ-ợc thiết kế để thực hiện gia công các bề mặt phức tạp nh- gia công biên dạng cánh máy bay , biên dạng khí động học ...
+ Trong điều giới hạn của đề tài Robot thực hiện gia công các biên dạng 2D nh- biên dạng Elip , Parabol ... , các bề mặt 3D nh- trụ Elip, trụ Parabol , biên dạng khí động học...
+ Các biên dạng gia cơng có thể đ-ợc vễ trên AutoCAD hoặc nhập vào ph-ơng trình biên dạng.
+ Ch-ơng trình điều khiển sẽ qua một số tính tốn trung gian điều khiển Robot chạy đúng quỹ đạo đ-ợc vẽ trên AutoCAD ( hay đ-ợc nhập vào ph-ơng trình ), Khi láp vật gia công và cho dao chạy ta sẽ gia cơng đ-ợc bề mặt mong muốn.
Quy trình thực hiện :
Việc thực hiện gia công sẽ chuyển các biên dạng cần gia cơng về biên dạng số hóa , đó là việc nội suy thơ biên dạng ra rất nhiều các điểm trung gian gần nhau. Sau đó sử dụng các ph-ơng trình động học ng-ợc của robot MRM để tính tốn ra các tọa độ suy rộng của robot , đó là các góc của các cánh tay robot. Dựa vào các thông số của bộ truyền động ta tính đ-ợc số b-ớc cần điều khiển t-ơng ứng.
+ Biên dạng gia công đ-ợc vẽ trên ch-ơng trình AutoCAD ,( biên dạng phải nằm trong miềm gia công của máy )
+ Sử dụng một ch-ơng trình viết bằng ObjectARX để chia nhỏ biên dạng ra các điểm liên tiếp nhau với khoảng cách cần chia , kết quả đ-ợc ghi ra một file dữ liệu . File dữ liệu là biên dạng số hóa của biên dạng cần gia cơng.
+ Dùng một ch-ơng trình viết trên Maple để tính tốn ra tọa độ suy rộng của robot. Ch-ơng trình này đọc dữ liệu từ file biên dạng số hóa lấy các tọa độ của từng nút cần đi qua và giải bằng các ph-ơng trình động học ng-ợc tạo ra kết quả là các tọa độ suy rộng. Các giá trị tọa độ suy rộng đ-ợc ghi vào một file tọa độ số hóa.
+ Để có đ-ợc số b-ớc điều khiển , việc tính tốn ra số b-ớc điều khiển t-ơng ứng có thể đ-ợc thực thi ngay trong ch-ơng trình điều khiển, nh-ng để giảm bớt khối l-ợng thực thi và tăng tốc độ diều khiển cho ch-ơng trình điều khiển ta sử dụng một ch-ơng trình riêng. Ch-ơng trình này đọc file tọa độ số hóa rịi tính ra số b-ớc điều khiển t-ơng ứng dựa vào thông số bộ truyền động. Kết quả đ-ợc ghi ra file số b-ớc số hóa.
+ Để thực hiện gia cơng một biên dạng ta reset robot về vị trí khơng của máy , mở file số b-ớc số hóa ứng với biên dạng cần gia cơng , cho thực thi ch-ơng trình cắt theo biên dạng. Ch-ơng trình sẽ đọc file số b-ớc và điều khiển robot lần l-ợt theo trình tự các nút điều khiển , việc điều khiển thực chất là truyền dữ liệu số b-ớc , vận tốc từng động cơ ra mạch ngoài để thực thi. Đợi mạch ngồi thực thi xong thì gửi tiếp dữ liệu điều khiển ở nút tiếp theo. Ch-ơng trình thực hiện cho đến hết file dữ liệu cũng chính là kết thúc biên dạng cần gia cơng.
Ch-ơng trình điều khiển :
Ch-ơng trình điều khiển đ-ợc viết bằng Visual C++ 6.0 của Microsoft. Ch-ơng trình có nhiệm vụ điều khiển Robot theo biên dạng xác định đông thời mô phỏng hoạt động của robot chạy theo biên dạng đấy. Việc mô phỏng hoạt động của robot là mô phỏng thời gian thực , có nghĩa là ở ngồi robot chạy nh- thế nào thi trên màn hình mơ phỏng cũng chạy t-ơng ứng.
Modul điều khiển có các chức năng :
+ Reset robot về vị trí khơng của máy : khi thực hiện ch-ơng trình sẽ truyền dữ liệu cho mạch ngồi thơng báo reset các động cơ nào, sau khi thực thi xong mạch ngồi sẽ thơng báo lại với ch-ơng trình là đã hồn thành và ta có thể thực thi các cơng việc tiếp theo. Chức năng reset có khả năng reset từng động cơ về các vị trí max hoặc min.
+ Điều khiển robot bằng tay : cho các khâu của robot cùng chuyển động, ta có thể đảo chiều các động cơ , cho phép động cơ chạy hoặc dừng, tăng giảm tốc độ chạy của dộng cơ. Ch-ơng trình đ-ợc kiểm tra liên tục bằng hàm định thời , nó sẽ kiểm tra xem mạch ngồi có sẵn sàng nhận dữ liệu khơng. Nếu ch-a sẵng sàng thì kết thúc và đợi đến khi hàm đinh thời gọi đến lần sau. Nếu mạch ngồi sẵn sàng , ch-ơng trình sẽ giao tiếp và truyền dữ liệu điều khiển ra ngoài. Việc giao tiếp đ-ợc thực hiện bằng hàm Tran() hàm này giao tiếp với mạch ngoài qua cổng song song sử dụng th- viện InpOut32.dll đ-ợc cung cấp miễn phí tại địa chỉ http://www.logix4u.net/parallelport1.htm. Th- viện này giúp ch-ơng trình có thể chạy và điều khiẻn đ-ợc mạch ngồi trên Win98/2000/XP.
Điều khiển robot theo biên dạng số hóa : ta mở file biên dạng số hóa cần gia cơng và cho thực thi ch-ơng trình . Chuơng trình sẽ tự động đọc file lấy dữ liệu của từng nút điều khiển và truyền ra mạch ngoài bằng hàm truyền Tran(). Ch-ong trình chạy liên tục, kiểm tra xem mạch ngoài thực hiện xong ch-a và truyền tiếp cho đến hết file dữ liệu thì dừng.
Kết Luận
Rơbốt tác hợp là một loại rơbốt có chuyển động rất linh hoạt, gia công đ-ợc các bề mặt biên dạng phức tạp. Về loại rôbốt này đang mở ra những triển vọng mới trong việc ứng dụng vào thực tế với việ gia công các biện dạng phức tạp mà các rôbốt thơng th-ờng khác khó có thể thực hiện đ-ợc, không những thế với chuyển động linh hoạt loại rơbốt này cịn có thể ứng dụng trong việc thực những chuyển động chu trình phức tạp. mà con ng-ời khó có thể thực hiện đ-ợc. Đó là những vấn đề khơng phải một sớm một chiều là có thể thực hiện đ-ợc. Tuy nhiên hy vọng trong t-ơng lai trong các lĩnh vực có áp dụng rơbốt thì trong các loại rơbốt đó có Rơbốt tác hợp – MRM (Menchanic of Relative Manipulation).
Tài liệu tham khảo
Sách :
1. Renate Kempf, Chris Frazier Ed. : OpenGL Reference Manual, Addison Wesley Developers Press 1996
2. Mason Woo, Jackie Neider, Tom Davis: OpenGL Programming Guide 2nd Ed., Addison Wesley Developers Press, 1997.
3. Tom McReynolds : Programming with OpenGL: Advanced Rendering, SIGGRAPH `96 Course
4. Frank Luna : Introduction to 3D Game Programming with DirectX 9.0, Wordware Publishing @ 2003
5. Kris Gray : Microsoft DirectX 9 Programmable Graphics Pipeline, MS Press 6. Peter Walsh : Advanced 3D Game Programming with DirectX 9.0,Wordware Publishing @ 2003
7. Francis S. Hill : Computer Graphics, Macmillan Publishing, 1990 8. Marshall Brain, Lance Lovette : Developing Professional Application In Window98 and NT Using MFC, Publish 1999 by Prentice Hall P T R
9. George Omura : Mastering AutoCAD 2000, Printer in the United States of America
10. Phạm Công Ngô, Phạm Ngọc Nam, Phạm Tuấn L-ợng. : Tự học lập trình Visual C++6.0 từ cơ bản đến nâng cao, NXBTK 2002
11. Nguyễn Thiện Phúc : Robot Công Nghiệp, NXBKHKT 2002 Phần mềm: 1. AutoCAD 2002, 2004 2. ObjectARX 2000, 2002 3. 3DSMax v6.0 4. MatLab v6.5 5. Maple v9.0 6. DirectX SDK v9.0c 7. Visual C++ v6.0 & .net