Modbusin rekisterien perustyyppi on 16 bittinen luku. On sitten sopimuskysymys mitä tämä tarkoittaa, onko se etumerkkillinen vaiko etumerkitön luku, tarvitseeko se lisäksi toisen rekisterin jotta saadaan 32-bittinen luku, jne. Nyt järjestelmäsi tulkitsee rekisterin arvon etumerkittömäksi luvuksi, vaikka se onkin etumerkillinen 2-komplementtiluku. Voit muuttaa sen etumerkilliseksi näin: 65485 - 2**16 = 65485 - 65536 = -51. Eli ilmeisesti -5,1
oC. En tunne Node Rediä, mutta
@mestariviheltäjä :n esimerkistä löytynee keinot joilla kertoo Node Redille että luvut ovat etumerkillisiä ja sisältävät yhden desimaalin (kymmenen kertaa suurempia kuin oikeasti).
Huomaa, että Modbusissa on useamman tyyppisiä rekistereitä: input-rekistereitä joista voi vain lukea, ja holding-rekistereitä joista voi sekä lukea että kirjoittaa. Kirjoittamalla (Holding) rekistereihin vääriä arvoja saa koneen sekaisin samoin kuin koneen ohjauspaneelistakin asettamalla. Lisäksi jos koneella on Modbusin kautta manipuloitavissa dokumentoimattomia rekistereitä, niiden räpeltäminen voi aiheuttaa mystisiä oireita. Summa summarum: jos ymmärtää mitä Modbus-rekisteristä luettu arvo merkitsee, voi aivan hyvin siihen kirjoittaakin.