Read Modbus RTU — telegram by telegram.
Modbus RTU has no delimiters — only the silent interval tells where a telegram ends. Trace listens on the RS485 line, splits the telegrams at exactly that interval, verifies every CRC16 and shows address and function code in plain text. Live, searchable and saved as a recording.
No mail app set up? Write directly to support@trace-analyzer.net.
Access is currently free and granted on request.
- ✓ CRC16/MODBUS verified
- ✓ Framing by silent interval
- ✓ Function codes in plain text
- ✓ Faulty telegrams stay visible
From the wire to the telegram.
A request to slave 1, the response with two registers — and a telegram with a corrupted checksum.
The third telegram has a corrupted CRC byte. Trace keeps it in the list and marks it as FrameError. The silence threshold lives in the definition (default 4 ms, matching 9600 baud) and can be adjusted to the baud rate.
Modbus RTU as it is on the bus.
Frames from the silent interval
Trace timestamps every byte and places the telegram boundary where the line was silent long enough. Even the last telegram before the bus goes quiet is closed cleanly.
CRC16 on every telegram
If the checksum does not match, the telegram does not disappear — it is marked as an error. Bus disturbances stand out instead of silently going missing.
A definition you can adapt
The Modbus RTU definition is an open TrIML file. You add register addresses, quantities or vendor-specific function codes yourself — without code.
- SearchFull-text search across all telegrams, even in the live stream.
- RecordingRaw bytes and the finished interpretation in one .msf file.
- Multiple portsSeveral interfaces in one session, on a shared timeline.
- RemoteProbe at the machine, analysis in the browser — no inbound port.
What is still missing.
So you don't have to find the limits by trying:
- No per-function-code fields. Start address, quantity and register values appear as a hex block in the Data field. You can add the split to the definition yourself.
- Timing depends on the adapter. Serial capture timestamps every received block, usually in the millisecond range depending on the USB adapter. That separates telegrams reliably up to about 19200 baud; at 38400 baud it gets tight, and above that you need capture hardware that timestamps each byte individually.
- Exception responses (function code with bit 0x80 set) are decoded but not yet highlighted separately.
- No Modbus TCP. Trace reads serial lines, not network traffic.
The checksum is two XML elements.
Trace does not ship a hard-wired Modbus parser but a definition in TrIML. This is what the CRC check looks like in it — with other parameters it fits any other CRC protocol.
<interpreter name="Modbus-RTU" type="FrameOriented" frameGapUs="4000" /> <field type="byte" name="Address" /> <field type="byte" name="Function" valuedescriptor="modbus-func" /> <!-- Data: all bytes up to the CRC --> <calc name="CrcCalc" type="CRC" width="16" poly="0x8005" init="0xFFFF" reflectIn="true" reflectOut="true" xorOut="0x0000" byteOrder="little" resultType="word" from="1" to="-1" /> <const ref="CrcCalc" validate="true" name="CRC" />
Frequently asked questions
How does Trace know where a telegram ends?
By the silent interval. Modbus RTU separates telegrams by at least 3.5 character times of silence. Trace measures the time between bytes and starts a new telegram after a long enough pause. The threshold is set in the definition (frameGapUs).
Does Trace interfere with bus traffic?
No. Trace only listens and never sends requests itself. On an RS485 bus, a USB-to-RS485 converter is connected in parallel to A and B.
Do I need hardware to try it?
For a real capture, yes. Modbus RTU separates telegrams by the time between bytes, and a plain hex excerpt does not carry that — without the gaps the telegrams run together. For capturing, the Trace probe runs on the computer with the USB-to-RS485 converter.
Try Modbus RTU with Trace.
Tell us briefly what you are measuring. We will enable your access — and whatever you find missing goes straight into development.
No mail app set up? Write directly to support@trace-analyzer.net.