Übertragungsprotokoll

OP #531374
Lesenswert?
• ▲
▼
Hallo Leute,
in der Arbeit entwickeln wir einen unbemannt fliegenden Hubschrauber und 
haben für die Datentragung eine bidirektionale Funkstrecke 
(Schnittstellen sind RS232 - 19200). Jetzt müssen für den RP (Remotely 
piloted, Fliegen aus der Bodenkontollstation) Flug periodisch Daten mit 
25Hz übertragen werden. Das ist noch nicht das Problem, denn wenn hier 
mal ein Datenpaket hops geht machts nicht viel, denn das nächste kommt 
ja bald nach (zeitlich gesehen). Jetzt sollen aber noch 
Einstellparameter für den Autopiloten übertragen werden, bei denen 
sichergestellt werden muss daß diese auch ankommen. Zudem wäre auch 
wünschenswert zu wissen wann die angekommen sind.
Beispiel:
* Reglerparameter wird auf einer GUI eingestellt
* Der Sync - Button wird gedrückt und wird rot
* Sobald vom Regler die Bestätigung kommt, daß der Wert erfolgreich 
angekommen ist soll der Sync - Button grün werden.

Gibt es hierfür schon fertige Protokolle, die ich verwenden könnte ?

Beste Grüße,
Michael
Gast #531380
Lesenswert?
• ▲
▼
Hm, würde da nicht ein simples ACOP reichen? Also Daten mit ACK oder NAK 
bestätigen. Wenn die Pakete ne Prüfsumme haben, dann kann der Empfänger 
feststellen ob das Paket OK war und ein ACK zurückschicken, ansonsten 
antwortet er mit NAK und bekommt das Paket nochmal.

bye

Frank
Gast #531385
Lesenswert?
• ▲
▼
Willst du Fehlerkorrektur (1) betreiben oder nur z.B. anhand einer 
Prüfsumme (2) oder eines Hashes (3) erkennen ob gültige Daten vorliegen?

Bei deinen kleinen Datenblöcken ist X-Modem (4) vielleicht nicht 
angebracht. Aber vielleicht kannst du was ähnliches für 
"Datenübertragung mit kleinen Blockgrößen" stricken.

Ein Bereich wo solche Protokolle bestimmt verwendet werden ist der RFID 
Bereich, wo mit jedem Byte geknausert wird.

(1) http://de.wikipedia.org/wiki/Fehlerkorrekturverfahren
(2) http://de.wikipedia.org/wiki/Cyclic_Redundancy_Check
(3) http://de.wikipedia.org/wiki/Hash-Funktion
(4) http://de.wikipedia.org/wiki/X-Modem
OP #531386
Lesenswert?
• ▲
▼
Die eingesetzten Funkmodems kann man eine CRC - Prüfung einschalten, was 
wir auch vorhaben, jedoch kommt am Empfänger kein Datenpaket an, wenn 
die Prüfsumme nicht überein stimmt. Somit weiß der Empfänger nicht ob 
was gekommen ist oder nicht.
Die Prüfsumme könnte man schon auch selbst machen, jedoch müsste dann 
eine Art Message ID mit angehängt werden, damit der Empfänger melden 
kann, welche Message nicht richtig angekommen ist ...
OP #531392
Lesenswert?
• ▲
▼
@Frank: Die Datenübertragung läuft zudem auch bidirektional! Dem Heli 
werden die Steuerdaten geschickt und gleichzeitig schickt der Heli die 
Telemetriedaten wie Lage, Rate, Position .... etc.
Da dann zwischendrin ein NAK zu senden geht zwar nur weiß der Empfänger 
in der Bodenstation dann nicht wozu dieses NAK gehört ...
Grüße,
Michael
OP #531403
Lesenswert?
• ▲
▼
@Andreas: Das "Selective Repeat ARQ" gefällt mir gut! Jeder 
Reglerparameter wird mit einer eindeutigen ID verschickt. Der Sender in 
der Bodenstation wartet dann eine bestimmte Zeitdauer ab ob dieses Paket 
dann vom Empfänger im Heli bestätigt wird. Wenn nicht wird erneut 
gesendet.
@Frank: Das Problem was ich hierbei sehe ist das hierbei "mitgezählt" 
werden muss wann welches Paket nicht bestätigt wird (NAK). Wenn wir die 
Funkmodems in dem "Auto-CRC" Modus verwenden ist dieser Modus gar nicht 
möglich. Ansonsten könnte es ja im "Worst - Case" so sein, daß der 
Sender in der Bodenstation einen Parameter losschickt der am Empfänger 
defekt ankommt. Jetzt sendet der Heli ein "NAK" an die Bodenstation, die 
wiederum schon 2 weitere Parameter verschickt hat. Zu welchem Paket 
gehört dann das NAK ?
Grüße,
Michael
Gast #531407
Lesenswert?
• ▲
▼
Wenn keine Frames gezählt werden darf eben nichts Neues gesendet werden 
bevor quittiert wurde. Ansonsten muss man die Frames eben numerieren und 
anhand der Nummern bearbeiten. Bedeutet aber Einiges an Datenoverhead.

bye

Frank
Admin Persönliche Seite #531412
Lesenswert?
• ▲
▼
Selective Repeat würde ich nicht verwenden, das ist unnötig komplex. Das 
macht nur Sinn wenn großer Durchsatz erzielt werden soll - das dürfte in 
deinem Fall ja nicht der Fall sein. Ich würde Stop-and-Wait nehmen.

Abgesehen davon ist das Wiederholen nur bei den Steuerdaten nötig, nicht 
bei den Telemetriedaten - die kann man ja einfach kontinuierlich 
raussenden, wenn was verloren geht ist eine Wiederholung eines alten 
Paketes sinnlos.
OP #531414
Lesenswert?
• ▲
▼
@Frank: Stimmt. Nichts neu senden zu dürfen ist leider ein No-GO. Denn 
in der Zeit würden auch keine Steuerdaten zum Heli übertragen werden. 
Außer man fährt "zwei" Kanäle. Die Steuerdaten laufen unabhängig von den 
Reglerparametern. Das würde gehen....
Der Datenoverhead sollte nicht das Problem sein. Wir haben schon 
Telemetriedaten (38 Bytepaket) mit über 50Hz nach unten geschickt, also 
die Bandbreite ist vorhanden. Wenn jetzt die Steuerdaten mit 25Hz (25 
Bytepaket) geschickt werden sollten noch genug Reserven vorhanden sein 
für die Reglerparameter....
Vielen Dank an alle schon mal !
Grüße,
Michael
Gast #531419
Lesenswert?
• ▲
▼
na dann pack einfach einen 8-bit-Counter mit dazu. Der dürfte 
ausreichen. Frames die länger als 255 weitere Pakete gebraucht haben 
dürften eh zu vergessen sein bzw sollte der Empfänger dann mal mit einem 
gezielten ENQ nachfragen wo das Paket denn bleibt.

bye

Frank

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.