883 instrukcja Modbus


Opracowanie: mgr inż. Paweł Ilczyszyn, mgr inż. Paweł Dobrowolski
Katedra Inżynierii Systemów Sterowania
1. Wstęp
Celem ćwiczenia laboratoryjnego jest zapoznanie się z protokołem komunikacyjnym Modbus. W
czasie zajęć wykonywane i oceniane będą następujące zadania:
- Nawiązanie komunikacji poprzez protokół Modbus RTU, pomiędzy sterownikiem
programowalnym a programem Mtester.
- Komunikacja pomiędzy środowiskiem Matlab a sterownikiem programowalnym przy
wykorzystaniu protokołu Modbus RTU.
- Komunikacja pomiędzy środowiskiem Matlab a sterownikiem programowalnym przy
wykorzystaniu protokołu TCP/IP.
- Sterowanie obiektem z wykorzystaniem regulatora zaimplementowanego na sterowniku
programowalnym i komunikującego się po protokole Modbus .
Wszystkie powyższe zadania są szczegółowo opisane w dalszym rozdziałach instrukcji. Zadanie
czwarte w zależności od jakości wykonania może być ocenione na ocenę ponad bardzo dobrą.
2. Wprowadzenie
Modbus jest protokołem komunikacyjnym stworzonym przez firmę Modicon w 1979 roku.
Początkowo stworzony został w celu komunikacji ze sterownikami programowalnymi producenta,
jednakże w pózniejszym czasie stał się otwartym protokołem. Modbus pomimo upływu długiego
czasu od powstania w dalszym ciągu jest stosunkowo często wykorzystywany w przemyśle. Dzieje
się tak ze względu na prostotę działania, otwartość protokołu oraz zasadzie dostępu dołącza  Master
 Slave .
