Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2021/10/softGOT.png

Do czego mogą służyć skrypty w panelu operatorskim?

autor: PP244.

Wprowadzenie

Tworzenie wizualizacji na panele operatorskie zazwyczaj odbywa się poprzez wybór i konfigurację standardowych, dostępnych w wybranym oprogramowaniu, kontrolek. Zazwyczaj możemy przebierać pośród różnego rodzaju przycisków, lampek, pól tekstowych i podobnych elementów. Po wybraniu właściwej kontrolki i umieszczeniu jej w żądanym położeniu na określonym ekranie dokonujemy właściwej konfiguracji. Na tym zazwyczaj kończy się nasza rola. Jednak nie zawsze standardowe możliwości graficznych elementów spełniają w pełni nasze potrzeby. Wówczas zachodzi konieczność „sięgnięcia głębiej” i skorzystania z innych funkcjonalności urządzenia. W klasyku polskiej kinematografii, filmie „Poranek kojota”, bohater grany przez Tadeusza Huka mówi, że „Jeżeli czegoś nie da się zrobić, potrzebny jest ktoś, kto o tym nie wie – przyjdzie i to zrobi”. W panelach operatorskich pomocnym narzędziem do realizacji funkcjonalności, których „nie da się zrobić” są skrypty, które umożliwiają między innymi zaprogramowanie dodatkowego przetwarzania wykorzystywanych danych, dokonywanie operacji na plikach czy też rysowanie własnych elementów graficznych na bazie dostępnych prostych prymitywów. Ostatnia wymieniona funkcjonalność stanowiła inspirację do napisania niniejszego artykułu.


Możliwości skryptów zależą od konkretnego modelu panela operatorskiego, do stworzenia tego artykułu wykorzystano SOFTGOT, czyli „panel operatorski na komputerze” firmy Mitsubishi Electric. Tutaj ważna uwaga: w szczególności nie w każdym panelu dostępne są opisywane możliwości. Programowanie skryptów w środowisku GT Designer 3 odbywa się w języku zbliżonym do standardowego języka strukturalnego C, od którego wielu programistów rozpoczyna naukę. Zasadniczo skrypty można podzielić na dwie grupy: niepowiązane z żadnym obiektem oraz powiązane z jakimś graficznym elementem. Te ostatnie są w centrum naszego zainteresowania, ponieważ umożliwiają zastąpienie domyślnego obrazka własnym rysunkiem. W przedstawionym przykładzie użyto skryptu dla zwykłego przycisku (Switch), którego pozbawiono kształtu (pole Shape otrzymało wartość none).

Co zatem narysujemy?

Bardzo wygodnym narzędziem do analizy przebiegu różnego rodzaju procesów są wykresy. Pierwotnym założeniem była prezentacja prostego wykresu funkcji jednej zmiennej, jednak ten pomysł wydawał się zbyt banalny, jak na artykuł zamieszczony w serwisie iAutomatyka. Dlatego ostatecznie wybrano narysowanie przebiegu funkcji dwóch zmiennych. Do tego celu najczęściej wykorzystuje się darmowe narzędzia internetowe lub złożone programy do wykonywania obliczeń numerycznych, takie jak Matlab. Na tapetę wzięto funkcję, o stosunkowo prostym wzorze i ładnym kształcie:

Podstawowym problemem do rozwiązania jest określenie funkcji dokonującej konwersji z przestrzeni trójwymiarowej do dwuwymiarowego rysunku. Do obliczeń tego typu wygodnym narzędziem matematycznym są macierze. Zatem zadanie sprowadza się do znalezienia współczynników macierzy A i wektora b poniższego równania.

Współczynniki najłatwiej można znaleźć, rozpisując układ równań dla znanych wartości. Przykładowo, lewy górny punkt (początek prostokątnego układu współrzędnych rysunku – punkt zerowy, oś X jest skierowana w prawo, z kolei zaś oś Y do dołu – jest to bardzo często stosowana konwencja w bibliotekach programistycznych do rysowania scen, w niniejszym artykule zamiast oznaczeń x, y stosowane są litery w, h – w celu uniknięcia podobieństwa do wejściowego układu xyz) jest wynikiem zastosowanego przekształcenia dla punktu o współrzędnych (xmin, ymax, zmax). Analogicznie, można napisać tę zależność dla kilku innych, oczywistych punktów. Następnie odejmując od siebie równania (najlepiej te różniące się na jednej pozycji spośród argumentów x, y, z – jak na rysunku poniżej), łatwo obliczymy kolejne współczynniki. Wyjaśnienie, czym są parametry, znajduje się w następnym akapicie.

