ś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:
  • 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

Struktura ramki odpowiedzi 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

PS. "Po pierwsze primo" i "po drugie primo" to oczywiście cytaty z filmu "Poranek kojota".

Brak komentarzy:

Prześlij komentarz