Komunikacja pomiędzy urządzeniami odbywa się asynchronicznie, z wykorzystaniem interfejsu RS-
232 lub zgodnych RS-422, RS-485.
Protokół modbus zajmuje trzy warstwy w w modelu ISO/OSI:
- warstwa 1 (fizyczna)  definiuje w jaki sposób wysyłane i odbierane są sygnały, przy wykorzystaniu
specyfikacji RS-232, RS-422 lub RS-485.
- warstwa 2 (łącza danych)  nadzoruje ruch w oparciu o protokół typu Master-Slave,
wykorzystywane są ramki typu RTU lub ASCII.
- warstwa 7 (aplikacji)  określa w jaki sposób następuje komunikacja : klient-serwer.
2.1 Tryby transmisji.
Protokół Modbus umożliwia komunikację za pomocą dwóch typów ramek:
Tryb ASCII (znakowy)
Każdy bajt w wiadomości wysyłany jest w postaci dwóch znaków ASCII
Rysunek1 Ramka protokołu Modbus - tryb ASCII.
Tryb RTU (binarny)
Pomiędzy ramkami wymagana jest przerwa trwająca co najmniej 3.5 x T, gdzie T  czas trwania
pojedynczego znaku.
Dodatkowo odstępy pomiędzy kolejnymi znakami w jednej ramce nie mogą być większe niż 1.5 x T.
Rysunek2 Ramka protokołu Modbus - tryb RTU.
Szczegółowy opis ramki (na podstawie RTU).
Adres  adres urządzenia slave z którym ma nastąpić komunikacja, zakres od 1 do 247. Dodatkowo
adres 0 wykorzystywany jest jako adres rozgłoszeniowy, wykorzystywany do komunikacji ze
wszystkimi urządzeniami.
Funkcja  kod rozkazu, który określa konkretne polecenie żądane przez Mastera. Zakres funkcji
zawiera się od 1 do 255.
Kod Kod (hex) Opis
1 01h Odczyt wyjść bitowych
2 02h Odczyt wejść bitowych
3 03h Odczyt n rejestrów
4 04h Odczyt n rejestrów wejściowych
5 05h Zapis 1 bitu
6 06h Zapis 1 rejestru
7 07h Odczyt statusu urządzenia slave
8 08h Test diagnostyczny
15 0Fh Zapis n bitów
16 10h Zapis n rejestrów
17 11h Identyfikacja urządzenia slave
128-255 80h-FFh Zarezerwowane dla odpowiedzi błędnych
Dane  pole to zawiera dodatkowe dane potrzebne do wykonania polecenia przez urządzenie Slave.
Mogą to być adresy rejestrów, liczba bajtów lub też inne dane. Przykładowo przy zapisie danych (kod
funkcji 10h) wymagane jest podanie adresu rejestru początkowego, ilość rejestrów, ilość pozostałych
bajtów w polu danych oraz dane przeznaczone do zapisu.
W przypadku sterowników firmy GE-Fanuc, występują następujące zależności pomiędzy obszarami
pamięci, a kodowaniem danych w ramce:
%Qxxxx  numeracja od 0xxxx (np. %Q0001  00 000),
%Ixxxx  numeracja od 1xxxx (np. %I0001  10 000),
%AIxxxx  numeracja od 3xxxx (np. %AI0001  30 000),
%Rxxxx  numeracja 4xxxx (np. %R0001  40 000).
Kontrola danych  odbywa się w celu weryfikacji poprawności wysyłanych danych. W przypadku
ramki RTU wykorzystywane jest CRC (Cyclical Redundancy Check), czyli 16 bitowe słowo kontrolne.
CRC zajmuje 2 bajty i dołączane jest na końcu ramki.
Algorytm obliczania CRC:
1) Załadowanie FFFFh do 16 bitowego rejestru CRC
2) Pobranie bajtu z bloku danych (zabezpieczana wiadomość) i wykonanie operacji EXOR z
młodszym bajtem rejestru, umieszczenie rezultatu w rejestrze.
3) Przesunięcie zawartości rejestru w prawo o 1 bit oraz wpisanie 0 na najbardziej znaczący bit
(MSB).
4) Sprawdzenie stanu najmłodszego bitu (LSB) w rejestrze. Jeżeli stan równy jest 0 to następuje
powrót do punktu 3 (kolejne przesunięcie), jeżeli 1 to wykonywana jest operacja EXOR
rejestru ze stałą A001h.
5) Powtórzenie kroków 3) o 4) osiem razy (przetworzenie całego bajtu).
6) Powtórzenie sekwencji 2, 3, 4, 5 dla kolejnego bajtów wiadomości.
7) Zawartość rejestru po wykonaniu wszystkich powyższych kroków jest wartością CRC.
Rysunek4 Algorytm obliczania CRC.
Tryb RTU z wykorzystaniem TCP/IP
Rysunek 3 Ramka Modbus TCP/IP.
Ramka podobna jak w trybie RTU, lecz rozszerzona o parametry:
identyfikator transakcji  dwubajtowe pole identyfikujące zapytanie w celu powiązanie z
odpowiedzią. Najczęściej pozostawiane jako 0.
identyfikator protokoły  dwubajtowe pole zarezerwowane dla przyszłych rozszerzeń. Aktualnie
przyjmuje wartość 0.
Długość  dwubajtowe pole określające liczbę bajtów w komunikacie.
3. Zadania do wykonania
3.1 Zestawienie komunikacji programu Mtester ze sterownikiem programowalnym (transmisja
szeregowa).
Celem zadanie jest wykonanie następujących poleceń:
- zestawienie komunikacji pomiędzy programem Mtester i sterownikiem;
- zapisanie i odczytanie przykładowych wartości liczbowych w rejestry podane przez prowadzącego;
- przeanalizowanie struktury wysyłanych i odbieranych ramek.
Informacje pomocnicze:
Konfiguracja programu Mtester.
Mtester jest darmowym programem symulacyjnym służącym do badania komunikacji pomiędzy
komputerem PC a urządzeniem obsługującym protokół Modbus. Program ten działa jako master i
komunikuje się za pomocą portu szeregowego RS-232 bądz też RS-485.
W celu skonfigurowania połączenia należy przejść do zakładki  Modbus Settings i podać parametry
zgodne z wcześniej użytymi na sterowniku programowalnym.
Port COM: zgodny z aktualnie używanym na komputerze,
Baud rate: 9600, Data bits: 8, Parity: none, Stop bits: 2,
Rysunek5 Konfiguracja programu Mtester.
Konfiguracja sterownika GE Fanuc serii 90-30 do pracy jako Modbus  Slave.
Należy skonfigurować sterownik programowalny. Następnie należy przejść do zakładki
odpowiedzialnej za konfigurację modułu CMM311 i ustawić tryb pracy RTU na porcie 2. Dalej, w
zakładce port 2 należy podać następujące parametry pracy:
Rodzaj transmisji: RS232
Prędkość: 9600
Flow control: none
Parity: none
Następnie należy fizycznie podłączyć przewód RS-232 pomiędzy portem 2 modułu CMM311 a portem
COM komputera, który będzie służył jako master.
3.2 Komunikacja pomiędzy środowiskiem Matlab, a sterownikiem programowalnym przy
wykorzystaniu portu szeregowego.
Wykorzystując środowisko Matlab napisać aplikację, która realizuje polecenia:
- Zestawienie połączenia ze sterownikiem programowalnym po porcie szeregowym RS-232(protokół
Modbus).
- Odczytanie i zapisanie dowolnej wartości pod rejestr i wyjście bitowe sterownika podane przez
prowadzącego. W celu realizacji tego zadania należy odpowiednio sformułować ramkę danych.
Informacje pomocnicze:
Sumę kontrolną CRC można obliczyć na stronie internetowej [1] bądz skorzystać z gotowego mpliku
dostarczonego do ćwiczenia.
Komendy wykorzystywane w środowisku Matlab
 Serial  deklaracja parametrów portu szeregowego.
