Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2020/04/FANUC-ENIP.jpg

Integracja robotów FANUC przy wykorzystaniu EtherNet/IP

autor: Kristoff.

Wybór protokołu komunikacyjnego pomiędzy sterownikiem PLC a urządzeniem peryferyjnym najczęściej jest zależy od urządzenia głównego czyli z reguły sterownika PLC. Oczywiście nie zawsze jest to możliwe wtedy w grę wchodzą różnego rodzaju konwertery ale to już odrębny temat.

Innymi słowy wybieramy to co znamy i lubimy, lecz nie zawsze jest to wyborem najbardziej optymalnym. Czasami zdarza się, że pewne urządzenia oferują nieco większe możliwości funkcjonalne w przypadku niektórych protokołów sieciowych. W niniejszym artykule chciałbym przedstawić przykład konfiguracji komunikacji poprzez EtherNet/IP pomiędzy sterownikiem PLC a robotem FANUC. W pierwszej części przedstawię metodę zestawienia komunikacji krok po kroku. W drugiej części chciałbym omówić kilka nieoczywistych funkcji związanych z opcją EtherNet/IP w robotach firmy FANUC, dających przewagę na pozostałymi metodami.

KROK1 – I/O MAP

Przed przystąpieniem do zestawienia komunikacji robot – PLC warto przygotować sobie listę sygnałów, które będziemy chcieli przesyłać pomiędzy urządzeniami. FANUC posiada pewne predefiniowane grupy sygnałów, które warto, a część nawet należy, umieścić w takim zestawieniu.

Najważniejszą z tych grup jest UOP – User Operator Panel, tu zamieszczone są sygnały niezbędne do współpracy robota z PLC. Za ich pomocą możemy uruchomić program robota za pomocą sterownika PLC. Grupy Cell Interface oraz SOP (Standard Operator Panel) zawierają zestaw przydatnych sygnałów dla integratorów. Podobnie Interconnect gdzie możemy np. „przekazać” status wewnętrznych sygnałów bezpieczeństwa do sterownika (UWAGA! tylko w celach monitoringu).

Z reguły dla danego procesu najistotniejsze będą jednak grupy 3 – Digital (wejścia/ wyjścia cyfrowe) oraz 5 – Group (wejścia/ wyjścia cyfrowe zgrupowane w paczki). To tutaj przypisujemy sygnały kontrolujące przebieg danego procesu (zmienne procesowe).

Przykładowa mapa sygnałów może więc wyglądać następująco:

Jak widać, na początku umieściłem sygnały UOP, które zajmują 3 bajty. Następnie umieściłem wejścia i wyjścia cyfrowe. Z reguły pomiędzy nimi wstawiam jeszcze We/Wy używane standardowo w każdej aplikacji (cell interface), sygnały monitorujące status robota itd. W celach demonstracyjnych nie jest to jednak konieczne, dlatego przedstawiam tutaj wersję uproszczoną.

Od strony PLC ilość wejść/wyjść możemy ustalić praktycznie dowolnie, jesteśmy ograniczeni jedynie wielkością ramki Ethernet/IP (około 1400 bajtów) oraz ilością adapterów (slave’ów) pracujących z danym scanerem (master). Ramka dzielona jest na wszystkie urządzenia podrzędne więc jeśli mamy więcej urządzeń na ENIP należy to uwzględnić przy planowaniu. Standardowo w robocie jest ustalona pewna ilośc We/Wy, rejestrów, rejestrów pozycyjnych. Nic nie stoi jednak na przeszkodzie, aby te wartości zmienić w zależności od potrzeb. W tym celu należy przejść do trybu MINTENANCE za pomocą funkcji Controlled Start.

KROK2 – Połącznie

Od strony sterownika ustawienia połączenia sieciowego zależą oczywiście od użytego typu. W przypadku sterowników AB istnieje gotowy AOP (add-on-profile). Ja natomiast używam sterowników firmy B&R, które pomimo konieczności dokupienia modułu komunikacyjnego EtherNet/IP, również umożliwiają bardzo łatwą i szybką integrację.

Dodajemy plik EDS robota Fanuc do Automation Studio:

Po dodaniu pliku EDS dodajemy robota do listy urządzeń:

Ustalamy adress IP scanera (master):

Wielkość ramki – w moim przypadku 64 bity w obu kierunkach:

Od strony robota natomiast, przechodzimy do ustawień sieciowych na teach pendancie, gdzie ustawiamy adres IP robota:

SETUP > SETUP2> Host Comm > TCP/IP

Pingujemy i sprawdzamy, czy oba urządzenia są widoczne w sieci.

Następnie przechodzimy do ustawień Ethernet IP. MENU  >  I/O  > > Ethernet/IP

Wybieramy dostępne połączenie, którego chcemy użyć (możemy mieć więcej niż jeden ENIP adapter w kontrolerze robota), a następnie wybieramy F4 – Config

