5/5 - (1 vote)

Nawigacja:

Profinet i Modbus TCP – po co je łączyć w jednej sieci?

Profinet i Modbus TCP z perspektywy automatyka

Profinet i Modbus TCP to dwa różne światy, które w prawdziwych zakładach produkcyjnych bardzo często muszą współistnieć. Profinet jest przemysłową siecią polową czasu rzeczywistego opartą na Ethernet, zaprojektowaną głównie do szybkiej wymiany danych I/O pomiędzy sterownikiem PLC a wyspami wejść/wyjść, napędami czy modułami bezpieczeństwa. Modbus TCP z kolei to prosty protokół typu zapytanie–odpowiedź, również oparty na TCP/IP, używany chętnie w licznikach energii, urządzeniach HVAC, sterownikach małych OEM i różnego rodzaju „pudełkach” pomiarowych.

Automatyk spotyka Profinet zwykle w systemach dużych producentów PLC, gdzie jest to „naturalne” rozwiązanie do komunikacji sterownik–napęd–I/O. Modbus TCP pojawia się tam, gdzie producent danego urządzenia chciał maksymalnie uprościć integrację i nie chciał zamykać się w ekosystemie jednego dostawcy. W praktyce rzadko kiedy wybiera się jeden protokół „na całym zakładzie”; bardziej naturalne jest dobieranie protokołu do urządzenia i jego roli.

Popularny mit mówi: „wybierzmy jeden protokół, będzie porządek i mniej problemów”. Rzeczywistość jest taka, że inwestor, serwis i dostawcy maszyn wnoszą do zakładu własne standardy i urządzenia, a inżynier musi je po prostu ze sobą pogodzić. Próba forsowania jednego protokołu za wszelką cenę najczęściej kończy się dodatkowymi konwerterami, kombinacjami i większą złożonością, nie mniejszą.

Typowe scenariusze łączenia Profinet i Modbus TCP

Najczęściej spotykany scenariusz to sterownik PLC, który pełni rolę kontrolera Profinet, steruje napędami i I/O, a jednocześnie jest klientem Modbus TCP dla kilku urządzeń pomocniczych. Przykładowa konfiguracja wygląda tak:

  • PLC jako Profinet Controller – obsługuje wyspy I/O, napędy, panele HMI;
  • ta sama jednostka PLC lub osobny moduł komunikacyjny jako Modbus TCP client/master – cyklicznie odczytuje rejestry z liczników energii, analizatorów sieci, sterowników HVAC lub układów pomiaru poziomu;
  • SCADA lub system nadrzędny, który komunikuje się z PLC głównie po TCP/IP (np. OPC UA, Modbus TCP, protokół producenta).

Drugi często spotykany wzorzec to gateway: PLC jest kontrolerem Profinet, a do jednego z portów switcha lub osobnego modułu podłącza się bramkę Profinet–Modbus TCP. W takiej konfiguracji PLC widzi gateway jako zwykłe urządzenie Profinet, a sama bramka wykonuje zapytania Modbus do pozostałych urządzeń. To rozwiązanie upraszcza program w PLC, ale wymaga poprawnej konfiguracji bramki.

W małych instalacjach zdarza się też odwrotny układ: główny sterownik komunikujący się po Modbus TCP z kilkoma modułami I/O, a Profinet używany tylko do napędów. To rzadziej spotykane, ale realne, zwłaszcza tam, gdzie podstawą jest prosty PLC z bardzo elastycznym wsparciem dla Modbus.

Profinet – sieć polowa czasu rzeczywistego vs Modbus TCP – prosty protokół zapytań

Profinet pracuje cyklicznie. Dane wejść/wyjść są okresowo „odświeżane” w zadanym czasie aktualizacji (Update Time), często rzędu kilku milisekund. PLC nie musi „pytać” o każdy sygnał – komunikacja polega na regularnej wymianie bloków danych pomiędzy kontrolerem a urządzeniem. Dzięki temu możliwe jest uzyskanie stosunkowo deterministycznych czasów odpowiedzi, co jest kluczowe przy sterowaniu napędami czy osiami.

Modbus TCP z kolei to klasyczne zapytanie–odpowiedź. Klient (master) wysyła żądanie odczytu lub zapisu określonej grupy rejestrów, a serwer (slave) odpowiada. Nie ma tu rozumianego „z urzędu” cyklu I/O – to aplikacja w PLC decyduje, jak często zada pytanie i ile rejestrów obejmie jednym zapytaniem. W efekcie łatwo doprowadzić do przeciążenia urządzenia lub sieci, jeśli ktoś ustawi za częste odczyty z kilkudziesięciu urządzeń jednocześnie.

Mit, który często wraca: „Modbus TCP jest wolny, Profinet jest szybki”. W praktyce Modbus TCP przy rozsądnej konfiguracji może być wystarczająco szybki dla większości pomiarów procesowych (temperatury, przepływy, stany). Różnica polega na gwarantowaniu czasów reakcji i możliwości pracy izochronicznej – tu Profinet wygrywa bezdyskusyjnie.

Kiedy rozdzielać, a kiedy łączyć oba protokoły w jednej sieci fizycznej

Da się bez problemu puścić Profinet i Modbus TCP po tej samej infrastrukturze Ethernet. Trzeba jednak rozsądnie zaplanować obciążenie i topologię. W małej linii, gdzie Profinet służy głównie do wejść/wyjść i kilku napędów, a Modbus TCP do 2–3 liczników energii, jedna wspólna sieć fizyczna zwykle nie sprawia problemów. Kluczowe jest jednak użycie sensownych, przemysłowych switchy i podstawowa segregacja ruchu (np. osobne VLAN-y w większych instalacjach).

Są jednak sytuacje, gdy rozdzielenie fizyczne lub logiczne jest rozsądniejsze:

  • bardzo krótki czas cyklu Profinet (poniżej 4 ms) i krytyczne wymagania co do deterministyczności,
  • duża liczba urządzeń Modbus TCP, intensywnie odpytywanych (np. kilkadziesiąt liczników energii),
  • istniejąca, obciążona sieć zakładowa, do której ktoś chce „po prostu” podpiąć Profinet i Modbus jednocześnie.

W takich przypadkach lepszym wyborem jest osobny segment dla Profinet (a nawet dedykowane VLAN-y) i bramka/router, który dawkuje ruch Modbus TCP. Unika się w ten sposób wpływu wolniejszych, mało przewidywalnych zapytań Modbus na czasowe wymagania sieci czasu rzeczywistego.

Podstawy komunikacji przemysłowej, które naprawdę trzeba ogarnąć

Warstwy: od kabla po protokół aplikacyjny

Profinet i Modbus TCP bazują na tym samym fizycznym medium: Ethernet. Różnią się natomiast protokołami w warstwie aplikacyjnej. Aby świadomie projektować sieć, trzeba mieć w głowie prosty model warstw:

  • Warstwa fizyczna – przewód miedziany lub światłowód, złącza RJ45/M12, prędkość (100 Mb/s, 1 Gb/s), ekranowanie;
  • Warstwa łącza danych – adresy MAC, przełączanie ramek przez switche, VLAN-y;
  • Warstwa sieciowa – IP, maska, brama domyślna, routing między podsieciami;
  • Warstwa transportowa – TCP/UDP, porty (Modbus TCP korzysta z TCP/502);
  • Warstwa aplikacji – Profinet, Modbus TCP, OPC UA, HTTP i inne.

Jeśli ktoś „ustawia tylko IP i maskę”, ale nie rozumie różnicy między adresacją IP a adresem MAC, szybko wpada w pułapki typu: „zmieniłem IP, ale PLC i tak widzi stare urządzenie”. Switche operują na adresach MAC, a ARP i cache potrafią zaskoczyć, zwłaszcza gdy ktoś przepina przewody i zmienia adresy w biegu.

Mit „jak coś jest na Ethernet, to wszystko się dogada” jest równie szkodliwy jak przekonanie, że każdy sterownik rozmawia z każdym urządzeniem po jednym kablu. Ethernet to tylko rura – o tym, czy urządzenia zrozumieją się logicznie, decydują warstwy wyższe: IP, TCP/UDP i protokół aplikacji (Profinet, Modbus TCP itp.).

Adres IP, maska, brama, MAC i port – minimum praktycznej wiedzy

Trzon konfiguracji komunikacji to kilka prostych parametrów:

  • Adres IP – numer domu; musi być unikalny w danej podsieci;
  • Maska podsieci – określa, które adresy IP są „moje”, a które „obce” (czyli wymagają przejścia przez bramę);
  • Brama domyślna (gateway) – adres routera, przez który wysyłany jest ruch do innych podsieci;
  • MAC – fizyczny adres karty sieciowej; unikalny dla urządzenia, kluczowy dla switchy;
  • Port TCP – numer „drzwi” w danym IP, na których nasłuchuje określona usługa (Modbus TCP to standardowo port 502).

Przy konfiguracji sterownika PLC z Profinet zwykle ustawiasz tylko IP, maskę i ewentualnie bramę. Profinet w obrębie jednej podsieci nie potrzebuje bramy – pracuje lokalnie. W przypadku Modbus TCP, jeśli urządzenie znajduje się w innej podsieci, poprawnie ustawiona brama jest już konieczna.

Adresy IP Profinet i Modbus TCP mogą być w tej samej podsieci, o ile jest to przemyślane. Problem pojawia się, gdy ktoś próbuje „podpiąć wszystko” do istniejącej sieci biurowej, gdzie serwer DHCP rozdaje adresy dynamicznie – wtedy konflikt adresów i „magiczne” znikanie komunikacji to tylko kwestia czasu. Dlatego dla sieci sterowania sensowne jest użycie statycznych adresów IP i wyłączenie DHCP.

Segmenty sieci, podsieci i VLAN – ile musi wiedzieć automatyk

Automatyk nie musi być specjalistą od routingu i złożonych konfiguracji switchy, ale kilka pojęć warto mieć oswojonych:

  • Podsieć – grupa adresów IP, które komunikują się bezpośrednio, bez routera; definiowana przez maskę;
  • Segment sieci – fizycznie (lub logicznie) wydzielona część infrastruktury, np. linia produkcyjna z własnym switchem;
  • VLAN – logiczne wydzielenie sieci na tym samym sprzęcie; ruch VLAN-ów nie miesza się, mimo że korzystają z tych samych przewodów i switchy.

W praktyce wystarcza świadomość, że:

  • urządzenia Profinet i Modbus TCP, które mają się ze sobą komunikować bez routingu, muszą być w tej samej podsieci (IP + maska);
  • ruch sterowania można odseparować od ruchu biurowego poprzez osobne switche lub VLAN;
  • jeśli jakiś IT-owiec proponuje „podłączenie linii produkcyjnej do głównego core switcha”, to trzeba jasno ustalić zasady VLAN i adresacji.

Częsty błąd to przekonanie, że „jak się pinguje, to sieć działa”. Ping sprawdza tylko podstawową łączność IP (warstwa 3). Profinet ma swoje specyficzne wymagania (np. brak NAT, stabilne opóźnienia), podobnie Modbus TCP może mieć problemy z czasami odpowiedzi, mimo że ping wygląda idealnie. Ping to dobry pierwszy test, ale daleko mu do pełnej diagnostyki.

Prosta analogia adresacji dla utrzymania ruchu

Adres IP można tłumaczyć jako adres ulicy i numer domu, natomiast port TCP to numer mieszkania. Maska podsieci wyznacza z kolei, które domy stoją na tej samej ulicy, a brama to skrzyżowanie prowadzące do innej ulicy (innej podsieci). MAC jest jak unikalny numer seryjny domofonu, który rozpoznaje switch.

