Modbus Over TCP to kolejna wersja protokołu Modbus dla sieci Ethernet. Spotykana szczególnie często w systemach, w których sieci Ethernet poprzez odpowiednie konwertery stykają się z magistralami do szeregowej transmisji danych (jak RS-232, RS-433, RS-485), ale nie tylko. Zasada jest tu bardzo prosta.
Do ramki protokołu Modbus RTU dokładany jest nagłówek protokołu TCP.
Może to też być ramka protokołu Modbus ASCII, lub dokładany może być nagłówek protokołu UDP, ale są to bardzo rzadko spotykane przypadki.
środa, 21 czerwca 2017
Protokoły komunikacyjne - ramka Modbus TCP
Modbus TCP to wersja dostosowana do komunikacji w sieci Ethernet. Nietrudno się domyślić, że korzysta z protokołu TCP. Istnieje również wersja Modbus UDP, ale w praktyce nigdy się z nią nie spotkałem. Nie ma sensu opisywać w tym wpisie struktury protokołu TCP, z dwóch powodów. "Po pierwsze primo"* jest to podstawowa wiedza sieciowa i w sieci jest mnóstwo informacji na ten temat, na przykład TUTAJ. "Po drugie primo"* prawie na pewno nie będzie go trzeba samodzielnie implementować.
Ramka protokołu Modbus TCP jest bardzo podobna do ramki z wersji RTU. Na końcu nie ma sumy kontrolnej, to załatwia protokół TCP. Na początku z kolei występuje kilka dodatkowych elementów:
ODCZYT
Struktura ramki zapytania dla funkcji 1,2,3 i 4:
Struktura ramki odpowiedzi dla funkcji 1,2,3 i 4:
ZAPIS
Struktura ramki zapytania i odpowiedzi dla funkcji 5 i 6:
Struktura ramki zapytania dla funkcji 15 i 16:
Struktura ramki odpowiedzi dla funkcji 15 i 16:
PS. "Po pierwsze primo" i "po drugie primo" to oczywiście cytaty z filmu "Poranek kojota".
- Identyfikator transakcji - to dowolna wartość, ale powinna być taka sama w zapytaniu i odpowiedzi
- Identyfikator protokołu - 0 (słownie "zero")
- Rozmiar datagramu - to liczba bajtów datagramu zaczynając od adresu Modbus
ODCZYT
Struktura ramki zapytania dla funkcji 1,2,3 i 4:
Identyfikator transakcji | 2 bajty |
Identyfikator protokołu | 2 bajty |
Rozmiar datagramu | 2 bajty |
Adres Modbus | 2 bajty |
Kod funkcji | 2 bajty |
Adres w pamięci | 4 bajty |
Ilość danych | 4 bajty |
Struktura ramki odpowiedzi dla funkcji 1,2,3 i 4:
Identyfikator transakcji | 2 bajty |
Identyfikator protokołu | 2 bajty |
Rozmiar datagramu | 2 bajty |
Adres Modbus | 2 bajty |
Kod funkcji | 2 bajty |
Rozmiar danych | 2 bajty |
Dane | N bajtów |
ZAPIS
Struktura ramki zapytania i odpowiedzi dla funkcji 5 i 6:
Identyfikator transakcji | 2 bajty |
Identyfikator protokołu | 2 bajty |
Rozmiar datagramu | 2 bajty |
Adres Modbus | 2 bajty |
Kod funkcji | 2 bajty |
Adres w pamięci | 4 bajty |
Dane | 4 bajty |
Struktura ramki zapytania dla funkcji 15 i 16:
Identyfikator transakcji | 2 bajty |
Identyfikator protokołu | 2 bajty |
Rozmiar datagramu | 2 bajty |
Adres Modbus | 2 bajty |
Kod funkcji | 2 bajty |
Adres w pamięci | 4 bajty |
Ilość danych | 4 bajty |
Rozmiar danych | 2 bajty |
Dane | N bajtów |
Identyfikator transakcji | 2 bajty |
Identyfikator protokołu | 2 bajty |
Rozmiar datagramu | 2 bajty |
Adres Modbus | 2 bajty |
Kod funkcji | 2 bajty |
Adres w pamięci | 4 bajty |
Ilość danych | 4 bajty |
Subskrybuj:
Posty (Atom)