1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Ứng dụng lập trình cho các robot trong hệ thống MiniCIM pdf

17 548 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Ứng dụng lập trình cho các robot trong hệ thống MiniCIM
Định dạng
Số trang 17
Dung lượng 114,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

ng d ng l p trình cho các robot trong h th ngMiniCIM Trong phần này sẽ nêu ra hai chương trình lập trình một ứng dụng cho robot, một chương trình cho robot làm việc với máy tiện CNC và m

Trang 1

ng d ng l p trình cho các robot trong h th ng

MiniCIM

Trong phần này sẽ nêu ra hai chương trình lập trình một ứng dụng cho robot, một chương trình cho robot làm việc với máy tiện CNC và một chương trình cho robot làm việc với máy khoan/phay CNC trong hệ thống MiniCIM

Chương trình robot thực hiện các chức năng cấp phôi lên các Pallet, cấp phôi cho máy tiện và chờ gia công xong để đưa chi tiết đã gia công xong ra khỏi máy tiện.

Giải thích tóm tắt nhiệm vụ của robot trong chương trình:

Đây là chương trình cho robot thực hiện trong hệ thống MiniCIM, robot sẽ thực hiện một số chức năng trong dây chuyền chế tạo và lắp ráp hộp giảm tốc dạng mô phỏng Hệ thống được điều khiển bằng máy tính trung tâm với phầm mềm CimSoft Các tín hiệu từ phần mềm CimSoft và từ máy tiện CNC là các tín hiệu đầu vào quyết định thời điểm và trình tự thực hiện các công việc của robot Đầu tiên, khi tại trạm thứ nhất có pallet dừng lại, robot sẽ lần lượt cấp phôi cho hai pallet (phôi của nắp hộp giảm tốc và của thân hộp giảm tốc) Tiếp đến khi pallet thức hai dừng lại tại trạm 2 robot sẽ gắp phôi (phôi thân hộp) từ pallet cấp cho máy tiện đồng thời báo tín hiệu cho máy tiện CNC hoạt động Trong lúc đó robot sẽ quay lại trạm 1 để cấp tiếp các bánh răng cho pallet thức nhất khi này đã được kẹp tại trạm 1 Sau cùng, khi máy tiện CNC tiện xong thân hộp giảm tốc báo ra tín hiệu hoàn thành robot sẽ quay lại trạm 2 để gắp chi tiết ra cho lên pallet để di chuyển chi tiết đến vị trí tiếp theo trong dây chuyền

Chương trình:

//Mảng “KHO_CHUA_NAP” chứa vị trí các điểm cho load nắp

// Mảng “KHO_CHUA_THAN” chứa vị trí các điểm cho load thân

// Mảng “KHO_CHUA_BR1” chứa vị trí các điểm cho load nắp BR1

// Mảng “KHO_CHUA_BR2” chứa vị trí các điểm cho load nắp BR2

//Mảng “LATHE_THAN” chứa vị trí các điểm tại trạm tiện

// Danh sách vào ra

// OUTPUTS INPUTS

// 01.RESET ASRS POSITIONER 01 ASRS PALLET READY

// 02 RESET LATHE POSITIONER 02 LATHE PALLET READY // 03 LATHE DONE 03 LATHE START

// 04 OPEN CHUCK

// MAIN PROGRAM

CimData$ = "INIT" //INITIALIZE ETHERNET DATA VARIABLE

DataWaiting = 0 //INITIALIZE ETHERNET DATA WAITING FLAG

ProgComplete = 0 //INITIALIZE ETHERNET PALLET DONE FLAG1

ProgComplete2 = 0 //INITIALIZE ETHERNET PALLET DONE FLAG2

MANG_NAP = 1

MANG_THAN = 1

MANG_BR1 = 1

MANG_BR2 = 1

LOADED = 0 //SET LATHE LOADED FLAG TO 0 (NOT LOADED)

Trang 2