Ludziom z utrzymania ruchu często wystarcza taka analogia, by zrozumieć, że wpisanie „jakiegokolwiek IP” po prostu nie przejdzie. Jeżeli dwa urządzenia mają ten sam „numer domu”, to listonosz (switch/router) zwariuje. Jeśli maska jest zła, to urządzenia będą próbowały „szukać sąsiada przez drugie miasto” zamiast rozmawiać bezpośrednio.

Architektura sieci: jak rozsądnie zaplanować Profinet i Modbus TCP

Topologie Profinet a podejście „biurowe”

Profinet dopuszcza różne topologie fizyczne, co pozwala dopasować sieć do rozproszonej instalacji:

  • Gwiazda – wszystkie urządzenia podłączone do jednego lub kilku switchy centralnych; najbliższe do klasycznego Ethernetu w biurze;
  • Linia – urządzenia połączone szeregowo; wiele napędów ma wbudowane switche Profinet, co umożliwia tworzenie takich łańcuchów;
  • Pierścień MRP – odmiana linii z zamkniętym obwodem i funkcją redundancji (Media Redundancy Protocol); przy uszkodzeniu jednego kabla komunikacja jest utrzymana inną drogą.

W sieciach biurowych króluje gwiazda i rzadko stosuje się linię w oparciu o switche w urządzeniach końcowych. W automatyce linia jest bardzo wygodna, bo pozwala „przepleść” sieć przez kolejne wyspy I/O bez ciągłego wracania do szafy. Trzeba jednak kontrolować obciążenie łącza i liczbę przeskoków – długie łańcuchy kilkunastu urządzeń na jednym porcie PLC potrafią przynieść kłopoty przy bardzo krótkich czasach cyklu.

Mit, który bywa powtarzany: „Profinet wymaga specjalnego, drogiego sprzętu”. W praktyce tak – warto używać przemysłowych switchy i przewodów, ale logika przełączania to zwykły Ethernet. Specyficzne są wymagania dotyczące opóźnień i obsługi funkcji diagnostycznych, dlatego domowy router z marketu nie jest dobrym pomysłem w linii produkcyjnej.

Gdzie wpiąć Modbus TCP w sieci z Profinet

Strategii jest kilka, w zależności od skali instalacji:

  • Wspólna sieć, ten sam switch – proste linie, kilka urządzeń Modbus TCP; PLC ma jeden interfejs Ethernet obsługujący zarówno Profinet, jak i Modbus; wg konfiguracji w środowisku PLC oba protokoły działają równolegle na jednym porcie;
  • Wspólna sieć Profinet/Modbus z wydzielonymi VLAN-ami – fizycznie jedna infrastruktura (te same switche), logicznie rozdzielone ruchy; sterownik nadal ma jeden port, ale ruch Profinet i Modbus TCP idzie innymi VLAN-ami, dzięki czemu pakiety biurowe, kamery czy wizualizacje HMI nie „duszą” cyklicznej wymiany danych z wyspami I/O;
  • Osobny interfejs Ethernet w PLC – jeden port/CP do sieci Profinet, drugi do Modbus TCP; do większych systemów, gdzie Modbus służy głównie do komunikacji z nadrzędnymi systemami, licznikami energii, wagami lub urządzeniami dostarczonymi przez zewnętrznych dostawców;
  • Dedykowany gateway Profinet–Modbus TCP – PLC „widzi” urządzenie jako zwykły slave Profinet, a konwersję na Modbus TCP realizuje bramka; przydatne, gdy sterownik nie ma własnego stosu Modbus TCP albo trzeba podłączyć kilka „egzotycznych” urządzeń bez babrania się w szczegóły rejestrów po stronie PLC.

Jeśli sieć jest mała, kilka napędów i dwa liczniki energii, wspólny switch i jeden interfejs PLC w zupełności wystarczą. Problemy zaczynają się, gdy do tego samego segmentu ktoś dorzuci kamery IP, panele HMI, zdalny dostęp przez VPN i serwer plików, „bo przecież jeszcze są wolne porty”. Z zewnątrz dalej wygląda to jak porządna gwiazda Ethernet, ale sterownik zaczyna walczyć z jitterem i sporadycznymi timeoutami Profinet, mimo że Modbus TCP „jeszcze jakoś chodzi”.

Popularny mit brzmi: „Modbus TCP to tylko odczyt kilku rejestrów, on nic nie obciąża”. Rzeczywistość jest taka, że kilka szybkich zapytań z krótkim timeoutem na kilka urządzeń potrafi wygenerować zaskakujący ruch, szczególnie gdy programista wizualizacji co 200 ms odświeża cały ekran. Wspólna sieć z Profinet da się utrzymać, ale trzeba zaplanować częstotliwość zapytań, priorytety i ograniczyć „ciągłe odpytywanie wszystkiego”.

Osobny interfejs lub gateway mają jeszcze jedną zaletę: przy awarii lub przeciążeniu sieci Modbus TCP cykliczna komunikacja Profinet z I/O nadal działa stabilnie. W praktyce często widać instalacje, w których po włączeniu dodatkowej aplikacji SCADA zaczyna „gubić się” Modbus, a Profinet trzyma poziom – to właśnie efekt separacji ruchu, a nie magii „bardziej niezawodnego protokołu”.

Punkt sporny między automatyką a IT zwykle dotyczy tego, czy sieć maszyn „musi być odseparowana”. Z perspektywy utrzymania ruchu lepiej mieć jasno opisane interfejsy: ten port PLC jest dla Profinet i urządzeń czasu rzeczywistego, ten port obsługuje Modbus TCP, SCADA i resztę świata. Wtedy łatwiej walczyć z zakłóceniami, a diagnostyka nie zamienia się w polowanie na losowo znikające pakiety.

