Reklama
Dzisiaj jest 10 stycznia 2025 r.
Chcę dodać własny artykuł
Reklama
Reklama
Reklama

Modbus

Modbus – protokół komunikacyjny stworzony przez firmę Modicon. Służy do komunikacji z programowalnymi kontrolerami tej firmy, a także innych producentów. Umożliwia zarządzanie siecią takich urządzeń jak np. system sterowania temperatury i wilgotności. Powstały wersje dla portu szeregowego i dla sieci IP. W sieciach IP używany jest protokół TCP na porcie 502. Modbus jest protokołem typu Client-Server.
Modbus został stworzony w 1979r. przez firmę Modicon. Firma ta została przejęta przez Schneider Electric. Modbus jest obecnie standardem otwartym, co przyczyniło się do dużego rozpowszechnienia standardu. Początkowo działał poprzez port szeregowy RS-232 lecz wraz z rozwojem protokołu możliwe było wykorzystanie RS-485, co pozwalało na zwiększenie prędkości transmisji.

Reklama

Modbus ASCII

Ramka komunikacji w trybie ASCII
* bajty są wysyłane szesnastkowo (po dwa znaki ASCII)
* odstępy pomiędzy kolejnymi znakami ramki < 1s

Modbus RTU

Ramka komunikacji w trybie RTU
* bajty są wysyłane binarnie jako znaki ośmiobitowe
* każda ramka jest poprzedzona odstępem (cisza na linii)> 3,5T (gdzie T oznacza czas transmisji jednego znaku)
* odstępy pomiędzy kolejnymi znakami ramki < 1,5T

Znaczenie bajtów

adres
0 – adres rozgłoszeniowy
1 – 247 – adres jednostki server
kod funkcji
1 $01 odczyt wyjść bitowych
2 $02 odczyt wejść bitowych
3 $03 odczyt n rejestrów
4 $04 odczyt n rejestrów wejściowych
5 $05 zapis 1 bitu
6 $06 zapis 1 rejestru
7 $07 odczyt statusu
8 $08 test diagnostyczny
15 $0F zapis n bitów
16 $10 zapis n rejestrów
17 $11 identyfikacja urządzenia server
128 – 255 $80–$FF zarezerwowane na odpowiedzi błędne
rejestry i zmienne
Urządzenie jest widziane jako 16-bitowe rejestry Wn.
Typy zmiennych umieszczanych w rejestrach:
bitowe – bity rejestrów W0 W4095
2-bajtowe – całe rejestry Wn
4-bajtowe – sąsiednie rejestry Wn ; Wn+1
zalecenie
W celu ułatwienia przesyłania danych przy pomocy ramek
z funkcja, ”odczyt/zapis n rejestrów” rejestry powinny
zajmować spójny obszar adresowany od 0 do REJmax.

Diagnoza błędów

Wykrywanie błędów transmisji następuje dzięki kontroli parzystości poprzecznej (bit parzystości znaku) i wzdłużnej (LRC,
CRC).
Wykrywanie i diagnozowanie błędów komunikacji następuje
przez:
* odesłanie przez server ramki z kodem błędu:
:: 01 – niedozwolona funkcja
:: 02 – niedozwolony numer rejestru
:: 03 – niedozwolona wartość danej
:: 04 – uszkodzenie w przyłączonym urządzeniu
:: 05 – potwierdzenie pozytywne
:: 06 – brak gotowości, komunikat usunięty
:: 07 – potwierdzenie negatywne
:: 08 – błąd parzystości pamięci
* przekroczenie czasu oczekiwania na odpowiedź (timeout w jednostce client) – server nie odsyła odpowiedzi przy błędach w ramce żądania

Reklama
Reklama