W oknie konfiguracji ustalamy ilość przesyłanych danych, pamiętajmy, że wartości podane są jako words, czyli grupy 16 bitów. A zatem 4 słowa / 8 bajtów/ 64 bity czyli tak jak ustawiono w sterowniku PLC.


Gdybyśmy chcieli zmienić ilość słówn należy najpierw na poprzednim ekranie dezaktywować połączenie.

Zmienić konfigurację:

Ponownie aktywować oraz zrestartować kontroler robota.

Jeśli po stronie sterownika PLC wszystko jest ustawione prawidłowo, po restarcie kontrolera powinniśmy zobaczyć zmianę statusu połączenia OFFLINE -> RUNNING. Pisząc artykuł, posługiwałem się offline programem ROBOGUIDE, więc połączenie jest nieaktywne.

Ok, w ten sposób zestawiliśmy połączenie pomiędzy sterownikiem a robotem. Niestety, póki co nie prowadzi to jeszcze do wymiany danych procesowych.

KROK3 – Konfiguracja I/O

W tym celu należy udać się do MENU >I/O > Digital

Po kliknięciu ENTER powinniśmy zobaczyć ekran podobny do poniższego:

Część wejść może być już przypisana, natomiast wejścia/ wyjścia niezainicjalizowane (nieaktywne) będą oznaczone gwiazdką *.

Naciskamy F2 (Config) i przechodzimy do ekranu konfiguracji. To w tym miejscu nasze wejścia/wyjścia zostaną przypisane do odpowiednich miejsc, czyli w przypadku FANUC’a – racków i slotów.

TUTAJ możemy znaleźć pełne zestawienie tzw. racków stosowanych w robotach FANUC.

EtherNe/ IP to rack 89, mamy tylko jedno ramię robota wpięte do kontrolera, a więc jeden adapter – slot 1.

Wpisujemy zakres interesujących nas wejść, których chcemy używać, przypisujemy je do odpowiedniej kasety (rack) oraz gniazda (slot), podajemy bit startu, czyli to, gdzie w ramce komunikacyjnej będzie umieszczona dana grupa wejść/wyjść. Aby określić bit startu, sięgamy do przygotowanej tabeli i odczytujemy, w którym miejscu ma być mapowana dana grupa I/O.


W poniższym przykładzie dla wejść  1-40 będzie to bit 25

Jak widać po wprowadzeniu zmian STATUS edytowanych wejść/wyjść zmienił się na PENDING. Aby zmiany zaczęły być aktywne, należy ponownie uruchomić kontroler robota lub z FCTN wybrać Cycle Power.

Wyjścia grupowe konfigurujemy w zależności od potrzeb, jeśli chcemy przesyłać wartości inne niż typu bool. Możemy grupować od 2 do 16 linii, które mogą pokrywać się z We/Wy cyfrowymi.

Analogicznie postępujemy w przypadku sygnałów UOP:

Ponieważ w kroku 1 ustaliłem, że sygnały UOP będą zajmowały pierwsze trzy bajty ustawiam konfigurację w sposób następujący:

Ponadto, aby umożliwić wymianę sygnałów UOP pomiędzy kontrolerem robota a sterowniki należy uaktywnić tę opcję w kontrolerze. W tym celu przechodzimy do menu konfiguracji systemu na Teach Pendancie

Znajdujemy pozycję numer 7 – Enable UI Signals

Jeżeli wartość ta jest ustawiona na FALSE, zewnętrzne sygnały (UI [1 do 18]) są wyłączone. Należy przełączyć tę wartośc na TRUE, aby umożliwić uruchaminianie programów za pomocą PLC. Ponadto należy upewnić się, w jaki sposób przypisane są sygnały UOP. W tym samym menu odnajdujemy pozycję 44:

Wybieramy sposób alokacji sygnałów (FULL).

Szczegóły dotyczące różnic pomiędzy dostępnymi sposobami przypisania sygnałów UOP są dostępne w manualu firmy FANUC, który firma dostarcza wraz z zakupem robota:

Przedstawiona metoda ma zastosowanie również do pozostałych dostępnych interfejsów, należy użyć jedynie innych numerów kaset (rack).

W ten sposób zestawiliśmy komunikację umożliwiająca wymianę danych w czasie rzeczywistym. Jednak nie wyczerpuje to pełnych możliwości tego typu komunikacji. W większości przypadków jest to wystarczające, jeśli chcemy jednak uzyskać coś więcej, warto przyjrzeć się metodzie komunikacji acyklicznej.

EtherNet/IP – CIP explicit messaging

Oprócz opisanej powyżej metody komunikacji typu implicit wykorzystującej bezpołączeniowy protokół transmisji UDP, w EtherNet IP istnieje również metoda tzw. explicit wykorzystująca połączeniowy protokół TCP. Pierwsza z nich jak opisano powyżej, służy do przesyłania danych w czasie „rzeczywistym”. Druga natomiast, służy do acyklicznego przesyłania wiadomości – paczek danych, pomiędzy klientem i serwerem:

I tu właśnie pojawia się przewaga tego typu metody komunikacji nad innymi w przypadku robotów FANUC. Prawdopodobnie ze względu na dużą popularność zarówno robotów FANUC, jak i standardu EtherNet IP w USA, FANUC dość mocno rozbudował funkcje dostępne za pomocą tej metody komunikacji:

Za pomocą tej metody możemy bardzo łatwo i szybko przesłać duże ilości danych. Odpowiednie wykorzystanie gotowych bloków funkcji dostępnych w sterowniku PLC pozwala na dostęp do całych grup rejestrów, w tym również rejestrów pozycyjnych. Możemy również uzyskać dostęp kodów błędów czy treści alarmu wyświetlanego na teach pendancie.

Stwarza to daleko idące możliwości integracji robotów FANUC z dowolnym PLC wyposażonym w EtherNet IP. Dzięki temu możemy z poziomu HMI zmienić np. offset narzędzia czy dokonać korekty User Frame i to bez zapychania połączenia I/O. Nie musimy bowiem wykorzystywać kilkudziesięciu wejść cyfrowych, aby przesyłać zestaw liczb. Wystarczy za pomocą jednego FB’ka przesłać to, czego potrzebujemy i wtedy kiedy potrzebujemy.

Praktyczny przykład

Zastosowanie tego typu wymiany danych przedstawię na przykładzie sterownika firmy B&R. Aby móc korzystać ze wspomnianych funkcji należy do projektu dodać bibliotekę AsNxEipS dostępną w grupie standardowych bibliotek B&R.

Następnie możemy stworzyć podprogram do obsługi wiadomości typu explicit. Aby zestawić połączenie, musimy podać niezbędne atrybuty funkcji. Szczegółowy opis użycia funkcji znajduje się w pomocy Automation Studio, natomiast parametry wiadomości, którą chcemy przesłać, odnajdziemy w manualu firmy Fanuc dostarczanego przy zakupie robota z opcją EtherNet IP lub dostępnego TUTAJ.

W celu przesłania wiadomości posłużę się funkcją eipsObjUnconnectedMessage:

Wspólnymi argumentami funkcji eipsObjUnconnectedMessage jest adres sprzętowy scannera oraz adres IP adaptera.

Pozostaje jeszcze stworzyć odpowiednie struktury danych mogące przyjąć przesyłane informacje (szczegóły również w manualu FANUC’a)

Na poniższym przykładzie widać przykład żądania odczytu 10 rejestrów pozycyjnych – od 101 do 110.

Poniższe parametry odczytujemy z instrukcji:

  • service  16#32- Gett_Attribute_Block
  • class 16#7B – usługi dla rejestrów pozycyjnych
  • atrybut 16#65 (dec 101) – numer pierwszego rejestru
  • instance 16#1001- dziesięć rejestrów w grupie 1  (Patrz tabela poniżej)

Jak wynika z powyżej tabeli wartość numeru instancji należy obliczyć według przedstawionej reguły. W przypadku innych usług np. dla pojedynczego rejestru numer instancji jest podawany bezpośrednio w instrukcji. Kolejne argumenty funkcji eipsObjUnconnectedMessage to wskaźniki wielkości przesyłanej informacji oraz jej lokalizacji.

Pozostaje jeszcze zweryfikować poprawność przesyłanej wiadomości. W tym celu należy wysłać żądanie ze sterownika i sprawdzić czy dane po obu stronach się zgadzają. Jeśli tak nie jest, informacja o błędzie (numer) zostanie wystawiona na wyjście resDataCount. Powinno to pozwolić na skuteczne zdiagnozowanie poprawności wywołania funkcji.


Podsumowanie

Zarówno metoda konfiguracji połączenia, przedstawiona w pierwszych trzech akapitach jak i metoda przesyłania wiadomości w sieci EtherNet/IP mają chrakter uniwersaly. Tak jak wspomniałem, pierwsza jest niemal niezależna od typu protokołu – inne będą jedynie numery kaset (rack’ów). Druga natomiast, dotyczy wszelkich urządzeń wykorzystujących EtherNet/IP, w których producent udostępninił tego typu usługi. Warto więc uważnie czytac instukcje, bardzo często możemy w ten sposób uzyskać dostęp do róznych funkcji urządzenia. Mam więc nadzieję , że zaprezentowane informacje okażą się przydatne. Powodzenia!

Artykuł został nagrodzony w Konkursie iAutomatyka – edycja Kwiecień 2020.Nagrodę Zasilacz impulsowy + klucz do szaf + zestaw gadżetów dostarcza ambasador konkursu, firma WAGO.

 



Utworzono: / Kategoria: ,

Reklama



PRZECZYTAJ RÓWNIEŻ



NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

Reklama



POLECANE FIRMY I PRODUKTY