Metody programowania robotów przemysłowych, cz. 2
prof. dr hab. inż. Cezary Zieliński (Łukasiewicz – PIAP) drukuj
Artykuł kontynuuje prezentację metod programowania robotów przemysłowych. Ta część cyklu poświęcona jest programowaniu robotów firmy ABB Ltd.
Pierwsza część cyklu artykułów dotyczyła metod programowania robotów przemysłowych i zawierała podstawowe informacje na temat programowania on-line i off-line oraz ogólnej struktury układu sterowania robota przemysłowego. W poprzednim artykule przytoczono sposoby programowania robotów firmy Universal Robots. W drugiej części cyklu zajmiemy się programowaniem robotów ABB Ltd.
Programowanie robotów firmy ABB Ltd
Programowanie robotów ABB bazuje na oprogramowaniu symulacyjnym RobotStudio, panelu programowania FlexPendant TPU (Teach Pendant Unit) lub bezpośrednio stosuje język RAPID na komputerze zewnętrznym. W dwóch pierwszych przypadkach również generowany jest kod w języku RAPID. Złożone programy najłatwiej jest przygotować za pomocą RobotStudio, natomiast ich dalszych modyfikacji najlepiej dokonywać za pomocą FlexPendant.
Panel programowania zawiera wbudowany własny komputer, na którym działa okrojona wersja RobotStudio, więc sposób użycia panelu i pełnego RobotStudio jest bardzo podobny. RobotStudio działa off-line na komputerze klasy PC. Ten symulator jest nadbudowany na oprogramowaniu ABB Virtual Controller. Symulator dokładnie odwzorowuje działanie sterownika robota IRC-5, na którym działa oprogramowanie RobotWare, które między innymi zawiera interpreter języka RAPID. RobotStudio używa definicji urządzeń i obiektów znajdujących się w gnieździe roboczym, w którym zamontowany jest robot. W efekcie powstaje cyfrowy bliźniak gniazda roboczego.
Sterownik IRC-5
Programy sterujące pracą robotów mogą być wykonywane przez sterownik wirtualny albo przez rzeczywisty sterownik IRC-5. Ten ostatni może być nadzorowany przez komputer zewnętrzny. Wtedy wymiana danych między sterownikiem IRC-5 i zewnętrznym komputerem odbywa się z częstotliwością 250 Hz. Sterownik IRC-5 może nadzorować pojedynczy systemem, w skład którego może wchodzić do dziewięciu silników. Zazwyczaj sześć z nich jest przeznaczonych do poruszania członów manipulatora, a pozostałe napędzają urządzenia wspomagające. Rozbudowana wersja IRC-5 może sterować wieloma takimi podsystemami (MultiMove). Wersja MultiMove umożliwia definiowanie ruchu wielu robotów względem tego samego układu odniesienia, w ten sposób ułatwiając ich współpracę. Ponadto ruch robota może być zsynchronizowany z urządzeniami współpracującymi, np. ruchem taśmociągu.
Sterownik IRC-5 obsługuje wejścia i wyjścia binarne i analogowe oraz protokoły Devicenet, Profibus, Interbus etc. Może się łączyć z siecią komputerów (np. z systemem SCADA) dzięki odpowiedniemu interfejsowi. Do komunikacji z operatorem w trakcie wykonania programu używany jest panel programowania FlexPendant, na którego ekranie ukazują się wiadomości wymagające reakcji człowieka.
Panel FlexPendant
Panel programowania FlexPendant jest samodzielnym komputerem połączonym ze sterownikiem IRC-5 za pomocą kabla. Na ekranie panelu ukazują się okienka zależne od czynności, które wykonuje operator w danej chwili. Za pomocą panelu można:
- tworzyć, edytować, ładować i inicjować wykonanie programów zapisanych w języku RAPID,
- zarządzać systemem plików,
- instalować opcjonalne oprogramowanie,
- odczytywać wejścia i ustawiać wyjścia IRC-5, odczytać aktualny stan robota, przemieszczać za pomocą joysticka (jogging) manipulator i osie urządzeń pomocniczych dołączonych do sterownika,
- zmieniać wartości zmiennych,
- tworzyć kopie zapasowe plików z danymi i programami, wczytywać te pliki,
- czytać logi zdarzeń zachodzących w trakcie automatycznego wykonywania programu,
- kalibrować robota i inne jednostki mechaniczne,
- czytać informacje stanowiące pomoc dla użytkownika (help).
Na panelu wyświetlane są komunikaty tworzone przez program wykonywany za pomocą sterownika IRC-5, a przeznaczone dla operatora systemu. Przemieszczanie manipulatora za pomocą joysticka może być wykonywane w przestrzeni konfiguracyjnej (poruszając poszczególnymi złączami) lub operacyjnej względem globalnego układu odniesienia albo tego związanego z zamontowanym narzędziem TCPF (Tool Center Point Frame), bądź względem bazowego układu robota albo układu związanego z wybranym obiektem. Można zablokować ruch joysticka w niektórych kierunkach, zabezpieczając się przed przypadkowymi ruchami prowadzącymi do kolizji z obiektami znajdującymi się w otoczeniu robota. Można zdefiniować wiele narzędzi, dzięki czemu steruje się ruchem wybranego z nich. Jeżeli narzędzie jest ciężkie, to jest montowane statycznie w gnieździe obróbczym. Wtedy robot manipuluje obiektem obrabianym, a nie narzędziem. Taki obiekt niejako staje się narzędziem. FlexPendant na wiele sposobów umożliwia definiowanie układów odniesienia związanych zarówno z narzędziami jak i obiektami.
Programy mogą być wykonywane automatycznie, tzn. bez nadzoru operatora. Wtedy FlexPendant może być odłączony od sterownika IRC-5. W trakcie uruchamiania programu często stosuje się pracę programu w trybie krokowym. Wykonanie programu można inicjować od dowolnej instrukcji – w tym celu na ekranie panelu programowania należy wyświetlić fragment programu z tą instrukcją i wskazać ją kursorem. Przy pracy krokowej ruchy robota mogą być spowalniane. Sterownik dysponuje też programami usługowymi, które mogą być wykonywane w trybie pracy ręcznej. Jednym z nich jest program identyfikujący parametry obciążenia, takie jak: jego masę, środek ciężkości oraz moment siły wywierany przez narzędzie na nadgarstek manipulatora.
Symulator RobotStudio
Oprogramowanie symulacyjne RobotStudio wymaga stworzenia programu sterującego gniazdem roboczym oraz jego modelu. Korzystając z oprogramowania wbudowanego w symulator można tworzyć realistyczne obrazy robotów i urządzeń współpracujących. RobotStudio dysponuje reprezentacjami graficznymi wszystkich typów robotów, narzędzi oraz wspomagających urządzeń wytwarzanych przez ABB. Obrazem robota można sterować tak, jak rzeczywistym robotem. Za pomocą myszy lub klawiatury można przestawiać poszczególne osie lub końcówkę ramienia, tak jakby przemieszczało się manipulator ręcznie.
Graficzne reprezentacje wykorzystywane są w trakcie symulacji programu do wykrywania kolizji. W tym celu złożone reprezentacje graficzne robota i urządzeń upraszczane są za pomocą wypukłych brył prostych obejmujących obraz danego urządzenia. Jeżeli bryły otulające obiekty przecinają się z tymi otaczającymi człony manipulatora, ruch jest przerywany i sygnalizowana jest kolizja. Można też zdefiniować strefy zakazane dla ruchu robota, permanentnie albo czasowo. Wtedy w trakcie wykonania programu sprawdzane jest ewentualne naruszenie tych stref przez manipulator oraz zamontowane na nim narzędzie. Ponadto symulacja wykonania programu umożliwia wcześniejsze wykrycie kolizji. W tym celu tworzone są zestawy par zbiorów. Każdy zbiór zawiera obiekty. Możliwości wystąpienia kolizje są sprawdzane między obiektami znajdującymi się w dwóch różnych zbiorach. W ten sposób RobotStudio redukuje liczbę obiektów, między którymi trzeba sprawdzić możliwość wystąpienia kolizji, co skraca czas obliczeń. Jest to szczególnie istotne, gdy w gnieździe znajduje się wiele robotów. Możliwe jest także sprawdzanie nadmiernego zbliżania się obiektów do siebie. Symulację działania programu można prowadzić przy włączonym lub wyłączonym sprawdzaniu kolizji. Praca wielu robotów może być zsynchronizowana.
Programowanie z wykorzystaniem RobotStudio polega na tworzeniu ścieżek ruchu dla narzędzia zamontowanego na manipulatorze. Ścieżki te tworzone są względem układów odniesienia. Dla ułatwienia tego zadania definiuje się całą hierarchię układów związanych z robotem (lub robotami) i obiektami gniazda obróbczego. Ponieważ jedne są definiowane względem innych, powstaje drzewo układów wzajemnie powiązanych między sobą. Ścieżki zapisywane są jako instrukcje ruchu języka RAPID. Pojedyncza instrukcja ruchu tworzy segment ścieżki. Możliwe jest symulowanie pojawiania się sygnałów zewnętrznych. Czas wykonania programu może być mierzony w trakcie symulacji.
Instrukcje składane są w program korzystając z interfejsu okienkowego oraz list wyboru. RobotStudio dysponuje też edytorem ułatwiającym tworzenie i modyfikację programów w języku RAPID. Udostępniony debuger umożliwia zakładanie pułapek w kodzie oraz pracę krokową. Pułapki i praca krokowa wstrzymuje wykonanie programu, by sprawdzić poprawność wartości zmiennych. W trakcie wykonania lub symulacji wykonania programu realizowana instrukcja jest wskazywana w edytorze. Jeśli symulacja pracy gniazda jest poprawna, program symulowanego robota zapisany w języku RAPID przenoszony jest do sterownika rzeczywistego robota. W fazie uruchamiania programu można korzystać z symboli zastępczych (placeholder), które zastępują fragmenty programu, które chwilowo jeszcze nie zostały stworzone. Innym narzędziem wspomagającym uruchamianie programu jest oprogramowanie Signal Analizer, które rejestruje sygnały w sterowniku robota. Rejestrować można zarówno działanie sterownika rzeczywistego jak i wirtualnego. Na tej podstawie można optymalizować działanie robota lub określić, dlaczego stworzony program nie działa zgodnie z oczekiwaniami. Dobre praktyki programistyczne zalecają komentowanie programów. Komentarze w języku RAPID poprzedzane są znakiem wykrzyknika.
Symulacja wykonania programu wymaga, oprócz definicji zachowania robota oraz urządzeń współpracujących, stworzenia graficznej reprezentacji środowiska, w którym robot pracuje. RobotStudio ma bibliotekę podstawowych komponentów gniazd roboczych, z których można budować obiekty złożone. Komponenty mogą mieć części ruchome, np. elementy taśmociągów, mogą też zawierać czujniki generujące sygnały dla sterownika. Możliwości komponentu określane są przez konfigurację jego parametrów. Współpraca obiektów definiowana jest za pomocą powiązań ich parametrów. Należą do nich sygnały przypisane do wejść i wyjść komponentów. Mogą one przetwarzać sygnały korzystając z funkcji matematycznych. Można definiować dynamiczne zachowania komponentu, np. sposób jego ruchu, a także można uwzględnić właściwości materiału, z którego jest wykonany, i w ten sposób symulować jego zużycie w czasie. Z komponentów prostszych można składać komponenty bardziej złożone. W ten sposób tworzy się nie tylko graficzną reprezentację gniazda, ale również animuje jego działanie, i tworzy się połączenia linii sygnałowych. Tak powstaje replika rzeczywistego gniazda, zarówno jego wygląd, jak i sposób przekazywania sygnałów biorących udział w sterowaniu.
Przykładowo można utworzyć komponent zawierający barierę świetlną umieszczoną na taśmociągu. Jeśli obiekt przenoszony przez taśmociąg przetnie tę barierę, odpowiedni sygnał uruchomi robota, by obiekt został przeniesiony do innej maszyny w gnieździe.
Roboty ABB często współpracują ze sterownikami Simensa. Istnieje możliwość wymiany sygnałów między gniazdem stworzonym w RobotStudio oraz platformą SIMIT symulującą działanie sprzętu firmy Simens, np. programowalnych sterowników logicznych. Możliwa jest również symulacja współpracy ze sprzętem korzystającym z protokołów OPC UA (Open Platform Communications Unified Architecture). Służy do tego OPC UA Client, który łączy działanie RobotStudio i Automation Studio. Jest to istotne, gdyż OPC UA jest protokołem komunikacyjnym szeroko wykorzystywanym w przemyśle.
W przypadku zainstalowania w sterowniku IRC-5 oprogramowania realizującego wielozadaniowość może on równolegle wykonywać do 14 programów (zadań) napisanych w języku RAPID. Program określający, jak ma się zachowywać sprzęt wchodzący w skład systemu robotycznego nazywany jest zadaniem. Każde zadanie składa się z wielu modułów (definiowanych w blokach MODULE ENDMODULE). Moduły zawierają własne dane oraz podprogramy – procedury (PROC ENDPROC), funkcje (FUNC ENDFUNC), podprogramy obsługi przerwań (TRAP ENDTRAP)). Istnieją moduły systemowe i użytkowe. Te pierwsze są związane z systemem sterującym i są nieusuwalne, natomiast te drugie dostarcza użytkownik i mogą być skasowane. Moduły mogą być zapamiętywane jako pliki w trwałej pamięci sterownika. Podprogramy zbudowane są z instrukcji języka RAPID oraz wywołań podprogramów zawartych w modułach. Jeden z podprogramów jest wyróżniony – od niego zaczyna się wykonanie programu (zadania).
Podstawy języka RAPID
Język RAPID ma bardzo długą listę instrukcji. Lista ta liczy ponad 350 pozycji, zdefiniowano też ponad 200 funkcji i operatorów. Tutaj ograniczymy się do zasadniczych elementów języka. Te odnoszące się do szczegółów systemowych zostaną pominięte. Jak w każdym języku programowania umożliwiającym wykonywanie obliczeń, musi istnieć instrukcja podstawienia. Na danych odpowiednich typów można wykonywać operacje logiczne i arytmetyczne stosując standardowe operatory. Wartości wyrażeń nadaje się zmiennym właśnie za pomocą instrukcji podstawienia (:=). W skład wyrażeń mogą wchodzić funkcje. Funkcje mogą mieć parametry opcjonalne oraz warunkowe. Zawartość definicji funkcji z parametrem warunkowym zazwyczaj jest różna, gdy dany parametr jest określony przy wywołaniu funkcji, w stosunku do wersji, gdy nie jest on wymieniony na liście parametrów aktualnych.
W języku RAPID istnieją cztery rodzaje danych:
- stałe (CONST),
- zmienne (VAR), które zachowują swą wartość tak długo, jak długo działa program,
- zmienne trwałe (PERS – persistent) zachowujące swą wartość po zakończeniu działania programu – dzięki czemu mogą być współdzielone miedzy różnymi programami,
- parametry (parametry formalne podprogramów).
Typy i zmienne w RAPID
W języku RAPID występują następujące typy danych: atomowe, rekordy i tablice oraz aliasy. Dane atomowe są niepodzielne, tablice (array) o co najwyżej trzech wymiarach, rekordy (definiowane w bloku RECORD ENDRECORD) tworzone jako zestawy danych atomowych i rekordowych, natomiast aliasy to zdefiniowane przez użytkownika inne nazwy istniejących typów danych. Można też tworzyć wielowymiarowe tablice danych definiując ich wymiary wewnątrz nawiasów klamrowych, natomiast wartości umieszczane są w nawiasach kwadratowych. Dane atomowe mogą być następujących typów: logiczne (bool), numeryczne (num, dnum), całkowitoliczbowe jak i zmiennoprzecinkowe pojedynczej i podwójnej precyzji, oraz sekwencje znaków (string). Istnieją trzy wbudowane typy rekordów: położenie, punkt lub wektor w przestrzeni trójwymiarowej (pos), orientacja (orient), pozycja (pose), czyli złożenie położenia i orientacji. Podstawową formą wyrażania orientacji jest kwaternion. Inne reprezentacje wymagają użycia funkcji. Ponadto użytkownicy mogą definiować swoje typy danych. Stosuje się standardowe reguły widoczności typów danych.
Instrukcje sterujące wykonaniem programu
RAPID umożliwia programowanie strukturalne, jednak zachowano instrukcję skoku. Etykietę instrukcji potraktowano jako dodatkową instrukcję, która nie wykonuje żadnej czynności – stanowi jedynie adres skoku dla instrukcji GOTO. Pozostałe instrukcje sterujące wykonaniem programu to: instrukcja warunkowa (IF THEN ELSE/ELSEIF ENDIF), wielokrotnego wyboru (TEST CASE DEFAULT ENDTEST), pętle (WHILE
DO ENDWHILE, FOR DO ENDFOR), powrót z podprogramu (RETURN), zakończenie wykonywania zadania (EXIT), zgłoszenie wyjątku (błędu) (RAISE), wznowienie wykonania po błędzie (RETRY, TRYNEXT) oraz sprzężenie sygnału z procedurą obsługi przerwania (CONNECT). Wykrycie błędu uruchamia procedurę jego obsługi, która kończona jest albo za pomocą RETRY, co powoduje powtórne wykonanie instrukcji, która spowodowała błąd, albo TRYNEXT, wtedy wykonanie wznawiane jest od następnej instrukcji po tej, która spowodowała błąd, bądź od początku procedury. Możliwe jest określenie procedury jako odwracalnej (BACKWARD), co umożliwia krokowe wykonywanie programu, zarówno w przód jak i wstecz. Jeżeli procedura ma być odwracalna, to trzeba podać listę instrukcji wykonywanych przy wstecznym wykonaniu. Powinna być to lista zawierająca te same instrukcje, które wykonywane są w przód, ale na liście powinny być ustawione w odwrotnej kolejności. Jest to użyteczne przy uruchamianiu i testowaniu programu. Z podprogramami można też związać procedurę obsługi błędu. Wykrycie błędu w trakcie wykonania podprogramu powoduje wywołanie tej procedury. Potencjalnie może ona zaradzić błędowi albo zakończyć pracę systemu w łagodny sposób.
Programowanie ruchów robota
Zasadniczym celem programu zapisanego w języku RAPID jest poruszanie manipulatorem i ruchomymi częściami współpracujących z nim urządzeń. Tutaj stosowane są liczne instrukcje z grupy Move, które przemieszczają układ związany z narzędziem (TCPF). Każda z tych instrukcji tworzy jeden segment ruchu. Każdy segment może kończyć się zatrzymaniem narzędzia bądź być kontynuowany, jako kolejny segment zdefiniowany następną instrukcją ruchu.
Podstawowymi instrukcjami grupy Move są: MoveAbsJ, MoveJ, MoveL i MoveC. MoveAbsJ przemieszcza manipulator i dodatkowe osie w przestrzeni konfiguracyjnej (złącz) względem bazowej konfiguracji zerowej. Podobnie działa instrukcja MoveJ. W obu przypadkach do wykonania ruchu stosowana jest interpolacja liniowa w przestrzeni konfiguracyjnej – wszystkie osie rozpoczynają ruch jednocześnie i takoż go kończą. W efekcie wykonania tej instrukcji w przestrzeni operacyjnej ruch nie odbywa się po linii prostej, a po krzywej odpowiadającej prostej w przestrzeni konfiguracyjnej. MoveL powoduje wykonanie ruchu liniowego w przestrzeni operacyjnej. W wyniku jej wykonania narzędzie podąża po prostej ścieżce stopniowo zmieniając orientację od aktualnej do tej określonej w punkcie końcowym ścieżki prostej. Jeżeli punkty aktualny i końcowy pokrywają się, to jedynie orientacja narzędzia się zmieni. Ponadto istnieje instrukcja ruchu po okręgu MoveC. Porusza ona narzędziem po łuku okręgu w przestrzeni operacyjnej. Łuk definiują trzy pozycje narzędzia: aktualna, pośrednia i końcowa. Założono, że zazwyczaj orientacja narzędzia względem stycznej do łuku pozostaje niezmienna.
Dodatkowymi parametrami różnego typu instrukcji z grupy Move są: narzędzie, które ma być użyte (jego definicja zawiera dane zarówno geometryczne, jak i dynamiczne), jego pozycja docelowa, prędkość lub czas ruchu, promień strefy, w której następuje przejście narzędzia z jednego segmentu ruchu na następny, dokładność osiągnięcia celu, dodatkowe obciążenie narzędzia (np. gdy chwytak podnosi jakiś obiekt). Jeżeli cel ruchu nie został określony jako pozycja zatrzymania, to w jego pobliżu (zdefiniowanym poprzez wspomniany promień strefy przejścia) rozpoczyna się tranzycja na kolejny segment ruchu określony następną instrukcją Move w programie.
Oprócz podstawowych instrukcji Move, wywołujących jedynie ruch, istnieją takie, które dodatkowo oddziałują na wyjścia sterownika lub powodują wykonanie dodatkowej procedury. Instrukcje MoveJAO, MoveLAO, MoveCAO realizowane są jak odpowiednio MoveJ, MoveL lub MoveC, ale w pobliżu punktu końcowego segmentu, a dokładniej w połowie fragmentu trajektorii łączącej właśnie realizowany segment ruchu z następnym segmentem, ustawiane jest wyjście analogowe. Wielkość sygnału pojawiająca się na tym wyjściu określana jest parametrem odpowiedniej instrukcji Move. Zazwyczaj sygnał ten uaktywnia analogowo sterowane narzędzie. MoveJDO, MoveLDO i MoveCDO powodując takie same ruchy jak odpowiednio MoveJAO, MoveLAO, MoveCAO, ale zamiast ustawiania wyjścia analogowego uaktywnią wyjście binarne. Podobnie instrukcje MoveJGO, MoveLGO oraz MoveCGO ustawiają zamiast pojedynczego sygnału grupę sygnałów binarnych (8 bitów). MoveJSync, MoveLSync i MoveCSync wykonują odpowiednio ruchy po prostej w przestrzeni konfiguracyjnej, po prostej w przestrzeni operacyjnej oraz po łuku w przestrzeni operacyjnej, a w środku zmiany aktualnie realizowanego segmentu ruchu na następny wszczynają realizację procedury wskazanej parametrem.
Punkt końcowy segmentu można określić jako miejsce zatrzymania ruchu, wtedy aktywacja odpowiednich sygnałów lub procedury następuje po dojściu do tego punktu. We wszystkich przypadkach wykonanie kolejnych instrukcji w programie może być wstrzymane do czasu zakończenia ruchu, bądź ruch może się odbywać współbieżnie z wykonaniem tych instrukcji, w zależności od wartości parametru binarnego instrukcji z grupy Move. Można także sterować niezależnie ruchem urządzeń współpracujących. MoveExtJ porusza jedynie zewnętrznymi osiami, pozostawiając manipulator nieruchomym. Instrukcje CapL i CapC działają, jak MoveL i MoveC, ale w trakcie ruchu sterują procesami ciągłymi. Instrukcje te zawarte są w CAP – Continuous Application Platform, i są przeznaczone do synchronizacji procesu zewnętrznego z ruchem robota. W szczególności na trajektorię można nałożyć dodatkowy ruch wahadłowy, co jest przydatne przy spawaniu. Istnieją również instrukcje powodujące niezależne poruszanie wybraną osią manipulatora (np. IndAMove, IndCMove, IndDMove), nawet w trakcie wykonywania skoordynowanego ruchu pozostałymi osiami manipulatora.
Dla bezpieczeństwa robota tworzone są strefy bezpieczeństwa (World Zone). Służą do tego instrukcje: WZBoxDef, WZCylDef, WZSphDef, tworzące strefy odpowiednio: prostopadłościenną, cylindryczną oraz sferyczną. Gdy takie strefy są aktywne, w trakcie wykonania ruchu za pomocą dowolnej instrukcji z grupy Move sprawdzane jest, czy manipulator znajduje się poza zdefiniowanymi strefami. Jeżeli będzie próbował przekroczyć ten obszar, ruch zostanie wstrzymany lub, alternatywnie, wystawiony będzie odpowiedni sygnał określony instrukcją WZDOSet. Strefy można również deaktywować chwilowo za pomocą WZDisable. Przekroczenie granicy strefy badane jest zarówno w trybie pracy automatycznej jak i manualnej. Można też ograniczyć ruch w złączach za pomocą WZLimJointDef. Ponadto w trakcie wykonywania ruchu jest on stale nadzorowany przez oprogramowane RobotWare. Przekroczenie dopuszczalnych momentów siły w dowolnym złączu manipulatora skutkuje jego zatrzymaniem. Taka sytuacja implikuje kolizję. Jej wykrycie natychmiast aktywuje procedurę zatrzymywania manipulatora. Powoduje ona jego wycofanie, tak aby siły wywierane przez niego na otoczenie zostały wyzerowane.
Dostępna jest też nietypowa forma tworzenia procedur ruchu. W tym przypadku nową procedurę ruchu konstruuje się przez lustrzane odbicie, względem pewnej płaszczyzny, ruchów zdefiniowanych w innej procedurze. Wprowadzono też podatny tryb pracy Soft Servo. Powoduje on działanie fragmentu manipulatora lub osi zewnętrznej na zasadzie mechanicznej sprężyny, gdy narzędzie napotyka opór środowiska. Każdą oś robota można ustawić w tryb podatny za pomocą instrukcji SoftAct i skasować go za pomocą SoftDeact. Dodatkowe oprogramowanie CAP (Continuous Application Platform) wydatnie ułatwia tworzenie programów wymagających od narzędzia zamontowanego na manipulatorze poruszania się po ściśle określonych ciągłych ścieżkach, np. podczas spawania. Istnieje też DAP (Discrete Application Platform) służące do tworzenia programów dla procesów dyskretnych, np. zgrzewania punktowego.
Instrukcje interakcji z otoczeniem
RAPID zawiera także instrukcje sterujące kamerami, np. konfigurujące ich oprogramowanie bądź pozyskujące obrazy. Roboty ABB mogą być wyposażone w czucie siły lub inne czujniki. Korzystając z dodatkowego zestawu instrukcji grupy EGM (Externally Guided Motion) można wpływać na kształt ścieżki, po której porusza się narzędzie, wykorzystując odczyty z czujników lub sygnały generowane przez inny komputer. Przy czym ścieżka może być albo modyfikowana albo tworzona przez komputer zewnętrzny. Modyfikowanymi ścieżkami są segmenty proste (w przestrzeni konfiguracyjnej bądź operacyjnej) lub łuki okręgów.
Ponieważ sterownik zawiera wyjścia cyfrowe i analogowe, istnieją instrukcje wymuszające na nich odpowiednie wartości: SetDO (binarne), SetAO (analogowe), SetGO (cyfrowe), lub generujące impuls: PulseDO. Ponadto stworzono instrukcje czytania wejść. Czytanie i pisanie z/do cyfrowych szeregowych kanałów komunikacyjnych realizowane jest za pomocą instrukcji ReadAnyBin, WriteAnyBin. Istnieją również instrukcje do komunikacji poprzez port sieciowy (SocketSend, SocketReceive).
Stworzono cały zestaw instrukcji oczekiwania Wait. Instrukcje WaitAI, WaitAO, WaitDI, WaitDO, WaitGI, WaitGO powodują czekanie na zmianę stanu odpowiedniego wejścia lub wyjścia. Oczekiwanie na zmianę na wyjściu związane jest z wielozadaniowością. Jedno zadanie może ustawiać wyjście, a drugie może czekać na wystąpienie tej zmiany. Ponadto do języka wprowadzono instrukcje oczekiwania przez określony czas (WaitTime) lub na spełnienie pewnego warunku (WaitUntil).
Podsumowanie
W tej części cyklu artykułów poświęconego metodom programowania robotów przemysłowych przedstawiono sposoby programowania robotów firm ABB Ltd. Kolejna część cyklu, która ukaże się w następnym numerze Automatyki, zawierać będzie opis metod programowania robotów firmy Stäubli International AG.
źródło: Automatyka 7-8/2024
Komentarze
blog comments powered by Disqus