RS-485: Fehlererkennungs-/Korrekturmechanismus

Enthält der RS-485-Standard ein Fehlererkennungs-/Korrekturschema?

RS-232 hat ein Paritätsbit zur Fehlererkennung, aber ich weiß nichts über die Fehlererkennung / -korrektur in der RS-485-Schnittstelle.

Antworten (2)

RS-485 und RS-232 sind rein elektrische Standards. Dasselbe Datencodierungsschema wird normalerweise auf beiden verwendet. Der Unterschied besteht darin, dass RS-232 einen einzelnen Draht für das Signal mit Pegeln unter -5 V und über +5 V verwendet, während RS-485 ein Differenzialpaar mit 0-5 V-Pegeln verwendet. RS-485 soll auch Multidrop sein, während RS-232 Punkt-zu-Punkt ist.

Sie können wählen, ob Sie auf beiden physikalischen Schichten ein Paritätsbit verwenden möchten oder nicht.

In der Praxis werden Paritätsbits nicht oft verwendet, da sie ein schlechtes Schutzniveau für die Anzahl der ausgegebenen Bits bieten. Wenn Zuverlässigkeit wichtig ist, werden Datenblöcke normalerweise in Pakete mit ausgefeilteren Prüfsummen verpackt, dann mit einem ACK/Retry-Schema auf der Ebene über den Paketen.

@Pipe: Wenn ich mich recht erinnere, beträgt RS-232 beim Senden mindestens -5 bis +5 Volt, aber ein Empfänger muss -3 bis +3 V akzeptieren.

RS-485 hat mehrere Vorteile gegenüber RS-232.

  • Multi-Drop von einem Master zu mehreren Slave-Knoten.
  • Differenzsignale für höhere Störfestigkeit.
  • Niedrigere Spannungen bedeuten, dass ein 5-V-Netzteil verwendet werden kann.

Bei der Multidrop-Funktion müssen Sender und Empfänger etwas intelligenter sein, als es für die RS-232-Kommunikation erforderlich sein kann, da die Adressierung gehandhabt werden muss. Sobald ein Mikro involviert ist, ist es nicht allzu schwierig, auch Prüfsummenberechnungen hinzuzufügen.

Die Paritätsbits sind ein sehr grober Schutz und erkennen eine einzelne oder ungerade Anzahl von Bitfehlern in einem Zeichen. Eine gerade Anzahl von Bitfehlern bleibt unentdeckt. Im Gegensatz dazu hat eine Ein-Byte-Prüfsumme 256 mögliche Werte und die Wahrscheinlichkeit eines unentdeckten Fehlers ist viel geringer. Für zusätzliche Sicherheit kann eine 2-Byte-16-Bit-Prüfsumme verwendet werden.

Enthält der RS-485-Standard ein Fehlererkennungs-/Korrekturschema?

Nein, das ist Sache des Systemdesigners.

Eine aktuelle Frage zu diesem Thema finden Sie unter Wie man die Prüfsumme von Hand berechnet .

Mein absoluter Favorit hier ist Fletcher-16 . Es ist trivial , mit dem kleinsten 8-Bit-Mikro zu rechnen, wenn Sie ein Add-with-Carry (keine teuren Tabellen) haben, während Sie dennoch nahezu den gleichen Schutz wie CRC-16 bieten. (Verwechseln Sie das nicht mit Adler, der es tatsächlich geschafft hat, es zu vermasseln.)
Danke, Fletcher-16 ist mir noch nie begegnet. Noch eins für den Werkzeugkasten!
Ich mag 255 nicht als Modulus, da jedes dritte Byte nur eine Eins-aus-85-Auswahl, jedes fünfte Byte eine Eins-aus-51-Auswahl, jedes fünfzehnte Byte eine Eins-aus-17-Auswahl und jedes siebzehnte Byte beisteuert eine Eins-zu-15-Wahl. Im Gegensatz dazu trägt in einer Adler-Summe jedes Byte zu einer Eins-in-251-Auswahl bei. Ein alternativer Ansatz besteht darin, zwei laufende Prüfsummen beizubehalten und eine davon mit jedem Byte mit 3 zu multiplizieren (das vorletzte Byte hat also einen 3-fachen Beitrag, das drittletzte Byte einen 9-fachen Beitrag usw.). Das Muster von Beiträgen wiederholt sich alle 64, aber es gibt Möglichkeiten, damit umzugehen.
Übrigens, ich denke, es ist auch wichtig zu beachten, dass Fletchers Prüfsumme - zum Guten oder zum Schlechten - 00 und FF als identisch ansieht.