ModBus: Datové typy

Datový typ

Popis

INT16

Celé číslo v rozmezí -32768 až 32767.
Rozsah čísel skutečně použitý pro datový bod se může lišit.

UINT16

Celé číslo bez znaménka v rozmezí 0 až 65535.
Rozsah čísel skutečně použitý pro datový bod se může lišit.

ENUM

Jedná se o výčet. Lze nastavit pouze jednu z hodnot uvedených v sekci parametry.

BOOL

Booleovská hodnota je parametr s právě dvěma stavy (0 - nepravda/false a 1 - pravda/true). Obecně platí, že všechny hodnoty větší než nula jsou vyhodnoceny jako true.

BITMAP*

Je souhrnem 16 booleovských hodnot (bity). Hodnoty jsou udávány od 0 do 15. Číslo, které se v registru má číst nebo zapisovat, je odvozeno od součtu všech bitů s hodnotou 1x2 umocněnou jejich indexem.

  • 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 = 2 048
  • Bit 12: 212 = 4 096
  • Bit 13: 213 = 8 192
  • Bit 14: 214 = 16 384
  • Bit 15: 215 = 32768

BITMAP32

Je souhrnem 32 booleovských hodnot (bity). Podrobnosti o výpočtu si můžete přečíst u bitmapy.

* Příklad pro objasnění:
Bit 3, 6, 8, 15 jsou 1, všechny ostatní jsou 0. Součet je pak 23+26+28+215 = 8+64+256+32768 = 33096. Opačná cesta je rovněž možná. V takovém případě se počínaje bitem ověřuje s nejvyšším indexem, zda čtené číslo je větší než, rovné mocnině dvou. Pokud tomu tak je, je nastaven bit 1 a mocnina dvou pak od čísla odečtena. Poté se kontrola s bitem opakuje s nejbližším menším indexem a právě vypočteným zbytkovým číslem, dokud není dosaženo bit 0 nebo dokud není zbytkovým číslem nula. Pro ilustraci uveďme příklad: Čtené číslo je 1416. Bit 15 se stane 0, protože 1416<32768. I bity 14 až 11 budou mít hodnotu 0. Bit 10 se stane 1, protože 1416>1024. Zbytkovým číslem je 1416-1024=392. Bit 9 se stane 0, protože 392<512. Bit 8 se stane 1, protože 392>256. Zbytkovým číslem je 392-256=136. Bit 7 se stane 1, protože 136>128. Zbytkovým číslem je 136-128=8. Bit 6 až 4 budou mít hodnotu 0. Bit 3 se stane 1, protože 8=8. Zbytkovým číslem je 0. Zbývající bity tak získají hodnotu 2 až všechny 0.