fbpx

EtherNet/IP - przemysłowy protokół komunikacji

Dawid Pawlak , 19 stycznia 2024

EtherNet/IP logo

EtherNet/IP zwany również "Ethernetem Przemysłowym" to otwarty przemysłowy standard komunikacji sieciowej, który wykorzystuje protokół TCP i UDP do przesyłania danych. Został stworzony przez organizację ODVA (Open DeviceNet Vendor Association) i wydany w 2001 roku. Protokół EtherNet/IP umożliwia komunikację między urządzeniami typu: sterowniki PLC, sensorami, napędami czy panelami HMI korzystając ze standardowej sieci LAN i czerpiąc z jej dużej przepustowości.

EtherNet/IP jest protokołem deterministycznym, który implementuje komunikację zgodną z CIP (Common Industrial Protocol) przy wykorzystaniu sieci Ethernet. Dane są wysyłanie po ich nazwie, a nie po numerach rejestrów. Upraszcza to konfiguracje oraz daje możliwość ujednolicenia architektury komunikacyjnej na terenie całej fabryki i integrować urządzenia różnych producentów.

Korzyści z korzystania z EtherNet/IP

Wsparcie dla wielu urządzeń

EtherNet/IP jest protokołem otwartym, szeroko stosowanym i wspieranym przez wiele urządzeń przemysłowych.  Przy jego pomocy możliwe jest łączenie urządzeń różnych firm, zaś wykorzystywanie sieci Ethernet pozwala na proste wpięcie serwera i zintegrowanie go z siecią.

Elastyczność i skalowalność

EtherNet/IP oferuje dużą elastyczność pod względem topologii sieci i fizycznego medium, co umożliwia łatwą integrację i skalowalność. Dodatkowo protokół ten pozwala na maksymalną elastyczność w przypadku rozbudowy sieci, gdyż nie trzeba ruszać już istniejącej infrastruktury, tylko dołączyć nową do istniejącej sieci.

Oszczędność czasu i pieniędzy

Korzystanie z EtherNet/IP pomaga zaoszczędzić czas i pieniądze podczas projektowania i rozwijania infrastruktury. Urządzenia komunikujące się tym protokołem nie wymagają większej konfiguracji, zaś wykorzystanie sieci Ethernet redukuje ilość potrzebnego okablowania, obniżając koszty i oszczędzając czas przy ich układaniu.

Zbieranie dużej ilości danych

Protokół komunikacji EtherNet/IP korzystając z sieci Ethernet, oferuje dużą przepustowość danych.  Dzięki temu można wykorzystać go nie tylko do sterowania produkcją, ale i zbierania licznych danych diagnostycznych, które potem można wykorzystać np. do przewidywania awarii. 

Udział w rynku EtherNet/IP

EtherNet/IP jest równie popularnym protokołem komunikacyjnym co ProfiNet, największą popularnością cieszy się na terenie Stanów Zjednoczonych gdzie stosuje się sterowniki PLC firmy Allen Bradley. Również sterowniki PLC firmy Omron zawierają wbudowane wsparcie do protokołu EtherNet/IP. Przemysł 4.0 i rewolucja związana internetem rzeczy (IoT) wymaga zbierania licznych informacji i dostępu do internetu, protokół  EtherNet/IP budowany na standardową sieć LAN jest w stanie obsłużyć przepływ dużych strumieni danych.

Parametry sieci EtherNet/IP

Dane między różnymi urządzeniami mogą być przesyłane jednym z popularniejszych kabli zwanych skrętką, którą często nazywamy po prostu "kablem sieciowym" (chociaż w zastosowaniu przemysłowym mamy do czynienia o kablach wyższej klasy odporności na zakłócenia), jednak tutaj nie należy przekraczać długości 100 metrów.  Inną opcją jest światłowód, który umożliwi komunikację do 2000 metrów, oraz połączenia bezprzewodowe.

Konfiguracja urządzenia opiera się tylko i wyłącznie na ustawieniu wielkości wysyłanej ramki, jej struktury oraz nadanie mu odpowiedniego adresu IP. EtherNet/IP korzysta z protokołu TCP do trybu komunikacji jawnej (explicit messages), która służy do przesyłania pakietów danych oraz informacji konfiguracyjnych. TCP zapewnia dostarczenie danych oraz to że informacje zostaną dostarczone w takiej samej kolejności w jakiej zostały wysłane. Natomiast protokół UDP jest stosowany do trybu niejawnej komunikacji (implicit messages) gdzie dane wysyłane są w określonych odstępach czasu w transmisji jednokierunkowej (bez sprawdzania potwierdzeń). Dzięki takiemu rozwiązaniu w tym trybie można wysyłać dane dla których kluczowy jest czas przesyłu. 

Typy urządzeń w sieci

EtherNet/IP może zostać skonfigurowany w taki sposób aby działał w relacji klient/serwer lub jeśli wymagana jest rozproszona architektura to można wykorzystać komunikacje typu peer-to-peer. W pojedynczej ramce komunikacyjnej w sieci EtherNet/IP może znajdować się nawet do 1500 bajtów danych.

