Program logiczny

Opis

Aplikacje PolyScope X mogą zawierać program logiczny, który działa nieprzerwanie w tle, niezależnie od głównego programu robota. Jest to przydatne w przypadku zadań, które muszą być kontynuowane, gdy ramię jest wyłączone, program główny jest wstrzymany lub zatrzymany albo operator wszedł do strefy bezpieczeństwa.


Typowe zastosowania obejmują utrzymywanie komunikacji w sieciach fieldbus (Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC), reagowanie na sygnały z czujników zewnętrznych, przekazywanie informacji o stanie robota do sterownika PLC linii produkcyjnej oraz sterowanie urządzeniami zewnętrznymi w przypadku zatrzymania programu głównego.

Program logiczny nie może wykorzystywać funkcji, które bezpośrednio poruszają ramię robota, zmieniają obciążenie lub modyfikują parametry TCP.

Przykłady zastosowań z wykorzystaniem programu logicznego

  1. Aktywna reakcja na sygnał z czujnika zewnętrznego, gdy robot znajduje się w trybie zatrzymania, takim jak zatrzymanie zabezpieczające, zatrzymanie ochronne lub Zatrzymanie awaryjne, a program główny jest wstrzymany lub zatrzymany, lub przed włączeniem zasilania ramienia robota.

  2. Komunikacja za pośrednictwem magistrali polowej (Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC) jest utrzymywana nawet wtedy, gdy ramię robota jest wyłączone, a program nie jest uruchomiony.

  3. Ciągłe działanie logiki komórki w przypadku przerwania programu głównego przez operatora.

  4. Raport o stanie robota, który jest przekazywany do oprogramowania sterującego produkcją (przemysłowy sterownik PLC).

  5. Kontrolowane zatrzymanie urządzeń zewnętrznych, takich jak spawarka, przenośnik, dozownik kleju, w momencie zatrzymania lub wstrzymania programu głównego.

  6. Dane wprowadzone przez operatora są rejestrowane przed uruchomieniem programu.

  7. Indywidualne przywracanie działania w przypadku wystąpienia usterek. Operator może zdecydować, co zrobić po wznowieniu programu głównego.

  8. Wymiana zewnętrznego sterownika PLC w małych komórkach robotycznych.

Licencja

Program Logic wymaga licencji, którą można nabyć za pośrednictwem portalu klienta.

 

Sterowanie programem logicznym

Na stronie Program wybierz opcję Program logiczny na pasku bocznym. Rozwiń pasek boczny, aby wyświetlić elementy sterujące służące do poruszania się po różnych częściach programu logicznego. Umożliwia również uruchamianie, wstrzymywanie, zatrzymywanie i resetowanie programu.

 

Przycisk uruchamiania programu zmienia się na „Uruchom program ” lub „Zatrzymaj program”, w zależności od stanu programu logicznego. Działa jako skrót do czynności sterowania programem dostępnych w menu kontekstowym programu logicznego.

Cztery wskaźniki programu Logic pokazują aktualny stan programu. Wskazują one również, czy program jest skonfigurowany tak, aby uruchamiał się automatycznie po załadowaniu aplikacji.

 

Struktura programu logicznego

Program logiczny składa się z tych samych sekcji strukturalnych, co program główny:

  • Główna część programu — działa w sposób ciągły, dopóki nie zostanie zatrzymana ręcznie, za pomocą instrukcji halt lub w wyniku błędu wykonania.
  • Przed uruchomieniem — uruchamia się jednokrotnie po uruchomieniu programu logicznego.
  • Moduły — funkcje i wątki, zorganizowane w taki sam sposób jak w programie głównym. Funkcje wątków są domyślnie wykonywane tylko raz; włącz opcję pętli, aby wątek działał w sposób ciągły.

Program robota i program logiczny mają każdy swój własny zestaw zmiennych globalnych, niezależną pulę wątków oraz niezależny cykl życia wykonania. Uruchomienie, zatrzymanie lub wystąpienie błędu w jednym programie nie powoduje zatrzymania drugiego. Polecenie zatrzymania lub wstrzymania ma wpływ wyłącznie na program, w którym jest wykonywane.

 

 

W sekcji Przed rozpoczęciem program można uruchomić tylko raz.

W sekcji Moduły można zapoznać się z listą funkcji i wątków dostępnych w programie.

 

Wymiana danych z programem robota

Głównym sposobem komunikacji między programem robota a programem logicznym są zmienne aplikacji . Zmienne można zarówno ustawiać, jak i odczytywać z robota oraz programu logicznego.

