Tavujärjestyksen ja sanajärjestyksen sudenkuopat
Joskus Modbus-yhteys toimii, mutta arvo näyttää silti väärältä. Tämä johtuu usein tavujärjestyksestä tai sanajärjestyksestä.
Aloitetaan perusasioista
Yksi Modbus-rekisteri on 16 bittiä. Osa arvoista mahtuu yhteen rekisteriin, mutta suuremmat arvot tarvitsevat kaksi tai useampia rekistereitä.
Esimerkkejä:
- pieni kokonaisluku voi mahtua yhteen rekisteriin
- 32-bittinen kokonaisluku käyttää kahta rekisteriä
- float käyttää yleensä kahta rekisteriä
Mitä tavujärjestys tarkoittaa
Tavujärjestys kertoo, missä järjestyksessä tavut ovat arvon sisällä.
Jos tavujärjestys ei ole se, mitä asiakasohjelma odottaa, lopullinen luku voi olla väärä.
Mitä sanajärjestys tarkoittaa
Sanajärjestys on tärkeä silloin, kun arvo käyttää useampaa kuin yhtä 16-bittistä rekisteriä.
Jos kaksi rekisteriä yhdistetään väärässä järjestyksessä, arvo voidaan silti lukea, mutta se ei käy järkeen.
Miltä tämä näyttää käytännössä
Yleisiä oireita ovat:
- hyvin suuret numerot
- mahdottomat negatiiviset arvot
- arvot jotka hyppivät oudosti
- yhteys näyttää toimivalta mutta lukemat ovat vääriä
Yksinkertainen esimerkki
Lämpötila voi olla tallennettu kahteen rekisteriin float-arvona. Jos rekisterit yhdistetään väärässä järjestyksessä, tuloksena voi olla täysin järjetön numero oikean lämpötilan sijaan.
Miten ongelma ratkaistaan
Tarkista laitteen dokumentaatio.
Varmista, että siinä kerrotaan selvästi:
- datatyyppi
- tavujärjestys
- sanajärjestys
Jos manuaali on epäselvä, testaa mahdolliset vaihtoehdot ja vertaa tulosta tunnettuun oikeaan arvoon.
Mitä valmistajien pitäisi tehdä
Älä kirjoita vain “float” tai “32-bit value”. Kerro myös miten tavut ja sanat on järjestetty.
Lopuksi
Jos arvot näyttävät vääriltä vaikka yhteys toimii, älä tarkista vain rekisteriosoitetta. Tarkista myös tavujärjestys ja sanajärjestys.
Konsultointi
Minut voi palkata auttamaan Modbus-laitteiden dokumentoinnissa, testauksessa ja vianetsinnässä.