Dobrze zestawiona sieć Profinet i Modbus TCP nie polega na cudownym sprzęcie, tylko na świadomym podziale ról: które urządzenia muszą reagować w milisekundach, a które spokojnie zniosą opóźnienie rzędu sekund; co pracuje cyklicznie, a co wyłącznie na żądanie; co może dzielić infrastrukturę, a co potrzebuje własnej „ścieżki”. Jeśli te decyzje są podjęte na etapie projektu, późniejsza eksploatacja sprowadza się do spokojnej diagnostyki, zamiast gaszenia pożarów przy każdej rozbudowie linii.

Rozdział fizyczny a logiczny – kiedy osobny switch naprawdę ma sens

Częsta dyskusja krąży wokół tego, czy dla Modbus TCP kupować osobne switche, czy wystarczy logiczne rozdzielenie VLAN-ami. Z punktu widzenia teorii sieci VLAN w zupełności wystarcza, z punktu widzenia utrzymania ruchu – osobny switch bywa po prostu wygodniejszy diagnostycznie.

Jeśli linia jest prosta, kilka napędów Profinet i dwa-trzy urządzenia Modbus TCP, to rozsądnie skonfigurowany zarządzalny switch z VLAN-ami spokojnie to ogarnie. Problem zaczyna się, gdy dostęp do tego switcha ma kilka działów, każdy dopisuje swoje reguły, QoS i mirroring portów. Wtedy nawet drobna zmiana konfiguracji „pod projekt IT” potrafi rozwalić deterministykę Profinet i opóźnić odpowiedzi Modbus TCP.

Rozwiązaniem pośrednim jest osobny switch tylko dla warstwy sterowania, który dalej łączy się jednym uplinkiem z infrastrukturą zakładową. Dzięki temu:

  • utrzymanie ruchu ma pełną kontrolę nad konfiguracją i priorytetami ruchu czasowego,
  • IT widzi ruch „od góry” jako jeden przewidywalny segment,
  • awarie lub przebudowy sieci biurowej mniej przenoszą się na maszynę.

Mit: „Osobny switch to zawsze lepsza redundancja”. Rzeczywistość: jeśli oba switche są podpięte do jednego zatkanego core’a bez QoS i priorytetyzacji, to redundancja jest tylko iluzją. Kluczowe jest miejsce wpięcia i polityka ruchu, a dopiero potem ilość żelaza.

Niebieskie przewody sieciowe podłączone do przemysłowego switcha Ethernet
Źródło: Pexels | Autor: Brett Sayles

Profinet w praktyce – od hardware po konfigurację PLC

Dobór sprzętu Profinet – kable, switche, karty

Żeby Profinet działał stabilnie, nie trzeba „złotych” kabli i switchy za fortunę, tylko elementarnej konsekwencji. Na poziomie hardware liczy się kilka rzeczy:

  • przewody przystosowane do ruchu i środowiska (olej, wibracje, promieniowanie UV),
  • switche przemysłowe z obsługą QoS i priorytetów 802.1p, najlepiej z funkcją diagnostyki Profinet,
  • karty/porty Ethernet w PLC i napędach z certyfikatem Profinet Conformance Class odpowiednim do zastosowania.

Mit, który często wraca: „każdy switch gigabitowy będzie dobry, bo jest szybki”. W komunikacji czasu rzeczywistego ważniejsza od przepustowości jest przewidywalność opóźnień. Prosty, 100‑megabitowy switch przemysłowy z QoS i obsługą LLDP bywa bezproblemowy, podczas gdy „wypasiony” switch z marketu potrafi generować losowe jittery przy obciążeniu broadcastem lub przy próbach „inteligentnego” zarządzania energią.

Konfiguracja urządzeń Profinet – GSDML i nazwy stacji

W typowym projekcie Profinet podstawą jest plik GSDML. To opis możliwości urządzenia: ilości modułów, długości danych, typów sygnałów, obsługiwanych funkcji diagnostycznych. Bez poprawnie wczytanego GSDML w środowisku programistycznym PLC nie da się poprawnie „zmapować” wejść i wyjść.

Kolejny kluczowy element to Device Name, czyli nazwa stacji. To ona, a nie adres IP, jest głównym identyfikatorem urządzenia w sieci Profinet. W praktyce wygląda to tak, że:

  • w konfiguracji PLC przypisujesz konkretną nazwę urządzeniu Profinet,
  • narzędziem dostawcy lub z poziomu środowiska PLC nadajesz tę samą nazwę rzeczywistemu urządzeniu,
  • sterownik w czasie startu szuka w sieci urządzenia o zadanym Device Name i „paruje” je z konfiguracją.

Jeżeli dwa urządzenia mają tę samą nazwę albo nazwa w PLC nie zgadza się z nazwą w polu, efektem są klasyczne komunikaty typu „Wrong Submodule” lub „Station not reachable”. Diagnostyka zaczyna się od sprawdzenia, czy nazwy w konfiguracji i w rzeczywistości faktycznie pasują – nie od wymiany kart i przewodów.

Mapowanie danych Profinet na obszary pamięci PLC

Po dodaniu urządzeń Profinet do projektu przychodzi etap mapowania danych. Cykliczna wymiana danych jest reprezentowana w PLC jako obszary wejść/wyjść procesowych (np. adresy I/Q, DB-y w sterownikach Siemensa). Kluczowe jest, aby:

  • zachować spójny schemat adresacji, np. osobne zakresy na każdą wyspę I/O czy napęd,
  • podpisywać bloki danych tak, aby technik utrzymania łatwo powiązał kanał w schemacie elektrycznym z adresem w programie,
  • unikać „wpychania” wszystkich danych do jednego wielkiego, nieopisanego obszaru pamięci.

Mit: „Profinet jest skomplikowany, bo ma dużo parametrów”. Zazwyczaj największy bałagan wynika z chaotycznej adresacji po stronie PLC, a nie z samego protokołu. Dobrze uporządkowane adresy i opisy kanałów potrafią skrócić diagnostykę o rzędy wielkości, gdy pojawia się losowy timeout jednego modułu.

Diagnostyka Profinet – co sprawdzać przed wyciągnięciem miernika