//Khai báo các mảng điểm

POINT KHO_CHUA_NAP[10]

POINT KHO_CHUA_THAN[10]

POINT KHO_CHUA_BR1[10]

POINT KHO_CHUA_BR2[10]

POINT LATHE_THAN[20]

XONGBR = 0

J=1 //Biến chọn Pallet để load chương trình cho đúng thứ tự

//Nếu J=1 thì load nắp hộp cho Pallet 01

//Nếu J=2 thì load thân hộp cho Pallet 02

//Nếu J=3 thì load các bánh răng cho Pallet 01

PRINTLN "SET OUTPUTS TO ZERO"

FOR K = 1 to 16

WRITEO K,0

NEXT

SPEED 200 //INITIAL ROBOT CONDITIONS

ACCEL 50

RELEASE

PMOVE KHO_CHUA_THAN[5] // Chờ trước trạm 1

//ETHERNET DECISION LOOP FOR WHICH ROUTINE TO EXECUTE

ETHERLOOP:

IF DataWaiting = 1 then

IF CimData$ = "NOPART,1" AND MANG_NAP<4 AND J=1 THEN

PRINTLN "MESSAGE = ",CimData$

DataWaiting = 0 // RESET ETHERNET DATA FLAG

CALL LOAD_NAP //Gọi chương trình con load nắp

PRINTLN "MESSAGE = ",CimData$

GOTO ETHERLOOP

ELSE IF CimData$ = "NOPART,1" AND MANG_THAN<4 AND J=2 THEN PRINTLN "MESSAGE = ",CimData$

DataWaiting = 0 // RESET ETHERNET DATA FLAG

CALL LOAD_THAN // Gọi chương trình load thân

GOTO ETHERLOOP

ELSE IF CimData$ = "NOPART,1" AND MANG_BR1<4 AND J=3 THEN PRINTLN "MESSAGE = ",CimData$

DataWaiting = 0 // RESET ETHERNET DATA FLAG

CALL LOAD_BR // Gọi chương trình load các bánh răng

GOTO ETHERLOOP

ELSE IF CimData$ = "NOPART,1" AND J=4 THEN

PRINTLN "MESSAGE = ",CimData$

DataWaiting = 0 // RESET ETHERNET DATA FLAG

CALL DIQUA // Gọi chương trình con DIQUA

GOTO ETHERLOOP

ELSE IF CimData$ = "11-003,2" THEN

PRINTLN "MESSAGE = ",CimData$

Trang 3

DataWaiting = 0 // RESET ETHERNET DATA FLAG

CALL THAN_ILATHE // Gọi chương trình con cấp phôi

GOTO ETHERLOOP

ELSE

PRINTLN "MESSAGE FAILED =",CimData$

DataWaiting = 0 // RESET ETHERNET DATA FLAG

GOTO ETHERLOOP

ENDIF

ELSE IF INP(3) = 1 AND LOADED=1 AND XONGBR>0 THEN

// RECEIVED LATHE DONE SIGNAL

CALL THAN_OLATHE // Gọi chương trình con THAN_OLATHE

ENDIF

GOTO ETHERLOOP

END

SUB LOAD_NAP

PRINTLN "LOADING NAP HOP GIAM TOC"

SPEED 200

PMOVE KHO_CHUA_NAP[5]

RETRY:

PMOVE KHO_CHUA_NAP[2]

SPEED 80

GRWIDTH 820

PMOVE KHO_CHUA_NAP[1]

GRASP

ZMOVE 300

ZTLMOVE -1000

SPEED 150

DIST=MEASURE()

PRINTLN "PART MEASURES = ",DIST

IF DIST < 600 THEN

RELEASE

MANG_NAP=MANG_NAP+1

IF MANG_NAP=5 THEN

PMOVE <HOME>

MANG_NAP=1

ENDIF

BRANCH RETRY:

ENDIF

//PMOVE KHO_CHUA_NAP[5]

