Komunikacja po protokole Modbus RTU | Kurs programowania PLC od podstaw | Odc.16
Sprawdź, co to jest protokół Modbus RTU oraz jak wygląda architektura sieci opartej o Modbus RTU.
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 oraz karta MicroSD
- 22. Trendy historyczne oraz receptury w programie
- 23. Setpoint, backup i restore danych oraz generowanie raportów z poziomu sterownika
- 24. 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.
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.
Chcesz nauczyć się programować sterowniki PLC?
Wszystkie odcinki kursu, bezpłatne oprogramowanie oraz dodatkowe materiały znajdziesz na stronie: Kurs - programowanie PLC od podstaw (https://www.astor.com.pl/poradnikautomatyka/kurs-programowania-plc-od-podstaw-dla-elektrykow-i-automatykow/)
Sprawdź pozostałe bezpłatne kursy i poradniki na Poradniku Automatyka. (https://www.astor.com.pl/poradnikautomatyka/)