Gdy urządzenie Profinet „znika”, pierwszy odruch to często chwytanie za miernik i wymiana kabla. Tymczasem w nowoczesnych sterownikach dostępna jest rozbudowana diagnostyka online:

  • status całej stacji (online/offline, błędy konfiguracji),
  • diagnostyka modułowa – który dokładnie moduł I/O zgłasza błąd,
  • statystyki portów – ilość błędów CRC, kolizji, flapping portu.

Warto zacząć od podglądu błędów bezpośrednio w narzędziu inżynierskim PLC lub przez wbudowany webserwer urządzenia. Jeśli widać rosnącą liczbę błędów CRC albo cykliczne znikanie tego samego modułu w tym samym miejscu topologii, to wskazówka jest wyraźna: problem jest fizyczny (kabel, złącze, zasilanie), a nie „tajemniczy błąd Profinet”.

Jeżeli natomiast w statystykach pojawia się wysoki poziom broadcastu lub multicastu, a jednocześnie rosną opóźnienia cyklu, warto przyjrzeć się innym urządzeniom wpiętym do tej samej infrastruktury – kamery IP, serwer diagnostyczny, źle skonfigurowane mirroringi portów. Sam protokół rzadko jest winowajcą.

Modbus TCP – filozofia rejestrów i praktyczna konfiguracja

Jak myśleć o danych w Modbus TCP – holdingi, cewki i reszta rodziny

Modbus TCP jest prosty w założeniach, ale sporo zamieszania wprowadzają oznaczenia rejestrów. Klasyczny podział wygląda tak:

  • Coils (0xxxx) – bity, które zwykle sterują wyjściami (on/off),
  • Discrete Inputs (1xxxx) – bity wejściowe, tylko do odczytu,
  • Input Registers (3xxxx) – rejestry wejściowe 16‑bit, tylko do odczytu,
  • Holding Registers (4xxxx) – rejestry 16‑bit do odczytu i zapisu.

W urządzeniach praktycznie cała „logika użytkowa” ląduje właśnie w holdingach – od nastaw prędkości, przez progi alarmowe, po wartości pomiarowe typu temperatura czy energia, gdy producent chce mieć pełną elastyczność (R/W). Reszta przestrzeni, szczególnie 0xxxx i 1xxxx, jest używana rzadziej, choć nadal spotykana np. w starszych falownikach.

Rzeczywisty chaos wprowadza to, że jedni producenci podają adresy z prefiksem (np. 40001), inni bez (np. „register 1”), jeszcze inni startują od zera (40000). Dlatego przed konfiguracją po stronie PLC trzeba dokładnie zrozumieć, czy opis Holding Register 1 oznacza adres logiczny 40001, czy offset 0 w przestrzeni holdingów. Jeden źle zinterpretowany offset i wszystko się przesuwa, a potem zaczyna się polowanie na „błąd protokołu”.

Konfiguracja klienta Modbus TCP w PLC

W świecie Modbus TCP najczęściej PLC gra rolę klienta (mastera), a urządzenia polowe są serwerami (slave). Konfiguracja w sterowniku sprowadza się zazwyczaj do kilku kroków:

  • zdefiniowanie połączenia: adres IP urządzenia, port (domyślnie 502),
  • ustalenie typu funkcji (np. Read Holding Registers – 0x03, Write Single Register – 0x06, Write Multiple Registers – 0x10),
  • określenie adresu startowego i długości bloku rejestrów,
  • mapowanie odebranych danych do zmiennych w programie PLC.

Większość bibliotek PLC udostępnia gotowe bloki funkcyjne, gdzie podaje się tylko podstawowe parametry i zmienne wejścia/wyjścia. Kluczowe są dwa parametry: timeout i czas wywołania. Modbus TCP nie jest protokołem „twardo real-time”, więc zbyt agresywne odpytywanie (np. co 50 ms kilkunastu urządzeń) bardzo szybko zapycha sieć i CPU w sterowniku.

Dobrym punktem wyjścia jest odpytywanie powolnych urządzeń (liczniki, analizatory) w przedziale 500 ms – 5 s, w zależności od potrzeb procesowych. Drobne czasy cyklu zostawia się Profinetowi i lokalnym I/O, Modbus TCP służy do pozyskiwania danych technologicznych i energetycznych, a nie do sterowania pozycją siłownika w milisekundach.

Buforowanie i łączenie odczytów rejestrów

Modbus TCP ma jeszcze jedną cechę, o której często się zapomina: każdy request ma swój narzut protokołu. Jeśli aplikacja w PLC lub SCADA zadaje kilkanaście pojedynczych odczytów po jednym, zamiast jednego odczytu bloku, to ruch w sieci rośnie lawinowo.

Lepsze podejście to:

  • czytać możliwie długi, spójny blok rejestrów (np. 50–100 rejestrów jednym requestem),
  • rozbić ten blok po stronie PLC na poszczególne zmienne procesowe,
  • zapisać wyniki w buforze i udostępniać je dalej w programie lub HMI.

Mit: „SCADA musi mieć najświeższe dane, więc odświeżanie co 100 ms jest konieczne”. W większości procesów technologicznych aktualizacja parametrów energetycznych czy stanów liczników co 1–2 sekundy jest całkowicie wystarczająca, a różnica obciążenia sieci i sterownika jest ogromna.

Typowe pułapki – endianess, typy danych i skalowanie

Specyficznym źródłem problemów w Modbus TCP są typy danych. Klasycznie każdy rejestr ma 16 bitów, ale producenci upychają tam dane 32‑bitowe i zmiennoprzecinkowe, realizując je jako pary rejestrów. I tu pojawiają się dwa pytania: w jakiej kolejności idą rejestry i jaki format ma liczba?

Najczęstsze warianty to:

  • standardowy Big Endian – starsze słowo jako pierwsze,
  • odwrócony Little Endian – młodsze słowo jako pierwsze,
  • różne kombinacje kolejności bajtów w obrębie słowa.

