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ść.

Rejestry → liczba

Wynik

Float32 (ABCD)12,56
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
Wszystkie kolejności bajtów
KolejnośćFloat32Int32UInt32
ABCD12,561 095 300 5471 095 300 547
CDAB−4,950302 × 10³²−171 753 1444 123 214 152
BADC198 415,81 212 269 5571 212 269 557
DCBA−490,5645−1 007 335 3593 287 631 937
Wstaw na swoją stronę

Wklej ten kod w HTML swojej strony. Narzędzie dopasuje wysokość samo, a link do Kalkio musi zostać widoczny.

Kalkulator od Kalkio · kalkio.app

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.