Jak zoptymalizować program robota współpracującego Universal Robots, aby zwiększyć wydajność zakładu produkcyjnego?
Jednym z ważniejszych wyzwań stojących przed zakładami produkcyjnymi jest ciągłe zwiększanie wydajności, celem sprostania rosnącym wymaganiom rynku. Zastosowanie robotów Universal Robots może się do tego przyczynić, jednakże źle przygotowany program cobota może generować niepotrzebne koszty. Można je zredukować poprzez optymalizację zaprogramowanej sekwencji ruchów robota. Jeśli chcesz, żeby Twój robot UR osiągał jeszcze krótszy czas pojedynczego cyklu to ten artykuł jest dla Ciebie.
Każdy proces produkcyjny składa się z szeregu etapów przez jakie musi przejść dany produkt. Czym krótszy jest czas poszczególnych cykli, tym krótszy jest czas całego procesu produkcyjnego, a co za tym idzie, rośnie wydajność produkcji. Jeśli zaprogramowaliśmy robota Universal Robots nie przykładając większej wagi do optymalizacji jego pracy, może się okazać, że na każdym cyklu sporo tracimy na wydajności. Załóżmy, że jeśli program robota nie jest zoptymalizowany, trwa np. 6,8 s. okazuje się, że po jego zoptymalizowaniu, udało nam się skrócić czas trwania jednego cyklu do 4,8 s, co daje nam oszczędność na poziomie 30% czasu. O tyle też może wzrosnąć wydajność naszego procesu produkcyjnego. W jaki sposób zoptymalizować pracę robota współpracującego UR w praktyce? Istnieje na to kilka sposobów.
Po pierwsze prędkość
Dopasowanie prędkości i przyspieszenia może się wydawać całkiem oczywiste, ale często programiści ustawiają ich domyślną wartość dla ruchu robota pomiędzy dwoma wskazanymi punktami. Dla RuchuJ jest to odpowiednio 60 stopni/sek i 80 stopni/sek^2. W przypadku każdego modelu robota możemy te wartości znacznie zwiększyć, o ile pozwala nam na to analiza ryzyka i wynikające z niej ustawienia bezpieczeństwa. Warto więc zastanowić się czy w naszym programie są miejsca gdzie ramię robota może poruszać się znacznie szybciej, zwłaszcza tam gdzie nie zależy nam na precyzji ruchu.
Podobnie jeśli chodzi o parametr przyspieszenia, który wpływa na stromość narastania i opadania zbocza prędkości przedstawionej na wykresie na rysunku nr 1.
Rys. nr 1 Wykres prędkości punktu TCP w czasie
Dla robotów UR3e możemy ustawić maksymalną prędkość w RuchuJ na poziomie 360 stopni/sek, zaś przyspieszenie do wartości 4584 stopnie/sek^2. Z kolei dla modeli UR5e i UR10e będzie to odpowiednio 180 stopni/sek i 2292 stopnie/sek^2. Oczywiście należy pamiętać, że ustawienie wyższej prędkości i przyspieszenia może się wiązać z niebezpieczeństwem dla otoczenia i może powodować w określonych sytuacjach zatrzymania ochronne robota. Należy więc korzystać z tych parametrów z rozsądkiem. W praktyce producent nie zaleca przekraczania wartości 800 stopni/sek^2. Podobnie możemy dopasowywać parametry w RuchuL i RuchuP, co również pozwoli zaoszczędzić cenne sekundy w procesie produkcyjnym.
Prawidłowy wybór rodzaju ruchu
Domyślnym typem ruchu robota jest RuchJ. Nie jest to jednak jedyny sposób w jaki może się poruszać ramię robota. Do dyspozycji mamy także RuchL (liniowy) i RuchP (procesowy). Który typ ruchu wybrać do naszej aplikacji?
Rys. nr 2 Wybór rodzaju ruchu w środowisku PolyScope
RuchJ
Z punktu widzenia wydajności najkorzystniejszy będzie RuchJ. Przy jego zastosowaniu punkt TCP robota porusza się po trajektorii łuku. Jest to najkorzystniejsze z punktu widzenia niezbędnych do osiągnięcia przez poszczególne przeguby robota prędkości i przyspieszeń. Stosujemy go wszędzie tam, gdzie ruch narzędzia nie musi być liniowy i nie musi się odbywać ze stałą prędkością. Przykładowo będzie to powrót na pozycję początkową, przenoszenie w wolnej przestrzeni przedmiotów i w niektórych sytuacjach dojazd do miejsca pracy narzędzia. Nie będzie się on jednak nadawał gdy będzie nam zależało na precyzji czynności wykonywanej przez ramię robota. Należy więc korzystać z niego tam gdzie prędkość narzędzia jest ważniejsza od precyzji. W ruchu tym możemy ustawić tzw. "promień mieszania", czyli zaokrąglać ruch narzędzia w poszczególnych punktach.
RuchL
Wszędzie tam gdzie narzędzie robota musi poruszać się po linii prostej, wybieramy RuchL. W tym przypadku dość często zdarza się, że poszczególne przeguby będą poruszały się ze znacznymi prędkościami i przyspieszeniami, po to, aby punkt TCP utrzymał liniową trajektorię ruchu. Ruch ten wybieramy wszędzie tam, gdzie musimy dojechać do jakiegoś elementu po linii prostej lub użyć narzędzia na prostym odcinku. Co istotne, to fakt, że prędkość narzędzia będzie zmienna w czasie. W RuchuL możemy również ustawić tzw. "promień mieszania". Z punktu widzenia wydajności zwykle jest on wolniejszy od RuchuJ, jednakże bardzo dużo zależy od ustawień parametrów prędkości i przyspieszenia.
RuchP
RuchP to inaczej ruch procesowy, czyli ruch narzędzia ze stałą prędkością, z automatycznym "blendowaniem" ruchu narzędzia w punktach. Stosujemy go w tych wszystkich aplikacjach, gdzie wymagana jest stała prędkość pracy narzędzia robota - w klejeniu, spawaniu, dozowaniu, lakierowaniu. Z punktu widzenia wydajności jest to najmniej korzystny ruch, albowiem przy dużych prędkościach może powodować on zatrzymania ochronne. Aby ich uniknąć należy zwiększyć tzw. "promień mieszania", co nie zawsze jest możliwe. Jednym z wariantów tego ruchu jest RuchC, czyli ruch po okręgu, który używamy tylko wtedy gdy robot UR ma się poruszać po ściśle określonym łuku lub okręgu.
(Więcej o rodzajach ruchów robota w artykule "Pierwszy program robota Universal Robots".)
Rys. nr 3 Rodzaje ruchów ramienia robota Universal Robots
"Zaokrąglanie" punktów na ścieżce robota
Kolejnym bardzo skutecznym sposobem na zoptymalizowanie pracy robota współpracującego jest "zaokrąglanie" punktów na ścieżce robota. Działanie to nazywane jest także "blendowaniem". Na czym ono polega? Standardowo robot przemieszcza się pomiędzy dwoma punktami przyspieszając gdy rusza z początkowej pozycji i zwalniając gdy dojeżdża do końcowej. Powoduje to utratę cennych sekund w procesie produkcyjnym, które przekładają się na obniżenie wydajności robota.
Okazuje się, że w wielu procesach produkcyjnych robot nie musi zatrzymywać się w każdym punkcie ścieżki. Wówczas możemy zaokrąglać ruch przez konkretny punkt, wskazując na wartość promienia łuku jaki pokona ramię robota. Robimy to poprzez tzw. dodanie "promienia mieszania" w punkcie co obrazuje rys. nr 4, domyślnie wartość blendowania wynosi 50 mm. Zwiększając ją poprawiamy płynność ruchu, ale jednocześnie coraz bardziej odbiegamy od początkowej trajektorii ruchu. Jest to jednak operacja, która pozwala znacznie zoptymalizować cykl pracy robota, który nie musi już za każdym razem zatrzymywać się, aby przejść przez dany punkt. Dodatkowo minimalizujemy ryzyko zatrzymań awaryjnych, które mogą powstać na skutek przekroczenia dopuszczalnych wartości przyspieszeń.
Rys. nr 4 "Blendowanie" punktów na ścieżce robota w środowisku PolyScope
Wątki - równoległe działania w programie robota
Standardowo większość operacji wykonywanych przez robota UR odbywa się sekwencyjnie, jedna po drugiej. Istnieje jednak możliwość wykonywania niektórych z nich równolegle. Do tego celu służą tzw. "wątki" (z ang. thread) lub "wydarzenia" (z ang. event). Pozwalają one na wykonywanie różnego rodzaju obliczeń, kontrolowanie komunikacji z innymi urządzeniami, sprawdzanie parametrów robota, sterowanie we/wy w sposób równoległy do głównego programu robota. "Wątek" wykonywany jest przez cały czas działania programu głównego robota, zaś "zdarzenie" tylko w trakcie spełniania określonego warunku. Przedstawia to rys. nr 5.
Rys. nr 5 Schemat przedstawiający różnice między programem, "wydarzeniem" i "wątkiem"
"Wątki" oraz "wydarzenia" można wykorzystać także do optymalizacji działania programu. Jeśli chcemy, żeby jakaś czynność, np. otwarcie chwytaka wykonywała się równolegle do przemieszczania się ramienia robota pomiędzy kolejnymi punktami, możemy zastosować "wątek", który będzie wykrywał położenie robota w określonej pozycji (If get_actual_tcp_pose()=Waypoint_1), co ma zainicjować otwarcie chwytaka (TO[0]=On). Przykład takiego programu zobrazowano na rys. nr 6. Oczywiście można to także zrealizować poprzez "wydarzenie". Dzięki temu oszczędzamy czas, który normalnie zajęłoby oczekiwanie na otwarcie lub zamknięcie chwytaka (z takim problemem mamy do czynienia np. w przypadku chwytaków RG2 i RG6 firmy OnRobot).
Rys. nr 6 Wykorzystanie "wątku" w programie robota UR
Podsumowanie
Optymalizacja cyklu produkcyjnego jest niezwykle istotna z punktu widzenia wydajności produkcji. Wdrażając coboty Universal Robots należy pamiętać o tym, że odpowiednio napisany program pozwala skrócić czas cyklu. W tym celu mamy do dyspozycji szereg rozwiązań, które możemy zastosować. Zaczynając od zmian prędkości i przyspieszenia, poprzez wybór odpowiedniego rodzaju ruchu, na zaokrąglaniu punktów i wykorzystaniu "wątków" kończąc. Oczywiście zawsze musimy pamiętać przy tym o bezpieczeństwie pracowników i precyzji, która jest kluczowa z punktu widzenia jakości produkcji. Jak wykonać to w praktyce uczymy na prowadzonych przez Elmark Automatyka szkoleniach w naszym Autory - zowanym Centrum Szkoleniowym Universal Robots w Warszawie.
Skontaktuj się ze specjalistą Elmark
Masz pytania? Potrzebujesz porady? Zadzwoń lub napisz do nas!