W tym przykładzie zliczane są elementy trafiające do bufora wejściowego komory robota, a wynik zliczania jest wyświetlany w programie robota. Licznik nadal się zwiększa, nawet gdy ramię robota jest wyłączone.

 

Odczytywanie stanu robota

Stan robota jest dostępny za pośrednictwem wbudowanych zmiennych RTDE . Wartości tych zmiennych można odczytać za pomocą funkcji skryptowej get_rtde_value() . Pełna lista dostępnych pól RTDE znajduje się w Przewodniku po RTDE .

Poniższy przykład pokazuje, jak sprawdzić, czy funkcja Safeguard Stop jest aktywna:


safety_status = get_rtde_value("safety_status")
# sprawdź, czy nie jest aktywny tryb
zatrzymania zabezpieczającego i tryb automatyczny  is_safeguard_stop_active = (safety_status == 5 or safety_status == 12)

 

Poniższy przykład sprawdza, czy program robota jest wstrzymany:

is_program_paused = get_rtde_value("runtime_state") == 4

Interfejs API URScript Control również obsługuje tę funkcjonalność.

 

Automatyczne uruchamianie programu logicznego

Można wybrać program, który ma być uruchamiany automatycznie po załadowaniu aplikacji. Po wybraniu opcji Autostart program logiczny uruchamia się natychmiast po załadowaniu aplikacji.

Można również automatycznie uruchomić program logiczny po włączeniu zasilania sterownika robota i załadowaniu ostatniej aplikacji.

Funkcja Autostart działa niezależnie od trybu pracy lub stanu ramienia robota. Gdy podczas ładowania uruchomi się funkcja Autostart, powiadomienie w pasku informacyjnym potwierdza, że program logiczny został uruchomiony.

 

 

Ikona na pasku bocznym przy ikonie programu Logic zawsze wskazuje aktualny stan programu – czy jest on uruchomiony, czy zatrzymany.

Użytkownik ponosi odpowiedzialność za zapewnienie bezpieczeństwa programu logicznego po włączeniu zasilania robota oraz podczas ładowania różnych aplikacji.

Programy logiczne mogą aktywować i dezaktywować urządzenia zewnętrzne za pomocą połączeń przewodowych lub PLC (Modbus, PROFINET, Ethernet/IP, Socket, wyjścia bezpośrednie lub inne interfejsy).

 

Moduły i wątki

Funkcjonalność programu logicznego można zorganizować w postaci funkcji. Działa to tak samo jak w programie robota.

Każdą funkcję można oznaczyć jako wątek . Domyślnie wątki są wykonywane tylko raz. Zaznacz pole wyboru Loop w funkcji wątku, aby wątek był wykonywany w sposób ciągły.

 

Współdzielenie zasobów

Chociaż program robota i program logiczny są wykonywane niezależnie, każdy z własną pulą wątków i zmiennych, wszystkie korzystają z tych samych zasobów sprzętowych. Wiąże się to z kilkoma ograniczeniami, o których programista powinien wiedzieć:

  • Wątki programu logicznego są wykonywane na tym samym procesorze co program robota. Czas wykonania wszystkich wątków programu logicznego zostanie zsumowany z czasem wykonania wszystkich wątków programu robota. W skrajnych przypadkach może to prowadzić do wystąpienia błędu „Runtime too much behind”.

  • Niektóre zasoby komunikacyjne, takie jak sygnały Modbus lub rejestry ogólnego przeznaczenia, są zasobami współdzielonymi. Jednoczesny zapis do tego samego rejestru spowoduje nieoczekiwane skutki. Ponadto obecnie obserwowane zachowanie może ulec zmianie w przyszłości, gdy zoptymalizowana zostanie podstawowa implementacja.

  • Modbus — Wykorzystywany jest jeden klient Modbus. Sygnały utworzone w dowolnym z programów są widoczne w obu.

  • Elastyczny adapter Ethernet/IP — Każdy program otwiera własny uchwyt odczytu lub zapisu do tej samej instancji. Uchwyty nie mogą zapisywać tych samych pól danych.

 

Ograniczenia

  • W programie logicznym dostępny jest jedynie podzbiór instrukcji języka URScript.

  • W przypadku programu logicznego nie są obsługiwane wskaźniki wykonywania programu ani debugowanie oparte na punktach przerwania.

  • Tryb interpretera nie jest obsługiwany w programach logicznych. Jednak tryb interpretera można nadal uruchomić w programie robota podczas działania programu logicznego.