TRACE Zugang anfragen
DE
Protokollanalyse · MAVLink

MAVLink mitlesen — mit geprüfter CRC.

Zwischen Flugcontroller, Telemetriefunk und Begleitrechner läuft MAVLink. Trace liest die serielle Telemetrie-Leitung mit, erkennt v1- und v2-Frames, prüft für die dekodierten Nachrichten die CRC samt CRC_EXTRA und zerlegt die wichtigsten Nachrichten in ihre Felder.

Kein Mailprogramm eingerichtet? Schreib direkt an support@trace-analyzer.net.

Der Zugang ist derzeit kostenlos und wird auf Anfrage freigeschaltet.

  • v1 (0xFE) und v2 (0xFD)
  • CRC mit CRC_EXTRA geprüft
  • 4 Nachrichten Feld für Feld
  • 10 Nachrichten-IDs benannt
Beispiel

Von der Leitung zum Telegramm.

Ein HEARTBEAT und eine GPS-Position, beide als MAVLink v1 — so, wie sie Trace an der Telemetrie-Leitung dekodiert.

// Auf der Leitung · Bytes
FE 09 00 01 01 00 00 00 00 00 02 03 51 04 03 7D DD nächster Frame FE 1E 00 01 01 18 00 00 00 00 00 00 00 00 00 65 CD 1D 80 B2 E6 0E A0 86 01 00 64 00 64 00 00 00 00 00 03 0A CF 4D
// In Trace · dekodierte Telegramme
MAVLink v1 · HEARTBEAT
LEN · SEQ9 · 0
SYSID · COMPID1 · 1
MSGID0 (HEARTBEAT)
type2 (Quadrotor)
autopilot3 (ArduPilot)
base_mode0x51
system_status4 (Active)
CRC0xDD7D
MAVLink v1 · GPS_RAW_INT
lat · lon0x1DCD6500 · 0x0EE6B280
alt0x000186A0
fix_type3 (Fix3D)
satellites_visible10
CRC0x4DCF

Breite, Länge und Höhe zeigt Trace derzeit als Hex-Rohwert: 0x1DCD6500 = 500000000 × 1e-7° = 50,0°, 0x000186A0 = 100000 mm = 100 m.

Was Trace leistet

MAVLink, wie es auf der Leitung steht.

CRC samt CRC_EXTRA

MAVLink rechnet je Nachricht ein Byte in die CRC ein, das nicht auf der Leitung steht. Trace kennt es für die dekodierten Nachrichten und prüft die Prüfsumme vollständig — ein Frame mit falschem Feldlayout fällt auf.

v1 und v2 in einem Strom

Die Definition erkennt beide Versionen am Startbyte, liest die v2-Flags und überspringt eine vorhandene Signatur korrekt.

Nachrichten Feld für Feld

HEARTBEAT, SYS_STATUS, GPS_RAW_INT und ATTITUDE werden in ihre Felder zerlegt, mit Klartext für Fahrzeugtyp, Autopilot, Systemstatus und GPS-Fix. Weitere Nachrichten ergänzt du in der Definition.

  • 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:

  • Vier Nachrichten vollständig. Zehn Nachrichten-IDs werden benannt; alle übrigen erscheinen als Payload-Block, ihre CRC wird angezeigt, aber nicht geprüft.
  • Keine Gleitkomma- und Vorzeichenwerte. Winkel, Breite und Länge stehen als Rohwert (hex bzw. ohne Vorzeichen). Feldnamen und Feldgrenzen stimmen.
  • v2-Grenzfälle. Nachrichten mit einer ID ab 256 werden nicht zerlegt. Gekürzte v2-Payloads (fehlende Null-Bytes am Ende) können die letzten Felder verkürzen. Die Signatur wird gelesen, aber nicht geprüft.
  • Nur serielle Leitungen. MAVLink über UDP oder TCP — etwa aus SITL oder von einer Bodenstation — erfasst Trace nicht.
Die Definition

Eine CRC-Prüfung für alle Nachrichten.

Die CRC-Berechnung steht einmal in der Definition. Jede Nachricht liefert nur ihr CRC_EXTRA — eine neue Nachricht kommt so mit wenigen Zeilen dazu.

TrIML-Referenz öffnen →

<struct name="crc_check">
  <calc name="Crc" type="CRC" width="16"
        poly="0x1021" init="0xFFFF"
        reflectIn="true" reflectOut="true"
        xorOut="0x0000" byteOrder="little"
        resultType="word" appendValueRef="CrcExtra"
        from="1" to="-1" />
  <const ref="Crc" validate="true" name="CRC" />
</struct>

<struct name="msg_heartbeat">
  <struct sizeRef="LEN" name="HEARTBEAT">
    <dword name="custom_mode" />
    <byte  name="type" valuedescriptor="mav-type" />
    <!-- … -->
  </struct>
  <var value="50" name="CrcExtra" />
  <struct ref="crc_check" />
</struct>
FAQ

Häufige Fragen

Was ist CRC_EXTRA, und warum ist es wichtig?

Ein Byte, das aus der Definition einer Nachricht abgeleitet wird und in die CRC eingeht, ohne gesendet zu werden. Rechnen Sender und Empfänger mit unterschiedlichem Nachrichtenlayout, stimmt die CRC nicht — der Fehler wird sichtbar, statt falsche Werte zu liefern. HEARTBEAT hat zum Beispiel CRC_EXTRA 50.

Wo schließe ich Trace an?

An die serielle Telemetrie-Leitung, etwa zwischen Flugcontroller und Funkmodul oder Begleitrechner. Ein USB-Seriell-Adapter hört mit seinem Empfangseingang an einer Sendeleitung mit. Für beide Richtungen nimmst du zwei Ports — Trace zeigt sie auf einer Zeitachse.

Brauche ich zum Ausprobieren Hardware?

Nein. Zum Ausprobieren reicht ein Ausschnitt eines vorhandenen Hex-Mitschnitts. Für den Live-Betrieb läuft die Trace-Probe auf dem Rechner, an dem der Schnittstellen-Adapter steckt.

MAVLink 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.