Komunikacja z wyspą Astraada IO IP67 z wykorzystaniem protokołu Modbus TCP/IP
Kurs konfiguracji komunikacji oddalonych modułów Astraada IO IP67, odc. 3
Kontakt w sprawie artykułu: Jakub Gałąska - 2025-09-01

W tym odcinku przedstawiona zostanie konfiguracja komunikacji z wykorzystaniem protokołu Modbus TCP/IP. Jest to jeden z najbardziej popularnych sposobów komunikacji stosowany w sprzęcie przeznaczonym do pracy w automatyce przemysłowej.
Kurs konfiguracji komunikacji oddalonych modułów Astraada IO IP67
1. Zdalne moduły I/O – wprowadzenie2. Komunikacja z wyspą Astraada IO IP67 z wykorzystaniem protokołu EtherCAT
3. Komunikacja z wyspą Astraada IO IP67 z wykorzystaniem protokołu Modbus TCP/IP
4. Komunikacja z wyspą Astraada IO IP67 z wykorzystaniem protokołu Modbus Profinet
5. Komunikacja z wyspą Astraada IO IP67 z wykorzystaniem protokołu Modbus EtherNet/IP
Materiał podzielono na trzy części, które przedstawiają, jak na bazie omawianego protokołu komunikacyjnego można połączyć moduł Astraada IO IP67 ze sterownikiem Astraada One, panelem Astraada HMI oraz sterownikiem firmy Horner APG.
Konfiguracja komunikacji Astraada IO IP67 – sterownik PLC Astraada ONE
W przypadku chęci skorzystania z komunikacji Modbus TCP/IP należy wykorzystać model AS70-R-MP-08DIO-P-M12 – pozwala on na pracę w trybie Multi Protocol.
Fabryczne ustawienia każdego modułu AS70-R-MP-08DIO-P-M12 wyglądają w sposób następujący:
Protokół: Profinet
Adres IP: 192.168.0.2
Domyślny protokół tej jednostki to Profinet, dlatego należy skonfigurować jednostkę do pracy jako Modbus TCP Slave oraz zmienić adres IP.
Zmiana protokołu z wykorzystaniem programu Astraada IO Configuration Tool
Program pobrać można bezpłatnie ze strony wsparcia technicznego ASTOR.
W pierwszym kroku należy uruchomić program Astraada IO Configuration Tool, następnie podać obecny adres IP modułu i wpisać „P” w celu zmiany protokołu. Wybór czwartej opcji spowoduje ustawienie trybu komunikacji na Modbus TCP/IP. Należy postępować zgodnie z poleceniami pojawiającymi się w terminalu oraz pamiętać o resecie zasilania po zakończeniu konfiguracji.

Po zmianie protokołu, za każdym razem adres IP modułu zostanie domyślnie ustawiony na 192.168.0.2.
Po resecie zasilania i zaświeceniu się diody Us na zielono należy ponownie uruchomić program. W kolejnym kroku należy podać domyślny adres IP urządzenia, a następnie wpisać znak „I”, aby wybrać opcję zmiany adresu IP.
Zgodnie z instrukcjami wyświetlanymi w terminalu należy wprowadzić następujące przykładowe ustawienia:
Adres IP: 192.168.1.2
Maska podsieci: 255.255.255.0
Brama (Gateway): 192.168.1.1

Po zakończeniu konfiguracji wymagany jest ponowny reset zasilania.
Po drugim resecie moduł jest gotowy do pracy jako Modbus TCP Slave. Możliwe jest rozpoczęcie konfiguracji po stronie sterownika.
W tym celu należy przystąpić do stworzenia struktury drzewa projektowego w środowisku Codesys. W docelowym projekcie przechodzimy do Device -> Communication Settings i określamy ścieżkę komunikacji ze sterownikiem, podając jego adres IP. Przy ikonie sterownika powinna pojawić się zielona kropka – potwierdzenie poprawnego połączenia.
W drzewku projektowym należy kliknąć prawym przyciskiem myszy na Device i wybrać opcję Add Device… Z listy wybieramy pozycję Fieldbuses -> Ethernet Adapter -> Ethernet.

Następnie, we właściwościach urządzenia Ethernet, w zakładce General, należy wskazać interfejs sieciowy, do którego podłączony zostanie moduł Astraada IO. Przed kontynuacją należy upewnić się, że sterownik posiada skonfigurowane docelowe adresy IP (zakładka Network w webserwerze sterownika).

Kolejnym krokiem jest kliknięcie prawym przyciskiem myszy na obiekt Ethernet, wybranie opcji Add Device oraz wskazanie pozycji Fieldbuses -> Modbus -> Modbus TCP Master -> Modbus TCP Master.

