Zaawansowane 1, 2 i 4-portowe bramy Modbus TCP na Modbus RTU zgodne z IEC 62443-4-2
Koszyk
Bramka protokołów MGate MB3000-G2 łączy urządzenia szeregowe komunikujące się przy użyciu Modbus RTU lub ASCII po RS-232/422/485 oraz systemy nadrzędne posługujące się protokołem Modbus TCP w sieci Ethernet. W praktyce oznacza to liczniki energii, falowniki, mierniki parametrów sieci czy czujniki na magistrali szeregowej z jednej strony i system SCADA, sterownik PLC lub serwer BMS z drugiej.
Seria MGate MB3000-G2 to nowa generacja konwerterów Moxy, rozbudowana o tryb Agent oraz zestaw narzędzi diagnostycznych wbudowanych w konsolę webową. Ten artykuł pokazuje konfigurację obu trybów pracy od strony praktycznej, na przykładzie modelu MGate MB3270-G2 z dwoma portami szeregowymi i dwoma portami Ethernet. Narzędzia diagnostyczne opisuje osobny artykuł.
Uwaga: Przegląd serii, porównanie modeli i zestawienie parametrów znajdują się w osobnym artykule „MGate MB3000-G2 – nowa generacja konwerterów Modbus”.
MGate MB3000-G2 pracuje w jednym z dwóch trybów.
Uwaga: Przełączenie trybu pracy kasuje całą konfigurację protokołu. Po zmianie trybu należy dokonać ponownej konfiguracji.
| Cecha | Tryb Transparent | Tryb Agent |
|---|---|---|
| Zasada działania | Przekazuje ramki 1:1, bez buforowania danych | Sam odpytuje urządzenia i buforuje dane |
| Czas odpowiedzi | Zależy od prędkości magistrali i długości kolejki – od kilkunastu do setek ms | Stały i krótki, odczyt z pamięci bramki |
| Konfiguracja | Tabela routingu – po Modbus ID, adresie IP lub porcie TCP | Lista urządzeń, komend i tagów |
| Awaria urządzenia polowego | Klient od razu dostaje wyjątek 0x0B (brak odpowiedzi z serwera) | Odczyt z pamięci zawsze się udaje; awarię wykrywa tag status |
| Awaria systemu nadrzędnego | Zapytania przestają przychodzić | Bramka dalej wpisuje ostatnią wartość, o ile nie ustawiono Fault Protection |
| Protokoły niestandardowe | Brak | Tak – Serial Proprietary |
| Dostępność | Wszystkie modele serii MB3000 | Tylko modele MB3000-G2 |
Konfigurację zaczyna się od topologii, czyli od wskazania bramce, po której stronie znajdują się urządzenia zadające pytania (klienci), a po której urządzenia na nie odpowiadające (serwery). Służy do tego przycisk CHANGE TOPOLOGY. Do wyboru są trzy interfejsy po każdej stronie: TCP/IP, port szeregowy oraz RealCOM, czyli wirtualny port COM mapowany na komputerze przez sterownik Moxy.
Ten sam rodzaj interfejsu można zaznaczyć po obu stronach – w modelach wieloportowych oznacza to, że jeden port szeregowy może obsłużyć klienta, a drugi serwery. Zaznaczenie po stronie klientów jednocześnie TCP/IP i portu szeregowego daje funkcję Serial Redirector: panel HMI podpięty kablem i system SCADA w sieci Ethernet odpytują te same urządzenia, a bramka ustawia ich zapytania w kolejce.
Ikona ołówka przy każdym interfejsie w oknie Topology otwiera jego parametry. Po stronie Modbus TCP są trzy pozycje: listen port (domyślnie 502), TCP Alive Check Time oraz Modbus TCP exception – po jego wyłączeniu bramka przestaje informować klienta o błędach urządzeń końcowych.
Parametr TCP Alive Check Time pełni istotną rolę porządkową: jeśli w zadanym czasie w sesji nie pojawi się żaden pakiet Modbus, bramka ją zrywa. Dzięki temu klient, który przestał działać bez zamknięcia połączenia, przestaje je blokować.
Interfejs RealCOM konfiguruje się analogicznie. Wirtualne porty COM od 1 do 4 pozwalają podłączyć do bramki oprogramowanie, które wymaga fizycznego portu szeregowego i nie obsługuje Modbus TCP – po stronie komputera potrzebny jest sterownik Moxa Windows Driver Manager.
Routing to sedno trybu Transparent. Bramka musi wiedzieć, dokąd skierować każdą przychodzącą ramkę – do którego portu szeregowego, pod który adres IP albo do którego portu wirtualnego.
Do wyboru są trzy metody routingu i można je łączyć ze sobą. Wybiera się je w oknie Edit Routing Method, w którym producent umieścił schemat działania każdej z nich.
| Metoda | Na czym opiera decyzję | Kiedy stosować | Ograniczenia |
|---|---|---|---|
| Route by Modbus ID | Adres urządzenia zawarty w ramce | Metoda domyślna i najczęściej używana | Wymaga unikalnych adresów w całej tabeli |
| Route by IP address | Adres IP, na który przyszło zapytanie | Gdy urządzenia na różnych magistralach mają te same adresy | Kieruje tylko do portów szeregowych; każdy port uzyskuje nowy adres IP |
| Route by TCP port | Numer portu TCP zapytania | Rozdzielenie ruchu bez zmiany adresacji | Port musi być inny niż nasłuchowy (502) |
Jest to istotny mechanizm w całym routingu. Actual ID to rzeczywisty adres urządzenia na magistrali – taki, jaki ustawiono na samym liczniku czy przetworniku. Mapped ID to adres, pod którym urządzenie widzi system nadrzędny. Jeżeli w instalacji nie ma konfliktów, zakresy adresów mogą pozostać identyczne.
Problem pojawia się wtedy, gdy do jednej bramki trafiają dwie magistrale, a na każdej z nich pracują urządzenia o powtarzających się adresach ID. Mapped ID rozwiązuje to jednoznacznie: urządzenia z pierwszego portu zostają pod swoimi adresami, a adresy urządzeń z drugiego zostają przesunięte dalej. Dla systemu nadrzędnego jest to po prostu więcej urządzeń, a bramka przy każdym zapytaniu podmienia adres z powrotem na rzeczywisty. Mapowanie definiuje się pojedynczo albo całymi zakresami.
Ten sam mechanizm działa niezależnie od rodzaju celu. Gdy urządzenia końcowe są serwerami Modbus TCP, zamiast portu szeregowego dodaje się adresy docelowe przyciskiem ADD DESTINATION, podając adres IP i port. Gdy celem jest wirtualny port COM, reguły trafiają do zakładki RealCOM. Tabela routingu pozostaje jedna dla całego urządzenia – zmienia się wyłącznie kolumna z celem.
Uwaga: Adresy Mapped ID muszą być unikalne w obrębie całej tabeli routingu.
Reguły nie muszą powstawać ręcznie, o ile bramka kieruje ruch po adresach Modbus – przełącznik Auto device routing jest wyłącznie na karcie Modbus ID Routing. Przy routingu po adresie IP albo porcie TCP automat nie miałby zresztą czego wykrywać, bo tam przypisanie portu szeregowego definiuje się z góry. Sam mechanizm nie skanuje magistrali z własnej inicjatywy: bramka odczytuje adres Modbus z ramki przychodzącej od klienta, nie zna natomiast portu, na którym stoi urządzenie. Zapytanie bez reguły trafia więc na wszystkie porty szeregowe naraz, a port, z którego przyszła odpowiedź, zostaje zapisany w tabeli jako cel dla tego adresu. Kolejne zapytania idą już bezpośrednio przez wskazany port do odpowiedniego urządzenia.
Wpisy wykryte automatycznie nie korzystają z Mapped ID – adres zmapowany zawsze odpowiada rzeczywistemu. W tabeli każdy adres Modbus może wystąpić tylko raz, więc dwa urządzenia o tym samym ID na różnych portach nie zmieszczą się w niej jednocześnie: taki konflikt bramka oznacza wykrzyknikiem i komunikatem na czerwono, a rozwiązuje się go zmianą adresu w urządzeniu albo ręczną regułą z mapowaniem. Sama tabela nie jest jednak zamrożona – wykrywanie działa w tle cały czas, więc gdy urządzenie zniknie z zapamiętanego portu, wpis może zostać zaktualizowany na nowy.
Wyjątek 0x0A (Gateway Path Unavailable) informuje, że bramka nie ma dokąd wysłać zapytania: brak adresu w tabeli routingu, konflikt w routingu automatycznym albo nieosiągalny lub milczący serwer Modbus TCP.
Modbus RTU obsługuje jedno zapytanie naraz. Gdy do bramki podłączy się kilka systemów nadrzędnych albo jeden odpytuje bardzo intensywnie, zapytania ustawiają się w kolejce, a czas odpowiedzi rośnie. Dla odczytów archiwalnych nie ma to znaczenia, dla zapytania o stan awarii albo polecenia wyłączenia – już tak. Do tego służy Priority Control.
Zapytania oznaczone jako priorytetowe trafiają na początek kolejki zamiast na jej koniec. Reguły można budować na dwa sposoby.
Wariant z pełną ramką zdefiniowaną przez użytkownika jest najbardziej precyzyjny: podaje się całą sekwencję bajtów, na przykład 0x0F0400640002, i tylko dokładnie takie zapytanie zyskuje priorytet. Przydaje się tam, gdzie jedno konkretne polecenie musi być obsłużone natychmiast, a pozostałe zapytania do tego samego urządzenia mogą poczekać.
Priorytet nie skraca kolejki ani nie przyspiesza magistrali – zmienia wyłącznie kolejność. W przypadku problemów z przepustowością należy zmniejszyć częstotliwość odpytywania, podnieść prędkość magistrali albo rozważyć użycie trybu Agent.
W trybie Agent topologię definiuje się poprzez wybór protokołu po stronie północnej, czyli od strony systemu nadrzędnego, oraz po stronie brzegowej, czyli od strony urządzeń końcowych. Rola samej bramki wynika z tych wyborów i jest pokazywana jako pole tylko do odczytu. Bramka jest wtedy jednocześnie serwerem dla jednej strony i klientem dla drugiej.
| System nadrzędny | Rola MGate | Urządzenia polowe | Typowe zastosowanie |
|---|---|---|---|
| Modbus TCP Client | serwer TCP / klient RTU | Modbus RTU/ASCII Server | SCADA po Ethernecie, liczniki i czujniki na RS-485 |
| Modbus TCP Client | serwer TCP / klient RTU | Serial Proprietary Server | Urządzenie z własnym protokołem szeregowym |
| Modbus TCP Client | serwer TCP / klient RTU | Modbus RTU/ASCII + Serial Proprietary | Urządzenia Modbus i z protokołem własnym na osobnych portach, tylko MB3270-G2 / MB3470-G2 |
| Modbus RTU/ASCII Client | serwer RTU / klient TCP | Modbus TCP Server | Panel HMI lub sterownik na RS-485 odpytujący urządzenia w sieci Ethernet |
Konfigurację zaczyna się od strony klienta MGate (Modbus Server), z racji iż właśnie ona zbiera dane z urządzeń polowych.
W panelu Protocol Settings zależnie od topologii: przy roli Modbus RTU/ASCII Client pojawiają się karty portów szeregowych, przy roli Modbus TCP Client – karta TCP, przy Serial Proprietary Client – edytor bloków funkcyjnych. W każdym z nich właściwa konfiguracja znajduje się pod MANAGE > Edit. To samo menu pozwala na eksport ustawień z jednego portu szeregowego na drugi, co przy identycznych magistralach oszczędza sporo pracy.
Urządzenia dodaje się przyciskiem ADD DEVICE, a zakres danych zależy od roli. Klient Modbus RTU/ASCII potrzebuje nazwy i adresu Server ID urządzenia na magistrali. Klient Modbus TCP – nazwy, adresu IP, portu serwera oraz Modbus ID; obok karty TCP kryją się jeszcze parametry Retry i Response Timeout. Przy konfiguracji Serial Proprietary należy złożyć ramkę z bloków funkcyjnych zgodnie ze specyfikacją producenta.
Dodawanie urządzenia to trzykrokowy kreator: dane podstawowe, komendy i potwierdzenie. Nazwa urządzenia wchodzi w skład pełnej nazwy każdego tagu, dlatego konwencję nazw ustala się od początku. Komendy definiuje się ręcznie albo importuje z pliku CSV, co przy wielu identycznych urządzeniach oszczędza czas.
| Parametr | Znaczenie | Na co uważać |
|---|---|---|
| Function | Kod funkcji Modbus – odczyt lub zapis | Odczyty trafiają do obszarów tylko do odczytu, zapisy do zapisywalnych |
| Starting Address, Quantity | Adres startowy i liczba rejestrów | Osobne pola dla odczytu i dla zapisu; większe zakresy zajmują więcej pamięci bramki |
| Trigger | Cyclic, Data Change | Dla poleceń sterujących naturalny jest Data Change, dla cyklicznych odczytów Cyclic |
| Poll Interval | Odstęp między kolejnymi odpytaniami | Zbyt krótki interwał przy wielu urządzeniach zapcha magistralę |
| Fault Protection | Co bramka wysyła do urządzenia w razie utraty łączności ze stroną nadrzędną | Tylko przy komendach zapisu. Pause, Clear data to zero albo Set to user-defined value |
Uwaga: Po dodaniu urządzeń i komend po stronie klienta trzeba zapisać konfigurację przyciskiem SAVE. W innym wypadku bramka nie widzi nowych komend i przy konfiguracji serwera nie pozwoli dodać tagów.
Przy komendach zapisu pojawia się dodatkowe pole Fault Protection, którego nie ma przy odczycie. MGate jest na magistrali aktywnym klientem, więc bez tego ustawienia wpisywałby w nieskończoność ostatnią wartość sprzed awarii.
Do wyboru są trzy zachowania. Pause wstrzymuje wysyłanie komendy. Clear data to zero wpisuje zera, co ma sens tam, gdzie zero jest stanem bezpiecznym – zawór zamknięty, napęd zatrzymany. Set to user-defined value wpisuje wartość ustaloną, podawaną szesnastkowo, wraz z czasem Fault Timeout, po którym podmiana następuje; to jedyny wariant dla urządzeń, których stan bezpieczny nie jest zerem, jak przepustnica na minimalnym otwarciu.
Fault Protection działa w parze z parametrem Trigger. Przy wyzwalaniu cyklicznym komenda zapisu powtarza się co Poll Interval i to Fault Protection decyduje, jaka wartość wychodzi na magistralę przez cały czas awarii łącza. Przy Data Change zapis wychodzi dopiero przy zmianie wartości.
Odpytane rejestry muszą trafić pod adresy, pod którymi znajdzie je system nadrzędny. Służy do tego zakładka Data Mapping, a leży ona po stronie serwerowej bramki – w kolumnie Topology jest to kafelek Modbus TCP Server albo Modbus RTU/ASCII Server, zależnie od topologii. Wejście prowadzi przez przycisk EDIT przy karcie portu.
Tagi rozkładają się na cztery klasyczne obszary pamięci Modbus, a zakładki u góry tabeli pokazują, ile tagów trafiło do każdego z nich.
| Obszar | Dostęp | Funkcje Modbus | Typowe zastosowanie |
|---|---|---|---|
| Coil (0x) | Odczyt i zapis | 01, 05, 15 | Bity sterujące, np. polecenie kasowania licznika |
| Input Discrete (1x) | Tylko odczyt | 02 | Stany dwustanowe, sygnalizacja |
| Holding Register (4x) | Odczyt i zapis | 03, 06, 16 | Nastawy i parametry zapisywalne |
| Input Register (3x) | Tylko odczyt | 04 | Wartości pomiarowe – napięcia, prądy, moce, temperatury |
Adresy startowe są proponowane automatycznie, ale z racji czytelności mogą wymagać poprawy.
Ta tabela jest w istocie dokumentacją interfejsu. Można ją wyeksportować razem z konfiguracją komend do pliku CSV.
W instalacjach przemysłowych można napotkać na urządzenia z własnym, zamkniętym formatem ramki. Bramka potrafi przenieść je do sieci Modbus TCP – instrukcja wymienia konwersję Serial Proprietary na Modbus TCP jako jedną z obsługiwanych topologii, obok klasycznej konwersji Modbus RTU/ASCII. W konsoli wybiera się Serial Proprietary po stronie brzegowej, a bramka przyjmuje wtedy rolę Serial Proprietary Client. Ramkę buduje się z czterech rodzajów bloków funkcyjnych: Node Address to adres urządzenia, Constant to stały wzorzec bajtów bez danych, Data to właściwa treść wymieniana z urządzeniem, a Checksum to suma kontrolna.
Osobno wybiera się tryb transakcji: Request/Response dla klasycznego modelu pytanie–odpowiedź albo Producer/Consumer dla urządzeń, które same cyklicznie nadają dane i których bramka tylko nasłuchuje.
Dane trafiają potem do tagów i do mapy pamięci, więc system nadrzędny widzi zwykłe rejestry Modbus. W trybie Transparent jest to niewykonalne, bo bramka przekazuje ramki bez ich interpretowania.
W trybie Agent MGate MB3000-G2 jest w stanie konwertować protokół Serial Proprietary na Modbus TCP.
Domyślnym trybem pracy bramki jest Transparent – realizuje bezpośrednią konwersję zapytań 1:1 bez pośrednictwa pamięci podręcznej, zachowując oryginalną adresację urządzeń i nie narzucając limitów na liczbę zmiennych. Tryb Agent wdraża się w sytuacjach wymagających optymalizacji, takich jak:
| Sytuacja w instalacji | Tryb | Dlaczego |
|---|---|---|
| Wymiana starego konwertera, adresy i rejestry bez zmian | Transparent | Konfiguracja to topologia i tabela routingu; system nadrzędny niczego nie zauważa |
| Powtarzające się adresy Modbus na kilku magistralach (modele 2- i 4-portowe) | Transparent | Konflikt rozwiązuje Mapped ID, bez zmiany adresów w urządzeniach – regułę trzeba wpisać ręcznie |
| Zapis sterujący, który ma trafić do urządzenia natychmiast | Transparent | Ramka idzie prosto na magistralę; kolejność w kolejce porządkuje Priority Control |
| Więcej zmiennych, niż mieści mapa pamięci bramki | Transparent | Ramki przechodzą bez buforowania, więc pojęcie tagu w ogóle nie występuje |
| Kilkanaście urządzeń na magistrali, system odpytuje je zbyt wolno | Agent | Bramka odpytuje we własnym rytmie, system czyta gotowe wartości |
| System nadrzędny obsługuje ograniczoną liczbę urządzeń lub połączeń | Agent | Cała magistrala widoczna jako jeden serwer Modbus |
| Dane z kilku urządzeń mają tworzyć jeden ciągły blok rejestrów | Agent | Mapę pamięci układa się dowolnie w zakładce Data Mapping |
| Urządzenie z własnym, niestandardowym protokołem szeregowym | Agent | Serial Proprietary działa wyłącznie w trybie Agent |
Wybór trybu zmienia też sposób diagnozowania. W trybie Transparent Protocol Diagnostics liczy ruch osobno po stronie klientów i osobno po stronie urządzeń końcowych, a przycisk TEST wysyła z bramki pełne zapytanie. W trybie Agent bramka sama jest urządzeniem Modbus, więc zamiast tego pokazuje wartości rejestrów na żywo oraz liczniki wybranej roli protokołu.
Diagnostyka MGate MB3000-G2
Protocol Diagnostics, Traffic Monitor, Serial Port Monitor i pozostałe narzędzia w osobnym artykule.
Opisane tryby pracy i mechanizmy konfiguracji są wspólne dla całej serii. Warianty różnią się liczbą portów szeregowych.