Jeżeli dokumentacja mówi o formacie „Float, word order: B A” albo „Little Endian, swapped words”, trzeba w PLC odpowiednio poukładać bajty (funkcje SWAP, SHL/SHR, konwersje typów). Bez tego odczyt temperatury 25,3°C nagle „zamienia się” w tysiące albo ułamki niewiadomego pochodzenia.

Do tego dochodzi temat skalowania. Sporo urządzeń podaje liczby całkowite, które trzeba przeliczyć, np. wartość 253 odpowiada 25,3°C, a wartość 1234 to 123,4 kW. Jeżeli funkcje skalujące nie są spójne po stronie PLC i SCADA, utrzymanie ruchu dostaje dwa różne odczyty dla tego samego parametru, co natychmiast budzi podejrzenie „problemów z Modbusem”. Tymczasem to zwykła matematyka.

Adresacja, czasy cyklu i obciążenie sieci – co wpływa na stabilność

Priorytety ruchu – QoS i klasy usług

Wspólna sieć Profinet i Modbus TCP wymaga ustawienia priorytetów. Większość przemysłowych switchy pozwala na konfigurację QoS w oparciu o znaczniki 802.1p albo na podstawie portów TCP/UDP. Profinet zazwyczaj używa wyższych priorytetów, aby ramki cykliczne miały pierwszeństwo przed resztą ruchu.

Praktyczne podejście jest proste: ruch Profinet i ewentualnie inne protokoły czasu rzeczywistego dostają klasę o wyższym priorytecie; Modbus TCP i reszta komunikacji (HMI, serwery) pracują w niższej klasie, ale nadal w akceptowalnych ramach czasowych. Najgorsza kombinacja to „domyślne dla wszystkich” – wtedy agresywna SCADA potrafi „przykorkować” Profinet bez żadnych ostrzeżeń po stronie switchy.

Planowanie czasów cyklu Profinet

W konfiguracji Profinet kluczowym parametrem jest Update Time, czyli okres odświeżania danych dla danego urządzenia. Dla klasycznych I/O zazwyczaj nie ma sensu schodzić poniżej kilku milisekund, chyba że proces faktycznie wymaga ekstremalnie krótkich reakcji.

W praktyce dobrze sprawdza się podejście warstwowe:

  • najkrótsze cykle (np. 1–4 ms) tylko dla małych, krytycznych wysp I/O i napędów biorących udział w szybkiej regulacji,
  • średnie cykle (8–16 ms) dla reszty sygnałów sterujących,
  • dłuższe cykle (32 ms i więcej) dla diagnostyki, pomiarów wolnozmiennych itp.

Mit, który wraca jak bumerang: „im krótszy czas cyklu ustawimy wszędzie, tym lepiej”. W realnym systemie szybciej zaczyna brakować czasu na wykonanie programu PLC, rośnie liczba retranmisji w sieci i pojawiają się dziwne, losowe błędy urządzeń peryferyjnych. Lepiej świadomie rozciągnąć cykl tam, gdzie proces tego nie odczuje, niż później szukać duchów w konfiguracji sieci i firmware urządzeń.

Do tego dochodzi kwestia synchronizacji – jeśli sterownik ma kilka interfejsów Profinet i każdy „ciągnie” duże ilości danych w krótkim cyklu, CPU po prostu nie nadąży. Zdarza się, że po zwiększeniu kilku czasów Update Time z 2 ms do 8 ms znikają sporadyczne błędy „I/O Device not reachable”, a obciążenie CPU spada o kilkanaście punktów procentowych. Mniej agresywny cykl to często więcej stabilności niż jakiekolwiek czary z priorytetami zadań.

Harmonogram odczytów Modbus TCP

Po stronie Modbus TCP przydaje się prosty, ale przemyślany harmonogram odpytywania. Zamiast wywoływać wszystkie bloki komunikacyjne w każdej pętli programu, lepiej podzielić urządzenia na grupy i odpalać je kaskadowo – np. grupa A co 500 ms, grupa B co 1 s, grupa C co 5 s. Sterownik nie dostaje wtedy „czkawki” od kilkunastu równoczesnych żądań, a sieć nie jest zalewana burstami ramek.

Dobrą praktyką jest też wprowadzenie minimalnego odstępu między kolejnymi żądaniami do tego samego urządzenia. W wielu bibliotekach komunikacyjnych da się to zrobić jednym parametrem lub prostym licznikiem czasu. Jeżeli licznik jeszcze nie „odbił”, blok Modbus nie wysyła nowego requestu. Efekt uboczny jest pozytywny: gdy jedno urządzenie zaczyna odpowiadać wolniej lub chwilowo znika z sieci, nie blokuje całego sterownika kaskadą timeoutów.

Często spotykany mit: „Modbus jest wolny, więc trzeba odpytywać jak najczęściej, żeby dane nie były stare”. W praktyce dużo większy wpływ na „świeżość” informacji ma spójne buforowanie i proste flagi „data valid” niż dociśnięcie interwału z 1 s do 100 ms. Jeśli proces naprawdę wymaga reakcji w milisekundach, to i tak nie powinien być realizowany po Modbus TCP, tylko po Profinet lub innym protokole czasu rzeczywistego.

Monitorowanie obciążenia i diagnostyka sieci

Żeby panować nad wspólną siecią Profinet i Modbus TCP, trzeba patrzeć nie tylko na kod w PLC, ale i na liczby w switchach. Statystyki portów (obciążenie, błędy CRC, kolizje, dropy z powodu kolejek) szybko pokażą, czy ruch jest równomierny, czy też któryś odcinek jest wiecznie na granicy przepustowości. W przemysłowych switchach pojawiają się też proste wykresy i liczniki, z których można od ręki wyczytać, czy QoS faktycznie działa, czy jest tylko „odhaczone w konfiguracji”.

