Modbus RTU Tools
Generate RTU frames, inspect messages, check CRC values and convert register data. Connect a serial device using a desktop browser with Web Serial support.
Choose your RTU task
Open the frame tool for generation, parsing and CRC checks. Use the serial debugger for device communication, or the converter for numeric values and byte order.
What the tools cover
Common tasks
Check device communication
Compare requests and responses for a PLC, drive, meter or sensor.
- Verify a read request
- Check a register value
- Investigate an exception
Develop a device integration
Check sample frames and data formats against the device specification.
- Inspect frame fields
- Confirm byte order
- Compare known values
Investigate a problem
Capture and compare exchanges during authorized device testing.
- Inspect received messages
- Watch changing values
- Export captured results
Start with a frame
Build or inspect a frame without connecting a device. For serial testing, use a compatible desktop browser and authorize the correct port.
RTU and register basics
Modbus RTU is a binary serial framing format for Modbus requests and responses. It is commonly used over RS485 or RS232.
Key points
- Binary message bytes
- CRC-16/MODBUS error check
- Device addresses on a serial link
- Timing and serial settings must match
A frame contains the device address, function, data and CRC.
[Device address][Function code][Data][CRC]- Device address: 1 byte:
- Function code: 1 byte:
- Data: fields defined by the function:
- CRC: 2 bytes, low byte first:
- 01: Read coils
- 02: Read discrete inputs
- 03: Read holding registers
- 04: Read input registers
- 05: Write single coil
- 06: Write single register
- 15 (0x0F): Write multiple coils
- 16 (0x10): Write multiple registers
The CRC checks the frame address, function and data bytes. It detects many transmission errors but does not authenticate a sender or verify that an operation is safe.
Parameters
- 16-bit error check
- Reflected polynomial: 0xA001
- Initial value: 0xFFFF
- CRC low byte transmitted first
A register stores 16 bits. The device register map defines how one or more registers represent a value.
- Signed integers use two’s complement. FFFF is -1 as INT16 and 65535 as UINT16. The converter pads short hex input with leading zeros; FF as INT16 is 255.
- IEEE 754 FLOAT32 uses 32 bits; FLOAT64 uses 64 bits. FLOAT32 bytes 3F 80 00 00 in ABCD order represent 1.
- For four bytes A B C D: ABCD is unchanged; DCBA reverses the bytes; BADC swaps bytes within each 16-bit word; CDAB swaps the two words.
- 16-bit values occupy one register, 32-bit values two, and 64-bit values four. Follow the device specification for byte and register order.
- The converter handles 64-bit integers exactly within the selected type’s range. UINT64 runs from 0 to 18446744073709551615.
- Hex input accepts hexadecimal digits, an optional 0x prefix and whitespace between bytes. Invalid characters are rejected rather than silently removed.
- Integer inputs must use whole-number digits. FLOAT32 and FLOAT64 also accept fractions and scientific notation.
- Confirm the type and byte order using a known value. A plausible-looking result alone does not verify the settings.