Skip to main content

Modbus Data Types and Byte Order

By NFM Consulting 1 min read

Key Takeaway

How to handle 32-bit integers, IEEE 754 floats, and strings in Modbus registers — byte order (endianness) variations and how to determine the correct order.

Quick Answer

Modbus registers are 16-bit, but 32-bit values (integers and IEEE 754 floats) span two registers. The byte/word order varies by manufacturer — big-endian (ABCD), little-endian (DCBA), or byte-swapped variants. Incorrect byte order is the most common cause of wrong readings.

16-bit Values

Single register, straightforward. INT16 (-32768 to 32767) or UINT16 (0 to 65535).

32-bit Float (IEEE 754)

Two consecutive registers. Four possible byte orders:

FormatReg 1Reg 2Example (1.0)
ABCD (Big-Endian)3F800000Most common
DCBA (Little-Endian)0000803FSome devices
BADC (Byte-Swap Big)803F0000Some Schneider
CDAB (Byte-Swap Little)00003F80Some devices

Determining Byte Order

Read a known value (e.g., write 1.0 to a setpoint register). Read raw hex values of both registers. Compare to the table above. Configure your SCADA driver accordingly.

For platform-specific byte order settings, see Modbus in Ignition and ABB Totalflow Modbus.

Frequently Asked Questions

Ready to Get Started?

Our engineers are ready to help with your automation project.