Bramka protokołów Modbus, 1 port
Konwersja Modbus RTU/ASCII na Modbus TCP dla pojedynczej magistrali szeregowej. Tryb Transparent i tryb Agent, komplet narzędzi diagnostycznych w konsoli webowej.

Bramka protokołów Modbus, 2 porty
Model użyty w tym artykule. Dwa niezależne porty szeregowe pozwalają rozdzielić magistrale oraz korzystać z mapowania adresów Mapped ID.

Bramka protokołów Modbus, 4 porty
Wariant do instalacji z kilkoma magistralami szeregowymi obsługiwanymi przez jedno urządzenie, z rozdzieleniem ruchu na poziomie tabeli routingu.
Konfiguracja MGate MB3000-G2 sprowadza się do trzech decyzji, podejmowanych w tej kolejności: tryb pracy, topologia, a na końcu reguły – tabela routingu w trybie Transparent albo lista komend i mapa pamięci w trybie Agent.
Tryb Transparent pozostaje właściwym wyborem dla większości typowych instalacji: jest prosty, przewidywalny i nie ukrywa niczego przed systemem nadrzędnym. Tryb Agent warto stosować tam, gdzie wolna magistrala spotyka się z wymaganiem szybkich odpowiedzi oraz w sytuacjach, gdzie tych samych danych potrzebuje kilku odbiorców, a także w przypadku, gdy urządzenie pracuje z niestandardowym protokołem Serial Proprietary.
Masz pytania o dobór bramki albo integrację urządzeń Modbus? Skontaktuj się z inżynierami Elmark Automatyka.
