Forum: Mikrocontroller und Digitale Elektronik Fehleranfälligkeit serielle Schnittstelle?


von Larou (Gast)


Lesenswert?

Hi,

ich habe jetzt kein konkretes Projekt, aber die Frage interessiert 
dennoch:

Angenommen ich habe einen Sensor dessen Werte laufend in einem µC 
gemessen und über die serielle Schnittstelle (RS-232) an einen Computer 
gesendet werden...Auf diesem Computer läuft eine Software, welche die 
empfangenen Werte für die weitere Berechnungen und Entscheidungen nutzt. 
Fehlerhaft empfangene Werte könnten z.B. einen Alarm auslösen.

Empfielt es sich bei solchen Anwendungen generell irgendwelche 
Fehlerkorrekturen auf höheren Schichten zu implementieren, um 
Datenübertragungsfehler bei der seriellen Übertragung vorzubeugen?
Bei RS-232 gibt es ja das Parity-Bit, aber ist das in der Praxis 
ausreichend, um Übertragunsfehler sicher zu erkennen? Ich habe mal in 
einem Artikel über Nachrichtentechnik gelesen, dass einzelne 
Fehlerkorrekturmechanismen auch nicht für alle Fehlerarten gleich gut 
geeignet sind und das je nach verwendeter Übertragunstechnik und Umfeld 
die tatsächliche Fehlerart stark variiert.

Wie würde man so etwas also professionell und so einfach wie möglich 
lösen, wenn man alle 100 ms einen Messwert von einem µC über 10 Meter 
RS-232 an einen Computer senden möchte? Daten in Paketen versenden, die 
wiederum mit CRC auf ihre korrektheit überprüft werden? Oder ist die 
serielle Schnittselle von der Funktionsweise her so robust, dass so 
etwas nur selten berücksichtigt werden muss?

von Uhu U. (uhu)


Lesenswert?

Denkbar ist alles von einfacher Paritätsüberwachung duch die Hardware 
über blockweise Übertragung mit CRC bis blockweise Übertragung mit 
Fehlerkorrektur (ECC).

Außerdem gibt es verschiedenen serielle Übertragungsverfahren:

RS232C arbeitet mit definierten Spannungen und ist daher empfindlich für 
Einstreuungen, andere Verfahren, z.B. RS422 arbeiten mit definierten 
Strömen und sind deutlich robuster.

Was man nimmt, hängt von der Umgebung ab, in der sich die Übertragung 
abspielt und von den Sicherheitsanforderungen.

von Dirk H. (arm-dran)


Lesenswert?

Also erstmal gernerell.

Mit Sicherheitsmechanismen kann man Fehler nicht vorbeugen sondern nur 
erkennen und dann korrigieren.

Der Ablauf für eine sicherer Übertragung ist wie folgt:

1.) Über welche Entfernungen und mit welcher Datenrate willst Du 
übertragen
    bzw. wie ist das Störumfeld an den Leitungen (entsprechende 
Schirmung)
    Es kann dann zum Beispiel sinnvoll sein, RS485 oder RS422 statt 
RS232 zu
    benutzen, das heißt Differnzialpegel bei der Übertragung.
2.) Egal welche Art von Daten du dann überträgst, das ändert nichts an 
der
    Fehleranfälligkeit. Zum Erkennen von Fehlern kannst Du mehrere
    Mechanismen verwenden, wie z.B. Paritybit, Checksumme etc.
3.) Fehlerkorrektur durch erneutes senden des Datenstrings und evtl. 
Timeout
    Funktion. Falls dieser Fehler also mehrmals hintereinander auftritt,
    heisst das, daß irgendwas mit dem physikalischem Übertragungsweg 
etwas
    nicht stimmt.

Wie Du schreibst, alle 100ms auf 10m Distanz einen Messwert.
Das heisst 10x /sek einen Messwert.
Da kannst Du ja mit Deiner Datenübertragungsrate sehr weit runter gehen.
Selbst mit 1200 baud überträgst Du ca. 100-120 Bytes pro Sekunde.

Dirk

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.