TRACE Zugang anfragen
DE
Protokollanalyse · Modbus RTU

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
Beispiel

Von der Leitung zum Telegramm.

Eine Anfrage an Slave 1, die Antwort mit zwei Registern — und ein Telegramm mit gestörter Prüfsumme.

// Auf der Leitung · Bytes
01 03 00 00 00 02 C4 0B ↳ Pause 8 ms — neues Telegramm 01 03 04 00 64 00 C8 BA 7A ↳ Pause 8 ms — neues Telegramm 01 03 00 00 00 02 C4 0C
// In Trace · dekodierte Telegramme
Modbus RTU · ReadHoldingRegisters
Address1
Function3 (ReadHoldingRegisters)
Data00 00 00 02
CRC0x0BC4
Modbus RTU · ReadHoldingRegisters
Address1
Function3 (ReadHoldingRegisters)
Data04 00 64 00 C8
CRC0x7ABA
Modbus RTU · ReadHoldingRegisters FrameError
Address1
Function3 (ReadHoldingRegisters)
Data00 00 00 02
CRC0x0CC4

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 →

Was Trace leistet

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.
Ehrlich zum Stand

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 Definition

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.

TrIML-Referenz öffnen →

<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" />
FAQ

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.