Z artykułu dowiesz się, jak tworzyć własne powiadomienia na panelu uczenia, które mogą zawierać tabele i obrazy oraz różne style formatowania.
Wyskakujące okienka w UR
Popupy, czyli wyskakujące okienka to funkcjonalność w robotach UR, która pozwala na wyświetlenie komunikatów dla operatora. Mogą informować one o kolejnych krokach podejmowanych przez robota, instrukcjach dla operatora, bądź wyświetlać stan aktualnie wykonywanego procesu. Programując robota przy pomocy panelu uczenia, aby dodać wyskakujące okienko, należy przejść do zakładki Podstawowe à Wyskakujące okienko. Domyślnie do wyboru mamy dwie opcje:
- Wyświetlenie tekstu, który wpisujemy w pole tekstowe.
- Wyświetlenie zmiennej, zapisanej wcześniej w programie.
Ograniczenia
Niezależnie, którą z opcji wybierzemy, obowiązuje nas limit wyświetlanych znaków. Nie możemy na ekranie panelu uczenia wyświetlić wiadomości dłuższej niż 255 znaków. Ponadto tekst jest zapisany w sposób ciągły, przez co jest on po prostu mało czytelny.
Rysunek nr 1. Robot nie może wyświetlić więcej tekstu w wyskakującym okienku.
Wykorzystanie HTML do formatowania tekstu
Z rozwiązaniem przychodzi nam możliwość używania języka znaczników HTML do formatowania naszych wiadomości. Celem tego artykułu nie jest opisanie wszystkich możliwości HTML, a jedynie pokazanie kilku podstawowych opcji. Jeżeli chcesz dowiedzieć się więcej, polecam skorzystać z tego poradnika.
Poniżej przedstawię kilka kluczowych znaczników, które mogą przydać się w tworzeniu popupów:
- <br> - nowa linia
Rysunek nr 2. Przykład zastosowania nowej linii.
- <b> tekst </b> - pogrubiony tekst, <i> tekst </i> - kursywa
Rysunek nr 3. Przykład zastosowania pogrubienia i kursywy.
- Korzystając z HTML mamy możliwość dodawania struktury nagłówków. Możemy to zrobić korzystając ze znaczników od <h1> do <h6>, gdzie <h1> definiuje najważniejszy, a <h6> najmniej ważny nagłówek. Aby zwiększyć czytelność, posłużę się poleceniem skryptowym popup(), które jest równoważne funkcji dostępnej graficznie z panelu uczenia.
Zanim przejdziemy dalej, warto zastanowić się nad strukturą funkcji popup().
popup(s, title=”Popup”, warning=False, error=False, blocking=False)
- s : wyświetlony tekst bądź zmienna,
- title : tytuł wyskakującego okienka,
- warning : czy ma być widoczna ikona ostrzeżenia,
- error : czy ma być widoczna ikona błędu,
- blocking : czy wyskakujące okienko ma blokować wykonywanie programu. Jeżeli True – blokuje, jeżeli False – program wykonuje się, podczas gdy widoczny jest komunikat.
Rysunek nr 4. Przykład użycia nagłówków.
- Lista nienumerowana <ul>, numerowana <ol> i elementy listy <li>
Rysunek nr 5. Przykład użycia list nienumerowanych i numerowanych.
- Tabela <table>, nowy wiersz <tr>, nagłówek tabeli <th>, element <td>
Rysunek nr 6. Przykład użycia tabeli. Aby stworzyć obramowanie tabeli, w znaczniku otwierającym należy dodać atrybut border.
- Obraz <img src=”ścieżka_do_pliku”>
Ścieżka do folderu programów:
-
- W przypadku symulatora:
file:/home/ur/ursim-current/programs.URx/twoj_obraz - W przypadku fizycznego robota:
file:/programs/twoj_obraz
- W przypadku symulatora:
Jako źródło obrazka można podać również adres internetowy obrazu.
Rysunek nr 7. Przykład użycia osadzenia obrazu.
Zwiększenie długości komunikatów przy pomocy Dashboard Server
Tak jak wcześniej wspomniałem, jednym z ograniczeń klasycznych wyskakujących okienek jest maksymalna długość powiadomień, która jest w nich zawarta. Jest jednak pewne rozwiązanie, które przychodzi nam z pomocą.
Domyślnie na cobotach Universal Robots działa cały czas Dashboard Server, interfejs do którego można wysłać proste polecania przez gniazdo TCP/IP. Jednym z takich poleceń jest popup, który podobnie jak funkcja popup() w PolyScope, sprawia, że na ekranie Teach Pendant’a pojawia się okienko.
W tej części artykułu stworzymy i objaśnimy strukturę programu, która pozwala nam skorzystać z tej funkcjonalności.
Rysunek nr 8. Funkcje odpowiedzialne za tworzenie i zamykanie okienek.
W sekcji „Przed uruchomieniem” otwieramy gniazdo TCP / IP oraz tworzymy funkcje, które będą obsługiwały okienka. Jako parametry funkcji socket_open(), podajemy adres robota (127.0.0.1 – localhost), port pod którym działa Dashboard Server (29999), oraz jak chcemy nazwać nasze gniazdo (w tym przypadku „dashboard”).
Stworzona funkcja okno(), jako parametr przyjmuje tekst, który będzie wyświetlony w okienku. Wewnątrz ciała funkcji okno(), w zmiennej tekst, tworzona jest komenda, która będzie wysyłana do Dashboard Server. W funkcji socket_send_string() wysyłamy właśnie tą komendę, a za pomocą socket_send_byte() wysyłamy znak końca linii, potrzebny do zadziałania całości.
Funkcja zamknij_okno() korzysta z tych samych funkcji, jedyną zmianą jest wysłanie komendy „close popup” aby zamknąć otwarte już okienko.
W trakcie wykonywania programu możemy wykorzystać już stworzone przez nas funkcje . Należy uważać jednak, żeby jako parametr funkcji okno() podać ciąg znaków, który zapisany jest w jednej linii, bez znaku przenoszenia. W przeciwnym przypadku pojawi się jedynie ta część ciągu znaków, która zapisana była przez wspomnianym znakiem przenoszenia.
Poniżej widać efekt wywołania stworzonych przez nas funkcji. Jak widać, okno skalowane jest do ilości elementów znajdujących się wewnątrz, zarówno wzdłuż jak i wszerz. W przypadku, gdy okno jest bardzo rozbudowane, pojawiają się suwaki, które pozwalają nam nawigować wewnątrz.
Jeżeli chcesz przetestować przykładowy program, możesz znaleźć go pod tym adresem.
Rysunek nr 9. Przykładowe okno stworzone przez Dashboard Server.
Podsumowanie
Wykorzystując HTML i funkcjonalność Dashboard Server możemy obejść ograniczenia klasycznych wyskakujących okienek, takie jak brak możliwości formatowania tekstu, zamieszczania dodatkowych elementów oraz maksymalną długość komunikatu. Korzystając z tych narzędzi, możemy stworzyć okienko, które nie tylko wygląda lepiej, ale ma także większą wartość informacyjną.
Jeżeli zainteresował Cię ten temat, masz jakieś pytania dotyczące tworzenia niestandardowych okienek, chcesz dowiedzieć się więcej na temat robotów współpracujących Universal Robots, proszę o kontakt na adres roboty@elmark.com.pl.
Skontaktuj się ze specjalistą Elmark
Masz pytania? Potrzebujesz porady? Zadzwoń lub napisz do nas!