W dalszej części do projektu dodawane jest urządzenie typu Modbus TCP Slave, analogicznie jak w przypadku pozostałych elementów.

We właściwościach obiektu Modbus TCP Slave należy zmienić automatycznie przypisany adres IP na ten, który został wcześniej skonfigurowany w module.

Na tym etapie konfiguracja drzewka projektowego zostaje zakończona.
Kolejnym Istotnym elementem jest opis struktury przesyłania danych między modułem I/O a sterownikiem. Jest to szczególnie przydatne przy potwierdzaniu wymiany danych oraz ich interpretacji.
Moduł Astraada IO IP67 sumarycznie udostępnia 3 bajty danych: stan wyjść, stan wejść oraz status modułu.
Dodatkowo wyposażony jest w wejścia adaptacyjne, które zawsze działają jako wejścia cyfrowe. W przypadku otrzymania rozkazu wystawienia wyjścia na danym pinie, wejścia te dodatkowo pełnią funkcję wyjść cyfrowych.
Modbus TCP – mapowanie przestrzeni wejść | ||||||||
Adres (Discrete Input) | 10008 | 10007 | 10006 | 10005 | 10004 | 10003 | 10002 | 10001 |
Adres (Input registers) | 30001.7 | 30001.6 | 30001.5 | 30001.4 | 30001.3 | 30001.2 | 30001.1 | 30001.0 |
Stan wejść | Port 3 Pin 2 | Port 3 Pin 4 | Port 2 Pin 2 | Port 2 Pin 4 | Port 1 Pin 2 | Port 1 Pin 4 | Port 0 Pin 2 | Port 0 Pin 4 |
Adres (Discrete Input) | 10016 | 10015 | 10014 | 10013 | 10012 | 10011 | 10010 | 10009 |
Adres (Input registers) | 30001.15 | 30001.14 | 30001.13 | 30001.12 | 30001.11 | 30001.10 | 30001.9 | 30001.8 |
Status Modułu | Zbyt wysokie napięcie US | Zbyt wysokie napięcie UA | Zbyt wysoka temp. pracy | Zbyt niskie napięcie US | Zbyt niskie napięcie UA |
Modbus TCP – mapowanie przestrzeni wyjść | ||||||||
Adres (Coil) | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
Adres (Holding registers) | 40001.7 | 40001.6 | 40001.5 | 40001.4 | 40001.3 | 40001.2 | 40001.1 | 40001.0 |
Stan wyjść | Port 3 Pin 2 | Port 3 Pin 4 | Port 2 Pin 2 | Port 2 Pin 4 | Port 1 Pin 2 | Port 1 Pin 4 | Port 0 Pin 2 | Port 0 Pin 4 |
W celu konfiguracji wymiany danych należy przejść do właściwości Modbus TCP Slave, a następnie otworzyć zakładkę Modbus Slave Channel i wybrać opcję Add Channel…. Przykładowa konfiguracja obejmuje jeden kanał służący do odczytu stanu wejść oraz statusu, a także jeden kanał odpowiedzialny za wysyłanie zadanego stanu wyjść.



Aby przetestować możliwość potwierdzenia wymiany danych, we właściwościach modułu należy przejść do zakładki ModbusTCPSlave I/O Mapping i ustawić Always update variables na wartość Enabled 2 (always in bus cycle task). Dzięki temu w trybie online możliwe jest monitorowanie aktualnych wartości zmiennych.
Procedura ta przebiega analogicznie jak w przypadku przedstawionym w poprzednim odcinku.
Konfiguracja komunikacji Astraada IO IP67 – panel Astraada HMI
Aby rozpocząć pracę z modułem I/O konieczna jest zmiana protokołu na Modbus TCP/IP z domyślnie ustawionego Profinet przy wykorzystaniu programu Astraada IO Configuration Tool.
Procedura ta opisana została na początku tego odcinka – należy postępować w sposób analogiczny.
Pierwszym krokiem utworzenia połączenia między modułem a panelem operatorskim jest konfiguracja połączenia Link. W zakładce General należy skonfigurować Link Type jako Direct Link (Ethernet), natomiast w wierszu Device/Server wybrać Astraada HMI oraz Modbus Device/Slave (TCP/IP).

Następnie należy przejść do sekcji Parameter i wpisać wcześniej skonfigurowany adres IP modułu Astraada IO (192.168.1.2) oraz dobrać odpowiednio parametry dla połączenia Ethernet.

