- industrial ethernet port mirroring SPAN, Modbus TCP MBAP header exception code, OPC UA BadCertificateInvalid diagnosis, OPC UA packet analysis Wireshark, Schneider Modicon M580 OPC UA session, TCP retransmission DCS network fault, Wireshark Modbus TCP DCS troubleshooting, Yokogawa CENTUM VP Modbus TCP timeout
Diagnostyka usterek przemysłowego Ethernetu: dogłębna analiza Wireshark dla Modbus TCP i OPC UA w sieciach DCS

P: Dlaczego analiza na poziomie pakietów jest ważna w sieciach DCS?
Przemysłowy Ethernet przenosi kluczowe dane sterowania procesem. Modbus TCP i OPC UA to dwa najczęściej stosowane protokoły — gdy komunikacja zawodzi, produkcja zatrzymuje się. Systemy DCS Yokogawa CENTUM VP opierają się na Vnet/IP do komunikacji wewnętrznej, ale wiele urządzeń polowych nadal korzysta z Modbus TCP na porcie 502. Karta interfejsu Yokogawa VI701 Vnet/IP zapewnia szybkie połączenie szkieletowe Vnet/IP dla węzłów FCS CENTUM VP, natomiast Przemysłowy przełącznik zarządzany Schneider TCSESM083F23F0 oferuje funkcję portu SPAN do lustrzanego odbicia ruchu potrzebną do przechwytywania pakietów Wireshark w sieciach DCS. Brama Prosoft PLX32-EIP-MBTCP EtherNet/IP do Modbus TCP to popularny most protokołów między systemami DCS EtherNet/IP a urządzeniami polowymi Modbus TCP — częste źródło błędów timeout, które omawia ten przewodnik.
P: Jaka jest struktura ramki Modbus TCP, którą muszę znać?
Modbus TCP opakowuje dane w 7-bajtowy nagłówek MBAP oraz PDU. Nagłówek zawiera identyfikator transakcji, identyfikator protokołu (zawsze 0x0000), pole długości oraz identyfikator jednostki. Typowe żądanie odczytu FC 03 w formacie hex: 00 01 00 00 00 06 01 03 00 00 00 0A. Popularne kody funkcji: 0x03 odczytuje rejestry holding, 0x06 zapisuje pojedynczy rejestr, 0x10 zapisuje wiele rejestrów.
Gdy slave zwraca odpowiedź wyjątkową, kod funkcji ma ustawiony bit 7 (np. 0x83 = błąd dla FC 03). Kod wyjątku 01 = nielegalna funkcja, 02 = nielegalny adres danych, 03 = nielegalna wartość danych. Te kody to pierwsza wskazówka diagnostyczna w Wireshark.
P: Jak działa protokół binarny OPC UA w analizie Wireshark?
OPC UA domyślnie używa portu 4840. Klient wysyła wiadomość Hello, serwer odpowiada Acknowledge, następnie klient otwiera bezpieczny kanał, tworzy sesję i ją aktywuje. W środowiskach Yokogawa serwery OPC UA często działają za zaporami sieciowymi — należy zweryfikować, czy port 4840 jest otwarty i dostępny. Dla sesji szyfrowanych załaduj prywatny klucz serwera w formacie PEM w Edycja → Preferencje → Protokoły → OPC UA, aby umożliwić odszyfrowanie w czasie rzeczywistym błędów uwierzytelniania i timeoutów sesji.
P: Jak skonfigurować lustrzane odbicie portu i przechwytywanie Wireshark?
- Krok 1: Zaloguj się do CLI lub interfejsu webowego przemysłowego przełącznika (Hirschmann, Moxa lub Cisco IE). Zidentyfikuj port źródłowy podłączony do sterownika PLC lub DCS.
- Krok 2: Skonfiguruj lustrzane odbicie SPAN: ustaw port źródłowy na port Ethernet PLC, a port docelowy na laptop diagnostyczny. Włącz dwukierunkowe lustrzane odbicie ruchu.
-
Krok 3: Otwórz Wireshark, wybierz interfejs lustrzany i ustaw filtr przechwytywania:
tcp port 502 or tcp port 4840. Rozpocznij przechwytywanie. - Krok 4: Odwzoruj warunek błędu. Pozwól na przepływ ruchu przez co najmniej 30 sekund.
-
Krok 5: Zatrzymaj przechwytywanie i zapisz plik jako .pcapng. Zastosuj filtry wyświetlania: użyj
modbuslubopcuajako filtrów startowych, następnietcp.analysis.retransmissiondo izolowania anomalii.
P: Studium przypadku — timeout Modbus TCP w Yokogawa CENTUM VP?
W zakładzie petrochemicznym zgłoszono sporadyczne utraty danych na łączach Modbus TCP. DCS CENTUM VP odpytywał 24 nadajniki polowe co 500 ms, z okazjonalnym pominięciem trzech lub czterech nadajników z listy skanowania. Po skonfigurowaniu lustrzanego odbicia portu na przełączniku Hirschmann i przechwyceniu dwugodzinnego ruchu, filtrowanie pod kątem tcp.analysis.retransmission i odpowiedzi wyjątkowych Modbus ujawniło wielokrotne retransmisje TCP do konkretnych adresów slave.
Przyczyna: brama RS-485 do Ethernet z błędem firmware, która traciła pakiety przy dużym obciążeniu, gdy więcej niż 16 slave’ów odpowiadało jednocześnie. Naprawa: aktualizacja firmware bramy i zmniejszenie wielkości grupy odpytywanej do 12 urządzeń na bramę.
P: Studium przypadku — błąd uwierzytelniania OPC UA w Schneider Modicon M580?
Klient SCADA w oczyszczalni wody nie mógł nawiązać sesji OPC UA po odnowieniu certyfikatu. Wireshark pokazał odpowiedzi OpenSecureChannel ze statusem BadCertificateInvalid. W magazynie zaufania klienta brakowało certyfikatu pośredniego CA. Po dodaniu certyfikatu pośredniego i restarcie klienta OPC UA sesje zostały pomyślnie aktywowane.
Pojawił się drugi problem: żądania Publish OPC UA nie miały odpowiedzi nawet do 10 sekund. Filtrowanie opcua.service == Publish ujawniło powiadomienia TCP zero-window — CPU kontrolera Modicon pracowało na 95% obciążenia. Przeniesienie logiki na kontroler zapasowy obniżyło opóźnienia subskrypcji poniżej 200 ms.
Jakie są kluczowe wskazówki?
- Nigdy nie lustrz odbicia ruchu na port, który przenosi ruch produkcyjny — powoduje to pętlę broadcastową.
- Zawsze ustaw filtr przechwytywania przed rozpoczęciem. Nieprzefiltrowane przechwytywania w ruchliwej sieci DCS zapełniają bufor 1 GB w mniej niż 60 sekund.
- Używaj funkcji Follow TCP Stream, aby odtworzyć pełną rozmowę klient-serwer.
- Eksportuj anomalne ramki jako zrzuty hex dla wsparcia technicznego producenta. Dołączaj znaczniki czasu i informacje o interfejsie.
- Archiwizuj pliki .pcapng z opisowymi nazwami (data, model sterownika, opis błędu) do analizy trendów.
Autor: Zhang Minghui jest inżynierem automatyki przemysłowej z ponad 10-letnim doświadczeniem w PLC, DCS i systemach sterowania.
