Kurs obsługi sterowników PLC M
- Wprowadzenie do oprogramowania UperLogic
- Pierwszy program i wgranie do PLC
- Karta Stanu i Wykresy Zmiennych
- Zegary i liczniki
- Widok urządzenia
- Moduły analogowe (w budowie)
- Moduły temperaturowe (w budowie)
- Przerwania
- Modbus
- Język Stukturalny
- Bloki funkcyjne
- Import Projektu z WinProLadder do UperLogic
Modbus - informacje ogólne
Sposób przesyłania danych
Dane w Modbusie nie są przesyłane jako ciągły strumień, lecz jako paczki danych zwarte ramkami. Dane w ramce posiadają ściśle określoną strukturę.
- Adres Slave (1 bajt) – Numer urządzenia, do którego kierowane jest zapytanie (np. serwo nr 5).
- Kod funkcji (1 bajt) – Instrukcja dla urządzenia (np. “odczytaj rejestr” albo “zapisz wartość”).
- Dane (N bajtów) – Konkretne informacje, np. adres rejestru, który chcemy sprawdzić lub wartość prędkości, którą chcemy ustawić.
- Suma kontrolna (CRC – 2 bajty) – Mechanizm bezpieczeństwa. Jeśli podczas przesyłu wystąpił błąd (zakłócenie), suma się nie zgadza i urządzenie ignoruje ramkę.
Architektura Master - Slave
Modbus opiera się na relacji Master-Slave (Nadrzędny-Podrzędny). Jest to model komunikacji, który określa ścisłe zasady wymiany danych w sieci oraz sposób, w jaki urządzenia komunikują się między sobą.
- Master (PLC – sterownik) zarządza całą komunikacją w sieci i jako jedyny może ją inicjować. Wysyła zapytania, określając, jakie dane chce odczytać (np. pozycję serwonapędu) lub jakie wartości zapisać (np. prędkość).
- Slave nie inicjuje transmisji. Pracuje w trybie nasłuchiwania i odpowiada wyłącznie na zapytania skierowane do jego unikalnego adresu. Ramki przeznaczone dla innych urządzeń są przez niego ignorowane.
W przykładach poniżej zostanie pokazana komunikacja dwóch sterowników Fatek za pomocą protokołu Modbus.
Modbus TCP
ModBus TCP działa w oparciu o protokół TCP/IP, wykorzystując standardową sieć Ethernet. Urządzenie typu client wysyła zapytania o odczyt lub zapis rejestrów, a urządzenie server odpowiada, przesyłając wymagane dane. Komunikacja odbywa się poprzez pakiety TCP na porcie 502, bez mechanizmów synchronizacji czasu.
Przykładowa Topologia:
Konfigruacja slave’a
W pierwszej kolejności należy wejść w Konfiguracje komunikacji:
Następnie w Alokacji Adresów ModBus sprawdzić jaki adres ModBus posiada szukana przez nas zmienna, która ma być zapisywana bądź odczytywana.
Przykładową daną będzie Rejestr R0. Rejestry od R0 – R47319 odpowiadają adresom ModBus 400001 – 447320 czyli :
R0 -> 400001
R1 -> 400002
Itd…
Następnie należy nadać adres tabeli – w programie przypisano jej adres R1000. Nawet pusta tabela zajmuje rejestry od R1000 do R1009, a wraz ze zwiększaniem jej rozmiaru liczba zajmowanych rejestrów będzie rosła. Należy upewnić się, że rejestry używane przez tabelę nie kolidują z innymi rejestrami wykorzystywanymi w programie, oraz należy nadać nazwę tabeli.
Następnie w tabeli (przykład) należy:
- Wpisać adres IP urządzenia, z którego będą odczytywane dane (slave’a).
- Nacisnąć przycisk Dodaj.
- Wypełnić tabelę z danymi komunikacji
- Komenda – w tym przypadku odczyt.
- Dane mastera -miejsce zapisu odczytanych danych. W projekcie jest to R50.
- Dane slave’a – odczytywany jest rejestr R0, którego adres Modbus wynosi 400001,
- Rozmiar danych do odczytania – określa sekwencyjną liczbę rejestrów; np. wartość 10 oznacza odczyt zakresu 400001-400010 i zapisze od R50 do R59. Ponieważ wymagany jest tylko rejestr 400001, rozmiar danych wystarczy ustawić na 1.
- Pole „Operacja” zostanie uzupełnione automatycznie.
Przed funkcją zastosowano styk normalnie otwarty M0, aby komunikacja była wywoływana tylko wtedy, gdy jest to potrzebne. Dodatkowo dodano styki M100–M102, służące do kontroli poprawności przebiegu komunikacji, postawiono je na wyjściach funkcji:
- ACT (aktywna),
- ERR (błąd)
- DN (zakończona).
Po aktywacji funkcji NCR wartość rejestru R0 w urządzeniu slave zostanie odczytana i zapisana pod adresem R50 w urządzeniu master. Następnie w drzewie projektu na wejść zakładkę Karty stanu prawym przyciskiem myszy a następnie Nowa karta stanu:
Modbus RTU
Modbus RS 485 to standard przemysłowej komunikacji szeregowej. Protokół Modbus RTU definiuje sposób przesyłania danych, natomiast RS485 określa warstwę fizyczną transmisji.
Fizyczna warstwa RS 485
Standard RS-485 wykorzystuje transmisję różnicową. Dane nie są przesyłane względem masy, lecz jako różnica potencjałów między dwiema liniami sygnałowymi. Rozwiązanie to pozwala skutecznie ograniczyć wpływ zakłóceń elektromagnetycznych. Do komunikacji RS-485 należy stosować skrętkę ekranowaną, ponieważ skręcenie żył odgrywa kluczową rolę w redukcji zakłóceń. Ekran kabla powinien być uziemiony w jednym punkcie. Magistrala musi być szeregowa oraz zakończona rezystorem o wartości 120 Ω, podłączonym pomiędzy liniami. Rezystor terminujący należy zamontować wyłącznie na obu fizycznych końcach magistrali. Długość kabla nie może przekraczać 1200m. W sieci RS-485 może pracować tylko jeden Master, a każde urządzenie Slave musi posiadać unikalny adres z zakresu 1–247. Do jednego segmentu magistrali można podłączyć maksymalnie 32 urządzenia.
Porty komunikacyjne w PLC Fatek serii M
Jak widać na załączonym module komunikacyjnym oraz jednostce głównej, linie sygnałowe oznaczone są jako „+” oraz „–”. W urządzeniach Slave często można jednak spotkać inne oznaczenia – linię ujemną jako B, a dodatnią jako A. W standardzie RS-485 nie istnieje jedno, ujednolicone nazewnictwo linii sygnałowych, dlatego oznaczenia mogą się różnić w zależności od producenta.
Ustawienia komunikacji
- Baud rate (prędkość transmisji) – określa liczbę bitów przesyłanych w ciągu sekundy (np. 9600, 19200, 38400 bps).
- Liczba bitów danych – zazwyczaj 8 bitów.
- Parzystość (Parity) – mechanizm kontroli błędów (None / Even / Odd).
- Liczba bitów stopu – zwykle 1.
Wszystkie urządzenia w sieci muszą mieć ustawione te same wartości!
Następnie w Alokacji Adresów ModBus sprawdzić jaki adres ModBus posiada szukana przez nas zmienna która ma być zapisywana bądź odczytywana.
Następnie należy nadać adres tabeli – w programie przypisano jej adres R1000. Nawet pusta tabela zajmuje rejestry od R1000 do R1009, a wraz ze zwiększaniem jej rozmiaru liczba zajmowanych rejestrów będzie rosła. Należy upewnić się, że rejestry używane przez tabelę nie kolidują z innymi rejestrami wykorzystywanymi w programie, oraz należy nadać nazwę tabeli.
Opis tabeli Modbus Master:
- Komenda – w tym przypadku odczyt. Do wyboru jest jeszcze zapis oraz pojedynczy zapis. Pojedynczy zapis modyfikuje tylko jeden rejestr, podczas gdy zapis pozwala na przesłanie całego bloku danych w jednej ramce komunikacyjnej.
- Slave – numer slave’a z którego tyczy się operacja.
- Dane mastera -miejsce zapisu odczytanych danych. W projekcie jest to R50.
- Dane slave’a – odczytywany jest rejestr R0, którego adres Modbus wynosi 400001.
- Rozmiar danych do odczytania – określa sekwencyjną liczbę rejestrów; np. wartość 10 oznacza odczyt zakresu 400001-400010 i zapisze od R50 do R59. Ponieważ wymagany jest tylko rejestr 400001, rozmiar danych wystarczy ustawić na 1.
- Pole „Operacja” zostanie uzupełnione automatycznie.
Następnie w programie głównym Main należy wstawić funkcję 150.M-BUS która odpowiada za inicjowanie i obsługę komunikacji ModBus RTU.
Funkcja 150.M-BUS posiada 3 parametry:
- Pt – Na którym porcie podłączona jest komunikacja ModBus (1-4).
- SR – Początkowy rejestr tabeli ModBus Master.
- WR – rejestry robocze potrzebne do obsługi funkcji.
Przed funkcją zastosowano styk normalnie otwarty M0, aby komunikacja była wywoływana tylko wtedy, gdy jest to potrzebne. Dodatkowo dodano styki M100–M102, służące do kontroli poprawności przebiegu komunikacji, postawiono je na wyjściach funkcji:
- ACT (aktywna),
- ERR (błąd)
- DN (zakończona).
Przed funkcją został postawiony jeszcze bit systemowy $COM_READY_P1 odpowiadający za gotowość portu 1.
Po aktywacji funkcji M-BUS wartość rejestru R0 w urządzeniu slave zostanie odczytana i zapisana pod adresem R50 w urządzeniu master. Następnie w drzewie projektu na wejść zakładkę Karty stanu prawym przyciskiem myszy, a następnie Nowa karta stanu:
