Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2020/03/main_img.jpg

Nie taki robot straszny, jak go malują. Kilka podstawowych informacji o programowaniu robotów

autor: mirase609.

Pomimo, że żyjemy w XXI wieku, w czasach 4 rewolucji przemysłowej, wielu ludzi oglądając filmy z pracującymi robotami przemysłowymi nawet nie śmie zastanowić się jak i dla czego to działa. W końcu, czy to w rzeczywistym świecie, czy na filmie, robot wykonuje tyle skomplikowanych ruchów, jego ramię ma wiele przegubów obracających się w różnych kierunkach, z różnymi prędkościami. Sprawa komplikuje się całkowicie, kiedy ktoś był na studiach i choćby słyszał o wyznaczaniu współrzędnych wektora potrzebnych do transponowania macierzy. Obliczenia te zajmowałyby nam mnóstwo czasu i pewnie ich wyniki nie zawsze byłby poprawne. Na szczęście, znane są algorytmy według których powinny być one prowadzone. Ta wiedza, pozwoliła zaimplementować te algorytmy i wzory do systemów komputerowych zabudowanych w robotach, które to za nas przeliczają kolejne przesunięcia poszczególnych osi. Skoro algorytmy są zaszyte w systemie to co pozostaje programiście robotów? W dużym przybliżeniu wystarczy wskazać punkt do którego robot ma się przesunąć.


Poruszanie robotem

Na przykładzie robotów antropomorficznych (jakich? – antropomorficznych czyli przypominających ludzką rękę), postaram się wyjaśnić, jakie mamy podstawowe, dostępne typy ruchów.

Antropomorficzny układ osi

Poruszanie osiami mechanicznymi

