Akademia Górniczo - Hutnicza
im. Stanisława Staszica w Krakowie
Wydział Inżynierii Mechanicznej i Robotyki
Kierunek: Automatyka i Robotyka
Specjalność: Robotyka
Systemy programowania robotów
Sprawozdanie MELFA
Autorzy:
KK
PK
AS
JM
AM
BM
MJ
MT
2014/2015
Zadanie 1.
Robot zaczyna ruch w punkcie P1. Następnie rusza do punktu P2 gdzie podnosi przedmiot i wraca z powrotem do pozycji P1. Następnie przedmiot jest transportowany do punktu P3 gdzie następuje jego zwolnienie i uruchomienie podajnika taśmowego w lewo. Po osiągnięciu prawego krańcowego położenia, podajnik wraca do miejsca startowego. Robot podnosi przedmiot i wraca do punktu P1 a później do P2 gdzie zwalnia przedmiot.
Ruch z punktu P1 do P2 i z powrotem realizowany jest w interpolacji liniowej.
Ruch z punktu P1 do P3 i z powrotem realizowany jest w interpolacji złączowej.
Podnoszenie i opuszczanie przedmiotu realizowane jest ze zmniejszoną prędkością, pionowo, z punktu 50mm nad P2 i P3.
Program zrealizowany na zajęciach:
10 P1=(328.53,100.54,292.31,-19.09,178.94,0,0) 'zdefiniowanie punktu startowego
20 P2=(366.59,25.54,104.81,-0.25,178.94,0,0) 'zdefiniowanie miejsca pobrania przedmiotu
30 P3=(12.28,367.27,123.4,-84.34,181.09,0,0) 'zdefiniowanie miejsca docelowego
40 SERVO ON 'włączenie serw
50 OVRD 50 'zmiana prędkości we wszystkich trybach na 50%
60 HOPEN 1 'otwarcie chwytaka
70 SPD 1000 'ustala prędkość w interp. liniowej i kołowej na 1000mm/s
80 MOV P1 'ruch w int. złączowej do P1
90 MVS P2,-50 'ruch w int. liniowej do punktu 50mm nad P2
100 SPD 500 'zmniejszenie prędkości do 500mm/s
110 MVS P2 'przesunięcie chwytaka nad przedmiot
120 DLY 0.5 'opóźnienie 0,5s
130 HCLOSE 1 'zamknięcie chwytaka
140 DLY 0.5 'opóźnienie 0,5s
150 MVS P2,-50 'podniesienie chwytaka do punktu 50mm nad P2
160 SPD 1000 'zwiększenie prędkości do 1000mm/s
170 MVS P1 'ruch w int. liniowej do P1
180 MOV P3,-50 'ruch w int. złączowej do punktu 50mm nad P3
190 SPD 500 'zmniejszenie prędkości do 500mm/s
200 MOV P3 'opuszczenie przedmiotu do punktu P3
210 DLY 0.5 'opóźnienie 0,5s
220 HOPEN 1 'otworzenie chwytaka
230 DLY 0.5 'opóźnienie o,5s
240 MOV P3,-50 'podniesienie chwytaka do punktu 50mm nad P3
250 DLY 0.5 'opóźnienie 0,5s
260 M_OUT(4)=1 'uruchomienie podajnika w lewo (podanie na kanał 4 wart. 1)
270 DLY 0.5 'opóźnienie 0,5s
280 M_OUT(4)=0 'podanie na kanał 4 wart. 0
290 WAIT M_IN(7)=1 'czekanie aż prawa krańcówka wystawi sygnał 1
300 M_OUT(5)=1 'uruchomienie podajnika w lewo (podanie na kanał 5 wart. 1)
310 DLY 0.5 'opóźnienie 0,5s
320 M_OUT(5)=0 'podanie na kanał 5 wart. 0
330 WAIT M_IN(6)=1 'czekanie aż lewa krańcówka wystawi sygnał 1
340 DLY 0.5 'opóźnienie 0,5s
350 MOV P3 'opuszczenie chwytaka nad przedmiot
360 DLY 0.5 'opóźnienie 0,5s
370 HCLOSE 1 'zamknięcie chwytaka
380 DLY 0.5 'opóźnienie 0,5s
390 MOV P3,-50 'podniesienie przedmiotu do punktu 50mm nad P3
400 SPD 1000 'zwiększenie prędkości do 1000mm/s
410 MOV P1 'ruch w int. złączowej do punktu P1
420 MVS P2,-50 'ruch w int. liniowej do punktu 50mm nad P2
430 SPD 500 'zmniejszenie prędkości do 500mm/s
440 MVS P2 'opuszczenie przedmiotu do punktu P2
450 DLY 0.5 'opóźnienie 0,5s
460 HOPEN 1 'otwarcie chwytaka
470 DLY 0.5 'opóźnienie 0,5s
480 MVS P2,-50 'podniesienie chwytaka do punktu 50mm nad P2
490 GOSUB 70 'skok do linii 70 w celu ponownego wykonania cyklu
500 END 'instrukcja kończąca program
Zadanie 2
Zadanie robota różni się od zadania 1 tym, że przejeżdżając z P1 do P2 robot wykonuje ruch w interpolacji kołowej pomiędzy punktami P4,P5,P6 z wyłączonym trybem ruchu ciągłego oraz wykonuje ruch do punktu zdefiniowanego współrzędnymi złączowymi J7, a przenosząc przedmiot z P2 do P3 robot wykonuje ten sam ruch z włączonym trybem ruchu ciągłego.
Program zrealizowany na zajęciach:
10 P1=(328.53,100.54,292.31,-19.09,178.94,0,0) ' zdefiniowanie punktu startowego
20 P2=(366.59,25.54,104.81,-0.25,178.94,0,0) ' zdefiniowanie miejsca pobrania przedmiotu
30 P3=(12.28,367.27,123.4,-84.34,181.09,0,0) ' zdefiniowanie miejsca docelowego
40 P4=(328.5,150.5,292.3,-19,179,0,0) 'zdefiniowanie punktu trajektorii kołowej
50 P5=(278.5,150.5,292.3,-19,179,0,0) 'zdefiniowanie punktu trajektorii kołowej
60 P6=(278.5,150.5,342.3,-19,179,0,0) 'zdefiniowanie punktu trajektorii kołowej
70 J7=(33.37,34.44,90.62,0,53.95,14.37) 'zdefiniowanie punktu we współrzędnych złączowych
80 SERVO ON 'włączenie serw
90 OVRD 50 ' zmiana prędkości we wszystkich trybach na 50%
100 HOPEN 1 ' otwarcie chwytaka
110 SPD 1000 ' ustala prędkość w int. liniowej i kołowej na 1000mm/s
120 MOV P1 ' ruch w int. złączowej do P1
130 MVR P4,P5,P6 'ruch w interpolacji kołowej przez punkty P4,P5,P6
140 MOV J7 'ruch do punktu J7
150 MVS P2,-50 ' ruch w int. liniowej do punktu 50mm nad P2
160 SPD 500 ' zmniejszenie prędkości do 500mm/s
170 MVS P2 ' przesunięcie chwytaka nad przedmiot
180 DLY 0.5 ' opóźnienie 0,5s
190 HCLOSE 1 'zamknięcie chwytaka
200 CNT 1 'włączenie trybu ruchu ciągłego
210 DLY 0.5 'opóźnienie 0,5s
220 MVS P2,-50 'podniesienie chwytaka do punktu 50mm nad P2
230 SPD 1000 'zwiększenie prędkości do 1000mm/s
240 MVS J7 'ruch do punktu J7
250 MVR P6,P5,P4 'ruch w interpolacji kołowej przez punkty P6,P5,P4
260 MOV P1 'ruch w int. złączowej do P1
270 MOV P3,-50 'ruch w int. złączowej do punktu 50mm nad P3
280 SPD 500 'zmniejszenie prędkości do 500mm/s
290 MOV P3 'opuszczenie przedmiotu do punktu P3
300 DLY 0.5 'opóźnienie 0,5s
310 HOPEN 1 'otworzenie chwytaka
320 CNT 0 'wyłączenie trybu ruchu ciągłego
330 DLY 0.5 'opóźnienie o,5s
340 MOV P3,-50 'podniesienie chwytaka do punktu 50mm nad P3
350 DLY 0.5 'opóźnienie 0,5s
360 M_OUT(4)=1 'uruchomienie podajnika w lewo (podanie na kanał 4 wart. 1)
370 DLY 0.5 'opóźnienie 0,5s
380 M_OUT(4)=0 'podanie na kanał 4 wart. 0
390 WAIT M_IN(7)=1 'czekanie aż prawa krańcówka wystawi sygnał 1
400 M_OUT(5)=1 'uruchomienie podajnika w lewo (podanie na kanał 5 wart. 1)
410 DLY 0.5 'opóźnienie 0,5s
420 M_OUT(5)=0 'podanie na kanał 5 wart. 0
430 WAIT M_IN(6)=1 'czekanie aż lewa krańcówka wystawi sygnał 1
440 DLY 0.5 'opóźnienie 0,5s
450 MOV P3 'opuszczenie chwytaka nad przedmiot
460 DLY 0.5 'opóźnienie 0,5s
470 HCLOSE 1 'zamknięcie chwytaka
480 DLY 0.5 'opóźnienie 0,5s
490 MOV P3,-50 'podniesienie przedmiotu do punktu 50mm nad P3
500 SPD 1000 'zwiększenie prędkości do 1000mm/s
510 MOV P1 'ruch w int. złączowej do punktu P1
520 MVS P2,-50 'ruch w int. liniowej do punktu 50mm nad P2
530 SPD 500 'zmniejszenie prędkości do 500mm/s
540 MVS P2 'opuszczenie przedmiotu do punktu P2
550 DLY 0.5 'opóźnienie 0,5s
560 HOPEN 1 'otwarcie chwytaka
570 DLY 0.5 'opóźnienie 0,5s
580 MVS P2,-50 'podniesienie chwytaka do punktu 50mm nad P2
590 GOSUB 110 'skok do linii 110 w celu ponownego wykonania cyklu
600 END 'instrukcja kończąca program
Zadanie 3.
Zadanie polegało zdefiniowaniu przerwania, które przerywa pętlę nieskończoną, w której znajduje się manipulator.
Manipulator porusza się w pętli nieskończonej pomiędzy punktami P1 i P2. Po aktywacji krańcówki (kanał 6) następuje przerwanie pętli i wykonanie ruchu w interpolacji kołowej przez punkty P4,P5,P6. Po wykonaniu przerwania program wraca do pętli do instrukcji następującej po instrukcji, w której nastąpiło przerwanie.
10 P1=(328.53,100.54,292.31,-19.09,178.94,0,0) ' zdefiniowanie punktu startowego
20 P2=(366.59,25.54,104.81,-0.25,178.94,0,0) ' zdefiniowanie miejsca pobrania przedmiotu
30 P3=(12.28,367.27,123.4,-84.34,181.09,0,0) ' zdefiniowanie miejsca docelowego
40 P4=(328.5,150.5,292.3,-19,179,0,0) 'zdefiniowanie punktu trajektorii kołowej
50 P5=(278.5,150.5,292.3,-19,179,0,0) 'zdefiniowanie punktu trajektorii kołowej
60 P6=(278.5,150.5,342.3,-19,179,0,0) 'zdefiniowanie punktu trajektorii kołowej
70 SERVO ON 'włączenie serw
80 DEF ACT 1, M_IN(6)=1 GOSUB *Z1 'definiowanie warunku przerwania 1, jeśli kanał 6 przyjmie 'wartość 1 nastąpi skok do podprogramu o etykiecie *Z1
90 ACT 1=1 'uruchomienie obsługi przerwania 1
100 OVRD 50 'zmiana prędkości we wszystkich trybach na 50%
110 SPD 1000 'ustala prędkość w int. liniowej i kołowej na 1000mm/s
120 WHILE 1 'implementacja pętli nieskończonej
130 MVS P1 'ruch w int. liniowej do P1
140 MVS P2 'ruch w int. liniowej do P2
150 WEND 'koniec pętli
160 *Z1 'etykieta podprogramu
170 MVR P4,P5,P6 'ruch w int. kołowej przez punkty P4,P5,P6
180 RETURN 0 'powrót do wykonywania przerwanego programu
190 END 'instrukcja kończąca program
Podsumowanie
Zadania wykonane w czasie laboratorium pozwoliły na przyswojenie podstawowych komend języka Melfa Basic oraz na użycie ich w praktyce. Zespół rozpoznał różnicę między poleceniami ruchu z punktu do punktu w interpolacjach: liniowej, złączowej oraz kołowych, a także zastosował przerwania sprzętowe. Realizacja programu dla robota współpracującego z podajnikiem taśmowym była prostym przykładem sposobu zastosowania tego typu manipulatorów w praktyce przemysłowej. Zastosowano sposób komunikacji manipulatora z otoczeniem poprzez wejścia i wyjścia cyfrowe na jego sterowniku sterując podajnikiem taśmowym oraz odczytując informacje o pozycji transportowanego przedmiotu.