Jak zabrać się do rysowania?

Zacznijmy od osi kartezjańskiego układu współrzędnych. Poprzez pola do wpisywania wartości numerycznych, istnieje możliwość wyspecyfikowania interesującego zakresu poszczególnych osi (minimalnych i maksymalnych wartości). Do wygodnego opisu użyto dodatkowe trzy parametry, odpowiedzialne za rozmieszczenie punktów krańcowych osi układu współrzędnych na rysunku, co można wykorzystać w roli namiastki przeprowadzania obrotów. Parametry są wpisywane za pośrednictwem dodatkowych elementów graficznych – suwaków (Slider) jako wartość procentowa pełnego wymiaru obrazka (długości lub szerokości). Osie narysowano jako zwykłe, białe linie.

Sam właściwy wykres utworzono jako zbiór punktów. Przedział wartości każdej osi podzielono na równe odcinki, których liczba jest również zadawana poprzez pola numeryczne (opisane jako NX, NY). Na „skrzyżowaniach” powstałej sieci punktów obliczana jest wartość funkcji. Następnie, mając już wszystkie współczynniki, zastosowano wspomniane wcześniej macierzowe przekształcenie (zapisane w wersji skalarnej, ponieważ panel operatorski nie wspiera obliczeń macierzowych), dzięki któremu otrzymywana jest para współrzędnych rysunku, w którym wyświetlana jest kropka, czyli punkt. Kolor każdej kropki zależy od wartości funkcji – zastosowano zwykłe przekształcenie liniowe. Użytkownik programu GT Designer 3 może wybierać spośród 256 kolorów (od 0 – kolor czarny do 255 – kolor biały), dlatego różnica wartości funkcji i minimalnej wartości w osi Z jest dzielona przez długość interesującego odcinka osi Z (różnicę pomiędzy wpisaną maksymalną a minimalną wartością wyświetlaną na tej osi) i mnożona przez 255. Kod napisano trochę w sposób akademicki, w celu zwiększenia czytelności, jednak nic nie stoi na przeszkodzie, by przeprowadzić optymalizację.

Podsumowanie

Zaprezentowane rozwiązanie ma pewne wady. Przede wszystkim cechuje się niską wydajnością. Problem ten można rozwiązać (lub zredukować), poprzez przeniesienie części logiki obliczeń do sterownika, zostawiając w skrypcie jedynie logikę odpowiedzialną za wyświetlanie kolejnych punktów. Jednak ideą tego artykułu było zaprezentowanie możliwości rysowania tylko z wykorzystaniem panela operatorskiego, dlatego przyjęto założenie, że całość logiki jest realizowana przez to urządzenie. Im więcej punktów do wyświetlenia, tym niższa wydajność i możliwe niepożądane efekty jak migotanie czy odświeżenie jedynie części rysunku (przykład poniżej).
Trudno również znaleźć praktyczne zastosowanie dla wyświetlania funkcji dwóch zmiennych na panelu operatorskim, do tego celu istnieją lepsze narzędzia (wyżej wspomniane). Jednak już na przykład wyświetlenie położenia końcówki manipulatora lub robota w kartezjańskim układzie współrzędnych oraz dodanie kilku symboli elementów znajdujących się w przestrzeni roboczej (potencjalnych przeszkód), może być użytecznym i dość efektownym sposobem wykorzystania wiedzy z niniejszego artykułu, również w urządzeniach innych producentów. Ponadto, zaprezentowane rozwiązanie jest dość ogólne, można je wykorzystać do wyświetlania zależności (niekoniecznie funkcyjnej) jednej zmiennej z(x) oraz z(y) poprzez manipulację wspomnianymi parametrami ustalającymi położenie krańcowych punktów osi, co pokazano poniżej (zależność z(x) uzyskana dwoma metodami – pierwsza dedykowanym narzędziem, druga za pomocą metody z artykułu).

Ocena artykułu zgłoszonego do Konkursu iAutomatyka 4.0 pisz artykuły, zdobywaj punkty, wymieniaj je na nagrody.

Kryterium 1 2 3 4 5 6 7 8 9 10
Punkty (0-2) 2 2 2 2 2 0 2 2 2 2
Suma zdobytych punktów: 18


Utworzono: / Kategoria:

Reklama



PRZECZYTAJ RÓWNIEŻ



NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

Reklama



POLECANE FIRMY I PRODUKTY