SPEED 200

PMOVE KHO_CHUA_NAP[6]

PMOVE KHO_CHUA_NAP[8]

SPEED 50

PMOVE KHO_CHUA_NAP[7]

RELEASE

SPEED 200

Trang 4

PMOVE KHO_CHUA_NAP[8]

ProgComplete = 1 // TURN ON ETHERNET PALLET DONE FLAG

PMOVE KHO_CHUA_NAP[6]

PMOVE KHO_CHUA_NAP[5]

J=2 //Pallet tiếp theo là load thân

MANG_NAP=MANG_NAP+1

DELAY 100

RETURN

SUB LOAD_THAN

PRINTLN "LOADING THAN HOP GIAM TOC"

SPEED 200

PMOVE KHO_CHUA_THAN[5]

RETRY1:

PMOVE KHO_CHUA_THAN[2]

SPEED 80

GRWIDTH 820

PMOVE KHO_CHUA_THAN[1]

GRASP

ZMOVE 300

ZTLMOVE -1000

SPEED 150

DIST=MEASURE()

PRINTLN "PART MEASURES = ",DIST

IF DIST < 600 THEN

RELEASE

MANG_THAN=MANG_THAN+1

IF MANG_THAN=5 THEN

PMOVE <HOME>

MANG_THAN=1

ENDIF

BRANCH RETRY1:

ENDIF

//PMOVE KHO_CHUA_THAN[5]

SPEED 200

PMOVE KHO_CHUA_THAN[6]

PMOVE KHO_CHUA_THAN[8]

SPEED 50

PMOVE KHO_CHUA_THAN[7]

RELEASE

SPEED 200

PMOVE KHO_CHUA_THAN[8]

ProgComplete = 1 // TURN ON ETHERNET PALLET DONE FLAG

//PMOVE KHO_CHUA_THAN[6] // Wait at Conveyor

PMOVE LATHE_THAN[1]

J=3 //Pallet tiếp theo là gắp bánh răng

MANG_THAN=MANG_THAN+1

DELAY 100

Trang 5

SUB LOAD_BR

PRINTLN "LOADING CAC BANHRANG CHO HOP GIAM TOC"

//Cấp bánh răng thứ hai lên pallet

SPEED 200

PMOVE LATHE_THAN[1]

PMOVE KHO_CHUA_BR2[5]

RETRY2:

PMOVE KHO_CHUA_BR2[2]

SPEED 80

GRWIDTH 150

PMOVE KHO_CHUA_BR2[1]

GRASP

ZMOVE 300

ZTLMOVE -1000

SPEED 150

DIST=MEASURE()

PRINTLN "PART MEASURES = ",DIST

IF DIST < 10 THEN

RELEASE

MANG_BR2=MANG_BR2+1

IF MANG_BR2=5 THEN

PMOVE <HOME>

MANG_BR2=1

ENDIF

BRANCH RETRY2:

ENDIF

SPEED 150

PMOVE KHO_CHUA_BR2[5]

SPEED 200

PMOVE KHO_CHUA_BR2[6]

PMOVE KHO_CHUA_BR2[8]

SPEED 60

PMOVE KHO_CHUA_BR2[9]

SPEED 20

PMOVE KHO_CHUA_BR2[7]

RELEASE

SPEED 200

PMOVE KHO_CHUA_BR2[8]

PMOVE KHO_CHUA_BR2[6]

// Cấp bánh răng thứ nhất lên Pallet

PMOVE KHO_CHUA_BR1[5]

RETRY3:

PMOVE KHO_CHUA_BR1[2]

SPEED 80

Trang 6

GRWIDTH 150

PMOVE KHO_CHUA_BR1[1]

GRASP

ZMOVE 300

ZTLMOVE -1000

SPEED 150

DIST=MEASURE()

PRINTLN "PART MEASURES = ",DIST

IF DIST < 10 THEN

RELEASE