Podobnie po stronie sterownika – większość nowszych PLC ma wbudowane diagnostyki komunikacji: obciążenie interfejsu, ilość błędnych ramek, liczbę timeoutów na poszczególnych połączeniach. Zamiast od razu obniżać czasy cyklu lub „kręcić” priorytetami tasków, lepiej najpierw zajrzeć do tych wartości i sprawdzić, czy problemem jest naprawdę wydajność, czy raczej pojedynczy felerny kabel, pętla w sieci albo błędnie ustawiony mirroring portów do systemu monitoringu.

Adresacja IP, separacja i prosty porządek

Stabilność to nie tylko cykle i QoS, ale też zwykły porządek w adresacji. Spójny plan podsieci (np. osobny zakres dla Profinet, osobny dla Modbus/SCADA) uprości diagnostykę i zmniejszy ryzyko konfliktów IP podczas rozbudowy. Dobrze działa prosta zasada: urządzenia czasu rzeczywistego mają swoje wydzielone segmenty i VLAN-y, a ruch „miękki” (Modbus TCP, HTTP, SNMP, zdalny dostęp) korzysta z innej warstwy logicznej, czasem z przejściem przez router lub firewalla.

Przydaje się też konsekwentne oznaczanie zakresów adresów – choćby prosty schemat: setki dla szaf, dziesiątki dla urządzeń w szafie, jedności dla interfejsów. Przy rozbudowie po kilku latach ktoś otwiera projekt i od razu widzi, że IP 10.12.30.x to linia 12, szafa 30, a końcówka adresu odpowiada konkretnemu sterownikowi lub wyspie. Bez takiej logiki każdy większy serwis zaczyna się od „polowania na IP” i losowego pingowania podsieci.

Mit, który ciągle wraca: „wszystko w jednej płaskiej sieci jest prostsze, bo wszystko się widzi”. Rzeczywistość jest taka, że im większa instalacja i im więcej protokołów mieszanych (Profinet, Modbus TCP, HTTP, zdalny dostęp VPN), tym bardziej płaska sieć staje się kulą u nogi – trudniej odseparować awarie, gorzej działa diagnostyka, a każdy niechciany broadcast roznosi się po całym zakładzie. Kilka dobrze przemyślanych podsieci i VLAN-ów potrafi uratować produkcję w chwili, gdy ktoś wpiął „niewinny” access point lub laptop z dziwnym oprogramowaniem testowym.

Do prostego porządku w adresacji dochodzi opis fizyczny: etykiety na przewodach, numeracja portów w dokumentacji, mapy logiczne VLAN-ów na planie zakładu. Gdy operator w nocy zgłasza, że „zniknęły wszystkie falowniki z linii 3”, serwisant z dobrym planem sieci w kilka minut zawęża problem do jednego switcha lub jednej szafy, zamiast błądzić z laptopem i testerem kabli po całej hali. Mniej improwizacji, więcej odtwórczych kroków.

Sporo problemów z „niestabilnym Profinetem” i „wariującym Modbusem” wynika nie z samych protokołów, tylko z ich wspólnego środowiska: przypadkowej topologii, zbyt agresywnych czasów cyklu, braku priorytetów i chaosu w adresacji. Gdy sieć jest uporządkowana, cykle dobrane do procesu, a Modbus TCP zaplanowany zamiast „odpytywany do oporu”, oba światy działają obok siebie bez dramatów – Profinet ogarnia czas krytyczny, Modbus dowozi dane procesowe i serwisowe, a utrzymanie ruchu ma czytelny obraz sytuacji zamiast polowania na duchy w kablach.

Typowe punkty zapalne – gdzie Profinet i Modbus TCP najczęściej „strzelają fochy”

Przy mieszanej sieci problemy rzadko wynikają z jednego spektakularnego błędu. Zwykle to kilka drobnych zaniedbań, które w konkretnych warunkach złożą się na awarię. Najczęściej powtarzają się trzy scenariusze: przeciążony sterownik, „rozjechane” ustawienia urządzeń oraz drobne błędy okablowania i topologii.

Pierwszy klasyk to PLC z zadaniami upchanymi „pod sufit”: krótkie cykle Profinet, gęsto odpytywany Modbus TCP, do tego dużo logiki i archiwizacja. Gdy dojdzie kilka timeoutów lub sporadyczne retranmisje, sterownik zaczyna balansować na granicy czasu cyklu, a użytkownik widzi znikające urządzenia Profinet i „zawieszający się” Modbus. Winę zrzuca się na sieć, a problem siedzi w bilansie obciążeń CPU.

Drugi scenariusz to niespójne konfiguracje urządzeń: inne czasy watchdogów, inne retry time, nieaktualne firmware przełączników i wysp I/O. Wszystko działa dopóki ruch jest mały. Po dołożeniu kilku paneli HMI lub rozszerzeniu Modbusa o kolejne urządzenia zaczynają się komunikaty o błędach I/O i sporadyczne restarty modułów. Z punktu widzenia procesu: losowa niestabilność.

Trzeci klasyk to z pozoru „niewinne” zmiany w kablach i topologii. Ktoś podpiął laptopa przez mały biurowy switch, ktoś inny dołożył access pointa w trybie bridge. Pojawiają się bursty broadcastów, STP reaguje z opóźnieniem, a ramki czasu rzeczywistego trafiają do kolejki razem z ruchem biurowym. Na logach Profinet widać tylko zrywane połączenia i „Device not reachable”.

Strategie ograniczania ryzyka – kilka prostych „bezpieczników”

Zamiast liczyć na to, że sieć „jakoś wytrzyma”, lepiej wprowadzić kilka drobnych zabezpieczeń. Nie są skomplikowane, a w razie problemu często decydują, czy linia zatrzyma się całkiem, czy tylko spadnie jakość diagnostyki.

Po pierwsze – buforowanie i walidacja danych Modbus TCP w PLC. Dane z urządzeń Modbus warto zapisywać do pośrednich struktur z flagą „ważne/nieważne” i dopiero z nich karmić logikę procesu oraz HMI. Dzięki temu chwilowy brak odpowiedzi z jednego analizatora nie wywraca całego programu, tylko powoduje kontrolowane przejście w tryb zastępczy.

