Test - moduł do konfiguracji

Ramki komunikatów Modbus RTU falownika Danfoss FC51

Sterowniki są skonfigurowane tak, aby komunikować się poprzez sieć Modbus w trybie RTU, gdzie każdy bajt w wiadomości 2 znaki 4-bitowe w kodzie szesnastkowym. Format każdego bajtu przedstawiono w tabeli.

System kodowania
Dwójkowy 8-bitowy, 0-9 szesnastkowy, AF. 2 znaki szesnastkowe zawarte w każdym polu 8-bitowym wiadomości

Liczba bitów na bajt
1 bit startu
8 bitów danych, najmniej ważny wysyłany jako pierwszy
1 bit parzystości/nieparzystości; brak bitu braku parzystości
1 bit stopu jeżeli występuje określenie parzystości; 2 bity jeżeli nie występuje określenie parzystości

Pole kontroli błędów
Cykliczna kontrola nadmiarowa (CRC)

Struktura komunikatu Modbus RTU

Urządzenie nadawcze umieszcza komunikat Modbus RTU w ramce o znanym punkcie początkowym i punkcie końcowym. Pozwala to urządzeniom odbiorczym na odczyt części adresowej na początku komunikatu, a zatem określenie do którego urządzenia komunikat został wysłany (lub do wszystkich, jeżeli komunikat jest typu broadcast) oraz rozpoznać koniec komunikatu. Urządzenia wykrywają komunikaty częściowe i uznają je za błędy. Znaki nadawane są w kodzie szesnastkowym, a zatem mają wartości od 00 do FF w każdym polu. przetwornica częstotliwości w sposób ciągły monitoruje magistralę sieci, również w czasie "cichych" przerw. W chwili odbioru pierwszego pola (pola adresu), każda przetwornica częstotliwości lub każde urządzenie rozszyfrowuje go, aby określić, do którego urządzenia komunikat jest adresowany. Komunikaty Modbus RTU z adresem zero są komunikatami typu broadcast. W przypadku komunikatów broadcast dopuszcza się brak odpowiedzi. Ramka typowej wiadomości przedstawiona jest w tabeli.

Start Adres Funkcja Dane Kontrola CRC Koniec
T1-T2-T3-T4 8 bitów 8 bitów N x 8 bitów 16 bitów T1-T2-T3-T4

Pole start/stop

Komunikaty zaczynają się od okresu cichego o długości przynajmniej 3,5 znaku. Ma ona postać wielokrotności przerw znaku dla wybranej szybkości transmisji sieci (przedstawionej jako Start T1-T2-T3-T4). Pierwsze nadawane pole jest adresem urządzenia. Po ostatnim nadanym znaku następuje również przerwa o długości przynajmniej 3,5 znaku, oznaczająca koniec komunikatu. Po upływie tego okresu może rozpocząć się nowy komunikat. Cała ramka komunikatu musi zostać nadana w sposób ciągły. Jeżeli przed zakończeniem ramki wystąpi okres cichy o długości większej niż 1,5 znaku, urządzenie odbiorcze odrzuca niekompletny komunikat i uznaje, że kolejny odebrany bajt.

będzie polem adresu nowego komunikatu. W ten sposób każda nowa wiadomość, rozpoczynająca się przed przerwą o długości 3,5 znaku po poprzednim komunikacie, urządzenie odbiorcze uzna ją za ciąg dalszy poprzedniego komunikatu. Spowoduje to tzw. time out (czyli brak odpowiedzi od slave'a), ponieważ wartość w ostatnim polu CRC nie będzie odpowiadała połączonym komunikatom.

Pole adresu

Pole adresu ramki komunikatu zawiera 8 bitów. Prawidłowe adresy urządzeń podrzędnych (slave) mieszczą się w zakresie od 0 do 247 w kodzie dziesiętnym. Poszczególne urządzenia podrzędne otrzymują adresy z puli 1 - 247. (0 jest zarezerwowane dla trybu broadcast rozpoznawanego przez wszystkie slave'y.) Master kieruje komunikat do danego slave'a umieszczając adres slave w polu adresu komunikatu. Gdy slave wysyła odpowiedź, umieszcza jej polu adresu swój adres, aby master rozpoznał który ze slave'ów odpowiada.

Pole funkcji

Pole funkcji ramki komunikatu zawiera 8 bitów. Prawidłowe kody mieszczą się w zakresie od 1 do FF. Pola funkcji służą do przesyłania komunikatów między urządzeniem nadrzędnym (master) i podrzędnym (slave). Kiedy master wysyła komunikat do slave'a, pole kodu funkcji "mówi" slave'owi, jakie działanie ma on wykonać. Gdy slave odpowiada masterowi, używa pola kodu funkcji aby wskazać, że odpowiedź jest normalna (tj. pozbawiona błędów), lub że wystąpił jakiś błąd (wtedy odpowiedź nazywana jest odpowiedzią wyjątku). W przypadku odpowiedzi normalnej slave po prostu zwraca echo pierwotnego kodu funkcji. W przypadku odpowiedzi wyjątku, slave zwraca kod będący odpowiednikiem pierwotnego kodu funkcji, gdzie najważniejszy bit jest ustawiony na logikę 1. Ponadto slave dodaje unikalny kod w polu danych komunikatu odpowiedzi. Mówi on masterowi, jaki błąd wystąpił lub podaje przyczynę wyjątku. Patrz również 8.8.10 Kody funkcji obsługiwane przez Modbus RTU i 8.8.11 Kody wyjątków błędów.

Pole danych

Pole danych zbudowane jest z zestawu dwóch cyfr w kodzie szesnastkowych, tj. w zakresie od 00 do FF. Składają się one na jeden znak RTU. Pole danych komunikatów wysłanych przez mastera do slave'a zawiera informacje dodatkowe, które slave musi wykorzystać aby wykonać działanie opisane w kodzie funkcji. Informacje te mogą zawierać np. adresy coil lub rejestru, liczbę pozycji do przetworzenia oraz liczbę rzeczywistych bitów danych w polu.

Pole kontroli CRC

 Komunikaty zawierają pole kontroli błędów, którego zasadza działania opiera się na metodzie cyklicznej kontroli nadmiarowej (CRC). Pole CRC "sprawdza" treść całego komunikatu. Jest one włączane do komunikatu bez względu na metodę kontroli parzystości stosowaną do sprawdzania poszczególnych znaków komunikatu. Urządzenie nadawcze oblicza wartość CRC i dołącza ją w postaci ostatniego pola komunikatu. Urządzenie odbiorcze ponownie przelicza CRC w chwili odbioru komunikatu i porównuje wynik z wartością rzeczywistą otrzymaną w polu CRC. Jeżeli wartości nie są równe sobie, następuje time out magistrali. Pole kontroli błędów zawiera wartość binarną 16-bitową w postaci dwóch bajtów 8-bitowych. Po jej obliczeniu, bajt niższego rzędu w polu jest dołączany jako pierwszy, za nim następuje bajt wyższego rzędu. Bajt wyższego rzędu CRC jest ostatnim bajtem nadawanym w komunikacie.

Drukuj