Poznań 2018 POLITECHNIKA POZNAŃSKA Wydział Budowy Maszyn i Zarządzania Instytut Technologii Mechanicznej Zakład Projektowania Technologii ul. Piotrowo 3, 61-138 Poznań tel. +48 +61 6652-162 fax: +48 +61 6652-200 e-mail: olaf.ciszak@put.poznan.pl Pok. 638 Konsultacje • Studia stacjonarne: środa, godz. 8:00 – 9:30 • Studia niestacjonarne: 12.03 i 18.03.2017 r. 15:30 – 17:00 Pok. 638 Zdanowicz R., Podstawy Robotyki, WPŚ, 2001 Zdanowicz R., Podstawy Przemysłowych, WPŚ, 2001 Kost G., Świder J., Programowanie robotów on-line, WPŚ 2008 Robotyki-Laboratorium Żurek J., Stan i tendencje rozwojowe technologicznych. WPTPN, Poznań 1997. robotyzacji Żurek J., Robotyzacja zagadnienia, WPP 1997 Podręczniki programowania robotów przemysłowych: FANUC PANASONIC ABB IRP-6 Internet procesów z technologicznych robotów procesów – wybrane Kinematyka robotów Transformacja prosta i odwrotna Programowanie robotów przemysłowych WPROWADZENIE W celu opracowania schematu ruchu robota jest konieczne przyjęcie pewnej metody, która umożliwi opis położenia ramienia w punkcie i w czasie. Definiując robota używa się dwóch podstawowych elementów: pary kinematycznej, ramienia. Para kinematyczna ma jeden stopień swobody (para V klasy) i może wykonywać ruch liniowy w osi X, Y lub Z lub obrotowy w osi A, B, C (w przegubie), pomiędzy sąsiadującymi położeniami. Ramię stanowi sztywna konstrukcja, która łączy pary kinematyczne (przeguby). Przeguby oznacza się przez Jn , gdzie n = 1 reprezentuje podstawę robota, a ramienia przez Ln, gdzie n=1 przedstawia ramię najbliżej podstawy. Symbolu ln używać się do oznaczenia długości ramienia. REPREZENTACJA POZYCJI ROBOTA Ruch robota o strukturze przegubowej (rys. 1) jest trudniejszy do analizy niż robota o strukturze w układzie kartezjańskim (rys. 2) i dlatego podane dalej przykłady będą częściej dotyczyć tej konfiguracji i jej rozszerzeń. Rys. 1. Robot o strukturze przegubowej 14:18 Rys. 2. Robot o strukturze kartezjańskiej 8/120 Rys. 3. Dwuwymiarowy robot o dwóch stopniach swobody Układ biegunowy 2D Pw f 1 , 2 (1) Układ kartezjański 2D Inny sposób to zdefiniowanie pozycji ramienia w przestrzeni kartezjańskiej, w układzie współrzędnych zewnętrznym w stosunku do robota. Początek układu jest zlokalizowany w podstawie robota. Położenie końca ramienia może być wtedy zdefiniowane poprzez funkcję: Pw f ( x, z) (2) Układ kartezjański 3D Oczywiste jest, że ta koncepcja opisu może być z łatwością rozszerzona do trzeciego wymiaru i wtedy funkcja (2) przyjmie postać: Pw f ( x, y, z) (3) Przedstawienie pozycji ramienia w układzie kartezjańskim jest celowe wtedy, gdy robot musi współpracować z innymi maszynami. Maszyny te mogą nie mieć interpretacji ruchu robota w układzie przegubowym (biegunowym) i wtedy ta „neutralna" reprezentacja - w układzie kartezjańskim, jest najwygodniejsza w użyciu. Aby używać obu tych systemów opisu, należy dokonać transformacji z jednego układu do drugiego. Przechodzenie z układu biegunowego do kartezjańskiego nazywane jest transformacją prostą, a z układu kartezjańskiego do biegunowego transformacją odwrotną. TRANSFORMACJA PROSTA RAMIENIA O DWÓCH STOPNIACH SWOBODY Na podstawie rys. 3 można ustalić pozycję końca efektora w przestrzeni definiując wektory dla ramienia l1 i dla ramienia l2: r1 l1 cos 1 , l1 sin 1 (4) r2 l 2 cos(1 2 ), l 2 sin(1 2 ) (5) Dodając wektory (4) i (5) otrzymuje się współrzędne x, z końca efektora w przestrzeni: x l1 cos 1 l 2 cos(1 2 ) (6) z l1 sin 1 l 2 sin(1 2 ) (7) TRANSFORMACJA ODWROTNA RAMIENIA O DWÓCH STOPNIACH SWOBODY W wielu przypadkach jest znacznie ważniejsze, aby znając kąty obrotu w dwóch przegubach znaleźć położenie końca ramienia w przestrzeni. Typowa sytuacja występuje wtedy, gdy operator musi policzyć te kąty, aby przesunąć efektor do punktu w przestrzeni zdefiniowanego przez jego współrzędne. Dla robota o dwóch ramionach są możliwe dwa sposoby osiągnięcia współrzędnych (x, z) - pokazane na rys. 4. punktu o Rys. 4. Dwa możliwe położenia ramion robota dla osiągnięcia pozycji efektora w punkcie o współrzędnych x, z W językach programowania robotów występują komendy ABOVE (powyżej) i BELOW (poniżej), które określają czy w przegubie między ramionami ma nastąpić obrót o kąt 2 w kierunku dodatnim, czy ujemnym. W pokazanym na rys. 4 przykładzie przyjmiemy kąt 2 jako dodatni. Używając tożsamości trygonometrycznych: cos (A B) cos A cos B sin A sin B (8) sin (A B) sin A cos B sin B cos A (9) wzory (6) i (7) można przedstawić: x l1 cos 1 l 2 cos 1 cos 2 l 2 sin 1 sin 2 (10) z l1 sin 1 l 2 sin 1 cos 2 l 2 cos 1 sin 2 (11) Podnosząc do kwadratu obie strony równań 10 i 11 oraz dodając je, otrzymuje się: x 2 z 2 l12 l 22 cos 2 2 l1 l 2 (12) Definiując kąty i tak jak pokazano na rys. 5 Rys. 5. Oznaczenie kątów i można napisać: l 2 sin 2 tg l 2 cos 2 11 z tg x (13) (14) Używając tożsamości trygonometrycznej: tgA tgB tg(A B) 1 tgA tgB (15) otrzymuje się ostatecznie: z (l1 l 2 cos 2 ) x l 2 sin 2 tg1 x (l1 l 2 cos 2 ) z l 2 sin 2 (16) Znając długości ramion l1 i l2, można obliczyć potrzebne kąty (wzory 12 i 16), które pozwolą umieścić efektor w zadanym punkcie, w przestrzeni o współrzędnych x, z. ROBOT O TRZECH STOPNIACH SWOBODY W PRZESTRZENI O DWÓCH WYMIARACH Dodając trzeci stopień swobody otrzymuje się robota {BR1, BR2, BR3} - jak to pokazano na rys. 6. Ten trzeci stopień swobody będzie reprezentował przegub „nadgarstkowy". Rys. 6. Robot o trzech stopniach swobody w przestrzeni dwuwymiarowej Współrzędne w przestrzeni dla końca ramienia (wg rys. 6) będą opisane układem równań: x l1 cos 1 l 2 cos(1 2 ) l3 cos(1 2 3 ) (17) z l1 sin 1 l 2 sin(1 2 ) l3 sin(1 2 3 ) (18) (1 2 3 ) (19) Wykorzystując wyniki, które otrzymano dla robota o dwóch przegubach, można wyznaczyć transformację odwrotną dla robota o trzech stopniach swobody. Definiując pozycję końca ramienia, używając oznaczeń x, z, . Kąt oznacza orientację kąta „nadgarstka". możemy obliczyć kąty 1 + 2 + 3 wprowadzając: x 3 x l3 cos (20) z 3 z l3 sin (21) Mając ustaloną pozycję trzeciego przegubu, problem ustalenia kątów sprowadza się do przypadku robota z dwoma stopniami swobody, który analizowany był wcześniej. ROBOT Z CZTEREMA STOPNIAMI SWOBODY W PRZESTRZENI O TRZECH WYMIARACH Rysunek 7 pokazuje konfigurację robota o strukturze {CR, AR1 YR, AR2} w przestrzeni o trzech wymiarach. Robot ma 4 stopnie swobody: przegub J1 pozwala na obrót wokół osi Z, przegub kinematyczna J3 J2 pozwala jest na obrót połączeniem wokół liniowym osi X, zdolnym para do przemieszczania się wzdłuż osi Y, przegub J4 pozwala na rotację wokół osi X (równoległej do osi przegubu J2). Rys. 7. Robot o czterech stopniach swobody i strukturze {CR, AR1, YR, AR2} w płaszczyźnie trójwymiarowej Zdefiniujemy (zgodnie z rys. 7) kąt jako kąt obrotu przegubu J1, kąt obrotu przegubu J2 nazywa się kątem wznoszenia, długość liniowego połączenia J3 nazwa się rozciągnięciem l, kąt obrotu przegubu J4 tworzący płaszczyznę Y-Z nazwa się kątem skoku. Pozycja P końca ramienia zdefiniowana w przestrzeni ma postać: x (l cos l 4 cos ) cos (22) y (l cos l 4 cos ) sin (23) z l1 l sin l 4 sin (24) Mając określone położenie punktu P(x, y, z) i kąt skoku , można znaleźć każdą pozycję przegubów w przestrzeni. Dla punktu P4 (x4, y4, z4), który jest pozycją przegubu J4, otrzyma się: x 4 x l 4 cos cos (25) y 4 y l 4 cos sin (26) z 4 z l 4 sin (27) Wartości l, oraz można obliczyć z zależności: l x 24 y 24 (z 4 l1 ) 2 (28) z 4 l1 sin 1 (29) y4 cos l (30) Układ sterowania robota powinien wykonywać obliczenia możliwie szybko, gdyż jest to konieczne dla uzyskania odpowiedniej płynności działania robota - obliczenia powinny, więc być relatywnie nieskomplikowane. Należy zauważyć, że w powyższym rozumowaniu rozdzielono problem orientacji w przestrzeni od problemu pozycjonowania ramienia, co bardzo upraszcza osiągnięcie właściwego rozwiązania. Programowanie RP Wstęp Sterowanie robotem przemysłowym polega na formułowaniu rozkazów wejściowych (instrukcji), sterujących jego poszczególnymi napędami za pośrednictwem jego układu sterowania (US, ang. Control Unit). Przetwarzanie tych rozkazów US zapewnia elementom łańcucha kinematycznego robota przemieszczanie się w przestrzeni roboczej z określoną dokładnością, wg. zadanej trajektorii. Czynnościami przetwarzania informacji zajmują się układy sterowania robota. System programowania jest integralną częścią układu sterowania robota przemysłowego (jest jego podsystemem wewnętrznym). Kluczowym elementem procesu programowania i kontroli działania robota w warunkach warsztatowych, we wszystkich sposobach i poziomach programowania i oddziaływania na niego jest operator systemu robotowego tzw. technolog programista Proces postrzegania i generowania odpowiednich decyzji operatora robota Poziom operatorski PROGRAMISTA Obserwacja sceny robota OPIS ZADANIA ROBOTA - Wybór sposobu realizacji zadania RP - kontrola realizacji zadania przez RP DEFINIOWANIE ZADAŃ RP -podstawowych: poz. referencyjne trajektorii ruchu (pkt. pozycjonowania) -pomocniczych: sygnały wejść i wyjść Poziom algorytmiczny PANEL PROGRAMOWANIA - instrukcje programowania RP TRANSFORMACJA ZADANIA W US RP - współrzędne naturalne (wew.) ruchu robota - powiązania logiczne w algorytmie programu RP Poziom Otoczenia RP (sceny RP) TRANSFORMACJA ZADANIA (instrukcje wew. sterujące ruchem robota) - współrz. sensorów wewnętrznych, - zakres ruchów napędów robota SCENA RP POSTRZEGANIE DANE Z SENSORÓW ZEWNĘTRZNYCH OBSERWUJĄCYCH SCENĘ (czujniki zew, system wizyjny) Poziom sceny Osadzony jest w otoczeniu RP. Tutaj generowane są sygnały sensorów wewnętrznych i zewnętrznych oraz realizowana jest interakcja pomiędzy elementami systemu robotowego a otoczeniem. Poziom algorytmiczny Informacje pochodzące z poziomu sceny są przetwarzane przez ściśle określone algorytmy obróbki danych wejściowych, a wyniki, w postaci odpowiednich informacji o stanie systemu są przesyłane jako informacja do operatora i do poziomu sceny, jako dane do realizacji czynności RP Poziom działania operatorskiego Jest poziomem najwyższym, gdzie są realizowane m. in: - opis zadania RP, tj, formułowanie algorytmu programu RP, - nadzór i kontrola jego realizacji Programowanie RP Opracowanie nowego programu Rejestracja programu Edycja programu Zapamiętanie (Teach in) instrukcji pozycjonowanie Edycja (korekta) instrukcji pozycjonowania KONIEC Wybór programu PANELE PROGRAMOWANIA IRP (US USR-6) Układy Sterowania i Panele Programowania ABB (IRC5+ FlexPendant) KUKA (KR-C4 + smartPAD) Układy Sterowania i Panele Programowania Fanuc (R30iA+ iPendant) Panasonic (G2 + TeachPendant) Programowanie RP – układy współrzędnych Układ współrzędnych określa pozycję oraz orientację robota. Układ współrzędnych zdefiniowany jest względem robota lub względem przestrzeni roboczej. Układy współrzędnych: • Globalny • Podstawowy (regionalny) • Interfejsu mechanicznego (lokalny). Najczęściej przemieszczenie TCP narzędzia odbywa się w układach: • tzw. wewnętrznym (Joint CS), • Kartezjańskim (World CS), • Cylindrycznym (Cylindrical CS), • Narzędzia (Tool CS), • Użytkownika (USER CS). Programowanie RP – układy współrzędnych Programowanie RP – układy współrzędnych Programowanie RP – układy współrzędnych IRP Xn Z Zn Y Yn X IRP Dioda paląca się przy przycisku wyboru układu współrzędnych Wybór osi robota UKŁAD KARTEZJAŃSKI OSIE 1÷3 UKŁAD KARTEZJAŃSKI OSIE 4÷6 UKŁAD WEWNĘTRZNY UKŁAD WEWNĘTRZNY UKŁAD CYLINDRYCZNY UKŁAD CYLINDRYCZNY OSIE 1÷3 OSIE 4÷6 OSIE 1÷3 OSIE 4÷6 Przyporządkowanie położeniom przycisków wielkości fizycznych A1 A2 A3 A4 A5 A6 = = = = = = X Y Z N-nutacja niewykorzystane P-precesja A1 = (obrót wokół osi do podstawy) A2 = (zgięcie ramienia dolnego) A3 = (zgięcie ramienia górnego) A4 = t (zgięcie przegubu) A5 = v (obrót kołnierza) A6 = tor (opcja) A1 = ruch po promieniu A2 = (obrót wokół osi do podstawy) A3 = Z A4 = N-nutacja A5 = niewykorzystane A6 = P-precesja FANUC Układ współrzędnych połączeniowych (Joint Coordinate System) FANUC Układ współrzędnych świata (World Coordinate System) Układ współrzędnych narzędzia (Tool Coordinate System) FANUC Układ współrzędnych interfejsu mechanicznego (Mechanical Interface Coordinate System) Układ współrzędnych narzędzia (Tool Coordinate System) FANUC Układ współrzędnych użytkownika User Coordinate System FANUC Wybór układu współrzędnych PANASONIC PANASONIC PANASONIC PANASONIC PANASONIC Programowanie RP - podstawowe instrukcje Instrukcje pozycjonowania – bez interpolacji typu PTP Trajektoria nieliniowa (inaczej ruch pojedynczych osi), osie robota poruszają się z określoną prędkością ruchu (lub określonym czasie), rozpoczynają i kończą ruch (dotyczy Fanuc i Panasonic) w tym samym momencie. Tor zazwyczaj nie jest linią prostą. Położenie narzędzia podczas ruchu nie jest kontrolowane. 2 Start Point End Point 1 3 IRp FANUC PANASONIC ABB POZ QLIN Prędkość (%) lub czas (T) ZGRUB (DOKŁ) BEZW (WZGL) JP [1] 100% FINE/CNTk JP [1] 500 mm/sec FINE/CNTk JP [1] 250 cm/sec FINE/CNTk JP [1] 20 m/sec FINE/CNTk JP [1] 100 inch/sec FINE/CNTk JP [1] 260 deg/sec FINE/CNTk (Joint Position) MOVEP P1 10 m/min MOVEP P1 50 % MoveJ, p1, v100, z100, tool1 FANUC FANUC FANUC Poziom płynności ruchu Smooth Level PANASONIC TOOL = 1:DINSE MOVEP P1 15.00m/min MOVEP P2 12.00m/min MOVEP P3 18.00m/min MOVEP P4 25% MOVEL P5 40% … PANASONIC Poziom płynności ruchu Smooth Level ABB Programowanie RP - podstawowe instrukcje Instrukcje pozycjonowania –interpolacja LINIOWA Trajektoria liniowa (inaczej ruch liniowy), osie robota poruszają się tak aby zapewnić kontrolę przejścia punktu TCP narzędzia po linii prostej od punktu startowego do punktu końcowego z określona prędkością. 2 Start Point End Point 1 3 IRp FANUC PANASONIC ABB POZ LIN Prędkość (%) ZGRUB (DOKŁ) BEZW (WZGL) LP [1] 500 mm/sec FINE/CNTk LP [1] 250 cm/sec FINE/CNTk LP [1] 20 m/sec FINE/CNTk LP [1] 100 inch/sec FINE/CNTk LP [1] 260 deg/sec FINE/CNTk (Linear Position) MOVEL P1 10 m/min MOVEL P1 50 % MoveL, p1, v100, z100, tool1 FANUC Ruch Liniowy Ruch obrotowy PANASONIC TOOL = 1:DINSE MOVEL P1 10.00m/min MOVEL P2 15.00m/min MOVEL P3 10.00m/min MOVEC P4 25.00m/min MOVEL P5 15.00m/min … Programowanie RP - podstawowe instrukcje Instrukcje pozycjonowania – interpolacja KOŁOWA Trajektoria z interpolacją kołową, polega na takim przeprowadzeniu osi robota aby zapewnić przejście punktu TCP narzędzia po linii łuku (wycinku koła) od punktu startu do końcowego poprzez punkt pośredni (podporowy) z określoną prędkością z kontrolą położenia narzędzia. 2 Start Point 1 End Point 3 IRp FANUC PANASONIC ABB POZ KOLO Prędkość (V=100%) KAT (=90 DEG) ZGRUB (DOKŁ) BEZW (WZGL) POLOZENIE POCZATKOWE (przy WZGL) POLOZENIE POSREDNIE POLOZENIE KONCOWE JP/LP/CP [1] 100% FINE/CNTk CP [2] P [3] 600 mm/sec FINE/CNTk (Circular Position) MOVEC P1 10 m/min MOVEC P2 50 % MOVEC P3 60 % MoveC, p2, p3, v100, z100, tool1 FANUC PANASONIC Trajektoria kołowa będzie określona przez ustawienie co najmniej trzech kolejnych punktów interpolacji okrężnej (MOVEC) dla określonego posuwu C. PANASONIC UWAGA ! Niekompletne nauczenie interpolacji okrężnej Trzy kolejne punkty uczenia muszą zostać ustalone i zapamiętane jako interpolacja okrężna, by została właściwie utworzona. Jeżeli ustawiane punkty posuwu okrężnego nie są zapisane jako co najmniej trzy kolejne punkty, to zostaną one automatycznie zmienione na trzy linearne punkty. PANASONIC Begin of Program TOOL = 1:DINSE MOVEP P1 15.00m/min MOVEC P2 15.00m/min MOVEC P3 15.00m/min MOVEC P4 15.00m/min MOVEL P5 15.00m/min … ABB Programowanie RP - podstawowe instrukcje Narzędzie - TOOL Układ narzędzia (Tool Coordinate System) – kartezjański układ współrzędnych określony względem kartezjańskiego układu interfejsu mechanicznego kiści RP w którym definiuje się parametry geometryczne narzędzia zamocowanego w interfejsie mechanicznym manipulatora robota przemysłowego. Najczęściej punkt (0,0,0) reprezentuje punkt roboczy narzędzia (centralny) TCP a oś Z reprezentuje oś narzędzia. Współrzędne x, y, z określają położenie TCP względem układu współrzędnych interfejsu mechanicznego, natomiast współrzędne w, p, r określają położenie osi układu narzędzia względem układu interfejsu mechanicznego IRP-6 Instrukcja: 0:10 NARZEDZIE = 1 MAN → NARZEDZIE → NR → PARAM ORIENT (kąty Eulera NUT i PREC) WSPOLRZ (X=…, Y=…, Z=…) – punktu TCP (A) FANUC Instrukcja: UTOOL_NUM = 1 PANASONIC Instrukcja: TOOL […] PANASONIC Programowanie RP - podstawowe instrukcje Prędkość – SPEED Prędkość maksymalna – MAXIMUM SPEED Uwaga Zaprogramowana prędkość przemieszczania punktu roboczego narzędzia (TCP) nie może przekraczać wartości maksymalnej jaka może osiągnąć robot. Jeżeli prędkość przewyższy zaprogramowaną maksymalną wartość prędkości nastąpi wygenerowanie błędu (alarmu) IRP-6 Każda instrukcja pozycjonowania wymaga określenia prędkości z jaką ma się odbywać ruch. Prędkość dla instrukcji pozycjonowania deklaruje się jako procent prędkości podstawowej. Prędkość podstawowa i maksymalna może być zmieniana w dowolnym miejscu programu instrukcją, PRĘDKOŚĆ. Podczas wykonywania instrukcji pozycjonowania sprawdzane jest, czy prędkość ruchu nie jest większa od aktualnie zadeklarowanej prędkości maksymalnej. Prędkość podstawową i maksymalną podaje się w milimetrach na sekundę (mm/s), a zakres zmienności jest od 1 do 9999 mm/s. Prędkość podstawowa musi być przy tym nie większa niż maksymalna. IRP-6 PRĘDK - (PRĘDKOŚĆ) zmiana prędkości maksymalnej i podstawowej Przykład: 0:20 PRĘDKOŚĆ = 500 MM/S, PRĘDKOŚĆ MAX = 1000 MM/S FANUC FANUC Instrukcja ta określa wartość procentową współczynnika przyspieszenia lub wyhamowania (czyli czasu trwania przyspieszenia lub wyhamowania). Czas wykonania ruchu z punktu początkowego do końcowego zależy od wartości współczynnika przyspieszenia sterowania prędkością. Wartość przyspieszenia sterowania prędkością może wynosić od 0 do 150%. Przyspieszenie sterowania prędkością jest programowane w pozycji docelowej. Przykład: J P[1] 50% FINE ACC80 PANASONIC PANASONIC Inne wybrane instrukcje Instrukcja IRp FANUC PANASONIC CZEKAJ 55 s WAIT 55 sec DELAY 55.00s CZEKAJ NA WE [2]=1/0 WAIT RI [2] = ON/OFF WAIT VAL I2#(001) = ON/OFF T= 20 SKOK DO 1000 JMP LBL [1] JUMP LABL0001 Skok warunkowy SKOK DO 200, GDY WE [3]=1/0 IF {war_1} and/or {war_2} …, JMP LBL [2] IF LR001 = 10 THEN JUMP LABL0001 ELSE NOP Początek pętli POWTORZ 11 RAZY R[1]=0 LBL [1] … R[1]=R[1]+1 IF R[1] <4 JMP LBL [1] … SET LR001=0 lub CLEAR LR001 :LABL0001 …. INC LR001 IF LR001< 10 THEN JUMP LABL 0001 Czekaj Czekaj (warunkowy) Skok bezwarunkowy Koniec pętli KONIEC POWTARZANIA Wywołanie programu WYKONAJ PODPROGRAM 12 CALL 12 CALL 12.prg Obsługa WYJŚCIA USTAW WY [1]=1/0 DO [2] = ON/OFF OUT O1#(001) = ON/OFF CZEKAJ NA WE [2]=1/0 DI [2] = ON/OFF WAIT_IP I2#(001) = ON/OFF T= 20 (sterowanie WYJŚCIEM) Obsługa WEJŚCIA (czekanie na sygnał WEJŚCIA) Inne wybrane instrukcje Instrukcja Czekaj Czekaj (warunkowy) Skok bezwarunkowy Skok warunkowy Początek pętli Koniec pętli Wywołanie programu ABB ABB WaitTime 0.5; WaitUntil di4 = 1; WaitDI/WaitDO czekaj aż cyfrowe wejście/wyjście jest ustawione GOTO next; ... next: IF di1 = 1 THEN ... (Clear reg1;) reg1 := 0; next: ... reg1 := reg1 + 1; IF reg1<=5 GOTO next; Load \Dynamic, diskhome \File:="PART_A.MOD"; Obsługa WYJŚCIA SetDO do15, 1; Obsługa WEJŚCIA IF di1 = 0 THEN … FOR i FROM 1 TO 10 DO routine1; ENDFOR Repeats the routine1 procedure 10 times. KUKA PANASONIC - Instrukcje Spawalnicze Ruch liniowy z oscylacją - zygzakowaty PANASONIC - Instrukcje Spawalnicze Ruch kołowy z oscylacją - zygzakowaty PANASONIC - Instrukcje Spawalnicze Ruch kołowy z oscylacją - zygzakowaty Poznań 2018 POLITECHNIKA POZNAŃSKA Wydział Budowy Maszyn i Zarządzania Instytut Technologii Mechanicznej Zakład Projektowania Technologii ul. Piotrowo 3, 61-138 Poznań tel. +48 +61 6652-162 fax: +48 +61 6652-200 e-mail: olaf.ciszak@put.poznan.pl Pok. 638, 224 Konsultacje: Studia stacjonarne: środa, godz. 8:00 – 9:30 Pytania zagadnienia egzaminacyjne (3 pytania) ◦ Termin I - termin do ustalenia? ◦ Termin II - termin do ustalenia? Pok. 638 Kaczmarek W., Panasiuk J., Środowiska programowania robotów, PWN, Warszawa 2017 Kost G., Świder J., Programowanie robotów on-line, WPŚ 2008 Zdanowicz R., Podstawy Robotyki, WPŚ, 2001 Zdanowicz R., Podstawy Przemysłowych, WPŚ, 2001 Żurek J., Stan i tendencje rozwojowe technologicznych. WPTPN, Poznań 1997. Żurek J., Robotyzacja zagadnienia, WPP 1997 Robotyki-Laboratorium procesów robotyzacji technologicznych Podręczniki programowania robotów przemysłowych: FANUC PANASONIC IRP-6 Internet z robotów procesów – wybrane Podstawowe zadania układów sterowania Komunikacja z operatorem •możliwość sterowania ręcznego napędami przez operatora •możliwość wprowadzania programu działania robota •możliwość zapamiętania programu komunikacja z otoczeniem reagowanie na działania operatora Podstawowe zadania układu sterowania Sterowanie zespołami napędowymi •sterowanie zespołami ruchu pozycjonowanymi w całym zakresie przemieszczeń •sterowanie zespołami pozycjonowanymi zderzakowo •sterowanie chwytakami •sterowanie głowicami narzędziowymi sterowanie napędami Komunikacja z układami sensorycznymi sterowania urządzeniami zewnętrz. Sterowanie urządzeń zewnętrznych •włączanie i wyłączanie urządzeń zewnętrznych dwustanowych (sterowanie binarne) •sterowanie wejść i wyjść technologicznych Zadanie podstawowe: pozycjonowanie (położenie i orientacja) Zadania pomocnicze: oczekiwanie na spełnienie warunku ustalanie kolejności dalszego działania obliczanie parametrów, nastaw, współrzędnych sterowanie wejściami i wyjściami transmisja danych Przyszłość: ABB - The dual-arm concept robot http://www.abb.com Przyszłość: Motoman SDA10D Zdj. Motoman.com Zdj. Motoman.com Przyszłość: Mobile Humanoid „Rollin’ Justin http://www.dlr.de Roboty w AUDI Robot „Ray” samodzielnie się porusza i jest elastyczny w zastosowaniu. Składa się ze stelaża o długości sześciu metrów i szerokości trzech metrów, który za pomocą czujników ocenia pozycję i wymiary samochodu, po czym dostosowuje się do nich. Następnie robot ostrożnie łapie koła i podnosi samochód na wysokość do dziesięciu centymetrów. Specjalne oprogramowanie sterujące przydziela autu miejsce, na które Ray go odstawia. W ten sposób można szybko transportować samochody o długości do 5,3 m i tymczasowo je magazynować, co przyczynia się do oszczędności miejsca. Gdy na poziomie sortowniczym znajdzie się wystarczająca liczba pojazdów przeznaczonych do wysyłki do tego samego miejsca, robot przygotuje je do załadunku. W fabryce Audi w Ingolstadt rozpoczął pracę robot wykonujący swe zadania „ramię w ramię” z ludźmi. Usunięto bariery bezpieczeństwa, a maszyna idealnie wpasowała się w cykle pracy ludzkiej. SYSTEM PART4you spełnia wysokie wymogi bezpieczeństwa określone dla współpracujących robotów, ten inteligentny system otrzymał wymagany certyfikat towarzystwa ubezpieczeń od odpowiedzialności pracodawców. http://www.audiusa.com LBR iiwa LBR iiwa LBR iiwa Racer 999 www.comau.com Hannover Messe 2015 www.care-o-bot-4.de Języki programowania robotów przemysłowych Sposoby programowania robotów przemysłowych można podzielić ze względu na sposób wyrażania programu działań robota na: • tekstowe, a w tym graficzne - off-line • nietekstowe - on-line • hybrydowe (zawierające w sobie obie powyższe formy). Języki Programowania robotów przemysłowych Język programowania robotów: • • • • • • • • • • • • ABB – RAPID KUKA – KRL Fanuc – Karel Comau – PDL2 Mitsubishi – MELFA-BASIC Kawasaki – AS Motoman – INFORM II Stäubli – VAL3 Universal Robots – URScript Toshiba – SCOL Festo – FTL Bosch - BAPS Środowiska do programowania robotów przemysłowych w trybie offline/online Umożliwiają programowanie robotów oraz przeprowadzanie symulacji ich pracy w trybie offline (bez użycia robota), z wykorzystaniem standardowego komputera PC - - - - Wirtualne projektowanie i programowanie stanowisk, linii i całych fabryk oraz przygotowanie oferty dla odbiorcy końcowego, włączając w to m.in.: organizację stanowiska produkcyjnego, wizualizację 3D, dobór robotów oraz przedstawienie ich zasięgów pracy – zajętości przestrzeni roboczej (analizy przestrzennej poszczególnych komponentów robota), utworzenie filmów symulacji oraz zapisanie widoków stanowisk Optymalizacja rozmieszczenia gniazd roboczych na liniach produkcyjnych fabryk Rozbudowane biblioteki zawierające m.in. wybrane typy robotów, pozycjonery, tory jezdne, mechanizmy, przenośniki i czujniki istnieje możliwość łatwego tworzenia rozbudowanych aplikacji Platformy programowe pozwalają również na import modeli z systemów komputerowego wspomagania projektowania CAD w wybranych formatach, a nawet w niektórych przypadkach są z nimi w dużym stopniu zintegrowane (np.: Melfa-Works firmy Mitsubishi jest instalowane jako moduł programu SolidWorks). Wprowadzanie do systemu nowych komponentów bez przerywania produkcji Prze- i programowanie dużej liczby kontrolerów robotów przemysłowych (opracowanie aplikacji sterujących robotami i określenie cyklów pracy), przeprowadzanie pełnych symulacji 3D z uwzględnieniem cyklów pracy rzeczywistych sterowników, optymalizację programów robotów w celu zwiększenia produktywności Symulacji i monitorowania wejść/wyjść oraz współpracy robotów w poszczególnych gniazdach Współpracę komputera z rzeczywistym robotem (w pełnym lub częściowym zakresie) w trybie online Wybrani producenci robotów przemysłowych oraz ich środowiska do programowania robotów w trybie offline ABB RobotStudio Fanuc Robotics RoboGuide Kawasaki Robotics K-Roset Kuka Roboter Kuka Sim Pro Mitsubishi Robotics Melfa-Works Epson Epson RC + 7.0 Comau RoboSim PRO Denso Robotics WINCAPS III Staubli Robotics Staubli Robotics Suite Motoman Robotics-Yaskawa MotoSim EG-VRC Reis Robotics ProSim Panasonic-Matsushita Welding Systems DTPS 3D, G2 PC Tools 3D Uniwersalne środowiska do programowania robotów w trybie offline RobCAD Delmia IGRIP Robot 3D Proces Simulate www.plm.automation.siemens.com - Wysoka cena Możliwość pracy w chmurze – integracja wielu środowisk Dynamiczne zarządzanie danych projektowych Redukcja błędów na etapie projektowym i praktycznej realizacji KUKA.Sim Pro firmy KUKA Oprogramowanie KUKA.WorkVisual Oprogramowanie systemowe KUKA Oprogramoiwanie aplikacyjne: KUKA.ArcTech KUKA.CNC KUKA.ConveyorTech KUKA.FlexPal Editor / KUKA.FlexPal RT KUKA.GlueTech KUKA.LaserTech KUKA.SeamTech KUKA.ServoGun KUKA.TouchSense KUKA.VisionTech http://www.kuka-robotics.com/poland/pl/products/software/ FANUC M-16iB/10L R-30iA Dane pozycji Dane pozycji zawierają pozycje oraz położenie robota. Podczas zapamiętywania instrukcji ruchu robota dane pozycji są w tym samym momencie zapisywane do programu. Dane pozycji są sklasyfikowane w dwa typy. Jeden typ składa się ze współrzędnych połączeniowych w systemie współrzędnych połączeniowych. Drugi typ składa się z współrzędnych kartezjańskich reprezentujących pozycje narzędzia oraz orientację w przestrzeni roboczej. Standardowo używanymi danymi są współrzędne kartezjańskie. Współrzędne kartezjańskie Dane pozycji zawierające współrzędne kartezjańskie określone są w czterech grupach. Pozycja środkowego punktu narzędzia TCP (punkt początkowy układu współrzędnych związanego z narzędziem) w układzie współrzędnych kartezjańskich, nachylenie osi wzdłuż ruchu narzędzia (układ współrzędnych narzędzia), konfiguracja oraz wykorzystywany układu współrzędnych kartezjańskich. Układ współrzędnych kartezjańskich może być określony jako układ współrzędnych rzeczywistych. Sposób wyboru układu współrzędnych jest opisany dalej. Pozycja oraz położenie • Pozycja (x, y, z) reprezentuje położenie w trzech wymiarach punktu środkowego narzędzia (punkt początkowy układu współrzędnych związanych z narzędziem) w układzie współrzędnych kartezjańskich. • Położenie (w, p, r) reprezentuje kąt wychylenia wzdłuż osi X, Y i Z w układzie współrzędnych kartezjańskich. Zmienne pozycji oraz rejestr pozycji W instrukcjach ruchu, dane pozycji reprezentowane są za pomocą zmiennych pozycji (P[i]) lub rejestru pozycji (PR[i]). Zazwyczaj używane są zmienne pozycji. Rejestry Rejestr jest zmienną służącą do przechowywania liczby całkowitej lub ułamka. Dostępnych jest 200 rejestrów. Do wyświetlania i ustawiania wartości rejestrów służy ekran rejestrów. NIEBEZPIECZEŃSTWO Rejestry są używane w programie. Nigdy nie należy zmieniać wartości rejestru bez wcześniejszego sprawdzenia w jaki sposób dany rejestr jest używany przez system. W przeciwnym przypadku może to mieć negatywny wpływ na program. Dane pozycji Wyświetlanie ekranu rejestrów Krok 1. Wcisnąć przycisk MENUS w celu wyświetlenia menu ekranu. 2. Nacisnąć "NEXT", następnie wybrać "DATA„ - Alternatywą jest też naciśnięcie przez użytkownika klawisza DATA zamiast wykonania kroków 1 i 2 opisanych powyżej. 3. Nacisnąć F1, TYPE. 4. Wybrać Registers. Pojawi się ekran rejestrów. Rejestry R[1]=120 R[2]=DI[5] R[3]=AI[2] DO=R[3] IF / SELECT – instrukcje warunkowe, pozwalające wykonać działanie w zależności od wartości, jaką w danej chwili przyjmuje rejestr podstawowy, lub w zależności od stanu wejścia lub wyjścia; użytkownik ma do wyboru dwa typy instrukcji warunkowych: IF ZMIENNA OPERATOR WARTOŚĆ DZIAŁANIE IF R[4]<5, CALL MAGAZYN IF DI[2]=ON, JMP LABL[4] Przykład programowania Rejestry są używane w programach, gdy wykorzystywane są: • Instrukcja rejestrowa • Pośrednie określanie argumentów Program A powtarzany jest 11 razy, następnie wykonywany jest program B i dalej wykonywanie programu jest zakończone. Rejestry SELECT R[n] = WARTOŚĆ 1, DZIAŁANIE 1 = WARTOŚĆ 2, DZIAŁANIE 2, …, ELSE, DZIAŁANIE m SELECT R[2] = 1, JMP LBL [2] = 2, JMP LBL [3] ELSE CALL END Operatory podstawowe NOT, OR, AND IF RO[1]=ON AND DI[105]=OFF, CALL POBRANIE Rejestry pozycji Rejestr programu to zmienna przechowująca dane o pozycji. Udostępnione jest 100 rejestrów pozycji. Do wyświetlania i ustawiania wartości rejestrów służy ekran rejestrów pozycji. Ustawianie rejestrów pozycji Krok 1. Wcisnąć przycisk MENUS w celu wyświetlenia menu ekranu. 2. Nacisnąć 0 NEXT, następnie wybrać 3 DATA - Alternatywą jest też naciśnięcie przez użytkownika klawisza DATA zamiast wykonania kroków 1 i 2 opisanych powyżej. 3. Nacisnąć F1 [TYPE], aby wyświetlić menu zmiany ekranu. 4. Wybrać Position Reg. Pojawi się ekran rejestrów pozycji. Rejestry pozycji Aby wpisać komentarz, należy użyć następującej procedury: 1. Przesunąć kursor do wybranego pola numeru rejestru pozycji, następnie nacisnąć przycisk ENTER. 2. Wybrać metodę wprowadzania znaków. 3. Nacisnąć wybrany przycisk funkcyjny, a następnie wpisać komentarz. 4. Po zakończeniu wprowadzania danych wcisnąć ENTER. Aby zmienić wartość rejestru pozycji 1. Przesunąć kursor do pola numeru rejestru pozycji. 2. Następnie nacisnąć przycisk F3 RECORD, jednocześnie trzymając naciśnięty przycisk SHIFT. • R oznacza, że rejestr pozycji przechowuje już zapamiętaną wartość. • Gwiazdka (*) oznacza, że nie przechowuje. Rejestry pozycji Aby usunąć dane dotyczące pozycji przechowywane w rejestrze pozycji: 1. nacisnąć F5 CLEAR, jednocześnie trzymając naciśnięty przycisk SHIFT. 2. Wybrać YES. Dane dotyczące pozycji z wybranego rejestru pozycji zostaną wyczyszczone Rejestry pozycji Aby zobaczyć aktualne dane dotyczące pozycji, należy nacisnąć F4 POSITION. Pojawi się ekran szczegółowych danych dotyczących pozycji. Aby zmienić wartość, należy przesunąć kursor do wybranego pola, następnie wpisać nową wartość. Rejestry pozycji Aby zmienić konfigurację, należy nacisnąć F3 CONFIG. Przesunąć kursor do wybranego pola, następnie zmienić łączne dane dotyczące pozycji przy pomocy przycisków do góry i do dołu. Rejestry pozycji Aby zmienić postać przechowywania danych dotyczących pozycji, należy nacisnąć F5 REPRE i wybrać postać przechowywania. Rejestry pozycji Aby wyświetlić dodatkowe osie (podgrupa), należy nacisnąć F2 PAGE. Rejestry pozycji Po zakończeniu ustawień, należy nacisnąć F4 DONE. Instrukcje wykorzystujące rejestry pozycji • L PR[3] 100 cm/min FINE Ruch liniowy do pozycji zapisanej w rejestrze pozycji numer 3 • J P[4] 50% CNT20 OFFSET, PR[5] Dojazd do pozycji numer 4 z przesunięciem o wartość współrzędnych zapisanych w rejestrze współrzędnych numer 5 • P[3] = P[2] + PR [1] Wyliczenie pozycji P3 jako sumy odpowiednich współrzędnych pozycji P2 i zdefiniowanych w rejestrze pozycji PR1; aby zrealizować ruch do pozycji P3 należy wywołać instrukcję, np. JP[3] 50% FINE • PR[2,3] = PR[1,3] + 100 Wyliczenie wartości trzeciej współrzędnej („z” w układzie kartezjańskim) rejestru PR2, jako współrzędnej „z” rejestru PR1, powiększonej o wartość 100 mm Opcje dodatkowe w instrukcjach ruchu • ACC Umożliwia określanie przyśpieszenia z jakim ma być wykonana instrukcja ruchu; parametr zmienia się w zakresie 1-150%, gdzie 150% oznacza przyśpieszenie maksymalne; w celu zmniejszenia przeciążeń układu przy starcie i hamowaniu należy ustalić wartość mniejszą Przykład: J P[1] 50% FINE ACC80 Opcje dodatkowe w instrukcjach ruchu • OFFSET CONDITION • OFFSET, PR[…] Realizuje dojazd do pozycji z przesunięciem zdefiniowanym w rejestrze pozycji o wybranym numerze Opcje dodatkowe w instrukcjach ruchu • TOOL_OFFSET CONDITION PR[…] • TOOL_OFFSET, PR[…] Uwzględnia wymiary zamocowanego w adapterze narzędzia przy dojeździe do pozycji, w których realizowana jest obsługa urządzeń technologicznych Opcje dodatkowe w instrukcjach ruchu • SKIP CONDITION [I/O]=[wartość] • J P[1] 50 FINE Skip,LBL[3] Jeżeli warunek pominięcia nie jest spełniony , instrukcja pominięcia powoduje przeskok do etykiety odgałęzienia. Jeżeli warunek pominięcia jest spełniony podczas przemieszczania robota do punktu docelowego, robot kontynuuje ruch a wykonanie programu przechodzi do następnej instrukcji znajdującej się w następnej linii Opcje dodatkowe w instrukcjach ruchu • TIME BEFORE / TIME AFTER Wykonuje zadane działanie (włącza, wyłącza narzędzie przez ustalenie odpowiedniego stanu na wyjściu) na określony czas przed lub po osiągnięciu pozycji Przykład: 1: J P [1] 100% FINE :TB 1.0sec CALL OPEN HAND 1: J P [1] 100% FINE :TA 1.0sec CALL OPEN HAND Opcje dodatkowe w instrukcjach ruchu Synchronizacja wykonania podprogramu (Instrukcja TIME BEFORE) Synchronizacja wykonania podprogramu (Instrukcja TIME AFTER) Opcje dodatkowe w instrukcjach ruchu • DISTANCE BEFORE Funkcja odległości od celu. Funkcja odległości od punktu celu wykonuje część instrukcji, kiedy punkt TCP wejdzie w sferę, której środkiem jest punkt docelowy. Wartość odległości decyduje o promieniu tej sfery. Wartość odległości zapamiętywana jest w milimetrach (0-999 ,9 mm). Jest to tzw. sfera uruchomienia. Przykład: 1: L P [1] 2000mm/sec FINE 2: L P [2] 2000mm/sec FINE DB 100.0mm DO[1]=ON Przykład programowania FANUC - Przykład programowania Na rysunku poniżej została przedstawiona trajektoria ruchu głowicy dozującej klej. Trajektoria punktu TCP (PR) narzędzia stanowi krzywa łamana składająca się z punktów podporowych P1, P23. Przy realizacji programu należy przyjąć następujące założenia: 1) Pominąć przemieszczenie w osi Z 2) Przyjęto konwencję zapisu: Pn oznacza pozycję n o znanych współrzędnych, 3) Klejenie odbywa się w sposób ciągły na krawędziach pomiędzy punktami P2 i P5, P7 i P11 oraz na okręgu wyznaczonym przez punkty P12-P15-P12 4) Wyjście robotowe RO[2] odpowiada za obsługę głowicy dozującej klej 5) W instrukcjach ruchu nalęzy wykorzystać dodatkowe funkcje: DISTANCE BEFORE, TIME BEFORE oraz TIME AFTER FANUC - Przykład programowania FANUC - Przykład programowania 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: J P[1] 100% CNT100 L P[2] 10mm/sec FINE TB 0.20 sec, RO[2:glowica]=ON C P[3] :P[4] 10mm/sec CNT10 L P[5] 10mm/sec FINE TA 0.10 sec RO[2:glowica]=OFF L P[6] 10mm/sec CNT50 L P[7] 10mm/sec FINE DB 0.10mm RO[2:glowica]=ON L P[8] 10mm/sec CNT10 C P[9] :P[10] 10mm/sec CNT10 L P[11] 10mm/sec FINE TA 0.10 sec RO[2:glowica]=OFF J P[12] 75% FINE TB 0.10sec RO[2:glowica]=ON C P[13] :P[14] 200mm/sec CNT1 C P[15] :P[12] 200mm/sec FINE, RO[2:glowica]=OFF J P[1] 100% CNT100 [END] Panasonic Panasonic Panasonic Panasonic Panasonic Panasonic Przykład programowania Przykład programowania Przykład programowania Przykład programowania Przykład programowania Przykład programowania Przykład programowania