MANG_BR1=MANG_BR1+1

IF MANG_BR1=5 THEN

PMOVE <HOME>

MANG_BR1=1

ENDIF

BRANCH RETRY3:

ENDIF

PMOVE KHO_CHUA_BR1[5]

SPEED 200

PMOVE KHO_CHUA_BR1[6]

PMOVE KHO_CHUA_BR1[8]

SPEED 60

PMOVE KHO_CHUA_BR1[9]

SPEED 20

PMOVE KHO_CHUA_BR1[7]

RELEASE

SPEED 100

PMOVE KHO_CHUA_BR1[8]

SPEED 200

IF XONGBR>0 THEN

ProgComplete = 1

ENDIF

PMOVE KHO_CHUA_BR1[6]

J=4 //Pallet tiếp theo sẽ không làm gì mà để đi qua MANG_BR1=MANG_BR1+1

MANG_BR2=MANG_BR2+1

DELAY 100

IF XONGBR = 0 THEN

PMOVE LATHE_THAN[4]

ELSE

PMOVE KHO_CHUA_BR1[5]

ENDIF

XONGBR=XONGBR+1

RETURN

// Chương trình con đưa thân vào máy tiện để gia công

Trang 7

SUB THAN_ILATHE

PRINTLN "LOADING THAN_LATHE"

SPEED 200

RELEASE

PMOVE LATHE_THAN[1]

PMOVE LATHE_THAN[9]

SPEED 100

PMOVE LATHE_THAN[8]

GRASP

PMOVE LATHE_THAN[9]

SPEED 200

PMOVE LATHE_THAN[1]

PMOVE LATHE_THAN[4]

WRITEO 4,1

PMOVE LATHE_THAN[6]

SPEED 15

PMOVE LATHE_THAN[7]

DELAY 100

WRITEO 4,0

DELAY 100

RELEASE

SPEED 80

PMOVE LATHE_THAN[6]

SPEED 150

PMOVE LATHE_THAN[4]

LOADED=1 //Báo là đã có chi tiết vào tiện trong máy WRITEO 3,1 // TURN ON START LATHE SIGNAL

DELAY 200

WRITEO 3,0

IF XONGBR=0 THEN

TMOVE LATHE_THAN[19]

TMOVE KHO_CHUA_BR1[5]

ELSE

WAITI 3,0

ENDIF

RETURN

// Chương trình con đưa thân ra khỏi máy tiện sau khi đã gia công xong

SUB THAN_OLATHE

WAITI 3,1

PRINTLN "UNLOADING LATHE"

WRITEO 3,0 // TURN OFF START LATHE SIGNAL

SPEED 150

PMOVE LATHE_THAN[6]

SPEED 80

PMOVE LATHE_THAN[14]

GRASP

DELAY 100

Trang 8

WRITEO 4,1

SPEED 50

PMOVE LATHE_THAN[15]

SPEED 150

PMOVE LATHE_THAN[4]

SPEED 200

PMOVE LATHE_THAN[1]

PMOVE LATHE_THAN[17]

IF XONGBR=1 THEN

ProgComplete = 1

ENDIF

SPEED 60

PMOVE LATHE_THAN[16]

RELEASE

SPEED 150

PMOVE LATHE_THAN[17]

SPEED 200

PMOVE LATHE_THAN[1]

ProgComplete2 = 1 // TURN ON ETHERNET PALLET DONE FLAG

PMOVE KHO_CHUA_BR2[5]

LOADED=0 // Chi tiết đã được đưa ra khỏi máy tiện

DELAY 100

RETURN

SUB DIQUA

DELAY 100 ProgComplete = 1 // TURN ON ETHERNET PALLET DONE FLAG

J=1 DELAY 200 RETURN

Chương trình robot thực hiện các chức năng lấy phôi từ các Pallet, cấp phôi cho máy phay/khoan và chờ gia công xong để đưa chi tiết đã gia công xong ra khỏi máyphay/khoan cũng như thực hiện các nhiệm vụ lắp ráp.