Mechanika najbardziej popularnych robotów przeznaczonych m.in do zadań typu pick&place najczęściej oparta jest o 6 osi mechanicznych. Ich wymiary i ułożenie (szczególnie w okolicach „nadgarstka” u różnych producentów bywa odmienne, czasem nawet okazuje się, że ruch jednej osi mechanicznej zależny jest od innej. Niezmienny natomiast pozostaje kierunek odliczania osi. Osie mechaniczne mają kolejne numery i liczymy je zaczynając od podstawy. Tak więc pierwsza oś mechaniczna służy do obrotu całego robota wokół własnej osi (znajdującej się w podstawie), kolejne dwie (druga i trzecia) generują zasięg robota. Poruszając osiami 4-6 zauważamy natomiast zmiany położenia naszego narzędzia przy niewielkiej różnicy w położeniu ramion robota.

Umiejscowienie osi robota antropomorficznego

W przypadku robotów ABB (których przykładami będę się posługiwał), aby poruszyć robotem, po spełnieniu warunków sprzętowych dla załączenia silników w trybie ręcznym, wystarczy poruszyć joystickiem. Warto wspomnieć, że jest on analogowy, więc prędkość osi zależy od kąta wychylenia, ponadto, w starszych wersjach RobotWare’u można było wyraźniej zauważyć zwłokę pomiędzy naszymi manipulacjami a odpowiedzią robota. Powiązanie osi mechanicznej z kierunkiem joysticka przedstawia wycinek z RobotStudio – darmowego oprogramowania  wspierającego  programowanie  robotów.

Osie mechaniczne, widok okna jogging (poruszanie)

Kursor myszy znajduje się nad fizycznym przyciskiem panelu który powoduje zmianę wyboru aktywnych osi. Pole Joystick directions podpowiada, w którą stronę powinniśmy wychylić manipulator aby oś robota przesunęła się w kierunku „+”.

Poruszanie po osiach kartezjańskich

Tę nazwę (od Kartezjusza) powinniśmy pamiętać już ze szkoły podstawowej – wtedy związana była z mapami i siatką potrzebną od określenia współrzędnych punktu. Nie inaczej jest w robotach. Do określenia punktu na mapie potrzebowaliśmy szerokości i długości geograficznej. Tutaj podajemy współrzędne punktu X i Y. Każdy punkt na mapie, a w zasadzie na kuli ziemskiej, ma jakąś wysokość względem poziomu morza. Tak w robotach też mamy trzecią współrzędną – Z.

Tak więc ogólnie wygląda kartezjański układ współrzędnych w robocie. Sprawa komplikuje się nieco, gdyż układów takich możemy mieć więcej. Potrzebujemy takiej opcji kiedy np. mamy pracować na stole, który nie jest ustawiony prostopadle (równolegle) do osi wstępnie predefiniowanych w naszym robocie. Jak są zorientowane wstępnie osie w naszym robocie i gdzie ich początek:

Orientacja domyślna układów WORD i BASE

Mamy więc już układ odniesienia. Żeby poruszać się w układzie współrzędnych wzdłuż jego osi potrzebujemy punktu. Cóż to za punkt? Dla ułatwienia naszej pracy tym punktem staje się nasze narzędzie: chwytak, palnik, dysza, głowica. Na samym początku jednak jej nie mamy. Mamy za to narzędzie domyślne „tool0”, którego TCP (tool center point) znajduje się po środku flanszy na końcu jego mechaniki. Tutaj zaczyna się praca kontrolera robota, o której wspomniałem na początku. My wybieramy jakim narzędziem (punktem), po jakiej osi i w jakim układzie, a on sam oblicza to, którym silnikiem, w którą stronę i z jaką szybkością obracać aby utrzymać zadany kierunek.

Ruch po osiach kartezjańskich, widok okna jogging (poruszanie)

Przyciskiem nad którym znajduje się kursor wybieramy tryb poruszania po osiach kartezjańskich. Podobnie jak poprzednio, pole Joystick directions wskazuje powiązanie osi układu współrzędnych z naszym joystickiem. Ponowne naciśnięcie przycisku wyboru poruszania po osiach kartezjańskich przełączy nas w tryb reorientacji. I znów trudne, niepopularne słowo, ale daję słowo, będzie takich ich coraz mniej. Teraz, kiedy już wiemy co to TCP, zrozumienie czym jest reorientacja nie powinno być trudne. Reorientacja to nic innego jak poruszanie robotem w taki sposób aby TCP pozostawało nieruchome. Przydaje się to szczególnie kiedy finalnie ustawiamy pozycje odbioru, odłożenia, czy też mamy zamiar ustawić dyszę podającą klej w tej samej pozycji (odległości) ale pod innym kątem do materiału.

Instrukcje ruchu

Zakładając, że znajdujemy się w głównym oknie edycji programu (procedura MAIN), aby dodać instrukcję ruchu wystarczy skorzystać z kafelka ADD INSTRUCTION i wybrać odpowiedni typ ruchu

Zamiast tekstu pojawi się wybrana instrukcja. W wyświetlonej zakładce widzimy najbardziej typowe, najczęściej używane instrukcje języka RAPID. Wśród nich znajdują się również podstawowe instrukcje ruchu.

MoveJ (move joint – ruch połączony)

Instrukcja ruchu, używana najczęściej do dojazdów pomiędzy obszarami pracy, tam gdzie nie ma konieczności poruszania się po linii prostej. Kontroler realizując tę instrukcję oblicza różnice pomiędzy aktualną wartością położenia kątowego osi oraz ich wartościom po osiągnięciu zadanego punktu. Znając te różnice dla każdej z osi, kontroler ustawia ich prędkości tak, aby wszystkie równocześnie rozpoczęły ruch oraz zatrzymały się w tym samym momencie. Może to oznaczać, że osie będą poruszały się z różną prędkością. Ta instrukcja zapewnia najszybsze osiągnięcie punktu docelowego, przy minimum ruchu robota.

MoveL (move line – ruch po linii)

Tę instrukcję wybieramy kiedy zależy nam na tym, aby narzędzie robota poruszało się dokładnie po linii prostej. Najczęściej w punktach procesowych. Robot pomiędzy punktami porusza się po linii prostej (podobnie jak ruchy ręczne w układzie kartezjańskim). Kontroler zajmuje się obliczaniem i korygowaniem parametrów pracy silników poszczególnych osi tak, aby uzyskać ruch po linii.

MoveC (move circle – ruch po łuku)

O ile nazwa bywa nieco mylna ponieważ wskazuje ruch po okręgu, faktycznie robot może zrealizować ruch po łuku. Aby wykreślić koło, potrzebujemy dwóch takich instrukcji. Obliczenia dla ruchu po łuku wymagają podania dwóch punktów, punktu pośredniego i końcowego. Dodatkowo istnieją pewne warunki dotyczące w szczególności położenia punktu pośredniego. Jeśli nie spełnimy tych warunków możemy spodziewać się komunikatu „Circle Uncertain” czyli „Okrąg niemożliwy”.

MoveAbsJ (move absolute joint – ruch łączony absolutny)

Instrukcja używana do zapisywania stałych pozycji robota bez względu na zdefiniowany TCP i Wobj (układ odniesienia). Najczęściej są to pozycje serwisowe, domowe, konserwacyjne. W definicji zmiennej określającej taki punkt znajdują się informacje o położeniu kątowym poszczególnych osi.

P-T-P czy T-P

Zwykło mówić się, że robot porusza się wg. reguły Point-To-Piont. Czy to określenie jest poprawne? W naszych instrukcjach ruchu występuje przecież tylko informacja w jakim punkcie robot ma się zatrzymać. Poprawna zatem zdaje się być forma To-Point. Punktem rozpoczęcie ruchu w robotach ABB jest punkt w którym robot aktualnie się znajduje. I tak w przypadku normalnego, kontrolowanego przepływu programu robot porusza się po kolejnych punktach jakie mu zaprogramowaliśmy. Uwagę należy jednak zwrócić w przypadku przechodzenia pomiędzy procedurami, uruchamianiu programu nie od początku (wtedy robot będzie starał się dojechać do zadanej pozycji z pozycji aktualnej, która może być odmienna od normalnie poprzedzającej pozycji), czy też w trakcie modyfikacji punktów. Modyfikacja jednego punktu  może zaowocować tym, że ruch do kolejnego (w przypadku kolejnej instrukcji MoveJ) będzie się odbywał po innej trajektorii albo będzie zupełnie niemożliwy (np. w przypadku ruchu MoveC). Edytując więc pozycję warto, przed uruchomieniem programu przetestować dojazd do modyfikowanej pozycji z punktu poprzedniego jak i wykonać kolejną instrukcję ruchu następującą po tej zmodyfikowanej.

Metody zapisu punktów w systemie robota

Dodając pierwsze punkty spotkamy się z takim zapisem jak na ekranie poniżej (po lewej) w linii 4.

Okno programu robota i definicja punktów

Linia 4 oznacza bowiem dla kontrolera robota „porusz się ruchem połączonym do pozycji *”. Czym jest „*”? Jest to definicja pozycji zapisana bezpośrednio w tej instrukcji. Zajmuje ona niestety tak dużo miejsca, że cała jej definicja została zwinięta do jednego znaku. Całą zawartość widać w RobotStudio. Niestety nigdzie dalej w programie nie możemy się do tak zapisanej pozycji odwołać. Co zrobić, aby zapisać współrzędne punktu w taki sposób, aby później można było skorzystać z tej samej pozycji? Nic trudnego. Klikając w „*” otwiera nam się okno definicji zmiennej opisującej punkt do którego robot ma dotrzeć. Wybierając pozycję NEW (ekran powyżej po prawej) mamy możliwość nazwania jej oraz przypisania dodatkowych parametrów. Zakładając, że nic nie zmieniamy, nazwa ustala się na wartość „p10”, a nowa instrukcja przyjmuje wygląd tak jak ta z linii 5 ekranu powyżej. Oznacza to mniej więcej tyle, co „porusz do punktu p10 ruchem liniowym”. W każdym punkcie programu możemy ponownie wykorzystać ten punkt. Warto zauważyć, że pod dodawanymi zmiennymi definiującymi punkty znajdują się wartości aktualne położenia robota. Oznacza to, że podczas programowania najpierw dojeżdżamy w wybrany sposób do punktu, który jest naszym celem, a później wybieramy dodaj instrukcję i definiujemy nowy punkt. Analogicznie, jeśli osiągnęliśmy jakąś pozycję w programie (np. wykonując kolejne linie przyciskami ruchu krokowego), i chcemy ją zmienić, wystarczy przesunąć ręcznie robota na wybraną pozycję i użyć klawisza MODIFY POSITION, kontroler zapyta czy na pewno (uwaga, operacja nieodwracalna, nie można cofnąć), a po potwierdzeniu aktualna pozycja robota zostanie zapisana w zmiennej podświetlonej przez kursor. Wynikiem może być schematyczny program przedstawiony poniżej

Kroki programu i ruch manipulatora

Dodatkowe argumenty instrukcji ruchu

Oprócz informacji o punkcie docelowym dla robota, w instrukcji ruchu musimy zawrzeć jeszcze kilka innych informacji. Logiczne jest bowiem, że informacja do kontrolera „jedź na pozycję „p10″” jest dla niego nie kompletna. O co może kontroler zapytać, jakich potrzebuje jeszcze informacji? Odpowiedzią na to pytanie może być poniższa ilustracja

Opis każdej z tych zmiennych zająłby dość dużo miejsca, pozwolę sobie opis ten skrócić do informacji, że klikając w dowolną część tej instrukcji, wyświetli się okno z którego będzie można wybrać odfiltrowane po typie zmienne, pasujące typem w daną część instrukcji.

Artykuł został nagrodzony w Konkursie iAutomatyka – edycja Marzec 2020.

Nagrodę Zestaw do obsługi technicznej Fluke 179 z multimetrem przemysłowym  dostarcza ambasador konkursu, firma FLUKE.



Utworzono: / Kategoria: , ,

Reklama

Newsletter

Zapisz się i jako pierwszy otrzymuj nowości!



PRZECZYTAJ RÓWNIEŻ



NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

Reklama



POLECANE FIRMY I PRODUKTY
  • Rozwiązania wizyjne nadają się idealnie do zautomatyzowanych zadań kontrolnych i pomiarowych. Kamery wizyjne 2D i 3D firmy SICK sprawdzają się w ogromnej ilości aplikacji, polegających na pomiarze, lokalizacji, kontroli i identyfikacji. Nas...
  • Nowe modułowe sterowniki programowalne PLC firmy Eaton umożliwiają producentom maszyn i systemów opracowywanie nowoczesnych koncepcji automatyki, zwłaszcza w połączeniu z systemem XN300 I/O i panelem dotykowym XV300. Modułowy sterownik zape...
  • To rozwiązanie oparte o technologię LoRaWAN pozwala skutecznie realizować działania ograniczające ryzyko rozprzestrzeniania się wirusa . Możliwość automatycznej kontroli dystansu z jednoczesnym monitoringiem relacji i wstecznym śledzeniem k...
  • ÖLFLEX® CLASSIC 110 – elastyczny przewód sterowniczy do różnych zastosowań, w płaszczu z PVC, aprobata VDE, odporność na oleje, 300/500 V, również do YSLY lub YY CPR: informacje pod adresem www.lapppolska.pl Certyfikat zgodności VDE z...
  • Zapraszamy Cię na pełny kurs zdalnego dostępu SECOMEA. Kurs powstał z myślą o każdym, kto chce zgłębić tajniki zdalnego dostępu do maszyn i sieci przemysłowej. Zdalny dostęp rozwija się dynamiczne i zyskuje na znaczeniu zwłaszcza w sytuacji...
  • SCADA z wbudowanym serwerem sieci Web i routerem, bez licencji, bez limitów rejestrów! Brzmi dobrze? A to dopiero początek! Jest to urządzenie umożliwiające zarządzanie zarówno w sieci lokalnej jak i przez Internet z komputera, bądź urządze...