ModBus: Datatyper

Datatyp

Beskrivning

INT16

Heltal i intervallet -32768 till 32767.
Talområdet som i praktiken används för en datapunkt kan variera.

UINT16

Osignerat heltal i området från 0 till 65535.
Talområdet som i praktiken används för en datapunkt kan variera.

ENUM

Är en uppräkning. Värdet kan endast ställas in på ett av de värden som är listade under parametern.

BOOL

Ett booleskt värde är en parameter som kan ha exakt två värden (0 – falskt/false och 1 – sant/true). Värden större än noll räknas som true.

BITMAP*

Är en sammanfogning av 16 booleska värden (bitar). Värdena indexeras från 0 till 15. Talet som ska läsas från eller skrivas till registret kan räknas ut genom att summera alla bitar med värdet 1 gånger 2 upphöjt till bitens index.

  • 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

Är en sammanfogning av 32 booleska värden (bitar). Läs under Bitmap för mer information om hur värdet räknas ut.

* Exempel för förtydligande:
Bit 3, 6, 8, 15 är 1 och alla andra är 0. Summan blir då 23+26+28+215 = 8+64+256+32768 = 33096. Det omvända hållet är också möjligt. Då kontrolleras biten med det högsta indexet för att se om talet som lästs är större än eller lika med bitens tvåpotens. Om så är fallet sätts biten till 1 och tvåpotensen subtraheras från talet. Sedan kontrolleras biten med det näst minsta indexet mot resttalet och processen upprepas tills man når bit 0 eller resttalet är lika med noll. Ett förtydligande exempel: Det lästa talet är 1416. Bit 15 sätts till 0 eftersom 1416 < 32768. Bitarna 14 till 11 sätts också till 0. Bit 10 sätts till 1 eftersom 1416 > 1024. Resttalet blir 1416 - 1024 = 392. Bit 9 sätts till 0 eftersom 392 < 512. Bit 8 sätts till 1 eftersom 392 > 256. Resttalet blir 392 - 256 = 136. Bit 7 sätts till 1 eftersom 136 > 128. Resttalet blir 136 - 128 = 8. Bitarna 6 till 4 sätts till 0. Bit 3 sätts till 1 eftersom 8 = 8. Resttalet blir 0. Därmed sätts de resterande bitarna 2 till 0 alla till 0.