Po drugie – proste progi alarmowe na obciążenie interfejsów i liczniki błędów. W wielu sterownikach można odczytać obciążenie portu Ethernet, liczbę timeoutów Modbus czy ilość błędów Profinet. Banalny licznik porównany z progiem (np. „jeśli w ciągu 10 minut liczba błędów wzrosła o więcej niż X – zgłoś ostrzeżenie”) zmienia „nagłe” awarie w przewidywalne zdarzenia, które utrzymanie ruchu wychwytuje wcześniej.

Po trzecie – rozsądne scenariusze degradowania funkcji. Często lepiej na chwilę wyłączyć mniej krytyczne odczyty Modbus (np. dodatkowe logowanie do hurtowni danych), niż dopuszczać do sytuacji, w której te same bloki komunikacyjne blokują czas procesora i pośrednio wpływają na czas reakcji logiki procesu.

Mit, który przewija się na projektach: „jak zrobimy wszystko przez Ethernet, to samo się uśredni i wyrówna”. Rzeczywistość jest taka, że bez jawnie zdefiniowanych priorytetów i mechanizmów degradacji to proces – zwykle najważniejsza część instalacji – staje się zakładnikiem dodatków typu raportowanie czy zdalny dostęp.

Zbliżenie portów Ethernet i VGA na serwerze w sieci przemysłowej
Źródło: Pexels | Autor: Brett Sayles

Integracja w narzędziach inżynierskich – jak nie zrobić z projektu labiryntu

Spójny projekt PLC – Profinet jako I/O, Modbus jako „okno na świat”

Praktyczne podejście do integracji w sterowniku można streścić w dwóch krokach: traktuj Profinet jak lokalne I/O czasu rzeczywistego, a Modbus TCP jak kanał danych procesowych i serwisowych między „światami”. To porządkuje sposób myślenia i ułatwia dokumentację.

Po stronie Profinet struktury danych zazwyczaj są jasno zdefiniowane przez konfigurator: sloty, subsloty, mapowanie bit-po-bicie. Warto od razu grupować je w logiczne bloki: wejścia linii, napędy, bezpieczeństwo, diagnostyka. Wówczas szybciej widać, które sygnały są krytyczne i muszą mieć najkrótszy czas cyklu oraz najwyższy priorytet zadań w PLC.

Modbus TCP dobrze jest od początku układać w tabele: rejestry procesowe (ciągi technologiczne), rejestry diagnostyczne, parametry nastawcze, dane serwisowe. Każdej tabeli przypisać osobny blok komunikacyjny lub funkcję z kontrolą częstotliwości odpytywania. Na poziomie kodu unika się wtedy „losowych” adresów typu 400123 rozrzuconych po całym projekcie i do minimum schodzi ryzyko pomyłki przy rozbudowie.

Dobrym trikiem są struktury pośrednie z opisanymi polami i komentarzami. Zamiast trzymać „gołe” rejestry 40001…40064, lepiej stworzyć np. strukturę „T_Piec1_Modbus” z polami „Temperatura_Wej”, „Temperatura_Wyj”, „Moc_Chłodzenia”, „Status_Błędu”. Wtedy nawet po kilku latach nowy automatyk rozumie, co czyta i zapisuje, a analiza capture’a z sieci przestaje być czarną magią.

Tagi, nazewnictwo i dokumentacja – czytelność ponad skróty

Przy mieszanej sieci nazewnictwo to nie kosmetyka, tylko narzędzie diagnostyczne. Gdy tagi jasno mówią, czy sygnał pochodzi z Profinet czy z Modbus TCP, łatwiej zlokalizować źródło problemu. Dobry, prosty schemat to prefiksy typu „PN_” dla sygnałów z Profinet, „MB_” dla Modbusa oraz konsekwentne używanie tej samej hierarchii nazw w PLC, HMI i SCADA.

W praktyce pomaga kilka zasad:

  • nie dublować nazw – jeśli w PLC istnieje „PN_L3_Motor01_Start”, to w HMI powinno być dokładnie tak samo lub z minimalnym tylko dopiskiem dla warstwy wizualizacji,
  • w opisach tagów podawać oprócz funkcji także źródło danych („Źródło: Modbus TCP, IP 10.12.30.25, Holding Reg 40021”),
  • w osobnym arkuszu lub module dokumentacji utrzymywać mapy rejestrów Modbus powiązane z konkretnymi blokami funkcyjnymi w PLC.

Mit: „dobry inżynier i tak wszystko zapamięta, szkoda czasu na opisy”. Rzeczywistość w utrzymaniu ruchu jest inna – za trzy lata na obiekcie pracuje ktoś nowy, a jedynym śladem po pierwotnym wykonawcy jest projekt bez opisów i kartka z kilkoma adresami IP. Każdy dodatkowy komentarz i sensowny schemat nazewnictwa skraca wtedy czas diagnozy o rząd wielkości.

Konfiguracja złącz i routingu – kiedy jeden port to za mało

W wielu aplikacjach sterownik ma kilka interfejsów Ethernet – osobny dla Profinet, osobny dla „świata zewnętrznego”. W teorii wszystko jest proste, w praktyce pojawiają się drobne pułapki: niejasne trasy routingu, adresy z tej samej podsieci na różnych interfejsach, mylone bramy domyślne.

Bezpieczny model to: Profinet w jednej, zamkniętej podsieci bez routingu, Modbus TCP po stronie „procesowej” lub „IT” z wyraźnym przejściem przez router/firewalla. W konfiguracji PLC tylko jeden interfejs ma zdefiniowaną bramę domyślną (ten, który faktycznie wychodzi w stronę innych podsieci). Drugi interfejs pełni rolę „lokalnej magistrali” bez dostępu na zewnątrz.

<