Giải thích tóm tắt nhiệm vụ của robot trong chương trình:

Đây là chương trình cho robot thực hiện trong hệ thống MiniCIM, robot sẽ thực hiện một số chức năng trong dây chuyền chế tạo và lắp ráp hộp giảm tốc dạng mô phỏng Hệ thống được điều khiển bằng máy tính trung tâm với phầm mềm CimSoft Các tín hiệu từ phần mềm CimSoft và từ máy phay CNC tương ứng là các tín hiệu đầu vào quyết định thời điểm và trình tự thực hiện các công việc của robot Robot sẽ lần lượt thực hiện các công việc sau: Đầu tiên, khi tại trạm thứ 3 có pallet dừng lại, robot sẽ thực hiện việc gắp nắp hộp từ pallet vào trạm định vị, xác định chính xác vị trí của nắp rồi đưa vào máy phay để gia công các lỗ, tiếp đến robot gắp thân hộp vào trạm định vị rồi đưa lên trạm lắp ráp, và cuối cùng là gắp các bánh răng và thực hiện các thao tác lắp ghép hộp giảm tốc hoàn chỉnh

Trang 9

Chương trình :

// I/O List

// Outputs Inputs

// 01 Reset Positioner Station 01 Positioner Up

// 02 Start Mill 02 Mill Status

// 03 Vise Open = On / Closed = Off

// Main Program

CimData$ = "INIT" //INITIALIZE ETHERNET DATA VARIABLE

DataWaiting = 0 //INITIALIZE ETHERNET DATA WAITING FLAG

ProgComplete = 0 //INITIALIZE ETHERNET PALLET DONE FLAG1 POINT LAP_GHEP[30]

POINT TRAM_DINH_VI[20]

POINT MO_TO[20]

WRITEO 1,0

WRITEO 2,0

WRITEO 3,0

SPEED 200

ACCEL 50

RELEASE

VONG_LAP = 1 ///Số chu trình đã chạy xong

BIENCHON = 1 // Đưa nắp hộp từ Pallet vào máy phay CNC

//Biến chọn = 2 thì đưa thân hộp từ Pallet 02 vào trạm tìm vị trí lỗ để đưa lên trạm lắp

//Biến chọn =3 thì lấy các bánh răng từ Pallet 01 để lắp vào hộp

//Biến chọn =1 được đặt trong chương trình lắp Bánh răng

// Biến chọn =2 được đặt trong chương trình cấp nắp cho máy phay

// Biến chọn =3 được đặt trong chương trình đưa thân vào trạm định vị

PMOVE <HOME>

WRITEO 3,1

PMOVE LAP_GHEP[1]

ETHERLOOP:

IF DataWaiting = 1 then

IF CimData$ = "UNLOAD" AND BIENCHON = 1 THEN

DataWaiting = 0 // RESET ETHERNET DATA FLAG

CALL UNLOAD_NAP

PRINTLN "MESSAGE = ",CimData$

branch ETHERLOOP:

ELSE IF CimData$ = "UNLOAD" AND BIENCHON = 2 THEN

DataWaiting = 0 // RESET ETHERNET DATA FLAG

CALL UNLOAD_THAN

PRINTLN "MESSAGE = ",CimData$

branch ETHERLOOP:

Trang 10

ELSE IF CimData$ = "UNLOAD" AND BIENCHON = 3 THEN DataWaiting = 0 // RESET ETHERNET DATA FLAG CALL UNLOAD_BR_VIT

PRINTLN "MESSAGE = ",CimData$

branch ETHERLOOP:

ELSE

PRINTLN "MESSAGE FAILED =",CimData$

DataWaiting = 0 // RESET ETHERNET DATA FLAG ENDIF

branch ETHERLOOP:

ENDIF

Branch Etherloop:

//Các chương trình con

// -//

