Modbus RTU mitlesen — Telegramm für Telegramm.
Modbus RTU kennt keine Trennzeichen — wo ein Telegramm endet, verrät nur die Sendepause. Trace liest die RS485-Leitung mit, trennt die Telegramme an genau dieser Pause, prüft jede CRC16 und zeigt Adresse und Function-Code im Klartext. Live, durchsuchbar und als Aufnahme gespeichert.
Kein Mailprogramm eingerichtet? Schreib direkt an support@trace-analyzer.net.
Der Zugang ist derzeit kostenlos und wird auf Anfrage freigeschaltet.
- ✓ CRC16/MODBUS geprüft
- ✓ Rahmen über die Sendepause
- ✓ Function-Codes im Klartext
- ✓ Fehlerhafte Telegramme bleiben sichtbar
Von der Leitung zum Telegramm.
Eine Anfrage an Slave 1, die Antwort mit zwei Registern — und ein Telegramm mit gestörter Prüfsumme.
Das dritte Telegramm hat ein gestörtes CRC-Byte. Trace behält es in der Liste und markiert es als FrameError. Die Pausenschwelle steht in der Definition (Vorgabe 4 ms, passend zu 9600 Baud) und lässt sich an die Baudrate anpassen.
Ein einzelnes Telegramm von Hand prüfen: Modbus-CRC16-Rechner →
Modbus RTU, wie es auf dem Bus steht.
Rahmen aus der Sendepause
Trace gibt jedem Byte einen Zeitstempel und setzt die Telegrammgrenze dort, wo die Leitung lange genug still war. Auch das letzte Telegramm vor einer Buspause wird sauber abgeschlossen.
CRC16 bei jedem Telegramm
Stimmt die Prüfsumme nicht, verschwindet das Telegramm nicht, sondern wird als Fehler markiert. Störungen auf dem Bus fallen dadurch auf, statt still zu fehlen.
Definition zum Anpassen
Die Modbus-RTU-Definition ist eine offene TrIML-Datei. Registeradressen, Mengen oder herstellerspezifische Function-Codes ergänzt du selbst — ohne Code.
- SucheVolltextsuche über alle Telegramme, auch im laufenden Strom.
- AufnahmeRohbytes und fertige Interpretation in einer .msf-Datei.
- Mehrere PortsMehrere Schnittstellen in einer Sitzung, auf einer gemeinsamen Zeitachse.
- Aus der FerneProbe an der Anlage, Auswertung im Browser — ohne eingehenden Port.
Was noch fehlt.
Damit du nicht erst beim Ausprobieren merkst, wo die Grenzen liegen:
- Keine Feldzerlegung je Function-Code. Startadresse, Anzahl und Registerwerte stehen als Hex-Block im Feld Data. Die Aufteilung kannst du in der Definition selbst ergänzen.
- Timing hängt am Adapter. Die serielle Erfassung stempelt jeden empfangenen Block, je nach USB-Adapter meist im Millisekundenbereich. Das trennt Telegramme zuverlässig bis etwa 19200 Baud; bei 38400 Baud wird es knapp, darüber braucht es Erfassungs-Hardware, die jedes Byte einzeln stempelt.
- Exception-Antworten (Function-Code mit gesetztem Bit 0x80) werden dekodiert, aber noch nicht eigens hervorgehoben.
- Kein Modbus TCP. Trace liest serielle Leitungen, keinen Netzwerkverkehr.
Die Prüfsumme sind zwei XML-Elemente.
Trace bringt keinen fest verdrahteten Modbus-Parser mit, sondern eine Definition in TrIML. So sieht die CRC-Prüfung darin aus — mit anderen Parametern passt sie auf jedes andere CRC-Protokoll.
<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" />
Häufige Fragen
Wie erkennt Trace, wo ein Telegramm endet?
An der Sendepause. Modbus RTU trennt Telegramme durch mindestens 3,5 Zeichenzeiten Stille. Trace misst die Zeit zwischen den Bytes und beginnt nach einer ausreichend langen Pause ein neues Telegramm. Die Schwelle steht in der Definition (frameGapUs).
Greift Trace in den Busverkehr ein?
Nein. Trace liest nur mit und sendet selbst keine Anfragen. Am RS485-Bus hängt dafür ein USB-RS485-Wandler parallel an A und B.
Brauche ich zum Ausprobieren Hardware?
Für einen echten Mitschnitt ja. Modbus RTU trennt Telegramme über die Zeit zwischen den Bytes, und die trägt ein reiner Hex-Auszug nicht mit — ohne Zeitabstände verschmelzen die Telegramme. Für den Mitschnitt läuft die Trace-Probe auf dem Rechner mit dem USB-RS485-Wandler.
Modbus RTU mit Trace ausprobieren.
Schreib kurz, woran du misst. Der Zugang wird dann freigeschaltet — und was dir fehlt, fließt direkt in die Entwicklung ein.
Kein Mailprogramm eingerichtet? Schreib direkt an support@trace-analyzer.net.