W tym artykule chciałbym podzielić się swoimi doświadczeniami, które w znaczącym stopniu ułatwiają programowanie robotów KUKA. Wpis można również uznać za kontynuacje artykułu 3 funkcje, które pomogą Ci lepiej programować roboty KUKA opublikowanego przez kolegę z pracy-Krzyśka.
1. Stosuj „notację węgierską”
Pisząc złożone programy w których występuje wiele zmiennych możemy łatwo się w nich pogubić. Aby tego uniknąć możemy stosować tzw. notację węgierska – polega ona na tym, że do nazwy zmiennej z przodu dodajemy literkę typu zmiennej. Przykładowo punkt osiowy zadeklarujemy jako „aPunkt”, punkt o współrzędnych kartezjańskich jako „xPunkt”, zmienna boolowska jako „bStan” itd.
2. Używaj zmiennych enumerycznych
Operowanie na liczbach w złożonych programach może być uciążliwe np. gdy liczby te reprezentują konkretne modele lub części które ma pobierać / obsługiwać robot. Z pomocą przychodzi zmienna enumeryczna, która przechowuje słowa. Oprócz tego ENUMy mogą również stanowić nazwy poszczególnych case’ów w funkcji SWITCH, mogą być używane jako zmienna w IF i wiele więcej. Zmienne enumeryczne w robotach KUKA deklarujemy następująco: ENUM nazwa_zmiennej_enumerycznej wartości_zmiennych;
np.: ENUM ePozycja gora, dół; ENUM eCzęsc srubka, nit
3. Zmienne globalne deklaruj w pliku config.DAT
Plik ten jest dostępny dla wszystkich programów w robocie i nie ma w nim konieczności używania operatorów PUBLIC i GLOBAL przy każdej zmiennej. W „configu” jest specjalne miejsce własnie na zmienne globalne w ciągu pt. „user globals”.
4. Przesunięcie bazy
Często zdarza się, że baza robota została przesunięta lub chcemy mieć współrzędne zerowe w innym miejscu niż są obecnie. Aby uniknąć bazowania na nowo możemy zaoszczędzić cenny czas i skorzystać z operatora przesunięcia bazy o wektor którego składnia wygląda następująco:
- $base = $base:{x 0,y 0,z 0,a 0, b 0, c 0}.
W miejsca zer wpisujemy wartości o które chcemy przesunąć bazę. Operację tą możemy wykonać również dla narzędzia, wtedy składnia wygląda analogicznie następująco:
- $tool = $tool:{x 0,y 0,z 0,a 0, b 0, c 0}.
Operator ten implementujemy bezpośrednio w kodzie aplikacji pod zadeklarowaną bazą.
5. Stosuj bezkolizyjne przejścia robota
Kiedy robot pracuje w kilku bazach oddalonych od siebie, możemy w znaczący sposób ułatwić sobie życie tworząc program do bezkolizyjnych przejść robota z jednej bazy do drugiej. Program możemy w późniejszym czasie wywoływać, zamiast dokładać do naszych programów dodatkowe ruchy. Program możemy w prosty sposób napisać w funkcji switch (przejscie(staraBaza:in, nowaBaza:in)).
6. Unikaj pracy robota przy pozycji osi 5 bliskiej 0°
Pozwoli nam to uniknąć wystąpienia osobliwości osi kiści osi 4 i 6. Więcej na ten temat w mojej poprzedniej pracy konkursowej.
https://iautomatyka.pl/sposoby-unikania-osobliwosci-kisci-w-robotach-kuka/
7. Używaj tablic i pętli
Możemy w ten sposób znacząco skrócić ilość linijek w naszym kodzie gdy przykładowo robot wykonuje ten sam ruch zmieniając tylko pewne wartości:
FOR aktualnyOtwor = 1 TO iloscOtworow xOtwor.x = wysokosc - Otwor[aktualnyOtwor] lin xOtwor wierc_na_raz() ENDFOR
Mam nadzieję, że powyższy artykuł ułatwi wam w znaczący sposób programowanie robotów oraz zmniejszy ilość linijek i straconych nerwów.
![]() ![]() Nagrodę Zestaw do wina + gadżety dostarcza ambasador konkursu, firma Multiprojekt |