Modbus: rejestry na float (IEEE 754)
Wpisz dwa rejestry odczytane z urządzenia. Tabela pokazuje wynik dla każdej kolejności bajtów, więc od razu widać, która daje sensowną wartość.
Wynik
- Int32
- 1 095 300 547
- UInt32
- 1 095 300 547
- Int16 / UInt16 (R1)
- 16 712 / 16 712
- Int16 / UInt16 (R2)
- −2 621 / 62 915
- Hex
- 4148 F5C3
| Kolejność | Float32 | Int32 | UInt32 |
|---|---|---|---|
| ABCD | 12,56 | 1 095 300 547 | 1 095 300 547 |
| CDAB | −4,950302 × 10³² | −171 753 144 | 4 123 214 152 |
| BADC | 198 415,8 | 1 212 269 557 | 1 212 269 557 |
| DCBA | −490,5645 | −1 007 335 359 | 3 287 631 937 |
Dlaczego kolejność bajtów ma znaczenie
Modbus przesyła dane w rejestrach 16-bitowych, a liczba float32 zajmuje 32 bity, czyli dwa rejestry. Standard nie określa, który rejestr niesie starszą połowę liczby, więc producenci robią to różnie. Te same rejestry 4148 F5C3 to 12,56 w kolejności ABCD, ale zupełnie inna liczba w CDAB.
Jeśli nie wiesz, jakiej kolejności używa urządzenie, odczytaj znaną wartość (np. temperaturę z wyświetlacza) i znajdź w tabeli wiersz, w którym wynik się zgadza.
Budowa liczby IEEE 754
Float32 składa się z bitu znaku, 8 bitów wykładnika i 23 bitów mantysy. Daje to zakres około ±3,4 × 10³⁸ i dokładność około 7 cyfr znaczących.
Częste pytania
Co oznacza CDAB?
Zamianę słów: urządzenie wysyła najpierw młodszy rejestr, a potem starszy. To jedna z najczęstszych kolejności w sterownikach i miernikach energii.
Dlaczego wychodzi bardzo duża albo bardzo mała liczba?
Prawie zawsze to zła kolejność bajtów. Sprawdź pozostałe wiersze tabeli.
Czy narzędzie łączy się z urządzeniem?
Nie. Przelicza tylko wpisane wartości w przeglądarce.