SUB UNLOAD_NAP

RELEASE

SPEED 200

PMOVE TRAM_DINH_VI[4]

PMOVE TRAM_DINH_VI[16]

SPEED 70

PMOVE TRAM_DINH_VI[15]

GRASP

PMOVE TRAM_DINH_VI[16]

SPEED 200

PMOVE TRAM_DINH_VI[4]

PMOVE TRAM_DINH_VI[3]

PMOVE TRAM_DINH_VI[2]

SPEED 20

PMOVE TRAM_DINH_VI[1]

RELEASE

WRITEO 12,1

DELAY 150

WRITEO 12,0

SPEED 100

PMOVE TRAM_DINH_VI[2]

SPEED 200

PMOVE TRAM_DINH_VI[3]

PMOVE TRAM_DINH_VI[12]

SPEED 100

PMOVE TRAM_DINH_VI[11]

GRASP

SPEED 50

PMOVE TRAM_DINH_VI[12]

SPEED 200

PMOVE TRAM_DINH_VI[3]

PMOVE TRAM_DINH_VI[4]

PMOVE TRAM_DINH_VI[5]

Trang 11

PMOVE TRAM_DINH_VI[6]

PMOVE TRAM_DINH_VI[7]

SPEED 70

WRITEO 3,1

DELAY 100

PMOVE TRAM_DINH_VI[8]

DELAY 100

WRITEO 3,0

DELAY 200

RELEASE

SPEED 200

PMOVE TRAM_DINH_VI[7]

PMOVE TRAM_DINH_VI[6]

PMOVE TRAM_DINH_VI[5]

PMOVE TRAM_DINH_VI[4]

WRITEO 2,1 //Gửi tín hiệu cho máy CNC gia công DELAY 200

WRITEO 2,0

BIENCHON = 2

IF VONG_LAP = 1 THEN

DELAY 1000

ENDIF

ProgComplete =1 //Giải phóng Pallet 01

DELAY 100

RETURN

// -//

SUB UNLOAD_THAN

RELEASE

SPEED 200

PMOVE LAP_GHEP[1]

PMOVE LAP_GHEP[2]

SPEED 100

PMOVE LAP_GHEP[3]

GRASP

PMOVE LAP_GHEP[2]

SPEED 200

PMOVE LAP_GHEP[1]

ProgComplete = 1 //Giải phóng Pallet số 02

PMOVE LAP_GHEP[4]

PMOVE LAP_GHEP[5]

SPEED 20

PMOVE LAP_GHEP[6]

RELEASE

Trang 12

WRITEO 12,1

DELAY 150

WRITEO 12,0

GRASP

SPEED 50

PMOVE LAP_GHEP[5] SPEED 200

PMOVE LAP_GHEP[4] PMOVE LAP_GHEP[7] PMOVE LAP_GHEP[8] SPEED 100

PMOVE THEM_DIEM[2] SPEED 40

PMOVE LAP_GHEP[9] RELEASE

SPEED 200

PMOVE LAP_GHEP[8] PMOVE LAP_GHEP[7] PMOVE LAP_GHEP[1] BIENCHON = 3

RETURN

// -// SUB UNLOAD_BR_VIT //Gắp 2 Bánh Răng

GRWIDTH 150

SPEED 200

PMOVE LAP_GHEP[1] PMOVE LAP_GHEP[11] SPEED 70

PMOVE LAP_GHEP[10] GRASP

PMOVE LAP_GHEP[11] SPEED 200

PMOVE LAP_GHEP[12] SPEED 100

PMOVE LAP_GHEP[29] SPEED 40

PMOVE LAP_GHEP[13] GRWIDTH 150

SPEED 150

PMOVE LAP_GHEP[12] SPEED 200

PMOVE LAP_GHEP[14] SPEED 100

PMOVE LAP_GHEP[15] GRASP

SPEED 30

Ngày đăng: 16/12/2013, 03:15

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w