ModBus: Typy danych

Typ danych

Opis

INT16

Liczba całkowita z zakresu od -32768 do 32767.
Zakres liczb faktycznie wykorzystywany dla konkretnego punktu danych może się różnić.

UINT16

Liczba całkowita bez znaku z zakresu od 0 do 65535.
Zakres liczb faktycznie wykorzystywany dla konkretnego punktu danych może się różnić.

ENUM

Jest to wyliczenie. Możliwe jest ustawienie tylko jednej z wartości podanych w parametrach.

BOOL

Wartość boolowska to parametr o dokładnie dwóch stanach (0 – fałsz/false i 1 – prawda/true). Zasadniczo wszystkie wartości większe od zera traktowane są jako true.

BITMAP*

Zbiór 16 wartości boolowskich (bitów). Wartości te są indeksowane od 0 do 15. Liczba odczytywana lub zapisywana w rejestrze jest sumą wszystkich bitów o wartości 1 x 2 i podniesionej do potęgi równej jej indeksowi.

  • Bit 0: 20 = 1
  • Bit 1: 21 = 2
  • Bit 2: 22 = 4
  • Bit 3: 23 = 8
  • Bit 4: 24 = 16
  • Bit 5: 25 = 32
  • Bit 6: 26 = 64
  • Bit 7: 27 = 128
  • Bit 8: 28 = 256
  • Bit 9: 29 = 512
  • Bit 10: 210 = 1024
  • Bit 11: 211 = 2048
  • Bit 12: 212 = 4096
  • Bit 13: 213 = 8192
  • Bit 14: 214 = 16384
  • Bit 15: 215 = 32768

BITMAP32

Zbiór 32 wartości boolowskich (bitów). Szczegóły dot. obliczeń podane są powyżej przy mapie bitowej.

* Przykład służący ilustracji:
Bit 3, 6, 8, 15 wynoszą 1, a wszystkie pozostałe – 0. Suma wynosi wówczas 23+26+28+215 = 8+64+256+32768 = 33096. Możliwe jest również odwrotne działanie. W takim przypadku, wychodząc od bitu o najwyższym indeksie, sprawdza się, czy odczytana liczba jest większa lub równa potędze liczby dwa. Jeśli tak jest, ustawiany jest bit 1 i od liczby odejmowana jest potęga liczby dwa. Następnie sprawdzanie powtarza się z bitem o kolejnym mniejszym indeksie i obliczoną w poprzednim działaniu resztą, do momentu, aż dojdzie się do bitu 0 lub reszta wyniesie zero. Przykład ilustrujący: Odczytana liczba wynosi 1416. Bit 15 to 0, ponieważ 1416<32768. Bity 14 do 11 to również 0. Bit 10 to 1, ponieważ 1416>1024. Reszta wynosi 1416-1024=392. Bit 9 to 0, ponieważ 392<512. Bit 8 to 1, ponieważ 392>256. Reszta wynosi 392-256=136. Bit 7 to 1, ponieważ 136>128. Reszta wynosi 136-128=8. Bity 6 do 4 to 0. Bit 3 to 1, ponieważ 8=8. Reszta wynosi 0. Tym samym pozostałe bity 2 wynoszą wszystkie 0.