Celem ćwiczenia było napisanie programu komputerowego w języku programowania robota Mitshubishi. Głównym zadaniem programu jest ułożenie palety drewnianych klocków za pomocą robota.
Zrealizowanie wyżej wymienionego zadania pozwala na zrozumienie mechaniki działania robota oraz poznanie języka programowania.
Mitsubishi RV-M1 jest robotem posiadającym ramię, pole nauczania, kable, instrukcje, kontroler oraz zmotoryzowany chwytak - HM-01.
Mitsubishi RV-M1 posiada pięć stopni swobody i jest całkowicie przyjazny dla użytkownika z prostym językiem programowania. Jego maxymalny udźwig to 1 kg a ponadto jest szybki i posiada niski współczynnik zawodności. Movemaster RV-M1 może wykonać praktycznie każde zadanie podnoszenia i przenoszenia składników w złożonych sekwencjachi, które mogą być programowane i sterowane za pomocą sterownika oraz PC.
Program zawiera wbudowaną definicję kratownicy, dzięki której ramię robota będzie w stanie zbudować odpowiedni układ klocków na magazynie. Schemat naszej konstrukcji, którą za zadanie ma zbudować robot prezentuje się następująco:
Jego zadaniem jest przeniesienie pojedynczego drewnianego klocka z punktu A na paletę klocków zgodnie ze wzorem przydzielonych naszej grupie laboratoryjnej. Ruchy ramienia zdefiniowane są w pętli powtarzalnej ilością klocków oraz zdefiniowana zmienna zapamiętująca ilość pobranych drewnianych klocków definiuje w późniejszym wywoływaniu programu przejście do odpowiedniego miejsca w naszej palecie.
Program wymaga zdefiniowania punktów odniesienia względem których będzie on działał w przestrzeni roboczej. Pisanie programu także wymaga definiowania numeru linii. Tak więc rozpoczęcie pracy pisania programu zaczynamy od pierwszej linii, jednakże następne linie programu warto dodać o kilka więcej, najczęściej stosowaną praktyką jest skok o 10 do przodu, aby w przyszłości można było dopisać nowe linie programu między już wcześniej zdefiniowany kod.
Wyjście z pętli i zastosowanie ułożenia klocka jest zdefiniowane skokiem w programie oraz po zakończeniu czynności powrotem do pętli. Pętla kończy się na ostatnim przedmiocie do przemieszczenia.
Przykładowe zrealizowanie ustawienie drewnianego klocka jest realizowane poprzez wcześniejsze ustawienie punktów, zainicjowanie programu oraz przy wejściu w pętle skokiem:
80 GS 400
A następnie ułożenie na kratownicy, w tym przypadku pierwsze wolne miejsce:
400 CP 1
410 EQ 1,550
550 SC 11,+1
552 SC 12,+1
555 RT
Poniżej znajduje się pełen program wraz z opisem każdego ruchu robota.
1 NT //bazowanie robota
10 PA 1,4,4 //definiowanie punktów siatki palety
20 SC 1,+1 // załadowanie do licznika nr 1 wartości 1 (pierwszego klocka)
30 RC 12 //poczatek petli wykonywanej 12 razy koniec w linii 170
35 SP 4,H //definiowanie prędkości poziomu 4 , wysokie przyśpieszenie
40 MA 100,150,O //ustawienie chwytaka nad pozycja pobrania klocka (pozycja 150 w odniesieniu do pozycji 100), szczęki otwarte
45 SP 2,L //definicja prędkości poziomu 2, wolne przyśpieszenie
50 MO 100,O // przemieszczenie robota do pozycji 100 (pobranie klocka), szczęki otwarte
60 GC // pobranie klocka (zmakniecie szczęk robota)
70 MA 100,150,C //ustawienie chwytaka w pozycji 80mm nad pozycja pobrania klocka (pozycja 150 w odniesieniu do pozycji 100), szczęki zamknięte
80 GS 400 //skok do podprogramu zaczynajacego się w linii 400 (ustawianie wartości liczników współrzędnych dla palety)
90 PT 1 //przeliczanie wartości współrzędnych palety
95 SP 8,H //definiowanie predkosci poziom: 8, przyspieszenie wysokie
100 MA 1,150,C // ustawienie chwytaka w przeliczonej z palety pozycji 1 w odniesieniu do pozycji 100, szczęki zamknięte (pozycja nad paletą o współrzędnych obliczonych w linii 90)
105 SP 3,L //definiowanie predkosci poziom: 3, przyśpieszenie wolne
110 MO 1,C //ustawienie chwytaka w przeliczonej z palety pozycji, szczęki zamknięte
120 GO //otwieranie szczęk (wypuszczenie klocka)
130 MA,1,150,O //ustawienie chwytaka w pozycji 150 w odniesieniu do pozycji 1 przeliczonej z palety, szczeki otwarte (pusty chwytak nad paleta po oddaniu klocka)
140 IC 1 //wzwiekszenie wartości w liczniku pętli o 1 (nastepny klocek)
150 NX //koniec pętli - o pozcatku w linii 30
160 NT // bazowanie robota
170 ED //koniec programu
400 CP 1 //początek podprogramu, ładuje wartość licznika 1 do rejestru porównawczego
410 EQ 1,550 // jezeli licznik równa się 1 to skocz do linii 550
420 EQ 2,560
430 EQ 3,570
440 EQ 4,580
450 EQ 5,590
460 EQ 6,600
470 EQ 7,610
480 EQ 8,620
490 EQ 9,630
500 EQ 10,640
510 EQ 11,650
520 EQ 12,660
550 SC 11,+1 //ustaw wartość 1 w liczniku nr 11, 1rząd
552 SC 12,+1 //ustaw wartość 1 w liczniku nr 12 1kolumna
555 RT //powrót do programu głównego
560 SC 11,+1 //1rzad
562 SC 12,+2 //2kolumna
565 RT
570 SC 11,+1 //1rzad
572 SC 12,+3 //3kolumna
575 RT
580 SC 11,+1 //1rzad
582 SC 12,+4 //4kolumna
585 RT
590 SC 11,+2 //2rzad
592 SC 12,+1 //1kolumna
595 RT
600 SC 11,+2 //2rzad
602 SC 12,+2 //2kolumna
605 RT
610 SC 11,+2 //2rzad
612 SC 12,+3 //3kolumna
615 RT
620 SC 11,+2 //2rzad
622 SC 12,+4 //4kolumna
625 RT
630 SC 11,+3 //3rzad
632 SC 12,+1.5 //1kolumna
635 RT
640 SC 11,+3 //3rzad
642 SC 12,+2.5 //2kolumna
645 RT
650 SC 11,+4 //4rzad
652 SC 12,+2.5 //2kolumna
655 RT
660 SC 11,+3 //3rzad
652 SC 12,+3.5 //3kolumna
655 RT
PD 10 //NAROZNIKI
PD 11
PD 12
PD 100 //PUNKT BAZOWY KLOCKA ZABIERANEGO
PD 150 //PUNKT POMCNICZY
W programie została zdefiniowana siatka palety o wartościach 1,4,4 co oznacza iż definiowana siatka jest pierwszą w pamięci robota o liczbie punktów siatki 4x4. Maksymalne wartości jakie może przyjąć siatka to 255.
Możemy zdefiniować jedynie 9 osobnych siatek, jednakże pole powierzchni pracy robota jest nie wielkie, ponieważ gabaryty ramienia są małe, co daje nam w zupełności możliwość operowania wieloma elementami w różnych siatkach.
Pętla realizowana w programie za pomocą polecenia RC i zakończona poleceniem NX wykonuje się 12 razy, raz dla każdego klocka palety, jaką musi zbudować robot. Definicja każdego klocka jest usytuowana poza pętlą. Aby program był funkcjonalny wychodzimy po ustawieniu ramienia z pętli za pomocą polecenia GS [linia] i realizujemy w zależności od numeru klocka jego indywidualne ustawienie.
Przejście do wykonania ustawienia klocka musi zostać zapisane w rejestrze wewnętrznym. Jest to pamięć robota i przyjmuje tylko zmienne typu integer. Wartość zmiennej może wynieść od -32767 do 32767. W naszym wypadku na początku programu licznik jest równy 1. Wywołanie polecenia 400 CP 1.
Aby teraz program wiedział na którym przedmiocie obrabianym pracuje definiuje się skok warunkowy, realizowany tylko jeżeli wartość licznika w rejestrze jest równa podanej liczbie w poleceniu. Definicja dla pierwszego klocka drewnianego wygląda następująco 410 EQ 1,550 co oznacza skok do linii programu tylko jeżeli wartość rejestru wewnętrznego jest równa 1.
Definicja ułożenia ramienia w palecie jest realizowana poprzez ustawienie wartości 1 w licznikach rzędu i kolumny palety oraz powrotem do głównego programu za pomocą komendy RT. Następuje przeliczenie wartości zdefiniowanej siatki o numerze jeden: 90 PT 1.
Ramię po przeliczeniu współrzędnych siatki przenosi się w punkt nad siatką 100 MA 1,150,C a następnie opuszcza klocek w miejscu wolnym na palecie 110 MO 1,C -> 120 GO i wraca ramieniem otwartym nad siatkę: 130 MA 1,150,O. Następuje wówczas zwiększenie licznika pętli oraz powrót do początku wykonywania pętli, w naszym przypadku głównego elementu programu. Jeżeli zaś licznik pętli osiągnie wartość wyjściową z niej następuje zakończenie programu poprzez powrót do bazowego położenia i wyjścia:
160 NT
170 ED
Programowanie robota wymaga znajomości możliwości robota, jego maksymalnych obrotów i zasięgu. Jednakże programy te są proste i a ich złożoność poleceń jest logiczna. Utrudnieniem dla programisty jest przewidywanie ułożenia wszystkich elementów, zdefiniowanie większej ilości elementów oraz późniejsze skalibrowanie programu.
Praca zdalna na takiego typu maszynie nie była by polecanym rozwiązaniem, gdyż człowiek nie jest nieomylny i mogło by to zagrozić przerwaniem procesowi wytwarzania lub w najgorszym wypadku być niebezpieczne dla życia i zdrowia osób znajdujących się w pobliżu.