W tym protokole komunikacyjnym można wyróżnić trzy klasy urządzeń jakie można spotkać w architekturze, posiadają one podstawowy zestaw usług do komunikacji ale opcjonalnie mogą też świadczyć inne usługi. 

  • Urządzenia przesyłania wiadomości (Messaging)- obsługują jawne przesyłanie danych, które są wysyłane lub odbierane z innych klas urządzeń. Mogą być celem lub inicjatorem żądania danych ale nie posiadają komunikacji I/O w czasie rzeczywistym. Przykładowe urządzenia to: programatory do PLC, HMI i robotów, sprzęt zapewniający interfejs operatora, oprogramowanie nie wymagające danych w czasie rzeczywistym oraz narzędzia do diagnostyki sieci.
  • Adaptery - urządzenia te są celem żądań I/O w czasie rzeczywistym z urządzeń typu skaner. Tylko przy inicjacji wymiany danych przez skaner, adapter może odbierać/ wysyłać dane w czasie rzeczywistym. Nie generują one również parametrów komunikacji niezbędnych do nawiązania połączenia. Adaptery otrzymują żądania wysłania danych od innych klas urządzeń. Produktami występującymi jako adaptery mogą być: wyspy I/O, czujniki, wagi , napędy i roboty, które odbierają dane od systemu sterowania jak z PLC.
  • Skanery - są inicjatorami żądań wymiany dany I/O do adapterów. Skanery mogą również wymieniać dane między sobą (peer-to-peer). Tworzą one lub odbierają jawne wiadomości do i z innych klas. Urządzenia które mogą być skanerami to: sterowniki PLC, panele HMI, roboty, które odbierają dane od adapterów (czujniki itp.)

Topologia gwiazdy

Topologia liniowa

Topologia pierścienia

Biblioteki do komunikacji z EtherNet/IP

Wymiana danych wykorzystując CIP pozwala na łatwiejszą integrację z systemem IT. Dlatego też powstała między innymi biblioteka EIPScanner, która zapewnia implementację EtherNet/IP w języku C++. W języku python również powstały biblioteki do wymiany danych protokołem EtherNet/IP są to m.in.: cpppo oraz pycomm3.

Pierwsza z nich posiada pakiet do tworzenia programów analizujących wymianę danych jako serwer, który może pracować na zasadzie symulowanego kontrolera. Posiada również możliwość inicjowania żądania komunikacji w tym protokole jako klient i wysyłać je do sterownika. Drugi z nich jest dedykowany do łączenia się poprzez EtherNet/IP nie tylko ze sterownikami ale również z napędami i czujnikami.

pycomm3 - biblioteka do komunikacji z EtherNet/IP w języku Python

Biblioteka posiada trzy drivery pozwalające na wymianę danych z różnymi rodzajami urządzeń:

  • CIPDriver - jest podstawowym driverem w bibliotece, obsługuje typowe usługi wykorzystujące CIP. Można go używać do łączenia się z napędami, miernikami, czujnikami posiadającymi EtherNet/IP.
  • LogixDriver - obsługuje usługi dla sterowników PLC ControlLogix, CompactLogix i Micro800. Pozwala na wymianę danych, pobieranie listy zmiennych oraz na odczyt/ zapis informacji PLC
  • SLCDriver - pozwala na wymianę danych ze sterownikami PLC starszej generacji typu SLC500 oraz MicroLogix.

Do zainstalowania biblioteki można wykorzystać pip:

pip install pycomm3

Zaimportowanie biblioteki wraz z LogixDriver i wykorzystanie go do nawiązania komunikacji z PLC poprzez wprowadzenie adresu IP i odczytanie jego danych.

from pycomm3 import LogixDriver

with LogixDriver('10.20.30.100/1') as plc:
    print(plc)
    # OUTPUT:
    # Program Name: PLCA, Device: 1756-L83E/B, Revision: 28.13

Do odczytu i zapisu danych wymagane jest podanie nazwy zmiennej w funkcjach read(), write(). Można operować nie tylko na pojedynczych tagach ale również na tablicach, a nawet na strukturach danych.

Funkcja read() pozwala na odczyta nawet kilku tagów. Zwraca ona typ zmiennej oraz jej wartość.

plc.read('tag_1', 'tag_2', 'tag_3')
#[Tag(tag='tag_1', value=100, type='INT', error=None), Tag(tag='tag_2', value=True, type='BOOL', error=None), ...]

Funkcja write() działa podobnie, obok nazwy zmiennej należy wpisać nową wartość.

plc.write(('tag1', 0), ('tag2', 1), ('tag3', 2))  # write values to few tags

Podsumowanie

EtherNet/IP pozwala na komunikację między urządzeniami w różnych obszarach przemysłu, takich jak robotyka, kontrola procesów, monitorowanie i zarządzanie, dzięki wykorzystaniu istniejącej infrastruktury sieci EtherNet. Protokół EtherNet/IP jest kompletnymsprawdzonym rozwiązaniem do wymiany takich danych i jak najbardziej zaspokaja potrzeby nowoczesnych trendów dzięki swojej interoperacyjności, niezawodnościskalowalności .

Obsługuje większość dostępnych metod i narzędzi IT do bezpieczeństwa danych, które są przeznaczone do sieci EtherNet. Umożliwia to również zdalny dostęp do danych oraz otrzymywanie informacji na temat produkcji i ewentualnych alarmów. Coraz większe zbieranie danych produkcyjnych pozwala zwiększyć świadomość wąskich gardeł co wiąże się z możliwością obniżenia kosztów.

1