Parametry, które należy edytować to:
Timeout Time – maksymalny czas, po przekroczeniu którego sterownik komunikacyjny odnotowuje błąd połączenia.
Command Delay – czas opóźnienia między odebraniem informacji od urządzenia a wysłaniem kolejnych danych.
Retry Count – liczba prób podejmowanych przez driver do momentu uzyskania poprawnej odpowiedzi od urządzenia.
Ostatni element, który należy skonfigurować, to adresacja zmiennych z modułu I/O. Model AS70-R-MP-08DIO-P-M12 przeznaczony do pracy w trybie Multi Protocol zawiera dane o następującym mapowaniu:
Modbus TCP – mapowanie przestrzeni wejść | ||||||||
Adres (Discrete Input) | 10008 | 10007 | 10006 | 10005 | 10004 | 10003 | 10002 | 10001 |
Adres (Input registers) | 30001.7 | 30001.6 | 30001.5 | 30001.4 | 30001.3 | 30001.2 | 30001.1 | 30001.0 |
Stan wejść | Port 3 Pin 2 | Port 3 Pin 4 | Port 2 Pin 2 | Port 2 Pin 4 | Port 1 Pin 2 | Port 1 Pin 4 | Port 0 Pin 2 | Port 0 Pin 4 |
Adres (Discrete Input) | 10016 | 10015 | 10014 | 10013 | 10012 | 10011 | 10010 | 10009 |
Adres (Input registers) | 30001.15 | 30001.14 | 30001.13 | 30001.12 | 30001.11 | 30001.10 | 30001.9 | 30001.8 |
Status Modułu | Zbyt wysokie napięcie US | Zbyt wysokie napięcie UA | Zbyt wysoka temp. pracy | Zbyt niskie napięcie US | Zbyt niskie napięcie UA |
Modbus TCP – mapowanie przestrzeni wyjść | ||||||||
Adres (Coil) | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
Adres (Holding registers) | 40001.7 | 40001.6 | 40001.5 | 40001.4 | 40001.3 | 40001.2 | 40001.1 | 40001.0 |
Stan wyjść | Port 3 Pin 2 | Port 3 Pin 4 | Port 2 Pin 2 | Port 2 Pin 4 | Port 1 Pin 2 | Port 1 Pin 4 | Port 0 Pin 2 | Port 0 Pin 4 |
W tym celu należy przejść do zakładki Tag->Link 1 i dla celów przykładu skonfigurować dwie zmienne z odpowiednimi danymi jak poniżej:

Po wgraniu projektu i podłączeniu przewodu łączącego wybrany port panelu z modułem, komunikacja powinna zostać nawiązana poprawnie. Po podłączeniu czujników w bajcie danych wejściowych można zaobserwować, że wymiana danych przebiega prawidłowo.

Warto zwrócić uwagę na istotną cechę portów adaptacyjnych: wystawienie stanu wysokiego, na przykład bitu 3 w rejestrze 40001 (czyli rozkazanie modułowi używania pinu 4 na porcie 1 jako wyjścia cyfrowego) powoduje automatyczne ustawienie stanu wysokiego na odpowiadającym bicie w rejestrze 30001. Innymi słowy, wszystkie bity ustawione na stan wysoki w rejestrze 40001 mają również stan wysoki w rejestrze 30001, natomiast odwrotna zależność nie zawsze występuje.
Takie zachowanie wynika z faktu, że pojawienie się napięcia wyjściowego na pinie jest jednocześnie odczytywane przez czujnik wejściowy.
Konfiguracja komunikacji Astraada IO IP67 – sterownik PLC Horner APG
Aby rozpocząć pracę z modułem I/O, konieczna jest zmiana protokołu na Modbus TCP/IP z domyślnie ustawionego Profinet przy wykorzystaniu programu Astraada IO Configuration Tool.
Procedura ta opisana została na początku tego odcinka – należy postępować w sposób analogiczny.
W przypadku pracy ze sterownikiem HEXP251C112 konieczne jest skorzystanie ze środowiska Cscape 10.0 – dedykowanego oprogramowania narzędziowego dla sterowników producenta Horner APG.
Po nawiązaniu połączenia ze sterownikiem należy przejść do zakładki Hardware Configuration, a następnie wskazać port LAN, który będzie wykorzystywany do komunikacji z modułem I/O.

Kolejnym krokiem jest sprawdzenie, czy adres IP odpowiada temu, który został ustawiony w sterowniku, i czy znajduje się w tej samej podsieci, co moduł Astraada IO. W celu konfiguracji urządzenia Modbus TCP Client, w sekcji Downloadable Protocols z rozwijanej listy należy wybrać Modbus Client, a następnie przejść do konfiguracji, klikając przycisk Network.

W oknie Network Config można ustawić parametry połączenia sieciowego. Przykładowe ustawienia:

Retries – liczba prób podejmowanych przez urządzenie Client w celu nawiązania komunikacji z urządzeniem Server.
Timeout – czas, po którego przekroczeniu urządzenie Client zgłasza błąd, jeśli nie otrzyma odpowiedzi na wysłane zapytanie.
Sekcja „Update Scan” – umożliwia wybór trybu odpytywania urządzeń przez klienta:
Automatic – urządzenia są odpytywane automatycznie z ustaloną częstotliwością. Wartość 0 w polu Update Interval oznacza maksymalną możliwą częstotliwość.
Manual – możliwe jest przypisanie zmiennej, której ustawienie na stan wysoki inicjuje zapytania wysyłane przez Clienta do urządzeń Server.
Status – opcjonalna możliwość skonfigurowania rejestru statusowego dla komunikacji Modbus TCP.
Po uzupełnieniu wymaganych pól konfigurację zatwierdzamy przyciskiem OK.
Następnie należy wybrać przycisk Devices -> Add, aby skonfigurować urządzenie Server (maksymalnie 64).

W oknie Device Config należy wprowadzić nazwę urządzenia oraz jego adres IP (w tym przypadku skonfigurowany jako 192.168.1.2). Pole Device Type umożliwia ustawienie typu adresowania zmiennych — zalecane jest wybranie opcji Modicon PLC 5-Digit Addressing. Opcjonalnie można aktywować rejestr statusowy oraz zaznaczyć jedną z opcji reakcji na błąd: Stop on Error lub Retry on Error, w zależności od wymagań aplikacji.
Ostatni element, który należy skonfigurować, to adresacja zmiennych z modułu I/O. Model AS70-R-MP-08DIO-P-M12 przeznaczony do pracy w trybie Multi Protocol zawiera dane o następującym mapowaniu:
Modbus TCP – mapowanie przestrzeni wejść | ||||||||
Adres (Discrete Input) | 10008 | 10007 | 10006 | 10005 | 10004 | 10003 | 10002 | 10001 |
Adres (Input registers) | 30001.7 | 30001.6 | 30001.5 | 30001.4 | 30001.3 | 30001.2 | 30001.1 | 30001.0 |
Stan wejść | Port 3 Pin 2 | Port 3 Pin 4 | Port 2 Pin 2 | Port 2 Pin 4 | Port 1 Pin 2 | Port 1 Pin 4 | Port 0 Pin 2 | Port 0 Pin 4 |
Adres (Discrete Input) | 10016 | 10015 | 10014 | 10013 | 10012 | 10011 | 10010 | 10009 |
Adres (Input registers) | 30001.15 | 30001.14 | 30001.13 | 30001.12 | 30001.11 | 30001.10 | 30001.9 | 30001.8 |
Status Modułu | Zbyt wysokie napięcie US | Zbyt wysokie napięcie UA | Zbyt wysoka temp. pracy | Zbyt niskie napięcie US | Zbyt niskie napięcie UA |
Modbus TCP – mapowanie przestrzeni wyjść | ||||||||
Adres (Coil) | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
Adres (Holding registers) | 40001.7 | 40001.6 | 40001.5 | 40001.4 | 40001.3 | 40001.2 | 40001.1 | 40001.0 |
Stan wyjść | Port 3 Pin 2 | Port 3 Pin 4 | Port 2 Pin 2 | Port 2 Pin 4 | Port 1 Pin 2 | Port 1 Pin 4 | Port 0 Pin 2 | Port 0 Pin 4 |
W tym celu należy przejść do okna Scan List -> Add i skonfigurować je zgodnie z ustawieniami znajdującymi się poniżej. Spowoduje to odczyt stanu wejść i danych diagnostycznych (Polled Read 30001) oraz możliwość zarządzania stanem wyjść (Polled Read/Write 40001).
W przykładzie wartość z rejestru 30001 przypisano do lokalnego rejestru %R1, natomiast 40001 do %R2.


Po wgraniu projektu i podłączeniu przewodu łączącego wybrany port sterownika z modułem, komunikacja powinna zostać nawiązana poprawnie. Po podłączeniu czujników w bajcie danych wejściowych możliwe jest zaobserwowanie prawidłowej wymiany danych.

Warto zwrócić uwagę na istotną cechę portów adaptacyjnych: wystawienie stanu wysokiego, na przykład bitu 1 w rejestrze %R2 (czyli rozkazanie modułowi używania pinu 4 na porcie 0 jako wyjścia cyfrowego), powoduje automatyczne ustawienie stanu wysokiego na odpowiadającym bicie rejestru %R1.
Innymi słowy, wszystkie bity ustawione na stan wysoki w rejestrze %R2 mają również stan wysoki w rejestrze %R1, natomiast odwrotna zależność nie zawsze występuje.
Takie zachowanie wynika z faktu, że pojawienie się napięcia wyjściowego na pinie jest jednocześnie odczytywane przez czujnik wejściowy.
W następnym odcinku przedstawiona zostanie konfiguracja komunikacji z wykorzystaniem protokołu Profinet.