Metody programowania robotów Roboty KUKA Język programowania KRL Klasy robotów przemysłowych KUKA 2 Możliwości montażu robotów KUKA Różnice w układach smarowania 3 Jednostki liniowe i pozycjonery KUKA 4 Podstawowe elementy systemu robota Manipulator Szafa sterownicza (KR-C2, KR-C4) Ręczny panel operatorski 5 Połączenie z urządzeniami towarzyszącymi Sieci lokalne: • ProfiBus • EtherCAT • ProfiNET • DeviceNet • CAN Wejścia i wyjścia cyfrowe: • pojedyncze • zgrupowane 6 Elementy bezpieczeństwa 1. Cela ze ściankami z plexi lub kraty 2. Wyłączniki na ramieniu 3. Wyłącznik kontrolny drzwi 4. Grzybek STOP przy celi 5. Grzybek STOP na panelu 6. Oprogramowanie • Inne – np. kurtyny świetlne, maty • Przyciski potwierdzenia bezpieczeństwa 7 Tryby pracy robota • T1 (Test 1) – ograniczona szybkość, wyłączone zabezpieczenia, możliwy przesuw ręczny • T2 (Test 2) – pełna szybkość, wyłączone zabezpieczenia • AUT (Automatyka) – pełna szybkość, brak konieczności stałej obsługi panelu, włączone zabezpieczenia • EXT (Automatyka zewnętrzna) – sterowanie z zewnętrznego układu nadzorczego (np. PLC) 8 Sterowanie ręczne • Praca w dowolnym z układów współrzędnych 9 Sterowanie ręczne osiowe 10 Sterowanie ręczne kartezjańskie • Sterowanie za pomocą przycisków na panelu sterującym 11 Sterowanie ręczne kartezjańskie • Sterowanie joystickiem 6-osiowym 12 Układy współrzędnych Ruch końcówki robota może się odbywać w następujących układach współrzędnych: • układ współrzędnych zewnętrznych WORLD • układ związany z podstawą robota ROBROOT • układy związane z wykonywanym zadaniem BASEn • układ związany z narzędziem „zerowym” – z kołnierzem FLANGE • układ związany z narzędziem TOOL 13 Kalibracja (1) 14 Kalibracja (2) 15 Układ współrzędnych ROBROOT 16 Układ współrzędnych WORLD 17 Układy współrzędnych związane z zadaniem 18 Układ współrzędnych kołnierza 19 Układ współrzędnych narzędzia • TCP – punkt zerowy narzędzia (tool center point) • X+ - kierunek „uderzenia” narzędzia 20 Pomiar narzędzia - przebieg 21 Pomiar TCP •Metoda 4-punktowa każdy punkt przy innej orientacji narzędzia • Metoda referencyjna – wartości względem znanego narzędzia 22 Pomiar orientacji narzędzia • Określenie kierunku osi X – „uderzenia” narzędzia: – ustawić narzędzie osią uderzenia pionowo w dół (metoda ABC WORLD) – ustawić narzędzie w TCP, następnie wskazać X- oraz Y+ 23 Pomiar zewnętrznego TCP 24 Pomiar układów bazowych • Cel – zdefiniować układ kartezjański związany z zadaniem • Metoda 3-punktowa Metoda pośrednia 25 Grupy użytkowników • Administrator: – konfiguracja układu sterowania robota (np. dodatkowe osie) – konfiguracja systemu (np. konfiguracja sieci lokalnej) – tworzenie własnych komend technologicznych • Ekspert: – zaawansowane programowanie w języku KRL – tworzenie złożonych programów roboczych – numeryczne programowanie ruchów • Użytkownik: – zadania uruchamiania systemu (kalibracja, pomiary) – tworzenie prostych programów roboczych – uruchamianie programów 26 Wykonanie programu 27 Edycja i wykonywanie programu Do wprowadzania komend w trybie użytkownika służą formularze ułatwiają wprowadzanie komend i uzupełniają je o dodatki Użytkownik zaawansowany może wprowadzać komendy wpisując je bezpośrednim tekstem Program może być wykonywany w następujących trybach: • krok po kroku (zatrzymanie po każdej instrukcji) • ciągły w przód (normalna praca robota) • w tył (dla trybu „krok po kroku”) 28 Programowanie ruchu 29 Przesuw inicjalizacyjny • Przesuw SAK (Satzkoinzidenz), ang. BCO • Po co? Aby uzyskać zgodność aktualnego położenia ze współrzędnymi aktualnego punktu w programie robota. • Kiedy? Po wczytaniu nowego lub resecie istniejącego programu. • Jak? Doprowadzenie TCP do znanego punktu lub na ścieżkę • Parametry? Zmniejszona szybkość (jak w trybie testowym), aby można było zatrzymać robota w przypadku możliwej kolizji 30 Ruch PTP 31 Ruch PTP • Ruch po najszybszym torze • Oś prowadząca – oś, która potrzebuje najwięcej czasu na ruch • Wszystkie osie startują i zatrzymują się razem • Dokładnego przebiegu nie da się przewidzieć • Za każdym razem przebieg jest taki sam 32 PTP - parametry • Nazwa punktu docelowego. Domyślnie jest to bieżące położenie robota • VEL - prędkość ustawiana jako ułamek (%) maksymalnej prędkości ruchów programowanych • ACC - przyspieszenie ruchów • CONT - ścieżka ciągła (lub nie, jeśli pole puste) • Odległość przybliżenia • TOOL - wybrane narzędzie • BASE - wybrany bazowy układ współrzędnych (lub narzędzie stacjonarne) • Rozpoznawanie kolizji - monitorowanie momentów w napędach 33 Ruch po torze liniowym (LIN) 34 Ruch LIN 35 Ruch LIN 36 LIN - parametry • Nazwa punktu docelowego. Domyślnie jest to bieżące położenie robota • VEL - prędkość ruchu po torze wyrażona w m/s • ACC - przyspieszenie ruchów • CONT - ścieżka ciągła - punkt końcowy nie jest osiągany precyzyjnie (lub jest, jeśli pole puste) • Wielkość przybliżenia - w mm • TOOL - wybrane narzędzie • BASE - wybrany bazowy układ współrzędnych (lub narzędzie stacjonarne) • Prowadzenie orientacji: – stała (jak w punkcie początkowym) – zmienna (zmienia się liniowo od początku do końca) • Rozpoznawanie kolizji 37 Ruch po torze kołowym (CIRC) 38 Ruch CIRC 39 Ruch CIRC – prowadzenie orientacji 40 CIRC - parametry • Nazwa punktu docelowego. Domyślnie jest to bieżące położenie robota • Nazwa punktu pośredniego. • VEL - prędkość ruchu w m/s, ACC - przyspieszenie ruchów • CONT - ścieżka ciągła - punkt końcowy nie jest osiągany precyzyjnie (lub jest, jeśli pole puste) • Wielkość przybliżenia - w mm • TOOL - wybrane narzędzie, BASE - wybrany układ bazowy • Prowadzenie orientacji: – stała (jak w punkcie początkowym) – zmienna (zmienia się liniowo od początku do końca) • Rozpoznawanie kolizji 41 Przybliżanie ruchów 42 Przybliżanie ruchów 43 Przybliżanie ruchów 44 Przybliżanie ruchów 45 Przybliżanie ruchów Bez przybliżania czas trwania ruchu jest znacznie większy - hamowania 46 Przedbieg programu • Na ekranie podczas wykonywania programu widoczny jest licznik przebiegu – zaznaczenie aktualnie wykonywanego polecenia • Przedbieg programu – wykonywanie kilku (standardowo 3) poleceń w przód, aby umożliwić planowanie toru przybliżeń • W przedbiegu wykonywane są funkcje arytmetyczne i sterujące np. wyjściami cyfrowymi • Niektóre instrukcje zatrzymują przedbieg, wtedy nie jest możliwe wykonanie przybliżenia • Jest możliwa zmiana wielkości przedbiegu przez zmianę wartości zmiennej $ADVANCE (liczba linii przedbiegu) • $ADVANCE = 0 - brak przedbiegu, ścieżki bez przybliżeń • $ADVANCE = 3 - wartość domyślna (w fabrykach WV – 1) • $ADVANCE = 5 - wartość maksymalna 47 Funkcje oczekiwania • WAIT – oczekiwanie przez określony czas (przedbieg jest zatrzymywany) 48 Funkcje oczekiwania • WAIT FOR – zatrzymanie w oczekiwaniu na: – – – – zmianę sygnału wejściowego (IN) zmianę sygnału wyjściowego (OUT) zmianę wewnętrznej flagi (FLAG, CYCFLAG) zmianę stanu timera (TIMER) • Można sygnały powiązać logicznie (AND, OR, EXOR, NOT) • Jeżeli użyto CONT, funkcja nie zatrzymuje przedbiegu UWAGA – zmiana sygnału nie jest rozpoznawana po jego sprawdzeniu 49 Wejście i wyjście • OUT – wyprowadzenie wartości TRUE lub FALSE na wyjście o określonym numerze (lub określonej nazwie) • CONT – bez zatrzymania przedbiegu, ustawienie wyjścia podczas przedbiegu 50 Wejście i wyjście • PULSE – wyprowadzenie impulsu o określonym czasie trwania na wyjście • W formularz wstawia się czas trwania impulsu • CONT – bez zatrzymania przedbiegu, ustawienie sygnału podczas przedbiegu 51 Wejście i wyjście synchronizowane z torem • • • • • • • • SYN OUT, SYN PULSE – wyjście zależne od ścieżki (1) – numer wyjścia (2) – nazwa wyjścia (jeśli przypisana) (3) – stan, do którego przełączamy wyjście (4) – punkt, względem którego następuje przełączenie: START – względem punktu początkowego (czas) END – względem punktu końcowego (czas) PATH – względem punktu początkowego (odległość) 52 Programowanie z poziomu eksperta • Zmienić użytkownika na „Expert” Program (tzw. moduł) – 2 pliki: • SRC – tekstowe źródło kodu programu • DAT – powiązany plik ze współrzędnymi punktów i innymi potrzebnymi danymi 53 Zmienne i deklaracje • Składnia DECL Typ_danych Nazwa_Zmiennej Przykład: DECL INT Liczba_sztuk • Typy proste: INT, REAL, BOOL, CHAR Można opuścić słowo DECL 54 Zmienne i deklaracje • Tablice: Indeksy zaczynają się od 1 DECL Typ_danych Nazwa_tablicy[Liczba_elementów] • Przykłady tablic DECL REAL Pomiar[3] DECL REAL Wysokosc[2,6] 55 Deklaracja zmiennych - struktury • Struktura – zestaw zmiennych różnego typu STRUC Typ_chwytak REAL Szer, INT L_szczek, BOOL Szybki DECL Typ_chwytak Chwytak1 ... Chwytak1={Szer 25.3, L_szczek 2, Szybki FALSE} Chwytak1.Szybki = TRUE • Wstępnie zdefiniowane struktury: STRUC AXIS REAL A1,A2,A3,A4,A5,A6 STRUC E6AXIS REAL A1,A2,A3,A4,A5,A6,E1,E2,E3,E4,E5,E6 STRUC FRAME REAL X,Y,Z,A,B,C STRUC POS REAL X,Y,Z,A,B,C, INT S,T STRUC E6POS REAL X,Y,Z,A,B,C,E1,E2,E3,E4,E5,E6 INT S,T 56 Odczyt stanów robota – zmienne systemowe • • • • • • $TIMER[1..64] - timery $FLAG[1..1024] – markery (flagi) $CYCFLAG[1..256] – flagi stale analizowane (cykliczne) $I[1..20] – licznik etapów obróbki $IN[1..4096] – wejścia cyfrowe $OUT[1.4096] – wyjścia cyfrowe 57 Operatory i funkcje standardowe Operatory: • Arytmetyczne: + - * / • Porównania: == <> > < >= <= • Logiczne: NOT AND OR EXOR • Bitowe: B_NOT B_AND B_OR B_EXOR • „:” – połączenie z układem współrzędnych Funkcje: • ABS(X) SQRT(X) SIN(X) COS(X) TAN(X) ACOS(X) ATAN2(Y,X) 58 Operator łączenia Operator geometryczny ‘:’ (dwukropek) W tabeli typy wyników zależnie od typów argumentów: Lewy operand Operator (układ odniesienia) Prawy operand (układ docelowy) Wynik POS : POS POS POS : FRAME FRAME FRAME : POS POS FRAME : FRAME FRAME 59 Ważne zmienne systemowe $TIMER_STOP[Nr_timera](FALSE – stop, TRUE – start) $AXIS_ACT Typ: E6AXIS Aktualna pozycja robota $AXIS_INT Typ: E6AXIS Położenie w chwili zgłoszenia przerwania $MODE_OP Typ: ENUM: #T1, #T2, #AUT, #EX, #INVALID $NEAR_POSRET BOOL – robot w sferze wokół punktu $POS_RET $NEARPATHTOL Promień sfery wokół $POS_RET $ON_PATH BOOL – na ścieżce programowej $OV_PRO INT - procent prędkości programowej $POS_ACT E6POS – aktualne położenie kartezjańskie $POS_INT E6POS – położenie kartezjańskie w chwili przerwania $POS_RET Położenie kartezjańskie powrotu na ścieżkę $SOFTN_END[n], $SOFTP_END[n] Software-owe ograniczniki osi robota (n=1..12) $T2_OV_REDUCE BOOL – Czy włączone ograniczenie prędkości w trybie T2 $VEL_ACT REAL – aktualna prędkość końcówki [m/s] 60 Ważne zmienne systemowe $WORLD – światowy układ współrzędnych (tylko do odczytu) $ROBROOT – układ współrzędnych robota (tylko do odczytu) $TOOL – bieżące narzędzie TOOL_DATA[n] – tabela zdefiniowanych narzędzi $BASE – bieżący bazowy układ współrzędnych BASE_DATA[n] – tabela zdefiniowanych układów bazowych $LOAD – bieżące dane odnośnie obciążenia LOAD_DATA[n] – tabela definicji obciążeń S, T – zmienne „status” i „turn” – informacja o konfiguracji robota, jeżeli dane położenie może być osiągnięte przy różnych konfiguracjach S, T są obliczane tylko przy ruchach PTP, zatem pierwszy ruch musi być PTP 61 Status, turn T: Wart Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 0 A6 >= 0° A5 >= 0° A4 >= 0° A3 >= 0° A2 >= 0° A1 >= 0° 1 A6 < 0° A5 < 0 ° A4 < 0° A3 < 0° A2 < 0° A1 < 0° S: Wartość Bit 2 Bit 1 Bit 0 0 0° <= A5 < 180° A5 < -180° A3 < a a – zależy od typu robota Grundbereich 1 -180° <= A5 < 0° A5 >= 180° A3 >= a Überkopfbereich 62 PTP – postać alternatywna PTP Punkt_koncowy <Dane_dodatkowe> Przykłady: PTP {Z 500, X 125.8} PTP { A1 10, A2 -10, A3 0, A4 -40.5, A5 34, A6 120} C_PTP PTP_REL Wartości_względne Przykłady: PTP_REL {A3 -40} PTP_REL { X 200, Z -20, B 30} C_PTP 63 LIN, CIRC LIN {Z 400, Y -200} LIN_REL{Z -30, X 100} CIRC {Punkt_pośredni}, {Punkt_końcowy}, Kąt CIRC_REL {Punkt_pośredni}, {Punkt_końcowy}, Kąt ;??? 64 Instrukcja warunkowa IF Warunek THEN Polecenia ELSE Polecenia ENDIF lub IF Warunek THEN Polecenia ENDIF 65 Instrukcja wyboru SWITCH Kryterium_selekcji CASE 1 Polecenia CASE 2 Polecenia DEFAULT Polecenia ENDSWITCH 66 Pętla z licznikiem FOR Licznik = Start TO End STEP Zmiana Polecenia ENDFOR 67 Pętla „wyrzucająca” WHILE Warunek Polecenia ENDWHILE 68 Pętla „niewyrzucająca” REPEAT Polecenia UNTIL Warunek 69 Instrukcja skoku GOTO Etykieta … Etykieta: … Pętla nieskończona LOOP Polecenia ENDLOOP 70 Podprogramy • Podprogramy: procedury i funkcje DEF Nazwa_podprogramu() Polecenia END DEFFCT Typ_wartości Nazwa_funkcji() Polecenia RETURN (Wartość) ENDFCT 71 Podprogramy 72 Różne instrukcje HALT – zatrzymanie programu, aż do naciśnięcia przycisku „Start” EXIT – wyjście z najbardziej zagnieżdżonej pętli RETURN – wyjście z podprogramu do programu wywołującego RETURN (Wartość) – wyjście z funkcji ze zwrotem wartości Komentarze: Tekst od średnika do końca linii jest ignorowany Można wstawić formularz „Komentarz” Można wstawić formularz „Stempel” – dodatkowo znacznik czasowy 73 Programowanie przerwań GLOBAL INTERRUPT DECL Priorytet WHEN Zdarzenie DO Podprogram Priorytet – 1..39 lub 81..128, 1 – najwyższy (numer przerwania) Zdarzenie – co wyzwala przerwanie: zmiana wartości zmiennej logicznej, sygnał, wynik porównania Podprogram – nazwa wywoływanego podprogramu INTERRUPT ON nr - włączenie przerwania INTERRUPT OFF nr - wyłączenie przerwania INTERRUPT DISABLE nr - zablokowanie włączonego przerwania INTERRUPT ENABLE nr - odblokowanie zablokowanego przerwania 74 Programowanie przerwań BRAKE – zatrzymanie ruchu robota w obsłudze przerwania BRAKE F – szybkie zatrzymanie ruchu robota RESUME – wyjście z przerwań i podprogramów aż do poziomu zadeklarowania bieżącego przerwania 75 Akcje włączane na ścieżce TRIGGER WHEN DISTANCE = Punkt_włączenia DELAY = Czas DO Polecenie <PRIO = Priorytet> Punkt_włączenia = 0 – włączenie na początku ścieżki Punkt_włączenia = 1 – włączenie na końcu ścieżki Czas – czas opóźnienia w ms Polecenie – przypisanie wartości zmiennej, wywołanie podprogramu, instrukcja OUT lub PULSE (zmiana wartości wyjścia) Priorytet – 1..39 lub 81..128, 1 – najwyższy Przydatne zmienne systemowe: $DIST_NEXT – odległość do następnego punktu (<= 0) $DISTANCE – całkowita długość wykonywanej instrukcji ruchu 76 Akcje włączane na ścieżce TRIGGER WHEN PATH = Odległość DELAY = Czas DO Polecenie <PRIO = Priorytet> Tylko podczas trwania ruchów LIN i CIRC Odległość – przesunięcie działania w przestrzeni (może być ujemne) Czas – czas opóźnienia w ms Polecenie – przypisanie wartości zmiennej, wywołanie podprogramu, instrukcja OUT lub PULSE (zmiana wartości wyjścia) Priorytet – 1..39 lub 81..128, 1 – najwyższy Przydatne zmienne systemowe: $DIST_NEXT – odległość do następnego punktu (<= 0) $DISTANCE – całkowita długość wykonywanej instrukcji ruchu 77