Prosta konfiguracja sieci
Jak szybko i łatwo skonfigurować komunikację pomiędzy dwoma sterownikami sieciowymi PFC200 w sieci MODBUS RTU? To proste! Wystarczy dodać moduł komunikacyjny 750-653/003-000 i skorzystać z MODBUS Master Configurator wbudowanego w WAGO-I/O-PRO . Jak to zrobić, prezentujemy poniżej.
Połączenia elektryczne
Aby skomunikować ze sobą dwa sterowniki w sieci MODBUS RTU, należy zacząć od połączenia pary zacisków TX oraz RX na modułach sterowników, a następnie przewód oznaczony D+ z przewodem oznaczonym D-, zgodnie z poniższym schematem.
Połączenie można wykonać wykorzystując skrętkę dwużyłową J-Y(ST)Y.
MODBUS Master Configurator
WAGO-I/O-PRO posiada wbudowany konfigurator przeznaczony do parametryzacji sieci MODBUS RTU. Automatycznie definiuje on zmienne oraz generuje kod programu w postaci bloków funkcyjnych.
Zaczynamy od przygotowania sterownika PFC200 do pracy w trybie master. W tym celu należy przejść do zakładki Resources w oprogramowaniu WAGO-I/O-PRO, a następnie otworzyć PLC Configuration, wybrać MODBUS-Master[FIX] i kliknąć prawym przyciskiem myszy w Network View.
Kolejnym krokiem jest dodanie interfejsu szeregowego oraz parametryzacja standardu RS-485. Należy określić numer portu komunikacyjnego, prędkość transmisji, liczbę bitów danych, liczbę bitów stopu, parzystość itd.
Jeżeli korzystamy z urządzenie innego producenta niż WAGO, należy wybrać opcję Generic MODBUS slave.
Istotnym parametrem podczas konfiguracji jest Timeout. Jest to czas, po którym urządzenie typu master zgłasza błąd w przypadku braku odpowiedzi od urządzenia typu slave. Ustawiany jest także czas opóźnienia między wysłaniem kolejnej ramki MODBUS oraz adres slave’a (MODBUS unit ID).
Deklaracja zmiennych odbywa się w oknie konfiguratora. Należy wpisać zmienne przeznaczone tylko do odczytu (read only) oraz zmienną do zapisu (write only). Klikając na daną zmienną prawym klawiszem myszy wybieramy „Edit address”, a następnie parametryzujemy wyświetlone okno.
Wykorzystujemy do tego funkcje MODBUS nr 03 (FC3), która odpowiada za odczyt rejestrów pamiętających (holding registers). Adres dla danej zmiennej zaczyna się od adresu 0.
W sterowniku typu master zapisujemy również dane dla slave’a, korzystając z funkcji MODBUS nr 16 (FC16). Adres dla zmiennej tylko do zapisu zaczyna się od 100.
W głównym oknie konfiguratora istnieje możliwość zmiany typu zmiennej (w tym przypadku są to zmienne typu WORD) oraz trybu dostępu do danej zmiennej: tylko do odczytu (read only) lub tylko do zapisu (write only).
Następnie generujemy kod programu i zapisujemy konfigurację.
W drzewie projektu powinny pojawić się automatycznie wygenerowane obiekty. Zmienne zadeklarowane dla slave’a dostępne są w programie MBCFG_MODBUSSlave. Można do nich przyporządkować zmienne zadeklarowane w programie głównym.
Konfiguracja sterownika PLC pracującego w trybie slave
W pierwszej kolejności należy dodać określoną bibliotekę o nazwie „Modb_l05.lib”. Razem z biblioteką „Modb_l05.lib” zostanie automatycznie dodanych kilka dodatkowych bibliotek.
W celu konfiguracji sterownika PFC200 do pracy w trybie slave należy zadeklarować w głównym programie blok funkcyjny „MODBUS_EXTENDED_SLAVE”.
Parametry wejściowe oraz wyjściowe bloku funkcyjnego muszą być odpowiednio sparametryzowane według dokumentacji opisującej bibliotekę „Modb_l05.lib”.
Opis poszczególnych wejść oraz wyjść bloku funkcyjnego znajduje się w opisie biblioteki „SerComm” dodawanej automatycznie do projektu razem z biblioteką „Modb_I05.lib”. Można go znaleźć w zakładce Library Manager, w sekcji Data types.
Wgrywanie programów oraz sprawdzanie poprawności działania komunikacji
Nadszedł czas na kompilację projektów napisanych w środowisku WAGO-I/O-PRO, a następnie wgrywanie programów do sterowników. Jako pierwszy należy wgrać program dla sterownika PFC200, który ma pełnić funkcję mastera.
Po wgraniu programów do obu sterowników trzeba się upewnić, czy komunikacja jest aktywna. Można to sprawdzić, analizując stany diod na modułach komunikacyjnych 750-653/003-000 (szczegóły tabela poniżej).
Analiza programów w trybie on-line z wykorzystaniem oprogramowania WAGO-I/O-PRO
W MODBUS master przygotowana jest wartość dla zmiennej wWrite przeznaczonej do zapisu do slave’a. Jest to wartość w systemie dziesiętnym i wynosi 1555. MODBUS master odbiera wartość ze slave’a, która wynosi 200 w systemie dziesiętnym.
Slave zapisuje do adresu nr 0 wartość 200. Master odpytuje slave’a o adres nr 0. Slave odbiera od mastera wartość 1555 zapisaną w systemie dziesiętnym.
Maciej Kurantowicz, WAGO.PL
Czytaj więcej
MODBUS RTU z wykorzystaniem WAGO-I/O-SYSTEM, cz. 1
MODBUS RTU z wykorzystaniem WAGO-I/O-SYSTEM, cz. 2
A czy można jedną zmienną w Slavie zapisywać i odczytywać?
Opcja read/write w konfiguratorze nie działa.
W bibliotece można to zrealizować funkcją FC23.
Pełną odpowiedź przesłaliśmy na e-maila.
Czy jest dostępny przykład użycia funkcji F23?
Funkcja 23 nie jest obsługiwana przez konfigurator modbus w CoDeSys 2.3. Nie zawsze jest także zaimplementowana jej obsługa w urządzeniach i częściej spotyka się odczyt funkcją 3 (read holding registers) lub 4 (read input registers) i zapis funkcją 6 (write single register) lub 16 (write multiple registers). Przygotowaliśmy bibliotekę ModbusEasy, która zastępuje w rozbudowanych aplikacjach konfigurator modbusowy. W paczce znajdują się biblioteki, które należy dołączyć do projektu, przykładowa aplikacja z wykorzystaniem wszystkich dostępnych bloków funkcyjnych oraz manual opisujący każdy z elementów biblioteki. W razie problemów zapraszamy do kontaktu ze wsparciem technicznym. [LINK]
Czy sterownik np. PFC200 może pracować zarazem jako slave i master. Chciałbym z modułu 750-653 odczytywać parametry z urządzenia, a port wbudowany w sterownik służyłby do udostępniania danych dla systemu nadrzędnego.
Sterownik 750-8202 może pracować zarówno jako slave i master na dwóch różnych portach.
W takiej konfiguracji nie ma problemu, aby sterownik był równocześnie slave’m i masterem.
Dziękuje serdecznie za odpowiedź. Mam ogromną prośbę, czy mógłby Pan wysłać mi na maila krótki opis co powiniem skonfigurować w sterowniku WAGO, aby móc z COM0 odczytywać wartości poprzez MODBUS RTU. Przyznam jestem początkującym programistą sterowników WAGO.
Poleciało na e-mail.
Poproszę o przesłanie jak wyżej.
Poleciało na e-mail
Witam serdecznie.
W jak najprostszy sposób przeprowadzać diagnostykę sieci MODBUS (sprawdzanie czy slave jest online) przy wykorzystaniu MODBUS RTU Fieldbus Configurator wbudowanego w e!Cockpit ?