ModBus: Datatyper

Datatype

Beskrivelse

INT16

Heltall i området -32768 til 32767.
Det faktiske tallområdet for et datapunkt kan avvike.

UINT16

Heltall uten fortegn i området 0 til 65535.
Det faktiske tallområdet for et datapunkt kan avvike.

ENUM

Er en tellevariabel. Kan kun settes til en av verdiene som er oppført under parameteren.

BOOL

En boolsk verdi er en parameter med kun to tilstander (0 – usann/false og 1 – sann/true). Generelt anses alle verdier større enn null som true.

BITMAP*

Et sammendrag av 16 boolske verdier (bits). Verdiene nummereres fra 0 til 15. Tallet i registeret som skal leses eller skrives beregnes fra summen av alle bits med verdien 1x2 potensert med dets indeks.

  • 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

Er et sammendrag av 32 boolske verdier (bits). Detaljer om beregningen finnes i bitmap.

* Eksempel:
Bit 3, 6, 8, 15 er 1, alle andre er 0. Summen blir da 23+26+28+215 = 8+64+256+32768 = 33096. Omvendt rekkefølge er også mulig. I dette tilfellet kontrolleres det om det leste tallet er større enn eller lik andre potens, og man starter med biten med den høyeste indeksen. Hvis det er tilfelle, settes bit 1 og andre potens av tallet trekkes fra. Deretter gjentas kontrollen med biten med nest lavest indeks og den nettopp beregnede resten til man kommer til bit 0 eller resten er lik null. For å gjøre det tydeligere med et eksempel: Det leste tallet er 1416. Bit 15 blir 0, fordi 1416<32768. Bits 14 til 11 blir likedan 0. Bit 10 blir 1, fordi 1416>1024. Resten blir 1416-1024=392. Bit 9 blir 0, fordi 392<512. Bit 8 blir 1, fordi 392>256. Resten blir 392-256=136. Bit 7 blir 1, fordi 136>128. Resten blir 136-128=8. Bit 6 til 4 blir 0. Bit 3 blir 1, fordi 8=8. Resten blir 0. Følgelig blir de resterende bits 2 til alle 0.