Główne parametry konfiguracyjne polecenia  serial - numer portu, BaudRate, StopBits, Parity
 Fopen  otwiera połączeni z portem, plikiem
 Fwrite  wysyła dane do wskazanego portu, pliku
 fread  odczytuje dane ze wskazanego portu, pliku
 Fclose  zamyka połączenie z danym portem, plikiem
 delete(instrfindall)  zamyka wszystkie otwarte porty przez środowisko Matlab
 hex2dec  konwertuje wartość wyrażoną w systemie szesnastkowym na wartość dziesiętną
3.3 Komunikacja pomiędzy środowiskiem Matlab a sterownikiem programowalnym przy
wykorzystaniu protokołu TCP/IP.
Celem zadania jest:
- zestawienie połączenia pomiędzy środowiskiem Matlab, a programem mod_RSsim za pomocą
protokołu Modbus TCP/IP.
- Odczytanie i zapisanie dowolnej wartości pod rejestr i wyjście bitowe sterownika podane przez
prowadzącego.
- weryfikacja działania na sterowniku Pac RX3i.
Informacje pomocnicze:
Mod_RSsim jest programem symulacyjnym, który może zastąpić sterownik programowalny.
Głównym celem wykorzystania programy jest szybkie i bardzo proste testowanie komunikacji przy
wykorzystaniu protokołu Modbus. W przypadku braku obecności programu na komputerze możliwe
jest pobranie go ze strony autora [5].
Konfiguracja środowiska Matlab.
W celu korzystania z poleceń do komunikacji po protokole TCP/IP należy wykorzystać zewnętrzny
toolbox o nazwie  TCP/UDP/IP Toolbox . Toolbox ten dostępny jest na stronie przedmiotu [6] bądz
autora [7]. Należy go pobrać a następnie rozpakować do dowolnego katalogu. Ważne jest aby mpliki,
które będą tworzone w ramach tego zadania również znajdowały się w folderze z rozpakowaną
biblioteką.
Komendy wykorzystywane w środowisku Matlab
con=pnet('tcpconnect','hostname',port)  inicjalizacja połączenia TCP/IP, gdzie  hostname  nazwa
lub adres stacji docelowej, port  numer portu po którym wykonywana będzie komunikacja
elements=pnet(con,'write', data [,swapping])  polecenie służące do zapisy danych poprzez port
TCP/IP. Data  wysyłane dane, [ ]  dodatkowe parametry określające konwencje przesyłania danych
little endian bądz big endian.
pnet(con,'close')  plecenie służące do zakończenia transmisji.
Więcej poleceń i bardziej szczegółowe dane dostępne są po wywołaniu polecenia: help pnet
Konfiguracja sterownika GE Fanuc serii Pac RX3i do pracy jako Modbus  Slave.
Po skonfigurowaniu sterownika programowalnego należy przejść do zakładki odpowiedzialnej za
ustawienia procesora. Pózniej należy odszukać wewnętrzną zakładkę  Settings i przestawić opcję
 Modbus Address Space Mapping Type zgodnie z poniższą ilustracją.
