Strona główna ASTOR

Komunikacja po protokole Modbus RTU
Kurs programowania PLC od podstaw
Odc.16

Kontakt w sprawie artykułu: Kamil Zajdel - 2020-03-09

Z tego artykułu dowiesz się:

  • Co to jest protokół Modbus RTU?
  • Jak wygląda komunikacja po protokole Modbus RTU?
  • Jak przedstawia się architektura sieci Modbus RTU?
  • Jak wykorzystać protokół Modbus RTU do komunikacji sterownika PLC z układami I/O?
  • Jak skonfigurować układ I/O Modbus RTU – SmartMod I/O?

W poprzednim odcinku dowiedziałaś/eś się co to jest obiekt Trend i jak go konfigurować.

W tym artykule poznasz podstawowe informacje dotyczące komunikacji w protokole Modbus RTU oraz poznasz architekturę komunikacji w sieci szeregowej. Zobaczysz, jak w praktyce zastosować układ wejść-wyjść oddalonych SmartMod oraz jak mapować rejestry w komunikacji Modbus.

Kurs programowania PLC od podstaw dla automatyków i elektryków

Podstawy programowania sterowników PLC

  • 1. Wprowadzenie. Jak skonfigurować, podłączyć oraz uruchomić sterownik PLC?
  • 2. Jak tworzyć i edytować projekty w oprogramowaniu Cscape?
  • Programowanie sterownika PLC w języku drabinkowym

  • 3. Jak tworzyć oraz konfigurować bazę zmiennych w środowisku Cscape?
  • 4. Jak korzystać ze styków, cewek i bloków operacji arytmetycznych w programie sterującym?
  • 5. Jak odmierzać czas w programie sterującym i jak konfigurować timery?
  • 6. Jak porównywać wartości i wykorzystać wyniki operacji logicznych?
  • 7. Jak zliczać impulsy i konfigurować liczniki?
  • 8. Jak konwertować typy zmiennych i przemieszczać zmienne w programie?
  • 9. Jak sterować wykonywaniem programu logicznego? Instrukcja skoku warunkowego
  • Programowanie zintegrowanego panelu HMI

  • 10. Jak budować ekrany operatorskie z obiektami do wizualizacji i zadawania wartości zmiennych?
  • 11. Jak umożliwić nawigację między ekranami operatorskimi oraz jak korzystać z gotowych obiektów graficznych w środowisku Cscape?
  • 12. Jak wizualizować zmienne analogowe oraz jak modyfikować ich wartości przy pomocy obiektów dostępnych w oprogramowaniu Cscape?
  • 13. Jak korzystać z obiektu menu?
  • 14. Konfiguracja i obsługa alarmów w sterownikach PLC
  • 15. Kontrolka Data Trend
  • Komunikacja sterowników PLC w sieci szeregowej i Ethernet

  • 16. Komunikacja szeregowa Modbus RTU Master i Slave
  • 17. Komunikacja CsCAN
  • 18. Komunikacja Ethernet Modbus TCP
  • 19. Wysyłanie wiadomości Email w sterowniku PLC
  • Zaawansowane funkcje sterownika PLC

  • 20. Regulator PID
  • 21. Składowanie danych: Data logging
  • 22. Składowanie danych: karta MicroSD
  • 23. Trendy historyczne oraz receptury w programie
  • 24. Setpoint, backup i restore danych oraz generowanie raportów z poziomu sterownika
  • 25. Hasła i zabezpieczenia w programie, ustawienia języka oraz edytor dostępny w narzędziu, opcja autodokumentacji / Dodatkowe ustawienia i możliwości edycji
  • Modbus RTU to jeden z najpopularniejszych protokołów komunikacyjnych w systemach automatyki. Jego prostota i niezawodność sprawiły, że jest jednym z najczęściej wykorzystywanych standardów wymiany danych w sieciach szeregowych RS232/485, w przemysłowych systemach sterowania.

    Charakterystyka Modbus RTU

    Modbus RTU jest protokołem typu Master – Slave i pozwala na dwukierunkową komunikację do 248 urządzeń, podłączonych w ramach tej samej sieci.

    • Modbus RTU Master to urządzenie inicjujące komunikację i wysyłające zapytania do urządzeń typu Slave. W sieci Modbus RTU funkcję Master może pełnić tylko jedno urządzenie.
    • Modbus RTU Slave to urządzenia odpowiadające na zapytania wysyłane przez urządzenia Master. W sieci Modbus RTU może pracować do 247 urządzeń Slave.

    Przykładowa architektura sieci Modbus RTU

    Urządzenie master komunikuje się z urządzeniami slave w trybie dwuprzewodowego RS-485. W tym celu do wymiany danych wykorzystywane są linie DATA +, DATA – oraz GND. Urządzenie master zarządza siecią tak, aby komunikacja była realizowana w prawidłowy sposób.

    Jeśli urządzenie w dalszym ciągu nie odpowiada, master zgłasza błąd komunikacji z urządzeniem slave, a następnie przechodzi do odpytywania urządzenia o ID 2, które jest następne w kolejce. Po odpytaniu wszystkich urządzeń pracujących w sieci, master rozpoczyna kolejną kolejkę odpytywania.

    Horner SmartMod I/O

    Moduły rozszerzeń SmartMod I/O, to rozwiązanie pozwalające na lokalną rozbudowę sterowników, o obsługę kilkunastu dodatkowych sygnałów wejść-wyjść, w oparciu o komunikację szeregową. Charakteryzują się niewielkimi gabarytami, dzięki czemu idealnie nadają się do instalacji w miejscach o ograniczonej przestrzeni montażowej.

    Moduły SmartMod I/O komunikują się ze sterownikiem Horner APG przy pomocy sieci szeregowej, w oparciu o protokół Modbus RTU – w trybie dwuprzewodowego RS485. Wyposażenie modułów w taki interfejs pozwala na ich integrację z dowolnym urządzeniem Modbus RTU master, nie generując przy tym dodatkowych kosztów, związanych z zakupem dedykowanych interfejsów komunikacyjnych. W jednej sieci może pracować do 31 urządzeń SmartMod.

    Okablowanie w sieci Modbus RTU

    Prawidłowa komunikacja w sieci Modbus RTU wymaga przygotowania odpowiedniego kabla. Schemat kabla komunikacyjnego do podłączenia układów wejść-wyjść SmartMod I/O ze sterownikiem Horner XL7e prezentuje poniższa grafika.

    W tej aplikacji, komunikacja z układem SmartMod w sterowniku XL7e, realizowana jest na porcie MJ2, w trybie dwuprzewodowego RS-485. Port MJ2 sterownika wyprowadzony jest fizycznie na złączu RJ-45, na pinach 1, 2 oraz 6.

    Kabel komunikacyjny wykonaj w następujący sposób:

    • Sygnał D- po stronie układu SmartMod podłącz do Pinu A,
    • natomiast po stronie sterownika – do Pinu 1.
    • Sygnał D+ po stronie układu SmartMod podłącz do Pinu B, natomiast po stronie sterownika – do Pinu 2.  
    • Sygnał GND po stronie układu SmartMod podłącz do Pinu C, natomiast po stronie sterownika-  do Pinu 6.

    Prawidłowa konfiguracja komunikacji pomiędzy układem SmartMod, a sterownikiem Horner wymaga ustawienia takich samych parametrów komunikacyjnych na portach obu urządzeń.

    W układach SmartMod, zwarcie zacisków GND oraz INIT powoduje ustawienie domyślnych parametrów komunikacyjnych na porcie.

    • Modbus ID = 1
    • Baud rate = 9600
    • Parity = None
    • Stop Bits = 1

    Dokładnie takie same parametry ustaw na porcie komunikacyjnym w sterowniku. Pełną konfigurację zobaczysz w dalszej części artykułu.

    Mapowanie zmiennych w sterowniku PLC

    Prawidłowa obsługa dodatkowych sygnałów I/O, pochodzących z modułu SmartMod wymaga odpowiedniego zmapowania zmiennych po stronie sterownika.

    Adresy zmiennych w modułach SmartMod możesz odczytać z dokumentacji do danego modułu. W tym przykładzie, dla modułu SmartMod I/O, o numerze katalogowym HE359DIQ512, zmienne dostępne są w następujących obszarach pamięci:

    • sygnały dyskretne wejściowe: w obszarze 00001 do 00004,
    • sygnały dyskretne wyjściowe: w obszarze 00017 do 00020.
    Opis sygnałów w module HE359DIQ512

    Prawidłowe podłączenie sygnałów obiektowych do układów SmartMod przedstawiono na schemacie poniżej.  

    Programowanie w akcji!

    Aby utworzyć komunikację z układem SmartMod, w programie sterującym skonfiguruj protokół Modbus RTU. Komunikacja będzie odbywała się na porcie MJ2 sterownika XL7e.

    W tym celu z poziomu menu Program wybierz Protocol Configuration.

    Następnie z rozwijalnej listy MJ2 wskaż protokół Modbus RTU Master i przejdź do jego konfiguracji.

    W oknie Network Config, w sekcji Port Configuration ustaw parametry pracy portu szeregowego, zgodnie z domyślnymi parametrami komunikacyjnymi w module SmartMod:

    • Baud Rate – 9600,
    • Parity – none,
    • Stop Bits – 1,
    • Protocol – Modbus RTU.

    Parametr Retries oznacza ilość prób, jakie urządzenie master będzie wykonywało w celu nawiązania komunikacji z urządzeniem slave. Ustaw 2.

    Timeout oznacza czas, jaki urządzenie master odczeka pomiędzy kolejnymi zapytaniami. Ustaw 10000 ms.

    W sekcji Update Scan konfiguruje się sposób, w jaki urządzenie master będzie odpytywać urządzenie slave. Opcja Automatic powoduje, że master samodzielnie, tak często jak to możliwe, będzie zaciągał zapytania do urządzeń slave. Jeśli nie chcesz generować dużego obciążenia/?/ na sieci, zmień parametr Update Interval, co spowoduje obniżenie częstotliwości odpytywania.

    Opcja Manual pozwala skonfigurować zmienną, której zmiana stanu na „wysoki” będzie powodowała wysyłanie zapytań z urządzenia master do slave.

    Sekcja Status powala na opcjonalne skonfigurowanie adresu statusowego dla komunikacji Modbus.

    Okno Devices umożliwia dodawanie urządzeń slave. Po wciśnięciu przycisku Add zobaczysz kolejne okno, w którym dodasz I/O SmartMod. W oknie podaj nazwę urządzenia slave jako SmartMod oraz ustaw jego adres ID na 1.

    W sekcji Device Options możesz skonfigurować typ urządzenia slave, sposób w jaki adresowane są w nim zmienne oraz funkcje protokołu Modbus, które obsługuje podczas komunikacji.

    Device Typ pozwala skonfigurować typ adresacji zmiennych:

    • Modicon na 5 znakach,
    • Modicon na 6 znakach,
    • Adresację native.

    Parametr Mode pozwala określić, które funkcje obsługuje urządzenie:

    • wszystkie funkcje,
    • Tylko funkcje 5/6,
    • Tylko funkcje 15/16.

    Sekcja Status umożliwia ustawienie opcjonalnego adresu statusu komunikacji z urządzeniem slave oraz sposobu zachowania w chwili, gdy pojawia się błąd komunikacji.

    W tym przypadku typ urządzenia skonfiguruj jako Modicon PLC 5-Digit Addressing, obsługujący wszystkie funkcje Modbus.

    W zakładce Scan List, zgodnie z dokumentacją, dokonaj mapowania zmiennych w sterowniku pochodzących z modułu SmartMod.

    Wybierz ADD i z listy Device Name wskaż wcześniej dodane urządzenie slave. W polu Device register ustaw adres 00001, a w polu Length wpisz 4.

    W sekcji Local podaj rejestr sterownika %M16, w którym będą przechowywane stany wejść, odczytane z modułu SmartMod.

    W sekcji Update Type sposób aktualizacji zmiennych ustaw jako Polled Read. Oznacza to, że sterownik w każdym cyklu będzie aktualizował stan zmiennych.

    Analogicznie skonfiguruj mapowanie zmiennych wyjściowych. Wybierz Add i ustaw Device Register na 00017, a długość (Length) na 4.

    W sekcji Local podaj rejestr sterownika %m32, z którego będziesz wystawiać sygnały wyjściowe do modułu SmartMod.

    Sposób aktualizacji zmiennych ustaw jako Polled Read/Write. Oznacza to, że sterownik będzie aktualizował stan wyjść na module SmartMod – w chwili, gdy zmieni się ich stan.

    Rozbudowa aplikacji o dodatkowy ekran operatorski

    Teraz rozbudujesz aplikację o ekran operatorski, na którym będą wizualizowane stany sygnałów wejściowych i wyjściowych, pochodzących z modułu SmartMod.

    W tym celu utwórz kolejny ekran operatorski. Zgodnie ze sposobem pokazanym w poprzednich artykułach, umieść na nim 4 lampki i 4 przełączniki.

    Utwórz nowe zmienne wejściowe i podłącz je pod obiekt lampek. Zmienną o adresie %M16 nazwij Smartmod_IN0.

    Lampkę z podłączoną zmienną %M16 opisz jako Wejscie IN0.

    Analogicznie postępuj, tworząc kolejne trzy zmienne wejściowe: %M17, %M18 i %M19.

    Po utworzeniu zmiennych wejściowych, utwórz nowe zmienne wyjściowe i podłącz je pod obiekt przełącznika. Jako pierwszą utwórz zmienną o nazwie SmartMod_OUT0 i adresie %M32.

    Obiekt „Switch” opisz jako Wyjscie OUT0. Aby to zrobić, skorzystaj z pola Legend.

    Analogicznie postępuj, tworząc kolejne trzy zmienne wyjściowe:  %M33, %M34, %M35.

    Umieść na ekranie także pole tekstowe o nazwie SmartMod I/O oraz przycisk Screen Jump i skonfiguruj go jako Simulate ESC.

    Ten ekran operatorski będzie wywoływany z poziomu ekranu pierwszego. W tym celu na ekranie numer 1 dodaj obiekt Screen Jump. Ekranem docelowym będzie ekran numer 9. Zaznacz opcję Allow Escape.

    Tak przygotowany program wgraj do sterownika.

    Podłącz zasilanie do układu SmartMod i kabel komunikacyjny pomiędzy sterownikiem a modułem. Z poziomu ekranu 9 wysteruj wyjścia modułu.


    W kolejnym artykule z cyklu Kurs programowania PLC od podstaw: Komunikacja w sieci CsCAN

    • Co to jest protokół CsCAN i jak wygląda komunikacja w tym protokole?
    • Jak wygląda architektura w sieci CsCAN?
    • Jak połączyć układ SmartStix ze sterownikiem Horner XL7e?
    • Jak skonfigurować odczyt zmiennych z modułu SmartStix w sterowniku XL7e?

    Czy ten artykuł był dla Ciebie przydatny?

    Średnia ocena artykułu: 4.6 / 5. Ilość ocen: 21

    Ten artykuł nie był jeszcze oceniony.

    Zadaj pytanie

    Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

    2 odpowiedzi na “Komunikacja po protokole Modbus RTU | Kurs programowania PLC od podstaw | Odc.16”

      • Niektóre urządzenia mają odwrócone piny. Tutaj to dotyczy przesyłania i odbierania ramek, dlatego nawet jak coś nie działa to jednym z sugerowanych rozwiązań jest zamiana sygnałów, czyli zamianą + z -.

        Nie ma to nic wspólnego z zamianą zasilania czy czymś innym. Sygnał odwrócony = A = (-) = D- = TxD-/RxD-

        Sygnał nieodwrócony = B = (+) = D+ = TxD+/TxD-

        Jednak niektórzy producenci stosują odwrotne oznaczanie, czyli że A = D-, B=D+.

    Dodaj komentarz

    Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *