MODBUS STUDIO
How to read Modbus RTU and TCP frames
A practical walkthrough using the sample frames in the free ModbusX parser.
By the ModbusX team · Updated
A Modbus read response contains the returned values, but not the starting register address. To interpret it correctly, identify the transport and function, check frame integrity, then use the original request and device register map to assign addresses and data types.
1. Decode an RTU FC03 response
Open the online Modbus frame parser, select Modbus RTU and Response, and load the example. Use start address 0 for this demonstration.
01 03 04 00 64 00 C8 BA 7A| Bytes | Field | Meaning |
|---|---|---|
| 01 | Unit address | Device 1 |
| 03 | Function | Read holding registers |
| 04 | Byte count | 4 data bytes, or 2 registers |
| 00 64 | First register | 100 as unsigned 16-bit AB |
| 00 C8 | Second register | 200 as unsigned 16-bit AB |
| BA 7A | CRC bytes | CRC 0x7ABA, low byte first |
Select Parse frame. The tool reports a valid CRC and two rows containing 100 and 200. With start address 0, the rows are labeled 0 and 1. These addresses come from your input, not the read-response bytes.
2. Read the equivalent TCP frame
Select Modbus TCP, Response and Load example. The TCP sample carries the same two register values:
00 01 00 00 00 07 01 03 04 00 64 00 C800 01 is the transaction ID and 00 00 is the protocol ID. The length field 00 07 counts seven following bytes, beginning with Unit ID 01. The PDU begins with function 03, followed by byte count 04 and the data. This frame has no RTU CRC trailer.
3. Confirm addresses and byte order
Modbus PDU addresses are zero-based. A device manual may instead use reference labels such as 40001. Check the manufacturer’s convention before entering an address. An FC03 response returns two bytes per register, high byte first. See the Modbus Application Protocol specification, section 6.3.
For values spanning two registers, use the parser’s Columns & byte order control to compare formats. Match the result to the device’s documented type, register order, scaling and expected range. A plausible-looking float by itself does not establish the correct format.
4. Investigate warnings before using a value
- CRC mismatch: verify that the pasted RTU message includes every byte, including the two CRC bytes.
- MBAP length mismatch: paste one complete TCP frame, without extra packet headers or a second frame.
- PDU or byte-count error: check whether you selected a request or response and whether the data is complete.
- Unexpected values: compare the request’s start address with the register map, then check type, byte order and scale.
Save your findings or connect to the device
Add labels and annotations and export CSV before leaving the parser. Pasted frames remain in the browser; the online tool does not communicate with hardware. For live connections, scanning, monitoring and write tests, download the Windows desktop app.