Rysunek6 Konfiguracja procesora sterownika Pac Rxi3.
W dalszej kolejności należy odszukać moduł komunikacyjny ETM001 i nadać odpowiedni adres IP z
zakresu od 192.168.1.2 do 192.168.1.99 oraz ustalić maskę podsieci 255.255.255.0.
Rysunek7 Konfiguracja modułu ETM001.
3.4 Sterowanie obiektem z wykorzystaniem regulatora zaimplementowanego na sterowniku
programowalnym i komunikującego się po protokole Modbus .
Celem zadania jest:
- Zamodelowanie prostego obiektu regulacji w środowisku Matlab, np. inercja.
- Zaprojektowanie i implementacja prostego regulatora po stronie sterownika programowalnego (np.
PID lub regulator dwu stanowy).
- Ustanowienie komunikacji pomiędzy obiektem i regulatorem. Komunikacja powinna odbywać się za
pomocą protokołu Modbus RTU lub Modbus TCP/IP.
4. Dodatek  szczegółowa specyfikacja ramek wysyłanych przez protokół Modbus [3].
1) Odczyt wyjść bitowych  funkcja 01h
2) Odczyt wejść cyfrowych  funkcja 02h
3) Odczyt n rejestrów  funkcja 03h
4) Odczyt n rejestrów wejściowych  funkcja 04h
5) Zapis 1 bitu  funkcja 05h
6) Zapis 1 rejestru  funkcja 06h
7) zapis n bitów  funkcja 0Fh
8) zapis n rejestrów  funkcja 10h
Bibliografia
[1] http://www.lammertbies.nl/comm/info/crc-calculation.html, Kalkulator CRC, dostęp z dnia
15.04.2012
[2]  Protokół Modbus  dr inż. T. Rutkowski
[3] MODBUS APPLICATION PROTOCOL SPECIFICATION V1.1b, pobrane ze strony http://www.Modbus-
IDA.org
[4] http://www.modbus.pl, strona autorów programu Mtester
[5] http://www.plcsimulator.org/, strona autorów programu Mod_RSsim
[6] http://www.ely.pg.gda.pl/kiss/dydaktyka/psi
[7] http://www.mathworks.com/matlabcentral/fileexchange/345, toolbox TCP/UDP/IP


Wyszukiwarka

Podobne podstrony:
instrukcja prezentacja2
instrukcja bhp przy obsludze euro grilla
DS1000PL Instrukcja
Blaupunkt CR5WH Alarm Clock Radio instrukcja EN i PL
Instrukcja do cwiczenia 4 Pomiary oscyloskopowe
Instrukcja F (2010)
Instrukcja Programowania Zelio Logic 2 wersja polska
Instrukcja kociol MODERATOR 75 200kW pl
Instrukcje 2
Instrukcja
12 Wykonywanie sterylizacji instrumentów, materiałów

więcej podobnych podstron