Przejdź do treści

Konwerter rejestrów Modbus — FLOAT32, INT32, HEX

Zamień dwa rejestry Modbus (16 bit) na FLOAT32, INT32 lub UINT32 i odwrotnie — we wszystkich kolejnościach bajtów: ABCD, CDAB, BADC, DCBA.

Rejestry wpisuj dziesiętnie (16840) albo szesnastkowo (0x41C8).

Umieść to narzędzie na swojej stronie

Bezpłatnie, bez rejestracji. Widżet pokazuje na dole napis „Narzędzie udostępnia AMKBIT.pl”.

Dlaczego wartości z Modbus „wychodzą dziwne”

Rejestr Modbus ma 16 bitów. Liczby 32-bitowe (FLOAT32, INT32) zajmują dwa rejestry, a 64-bitowe — cztery. Protokół nie określa, w jakiej kolejności urządzenie wysyła słowa, dlatego producenci robią to różnie:

KolejnośćOpisSpotykana w
ABCDbig-endian, słowo starsze pierwszezgodnie ze specyfikacją Modbus
CDABzamienione słowa (word swap)wiele sterowników PLC, liczników energii
BADCzamienione bajty w słowachrzadziej, niektóre przetworniki
DCBAlittle-endianurządzenia z procesorami x86/ARM bez konwersji

Jeśli znasz przybliżoną wartość (np. temperaturę 25 °C), znajdź w tabeli kolejność, która daje sensowny wynik, i ustaw ją w SCADA lub sterowniku.

FLOAT32 (IEEE 754, pojedyncza precyzja) ma ok. 7 cyfr znaczących: 25 = 0x41C80000, 1,5 = 0x3FC00000. Wartości ujemne INT16 w rejestrze to liczby powyżej 32767 (kod U2), np. −1 = 0xFFFF.

Przykłady

Temperatura 25 °C

Rejestry 0x41C8 i 0x0000 w kolejności ABCD dają FLOAT32 = 25. Te same bajty odczytane jako CDAB to 0x000041C8 — prawie zero (2,36 × 10⁻⁴¹), co jest typowym objawem złej kolejności słów.

Poradniki

Wynik ma charakter pomocniczy. Przy ważnych decyzjach (finansowych, technicznych, zdrowotnych) sprawdź go niezależnie. Zasady korzystania.