Przechwytywanie pakietów UDP EtherNet/IP w enkoderach Allen-Bradley 842E
Przechwytywanie pakietów UDP AB842E nie może się zatrzymać w przypadku braku odpowiedzi — filtry uwzględniają tylko dozwolone pakiety. Użyj przechwytywania d...
Gdy absolutny enkoder Allen-Bradley 842E EtherNet/IP przestaje odpowiadać, naturalną prośbą dotyczącą przechwytywania jest „zatrzymaj ślad po N żądaniach ENIP bez odpowiedzi”. Taki model myślowy dobrze pasuje do logiki drabinkowej, ale nie sprawdza się w Wiresharku, tcpdump ani w większości silników przechwytywania dostępnych w urządzeniach. Narzędzia te oceniają filtry uwzględniania na podstawie istniejących ramek. Milczący enkoder nie generuje żadnych ramek UDP/2222 Class 1, które mogłyby spełnić warunek filtra, więc nie ma na czym zatrzymać przechwytywania. Problem diagnostyczny polega na wykrywaniu braku, a nie na dopasowywaniu sygnatur.
Przechwytuj ruch ciągle na UDP 2222, a następnie porównaj zaobserwowane ramki enkodera z obliczeniami RPI — nie czekaj na wyzwalacz ujemny, którego analizator nie potrafi wyrazić.
Zakres i porty
Ta procedura obejmuje warianty 842E-SIP, 842E-MIP, 842E-DIP oraz M12 opisane w dokumencie 842E-UM001. Potwierdź wersję oprogramowania układowego na stronie internetowej enkodera, w sekcji Diagnostics → Device Information. Wejścia/wyjścia czasu wykonywania korzystają z CIP Class 1 na porcie UDP 2222, natomiast komunikacja jawna wykorzystuje enkapsulację EtherNet/IP na porcie TCP/UDP 44818. Profile przechwytywania powinny obejmować oba porty, ale podczas badania braku komunikacji należy skupić się na produkowanych i konsumowanych zespołach na porcie 2222.
| Port | Ruch | Typowa częstotliwość |
|---|---|---|
| 2222 | Jawne wejścia/wyjścia (produkowane/konsumowane) | RPI, często 10 ms |
| 44818 | Jawny CIP | Na żądanie |
| 67/68 | BOOTP/DHCP | Tylko podczas uruchamiania |
Dlaczego wyzwalacze braku komunikacji zawodzą
Filtry wyświetlania są predykatami logicznymi stosowanymi do każdej ramki. Filtr taki jak (udp.port == 2222) && (eth.src == <842E_MAC>) zachowuje ramki enkodera, gdy one nadejdą. Gdy nie nadchodzą, predykat nigdy nie przyjmuje wartości prawdziwej. Utrzymanie stanu „cztery żądania i zero odpowiedzi” wymaga stanu obejmującego wiele ramek, którego standardowe narzędzia przechwytywania nie przechowują. Zakładki diagnostyczne modułu w Studio 5000, statystyki urządzenia w FactoryTalk Linx oraz analiza po przechwyceniu to narzędzia, które potrafią wyrazić taki stan.
Obejście 1: bufor cykliczny, a następnie zliczanie
- Skonfiguruj funkcję mirror na porcie przełącznika enkodera i skieruj ruch do interfejsu sieciowego analizatora.
- Przechwytuj ruch UDP 2222 do bufora pierścieniowego, na przykład pięciu plików po 40–50 MB.
- Otwórz plik pcap i zastosuj filtr obejmujący adres MAC enkodera oraz UDP 2222.
- Porównaj liczbę ramek z wartością observation_time / RPI. Odchylenia przekraczające około 5% wymagają zbadania.
tcpdump -i eth0 -w capture.pcap udp port 2222 # Filtr wyświetlania w Wiresharku: eth.addr == <842E_MAC> && udp.port == 2222
Obejście 2: okna dopasowane do RPI
Dopasuj okna przechwytywania do całkowitych wielokrotności RPI enkodera, aby bufor zawierał kompletne wymiany danych wejścia/wyjścia. Przy RPI wynoszącym 10 ms okno 10-sekundowe powinno zawierać około 1000 ramek Class 1, jeśli połączenie działa prawidłowo. Luki większe niż trzy przedziały RPI w kolumnie „seconds since previous frame” są praktycznym warunkiem zatrzymania podczas przeglądu.
Obejście 3: status CIP i liczniki przełącznika
Wysyłaj okresowo odczyty Get_Attribute_Single do obiektu Identity CIP klasy 0x01, instancji 1, atrybutu 6 (Status). Zmiany bitów Owned lub Configured wskazują, że połączenie Class 1 zostało przerwane — zwykle po trzech pominiętych okresach RPI. Niezależnie od tego odczytuj wartość ifOutUcastPkts zarządzanego przełącznika na porcie enkodera; niezmienny licznik przez czas dłuższy niż 3 × RPI potwierdza brak komunikacji bez pliku pcap.
Procedura terenowa i typowe problemy
Zweryfikuj adres IP, RPI oraz instancje zespołów (domyślnie produkowany 0x04 / konsumowany 0x01) w konfiguracji modułu Logix. Sprawdź diody połączenia, przechwytuj ruch przez sześćdziesiąt sekund, zlicz ramki, a następnie spróbuj wykonać reset CIP, jeśli liczba ramek wynosi zero. Ruch, który powraca po resecie, ale nadal pomija punkty RPI, wskazuje na zakłócenia przewodu, spadek napięcia zasilania M12 lub zduplikowany adres IP. Trwały brak komunikacji po cyklu zasilania wskazuje na uszkodzenie warstwy fizycznej Ethernet — wymień enkoder. Nie trać czasu na tworzenie wyzwalacza „zatrzymaj przy braku odpowiedzi”; analizator nie potrafi go wyrazić. Utrzymuj zapasowe enkodery i sterowniki zgodne ze standardami zakładu dotyczącymi systemów PLC i PAC, gdy urządzenie ulegnie awarii w terenie.
O autorze
Mark Townsend | Starszy inżynier automatyki – systemy Allen-Bradley
Mark Townsend jest starszym inżynierem automatyki z ponad 18-letnim doświadczeniem w pracy z platformami Allen-Bradley, obejmującymi ControlLogix, CompactLogix oraz starsze sterowniki SLC-500. Na co dzień zajmuje się programowaniem logiki RSLogix / Studio 5000 oraz uruchamianiem interfejsów HMI FactoryTalk View w zróżnicowanych i starzejących się parkach urządzeń.