Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski Podstawy robotyki Laboratorium PC-Roset I Cel ćwiczenia Ćwiczenie ma na celu praktyczne zapoznanie się podstawowymi opcjami programu PC- Roset. Wstęp PC-Roset to oprogramowanie uruchamiane na komputerze PC, które wykorzystuje wirtualny kontroler do symulowania pracy robotów Kawasaki. Oprogramowanie to pozwala m.in. na symulację trajektorii ruchu robota, pisanie programów w trybie off-line, zweryfikowanie zasięgów robota, sprawdzanie ewentualnych kolizji, dokładnie oszacowanie czasu trwania cyklów pracy, optymalizacje stanowiska z robotem Kawasaki, zanim fizycznie ono powstanie 1. W skład programu PC-Roset wchodzą: Data Viewer służący do zarządzania projektem, Rys. 1(a), Wirtualny ręczny programator, wyglądający i działający identycznie jak prawdziwe urządzenie, Rys. 2, SceneViever, na którym jest widoczny efekt pracy programisty podczas symulowania pracy robota i pisania programów, Rys. 1(b). Pierwszy projekt PC-Roset po uruchomieniu (gdy wyskoczy komunikat o braku klucza, należy kliknąć close i program się uruchomi) otwiera dwa okna: DataViewer służy do zarządzania projektem (zakładka Scene) oraz komunikacji z robotem za pomocą terminala (zakładka Terminal), SceneViewer służy do wizualizacji robota i jego otoczenia. Możliwe jest wyświetlanie np. kilka widoków sceny jednocześnie. Tworzenie pierwszego projektu Tworzenie nowego projektu od podstaw przebiega w kilku następujących krokach: 1. Wybór robota (a) Klikamy PPM (Prawym Przyciskiem Myszy) na Scene i wybieramy Add robot, 1 Uwaga: PC-Roset wymaga do swej pracy protokół sieciowy TCP/IP. Jeśli komputer na którym instalujemy program nie posiada karty sieciowej należy zainstalować połączenie dial-up.
(a) Data Viewer (b) Scene Viewer. Rys. 1: Okna Rys. 2: Wirtualny programator Teach Pendant 2
(b) Podajemy nazwę naszego projektu który będzie domyślnie zapisany w katalogu Project zlokalizowanego tam gdzie zainstalowaliśmy PC-Roset. (c) Wybieramy z listy robota. Wybieramy przykładowo model FS006N czyli robot o udźwigu 6kg i zasięgu 1000mm. W tej wersji oprogramowania (Handling) możemy wybrać spośród szerokiej gamy robotów. Wybrany robot pojawi się w oknie SceneViewer, oraz pojawi się dodatkowe okno Teaching Panel. Pozwala na poruszanie ramieniem robota w następujących układach współrzędnych: Joint (przegubowy), Base, Tool (układ narzędzia) oraz Word (globalny). W zależności od tego który układ współrzędnych jest wybrany zmieniają się oznaczenia na suwakach obok. Przycisk Speed pozwala na zmianę prędkości (skoku) obrotu i posuwu po kliknięciu na suwaku. To okno pozwala na zapoznanie się z różnymi trybami poruszania robotem. 2. Konfiguracja robota Po kliknięciu PPM na Robot (w drzewku) wybieramy opcję Setting.... Pozwala na zmianę następujących parametrów robota oraz programu: Robot setting ustawienia robota: Upper/Lower value Setting dolne i górne zakresy ruchu poszczególnych osi (wyrażone w stopniach [deg]), Registration installation/base coordinates Setting sposób montażu robota (na ścianie, podłodze itd.) / przesunięcie bazowego układu współrzędnych względem jego domyślnej pozycji, Tool size Setting ustawienia układu współrzędnych poszczególnych narzędzi (Uwaga: zmiany tu wprowadzone nie są widoczne od razu w oknie SceneViewer), Accur/Speed Setting ustawienie ile wynosi prędkość i dokładność dla poszczególnych parametrów (1,2,...,9) używanych w Block Teaching, Timer Setting ustalenie ile wynosi czas postoju dla poszczególnych wartości parametrów używanych w Block Teaching. Clamp Specification ustalenie do jakiego typu aplikacji będzie wykorzystywany uchwyt robota (clamp): spawanie, przenoszenie, oraz które sygnały będą sterować włączeniem/wyłączeniem chwytaka w aplikacji przenoszącej. AS Bridge Setting ustawienia pomiędzy językiem AS: Display a Cycle time table automatically zaznaczenie spowoduje automatyczne wyświetlenie cyklu czasowego po wykonaniu programu. 3. Uruchomienie terminalu i TP (Teach Pendant) Klikamy LPM (Lewy Przycisk Myszy) na ikonie AS, a następnie klikamy LPM na ikonie folderu i zaznaczamy puste pole wyboru (ignorujemy fakt iż program nie został znaleziony). Ładuje się PC-AS które stanowi wirtualny odpowiednik Teach Pendanta oraz uaktywnia się zakładka Terminal na dole okna DataViewer. 4. Poruszanie robotem za pomocą TP 3
Rys. 3: Wirtualny programator TP (Teach Pendant) Wirtualny Teach Pendant swoim wyglądem i funkcjonalnością praktycznie nie odbiega od rzeczywistego. Różnica polega na umieszczenie na nim kontrolek i przełączników normalnie znajdujących się na obudowie kontrolera (jest to sześć ikon znajdujących się pomiędzy ekranem a klawiaturą). Należy sprawdzić czy TP jest w trybie uczenia (TEACH) i czy silnik (MTR) są włączone. Jeśli nie, to włączamy je. Robot widoczny w oknie SceneViewer ustawi się w pozycji startowej (HOME). Naciśnięcie przycisków sterowania osiami na klawiaturze, skutkuje ruchem robota w układzie przegubowym. Aby robot poruszał się szybciej należy zmienić prędkość trybu TEACH. W tym celu należy kliknąć LPM na zielonej literze T u góry ekranu TP. Jeśli chcemy zmienić układ współrzędnych w którym poruszamy robotem należy kliknąć LPM na ikonę po prawej stronie zmiany prędkośći (napisane jest na niej Joint). Dokładne rozmieszczenie tych przycisków jest przedstawione na Rys. 3. 4
Rys. 4: Utworzone punkty i edycja programu 5. Napisanie pierwszego programu Kawasaki oferuje kilka sposobów programowania: Block Teaching (uczenie blokowe za pomocą TP), AS Language (język proceduralny), połącznie obu wymienionych metod. Największe możliwości daje użycie AS Language i ewentualne wspomaganie go Block Teaching. Pierwszy program będzie polegał na ruchu robota pomiędzy kilkoma punktami w interpolacji przegubowej. W tym celu należy utworzyć kilka punktów (zobacz Rys. 4): (a) Przełączamy się dp okna terminalu, wpisujemy komendę: here #p1 i zatwierdzamy (enter). (b) Zatwierdzamy współrzędne dzięki czemu został utworzony punkt #p1 (we współrzędnych przegubowych). (c) Przemieszczamy robota za pomocą TP do innej pozycji i wpisujemy here #p2 i postępujemy analogicznie jak dla punktu #p1. (d) W ten sam sposób tworzymy punkty #p3 i #p4. Po wpisaniu komendy list (zatwierdzamy enterem), zostaną wyświetlone wszystkie utworzone przez nas punkty i ich współrzędne. Wpisujemy polecenie edit prog1 i przechodzimy do trybu edycji programu. Piszemy: jmove #p1 jmove #p2 5
jmove #p3 jmove #p4 jmove #p1 e Wpisanie e powoduje zamknięcie edytora. Po wpisaniu tych lini ekran powinien wyglądać jak na Rys. 4. Program ten każe robotowi przemieścić końcówkę roboczą od punktu #p1 do #p2 następnie do #p3, #p4 i ponownie do #p1. Ruchy te będą wykonywane w interpolacji przegubowej. W celu uruchomienia programu należy przełączyć robota z trybu TEACH w tryb REPEAT (na TP) i załączyć silniki. Następnie wpisujemy na terminalu komendę exe prog1. Robot zacznie wykonywać nasz program. Jeśli chemy zwiększyć prędkość wykonania programu wpisujemy np. speed 50 (wartość ta jest w procentach (%) i początkowo wynosiła 10). Przechodzimy do zakładki SCENE i zapisujemy nasz projekt. Należy pamiętać, że tak sposób zapisania projektu powoduje iż nie zostanie utworzony osobny plik z samym programem, lokacjami itp. Jeśli chcemy mieć te dane osobno należy użyć w terminalu polecenia SAVE (opisanego w dalszej części). Teach Pendant W ten sposób utworzyliśmy pierwszy projekt. 1. Przyciski i kontrolki przeniesione z kontrolera Na wirtualny TP przeniesiono część przycisków, przełączników i kontrolek z kontrolera. Umieszczone są z prawej strony pomiędzy klawiaturą i ekranem dotykowym. Ich spis i zastosowanie przedstawiono poniżej. Nr Przełączniki i kontrolki Funkcja 1 Error Lamp ERR Świeci się kiedy wystąpi błąd. 2 Error Reset Button ERE Kasuje informację o błędzie (gaśnie lampka ERR). 3 Teach/Repeat Switch. TCH/REP 4 Cycle Start Button with Lamp CYC 5 Motor Power Button with Lamp MTR 6 Emergency Stop Button EMG Przełącza pomiędzy Trybem Uczenia (brak zaświeconej lampki) oraz trybem Powtarzania (lampka świeci na niebiesko). Naciśnięcie w trybie Powtarzania powoduje uruchomienie programu i jego automatyczne wykonywanie(zapala się wtedy lampka). Włączenie silników poszczególnych osi. Gdy są włączone świeci się lampka. Przycisk awaryjnego wyłączenia robota po wciśnięciu robot zatrzymuje się w najkrótszym możliwy czasie. Ponowne wciśnięcie pozwala na dalszą pracę z robotem. 6
Rys. 5: Klawiatura 2. Klawiatura Nr Funkcje Wyświetla rozwijalne menu dla aktywnego obszaru wyświetlacza. Naciśnięcie A+MENU przełącza aktywny obszar (pomiędzy obszarami B i C). Naciśnięcie S+MENU wyświetla opcje cyklu pracy robota (prędkość, powtórzenia, praca ciągła lub krokowa itp.). Dla ekranu posiadających przyciski funkcyjne na dole ekranu (np. Undo, Next Page) naciśnięcie MENU przenosi kursor do tych właśnie funkcji. Dla niektórych ekranów wymagane jest wciśnięcie A+MENU. Przemieszczają kursor pomiędzy krokami programu, pozycjami i ekranami; naciskane same lub w połączeniu z innym przyciskiem. Połączenie z przyciskiem S: S+ : Przełącza na poprzedni ekran (pionowo), S+ : Przełącza na następny ekran (pionowo) Połączenie z przyciskiem A: A+ : Przesuwa do poprzedzającego kroku programu w trybie uczenia lub edycji, A+ : Przesuwa do poprzedzającego kroku programu w trybie uczenia lub edycji. 7
Wybieranie funkcji i pozycji. Kasuje operacje. Zamyka rozwijalne menu. Pozwala na powrót do ekranu początkowego. Klawisz A. Umożliwia wybór pewnych funkcji lub operacji. Czasem używany z klawiszami z niebieskim paskiem. Klawisz S Zmienia funkcje/wybór. Czasem używany z klawiszami z szarym paskiem. Wykonanie następnego kroku w trybie Check. Używany jako klawisz krok naprzód dla pojedynczego kroku w trybie Repeat. Przesuwa o krok w tył w trybie Check. Zmienia prędkość ruchu robota w trybie uczenia ręcznego. Naciśnięcie S+CHECK/TEACH SPEED zmienia prędkość w trybie Check. Uwaga: Domyślnie jest to mała prędkość (speed 1) Wybieranie trybu ruchu robota (interpolacji) w sterowaniu ręcznym. (Joint, Base, Tool) S+INTER zmienia tryb interpolacji podczas uczenia blokowego. Włącza menu wyboru kroku programu. S+PROG/STEP włącza menu wyboru programu. Wybiera dodatkową oś (JT7) lub robota do poruszania (zależy od konfiguracji systemu niedostępne dla pojedynczego robota z 6 osiami). Zmienia prędkości ruchu robota w trybie uczenia z 1 lub 2 na 3 gdy jest wciśnięty. Puszczenie go przywraca poprzednią prędkość. Przełącza pomiędzy pracą krokową a ciągłą w trybie Check. Domyślnie jest praca krokowa. Przełącza w tryb wstawiania kroków programu pomiędzy istniejące kroki. (IN- SERT). Włącza tryb kasowania kroków (linii) programu. 8
Włącza tryb w którym możemy nadpisać(edytować) informacje pomocnicze dla danego kroku (dane o pozycji pozostaną niezmienione). Włącza tryb w którym możemy nadpisać(edytować) informacje o pozycji robota dla danego kroku (dane pomocnicze niezmienione). Dodaje nowy krok programu w ostatniej linii (kursor musi być na ostatniej linii). A+RECORD nadpisuje aktualnie wybrany krok nowym. Przełącza sygnał chwytaka 1 (ON, OFF) dla trybu uczenia. A+CL1 przełącza informacje o chwytaku dla trybu uczenia oraz wystawia sygnał na wyjściu z robota dla CL1: ON OFF ON. Analogicznie jak dla chwytaka CL1 Analogicznie jak dla chwytaka CL1. Zmieniają się tylko kombinacje klawiszy. CLn+NUMBER (1-8) przełącza informację o chwytaku (ON, OFF) dla wybranego chwytaka (CLn) A+CLn+NUMBER (1-8) przełącza informację o chwytaku CLn dla trybu uczenia i wystawia fizycznie sygnał na wyjściu. Poruszanie każdą z osi od JT1 do JT7 Wprowadza.. S+ -/. wprowadza -. Wprowadza 0. S+,/0 wprowadza,. Wprowadza 1. A+ON/1 ustawia na wybranym wyjściu sygnał ON. Wprowadza 2. A+OFF/2 ustawia na wybranym wyjściu sygnał OFF. Wprowadza 3. Wprowadza 4. S+OX/4/A wywołuje element OX podczas blokowego uczenia; wprowadza A w pozostałych przypadkach. 9
Wprowadza 5. S+WX/5/B wywołuje element WX podczas blokowego uczenia; wprowadza B w pozostałych przypadkach. Wprowadza 6. S+WS/6/C wywołuje element WS podczas blokowego uczenia; wprowadza C w pozostałych przypadkach. Wprowadza 7. S+SPD/7/D wywołuje ustawienia prędkości podczas blokowego uczenia; wprowadza D w pozostałych przypadkach. Wprowadza 8. S+ACC/8/E wywołuje ustawienia dokładności podczas blokowego uczenia; wprowadza E w pozostałych przypadkach. Wprowadza 9. S+TMR/9/F wywołuje ustawienia czasu podczas blokowego uczenia; wprowadza F w pozostałych przypadkach. Back Space kasuje jeden znak. S+TOOL/BS wywołuje narzędzie podczas blokowego uczenia. Czyści aktualnie wprowadzone dane. S+CC/CLEAR wywołuje CC podczas blokowego uczenia. Wybieranie informacji pomocniczych bezpośrednio. S+WRK/C wywołuje narzędzie pracy podczas blokowego uczenia. Włącza funkcję edycji programu. S+J/E/I wywouje J/E podczas blokowego uczenia. Zatwierdza wprowadzone zmiany/dane. Przełącza ekran pomiędzy ekran uczenia a IF/Panel. Nie używany. 3. Ekran dotykowy Ekran dotykowy TP poglądowo został pokazany na Rys. 6. (a) Obszar A 10
Rys. 6: Sekcje wyswietlacza dotykowego TP Program/Comment Area Step Area PC Program Area System Message Area Status Area (b) Obszar B Obszar A Wyświetla informacje na temat aktualnie wybranego programu. Pierwszy wiersz od góry jest pusty. Drugi wiersz zawiera nazwę wybranego programu. Trzeci wiersz zawiera komentarz do programu. Wyświetla numer aktualnego kroku. Drugi wiersz wyświetla numer bieżącego kroku. Trzeci wiersz informuje czy każda z osi przyjęła prawidłowe wartości po osiągnięciu punktu (axes coincidence). Wyświetla informacje na temat aktualnie wybranego PC programu Wyświetla komunikaty np. na temat błędów. Wyświetla informacje na temat aktualnego stanu robota/kontrolera (rodzaj pracy, czy załączone są silniki poruszające osiami). Wyświetlane opcje zmieniają się w zależności od trybu (uczenia lub automatycznej pracy). Teach Screen Służy do wyświetlania zawartości programu, jego edycji i zapisywania oraz do ustawiania informacji pomocniczych. Na Rys. 7(a) przedstawiono przykładową zawartość ekranu. I/F (Interface) Panel Screen Ten ekran służy do tworzenia własnych paneli operatorskich składających się z przełączników, wyświetlaczy, przycisków, lampek itp. Rys. 7(c) przedstawia przykładowy I/F Panel Screen. Keyboard Screen Służy do wprowadzania liter i cyfr z klawiatury. Odpowiada funkcjonalnie również terminalowi użytkownika. Keyboard Screen przedstawiony jest na Rys. 7(b). 11
(a) Teach Screen (b) Keyboard Screen (c) I/F Panel Screen (d) Joint Monitor Screen (e) Signal Monitor Screen (f) Program Information Screen Rys. 7: Okna 12
(c) Obszar C Joint Monitor Screen Wyświetla informacje takie jak aktualna pozycja końcówki roboczej (w układzie X,Y,Z,O,A,T) wartości poszczególnych osi, prędkości kątowe osi itd. Rys. 7(d) przedstawia przykładowe informacje na temat pozycji końcówki roboczej i poszczególnych osi. Signal Monitor Screen Wyświetla nazwy wejść/wyjść oraz ich aktualny stan. Możemy przełączać się pomiędzy ekranem zawierającym indeksy sygnałów lub ich nazwy. Rys. 7(e) zawiera przykładowy ekran z nazwami sygnałów. Program Information Screen Ten ekran wyświetla informacje pomocnicze oraz informacje na temat chwytaka dla każdego kroku wybranego programu. Na Rys. 7(f) widać przykładowe informacje. As Language Język używany do programowania i kontroli pracy robotów Kawasaki jest językiem proceduralnym. Pozwala używać zmienne rzeczywiste, tekstowe, instrukcje warunkowe itp. Posiada bogatą składnię, ale jego nauka nie sprawia żadnych problemów. Za jego pomocą pisze się dwa typy programów (AS program i PC program) oraz komunikuje bezpośrednio z kontrolerem (Monitor command). Część instrukcji można używać w różnych trybach, zaś część tylko w jednym. Jeżeli spróbujemy użyć instrukcji w niedozwolonym dla niej trybie, pojawi się stosowny komunikat. Poniżej przedstawiono wybrane komendy AS Language. 1. Ważne instrukcje SPEED prędkość Ustawienie monitora prędkości wartość podawana procentowo od 1 do 100. EXECUTE nazwa programu,liczba cykli,krok początkowy Uruchomienie programu. ABORT zatrzymuje wykonanie programu po zakończeniu bieżącego kroku HOLD zatrzymuje natychmiast wykonanie programu CONTINUE wznawia zatrzymany program (instrukcją HOLD i ABORT) DO Słowo kluczowe pozwalające wykonać jedną instrukcję z poziomu Monitora (nie wszystkie instrukcje programu sterującego da się wykonać w tym trybie) ZLANG ON zmiana języka TP i terminala na angielski (jeśli jest inny) ZPOWER ON włączenie silników sterujących osiami SIG numer Zmiana sygnalu na ON określonego numerem wyjścia cyfrowego lub sygnału wewnętrznego(jeżeli damy przed numer to ustawimy sygnał na OFF). Indeksy sygnałów to: 1 32: wyjścia, 2001 2256 sygnały wewnętrzne. (a) Zapis danych 13
SAVE nazwa pliku Zapisuje wszystkie dane o robocie (programy, położenia, zmienne itd.) back up robota. SAVE/P nazwa pliku zapisuje programy SAVE/L nazwa pliku zapisuje pozycje robota SAVE/R nazwa pliku zapisuje zmienne rzeczywiste SAVE/S nazwa pliku zapisuje zmienne tekstowe (łańcuchy) SAVE/A nazwa pliku zapisuje dane pomocnicze UWAGA: W rzeczywistym robocie wszystkie dane w kontrolerze zapisywane są automatycznie. Powyższe komendy zapisują dane na zewnętrznym komputerze który jest podpięty do kontrolera. (b) Odczyt danych LOAD nazwa pliku wczytanie zapisanych danych. (c) Kasowanie danych DELETE kasuje programy i zmienne z pamięci robota DELETE/P kasuje programy z pamięci robota DELETE/L kasuje zapamiętane pozycje robota z pamięci DELETE/R, DELETE/S analogicznie jak SAVE/R/S (d) Wyświetlanie zawartości pamięci kontrolera LIST wyświetla zawartość wszystkich programów, zmiennych i ich wartości LIST/L wyświetla wszystkie zapamiętane pozycje robota z ich wartościami LIST/R wyświetla zmienne rzeczywiste wraz z wartościami DIR wyświetla nazwy programów, zmienne itd. ale bez podawania ich wartości DIR/L/P/R itd. analogicznie jak w powyższych instrukcjach. Komendy języka mogą być wprowadzane bezpośrednio z poziomu terminalu (czasem trzeba użyć słowo DO który wpisujemy przed instrukcją) i wykonywane jest wtedy bezpośrednio po zatwierdzeniu klawiszem ENTER. Natomiast w przypadku programu piszemy je za pomocą wbudowanego w Terminal edytora, a wykonywane są dopiero po uruchomieniu programu. 2. Obsługa (komendy) edytora programów. Programy możemy tworzyć w dowolnym edytorze tekstowym (np. notatnik) i wgrywać je do kontrolera lub też używać wbudowanego edytora. Poniżej znajdują się komendy pokazujące jego obsługę która odbywa się w całości w trybie tekstowym. Szare podświetlenie oznacza, iż te elementy polecenia są opcjonalne. EDIT nazwa programu, numer kroku Otwarcie edytora programu. Nazwa programu jest opcjonalna tylko wtedy gdy istnieje już jakiś program. C nazwa programu, numer kroku zmiana programu który ma być edytowany. S numer kroku wybiera i wyświetla wybrany krok programu do edycji. P liczba kroków wyświetla wybraną ilość kolejnych kroków programu poczynając od bieżącego. L wyświetla poprzedni (ostatni) krok do edycji. I wprowadza linię programu przed aktualny krok. 14
Przykład Wprowadzenie instrukcji CLOSEI pomiędzy krok 3 i 4. 1?OPENI 2?JAPPRO #PART, 500 3?LMOVE #PART 4?LDEPART 1000 5? S 4 ;Wyświetlanie kroku 4 by móc wprowadzić linię programu przed nim. 4 LDEPART 1000 4? I ;Komenda I. 4I CLOSEI ;Instrukcja którą mamy wprowadzić. 5I ;Enter dla zatwierdzenia lini. 5 LDEPART 1000 ;Krok 4 ma zmienioną numerację na 5 5? D liczba kroków kasuje wybraną ilość kroków programu włącznie z bieżącym. M /aktualne znaki/ nowe znaki zmienia (modyfikuje) zawartość bieżącego kroku Przykład Zamienia w kroku 4 pozycję abc na def. 4 JMOVE abc 4?M/abc/def 4 JMOVE def 4? R ciąg znaków zastępuje istniejące znaki w linii nowymi. Procedura użycia komendy R jest następująca: (a) Używając Spacji, przesuń kursor pod pierwszy znak do zastąpienia (b) Naciśnij klawisz R a następnie spację. (c) Wprowadź nowy tekst który ma się pojawić (d) Naciśnij enter. Przykład: 1 SPEED 20 ALWAYS 1? R 35 1 SPEED 35 ALWAYS 1? E Wyjście z edytora programu i przejście do trybu monitora. 3. Definiowanie pozycji robota (lokacji) HERE #p1 Zapisuje aktualne położenie robota we współrzędnych przegubowych pod nazwą #p1 (mamy możliwość zmiany wartości tych współrzędnych). 15
HERE p1 Zapisuje aktualne położenie końcówki robota we współrzędnych kartezjańskich. # na początku nazwy pozycji oznacza, że jest zapisana we współrzędnych przegubowych. POINT Używamy do zdefiniowania nowej pozycji używając jakiejś innej wcześniej zdefiniowanej pozycji, edycji starej pozycji lub też do wprowadzenia nowej z terminala. POINT #p2 Zdefiniowanie nowej pozycji #p2, domyślnie wyświetlane wartości to 0,0,0,0,0,0. Jeśli chcemy je zostawić wciskamy enter, a jeśli zmienić to wpisujemy je następująco X,X,X,X,X,X gdzie kolejne X oznaczają współrzędne przegubowe dla kolejnych osi (od JT1 od JT6). Nie musimy podawać wszystkich współrzędnych a tylko te które chcemy zmienić. Np.,20 60 spowoduje zmianę dla osi JT2 i JT4. POINT #p2 Edycja pozycji #p2 jeśli wcześniej już była zdefiniowana pozycja o tej nazwie. POINT #p3=#p2 Zapamiętanie nowej pozycji w oparciu o już istniejącą pozycję #p2. Można powyższą komendą zmieniać współrzędne przegubowe na kartezjańskie (i odwrotnie), ale należy tu pamiętać o możliwej niejednoznaczności w przypadku współrzędnych kartezjańskich (w celu precyzyjnego określenia dochodzą komendy ABOVE, BELOW itd. ) Analogicznie postępujemy dla współrzędnych kartezjańskich. POINT p2=shift(p1 by 10,20,30) Utworzenie punktu p2 który jest przesunięty względem punktu p1 o 10,20,30 mm odpowiednio wzdłuż osi X,Y,Z bazowego układu współrzędnych. 4. Instrukcje ruchu JMOVE punkt Ruch robota w interpolacji przegubowej do zapisanego wcześniej punktu (lokacji). LMOVE punkt ruch robota w interpolacji liniowej. DELAY czas zatrzymanie ruchu robota na określony czas. JAPPRO punkt, dystans Ruch robota w interpolacji przegubowej do pozycji która znajduje się o Dystans nad Punkt wzdłuż osi Z układu współrzędnych narzędzia. LAPPRO punkt, dystans Ruch robota w interpolacji liniowej do pozycji która znajduje się o Dystans nad Punkt wzdłuż osi Z układu współrzędnych narzędzia JDEPART dystans Ruch robota w interpolacji przegubowej do punktu który znajduje się w odległości Dystans od bieżącej pozycji wzdłuż osi Z układu współrzędnych narzędzia. LDEPART dystans Ruch robota w interpolacji liniowej do punktu który znajduje się w odległości Dystans od bieżącej pozycji wzdłuż osi Z układu współrzędnych narzędzia. HOME ruch do pozycji bazowej robota (można ją zmieniać). 16
DRIVE numer osi, obrót, kąt (obrót). Rys. 8: Ruch robota w interpolacji kołowej prędkość porusza jedną z osi (np. 1) o określony DRAW X przemieszczeni, Y przemieszczenie, Z przemieszcznie, X obrót, Y obrót, Z ob Przemieszczenie i obroty robota w interpolacji liniowej o zadane wartości względem bieżącego położenia w bazowym układzie współrzędnych. TDRAW X przemieszczeni, Y przemieszczenie, Z przemieszcznie, X obrót, Y obrót, Z o Przemieszczenie i obroty robota w interpolacji liniowej o zadane wartości względem bieżącego położenia w układzie współrzędnych narzędzia. ALGIN Przemieszcza oś Z układu współrzędnych narzędzia tak by była równoległa do do najbliższej osi bazowego układu współrzędnych. HMOVE punkt, numer chwytaka Przemieszcznie robota do pozycji punkt w sposób hybrydowy. Osie JT1, JT2, JT3 poruszają się w interpolacji liniowej, zaś osie kiści (JT4, JT5, JT6) w interpolacji złączowej. C1MOVE punkt2 C2MOVE punkt3 Ruch robota w interpolacji kołowej (zobacz Rys. 8) gdzie punkt2 jest punktem pośrednim a punkt3 jest punktem końcowym łuku. Do pierwszego punktu łuku - punkt1 - można dojechać końcówką robota w dowolny sposób. Przykład JMOVE P1 C1MOVE P2 C2MOVE P3 5. Prędkość i dokładność SPEED speed, rotational speed, ALWAYS Definiowanie prędkości robota. Parametr speed określa prędkość programu w procentach lub w jednostkach MM/S MM/MIN. Jednostka S określa czas ruchu (w sekundach). Brak podanej jednostki oznacza użycie procenta. ALWAYS jeśli jest wprowadzony oznacza, że prędkość zdefiniowana w tej instrukcji będzie obowiązywać, aż do ponownego użycia polecenia SPEED. Gdy nie ma tego parametru to prędkość jest ustalona tylko dla następnej instrukcji ruchu. 17
ACCURACY dystans ALWAYS Ustawia dokładność osiągania punktów za pomocą parametru dystans podawanego w mm. Parametr ALWAYS działa analogicznie jak dla instrukcji SPEED. Domyślne ustawienie dokładności pracy robota to 1mm (jeśli chcemy by robot osiągnął dokładnie jakiś punk to stosujemy po instrukcji ruchu do tego punktu instrukcję TWAIT czas). 6. Instrukcje warunkowe IF warunek logiczny THEN instrukcje programu(1) ELSE instrukcje programu(2) END Jeżeli warunek logiczny jest spełniony to zostają wykonane instrukcje programu(1) a następnie program przeskakuje do następnej instrukcji po instrukcji END. Jeżeli warunek logiczny nie jest spełniony to program przechodzi do następnej instrukcji po komendzie END, lub też jeśli jest instrukcja ELSE to wykonuje instrukcje programu(2) i dalej kontynuuje już normalnie program Przykład 1 Jeśli n jest większe niż 5 to prędkość programu jest ustawiana na 10% jeśli zaś jest mniejsze lub równe 5 to prędkość ustawiana jest na 20%. 21 IF n>5 THEN 22 sp=10 23 ELSE 24 sp=20 25 END 26 SPEED sp ALWAYS Przykład 2 Poniższy program sprawdza najpierw sprawdza wartość zmiennej m. Jeśli m=0 to program przeskakuje do kroku 77. Jeśli m jest różne od 0 to program przechodzi do kroku 72. W kroku 72 sprawdzane jest sygnał na wejściu 1001. Jeśli jest sygnał to zostaje wyświetlony napis Input signal is TRUE, zaś jeśli nie ma sygnału to zostanie wyświetlony napis Input signal is FALSE (wyświetlany jest na ekranie podpiętego terminala lub na TP z włączoną klawiaturą). 71 IF m THEN 72 IF SIG(1001) THEN 73 PRINT"Input signal is TRUE" 74 ELSE 75 PRINT"Input signal is FALSE" 76 END 77 END WHILE warunek logiczny DO instrukcje programu END 18
Najpierw sprawdzany jest warunek logiczny. Jeśli jest prawdziwy (różny od 0) to wykonywane są instrukcje programu po czym następuje ponownie przeskok do WHILE i ponowne sprawdzenie warunku. Dopóki warunek jest prawdziwy wykonywane są w pętli instrukcje programu. Jeśli warunek jest nieprawdziwy to program przeskakuje do następnego kroku po instrukcji END. UWAGA! Różnica w stosunku do instrukcji DO instrukcja programu UNTIL wyrażenie logiczne polega na tym, że tu instrukcje w ciele WHILE mogą w ogóle nie być wykonane a w przypadku DO wykonane są co najmniej raz (sprawdzenie warunku następuje po pierwszym wykonaniu instrukcji). DO instrukcje programu UNTIL wyrażenie logiczne instrukcje programu są tak długo wykonywane w pętli, jak długo wyrażenie logiczne jest nieprawdziwe (równe 0). Gdy wyrażenie logiczne jest prawdziwe to program opuszcza pętlę i wykonuje dalszy ciąg programu. Różnicę w stosunku do WHILE przedstawiono powyżej. FOR zmienna = wartość początkowa TO wartość końcowa STEP wartość kroku instrukcje programu END Wykonuje określoną ilość razy pętlę. Jeśli nie ustawimy wartość kroku to przyrost zmiennej jest równy 1 dla każdego wykonania pętli. CASE index variable OF VALUE case number 1,...: instrukcje programu VALUE case number 2,...: instrukcje programu : VALUE case number n,...: instrukcje programu ANY: instrukcje programu END Sprawdzana jest wartość index variable (może być w formie liczby, zmiennej rzeczywistej lub wyrażenia) a następnie porównywana z case number. Jeśli jest równa np. case number1 to wykonywane są instrukcje po nim zawarte jeśli zaś równe case number2 to instrukcje zawarte po nim itd. Przykład: IF x<0 GOTO 10 CASE x OF VALUE 0,2,4,6,8,10: PRINT "Wartość x jest parzysta" VALUE 1,3,5,7,9: 19
PRINT "Wartość x jest nieparzysta" ANY : PRINT "wartość x jest większa od 10" END STOP 10: PRINT "zatrzymanie programu ponieważ x jest ujemne" STOP 7. Definiowanie zmiennych Zmienne rzeczywiste definiujemy używając = jak na przykładzie poniżej: NazwaZmiennejRzeczywistej = Wartość Np. a=10.5 b=i*2+8 b=b+2 Zmienne muszą być od razu definiowane(czyli musi być im przypisana wartość) bo inaczej wystąpią błędy. Przebieg ćwiczenia 1. Stworzyć nowy projekt: umieścić w scenie pojedynczego robota i dwie przeszkody według wytycznych zadanych przez prowadzącego, wybrać i skonfigurować wybrane przez siebie narzędzie dla robota, dodać do sceny elementy środowiska roboczego w tym imitację stołu roboczego. Zaobserwować i zanotować charakterystyczne elementy tworzenia wirtualnej sceny pracy robota. 2. Wybrać robota i korzystając z trybu uczenia blokowego stworzyć procedury do wykreślenia trajektorii ruchu dla liter i cyfr: A, L, Z, 8, 6. 3. Korzystając z możliwości zapamiętywania póz robota powtórzyć poprzedni punkt w oparciu o programowanie w języku AS. 4. Wykonać symulację pracy robota realizującego napisane wcześniej programy. 5. Sporządzić sprawozdanie z wykonanego ćwiczenia. 20