Wer seine Applikationen mal im Einsatz, also außerhalb der Wohnung/des Labors, vernetzen möchte, der sieht sich möglicherweise über kurz oder lang mit diversen Störungen konfrontiert. Dies kann beispielsweise schon auf einem größeren Roboter der Fall sein, dessen Antriebsmotoren bereits ordentliche Störfelder verursachen können. Wenn man dann auf den Kommunikationsschnittstellen nur noch Unfug/Datenmüll empfängt, steht man vor der Aufgabe, die Störungen bestmöglich zu unterdrücken bzw. zu umgehen.

Doch zum Glück hat die Industrie sich mit diesem Problem schon früh auseinander gesetzt und entsprechende Spezifikationen geschaffen. Um die im folgenden behandelten beim Namen zu nennen:

RS232    -    RS422    -    RS485

RS232

Wer bereits mit Mikrocontrollern gearbeitet hat, der ist bestimmt schon mit dem USART des Controllers und der RS232 Schnittstelle des PCs in Berührung gekommen. Wie man weiß, muss um eine Kommunikation zwischen MC und PC zu ermöglichen (über die serielle Schnittstelle), bspw. ein MAX232 eingefügt werden. Dies kommt daher, dass der Mikrocontroller mit einer 5V-Logik (TTL) arbeitet, wohingegen die PC-Schnittstelle ±5 bis ±15V erwartet. Diese Pegelwandlung dient der möglichst störungsfreien Übertragung von der Schnittstelle des MC über ein mehr oder weniger langes Kabel zum PC. Eine Null wird durch einen Spannungspegel von 5-15V repräsentiert, eine Eins durch die entsprechende negative Spannung.
RS232 wurde ursprünglich für die Kommunikation zwischen dem PC und diverser Peripherie (Modem, Plotter, ...) entwickelt. Es ist eigentlich also nur für Punkt zu Punkt Verbindungen gedacht. Es gibt jedoch eine Möglichkeit, auch mehrere Teilnehmer an RS232 betreiben zu können. Diese wird im englischen "daisy chain scheme" genannt. Sie funktioniert im Endeffekt so, dass alle Teilnehmer zu einer Art Kette verbunden werden. Empfängt ein Teilnehmer eine Nachricht, welche nicht für ihn bestimmt ist, so reicht er diese einfach weiter. Wie man sich denken kann, ist das nicht wirklich das Wahre, da bei einem Durchtrennen der Verbindung zwischen zwei Bausteinen die Buskommunikation zu großen Teilen zusammenbrechen kann, da alle nachfolgenden Teilnehmer vom Bus gleichzeitig mit abgetrennt werden.
Die Übertragungsart ist unidirektional, d.h. für eine Kommunikation in zwei Richtungen sind auch zwei Leitungen nötig.

RS422

Eine Lösung für die oben angerissenen Probleme stellt der RS422 Bus dar. Dieser erlaubt bereits große Distanzen aufgrund seiner differentiellen Datenübertragung. Diese arbeitet so, dass ein Signal auf zwei Leitungen übertragen wird. Beide haben als Bezugspotential Masse und unterscheiden sich nur im Vorzeichen des Potentials. Normal sind hier ±5V. Das Maximum sollte bei etwa ±7V liegen. Er beschränkt sich jedoch weiterhin im wesentlichen auf die Punkt zu Punkt Kommunikation, auch wenn ein Treiber bereits bis zu 10 Empfänger ansteuern kann. Ein weiterer Vorteil ist, dass hier bereits wesentlich höher Datenraten möglich sind (115,2K Baud für lange Distanzen bis zu 10M Bit bei auf Kurzdistanzen). Als Verdrahtung kommen je ein verdrilltes Leiterpaar (twisted pair) für TXD bzw. RXD (Senden bzw. Empfang) zum Einsatz.
Bei sehr großen Leiterlängen wird empfiehlt es sich, die Leitungen jeweils mit einem Abschlusswiderstand zu versehen, um Störungen durch Reflektionen im Leiter vorzubeugen. Eine weitere Ursache liegt darin, dass man dem Treiber eine gewisse Grundlast abverlangen sollte. Da diese Übertragungsform analog zu RS232 unidirektional ist, allerdings für ein Signal zwei Leitungen verwendet werden, müssen für eine Übertragung in beide Richtungen zwei Twisted-Pair Kabel verwendet werden. RS422 wird oft verwendet, um eine RS232-Kommunikation über längere Distanzen zu ermöglichen (Punkt zu Punkt!).
Sowohl hier als auch bei RS485 sollte eine Masse-Leitung mitgezogen werden.

RS485

Eine Weiterentwicklung des RS422-Standards stellt RS485 dar. Diese Spezifikation erlaubt noch mehr Teilnehmer am Bus, kann noch höhere Distanzen überbrücken und ist auch sonst noch weniger störanfällig. Dies wird dadurch erreicht, dass zum einen hier Spannungen von -7V bis 12V verwendet werden dürfen, zum anderen müssen die Eingangswiderstände der angeschlossenen Geräte höher sein, was die Busbelastung senkt und somit mehr Geräte je Bus möglich macht. Es können bis zu 32 Empfänger angeschlossen werden.
Auch wird empfohlen, die Busleitung abzuschließen. Dies geschieht abhängig von der Betriebsart.
Im Gegensatz zu RS422 ist RS485 bidirektional. Ansonsten sind seine Eigenschaften nahezu komplett von RS422 adaptiert worden. Es genügt zur Kommunikation eine Leitung. Diese muss hier allerdings an beiden Enden mit einem Widerstand abgeschlossen werden. Alle angeschlossenen Geräte müssen tristate-Ausgänge haben.
Bei Verwendung von zwei Twisted-Pair Leitungen muss der der Master keinen tristate-Ausgang mehr haben, da die angeschlossenen Slaves nun die zweite Leitung zum Senden von Daten an den Master verwenden.
In den meisten Einsatzgebieten wird eine Master-Slave(s) Konfiguration verwendet. Der Master spricht die Slaves über deren Adresse an und diese Antworten auf die Anfrage. So kann er der Reihe nach alle am Bus betriebenen Geräte abfragen (Polling), ohne das es zu Schwierigkeiten kommen kann (vergl. TWI/I²C). In speziellen Anwendungen wird auf dem Master verzichtet. Will man sehr harte Echtzeitanforderungen einhalten, so muss der Slave sobald er etwas zu melden hat, dieses sofort tun. Im worst-case haben zwei Slaves zur selben Zeit dasselbe Bedürfnis Daten zu senden und es kommt zu einem Übersprechen auf dem Bus. Somit muss jeder Slave, nachdem er gesendet hat, auf dem Bus detektieren, ob seine Sendung korrekt empfangen wurde (bspw. ACK von der Gegenstelle) und ansonsten es nach einer spezifizierten Zeit erneut versuchen. Bedingt dadurch sinkt die effektive Datenrate auf dem Bus unter Umständen merklich ab.
Werden mehrere Treiber und Empfänger am Bus betrieben (Multidrop), empfiehlt sich der folgende Abschluss (auf beiden Seiten). Bei nur wenigen Geräten am Bus sollte R anstatt mit 100Ω eher mit 60Ω dimensioniert werden. Dies stellt die Minimallast für einen RS485-Treiber dar.

Wird der Bus nur mit einem Treiber analog dem RS422 betrieben, kann man ihn wie folgt abschließen. Sind mehrere Empfänger an den Bus angeschlossen, kann man den Widerstand auch höher dimensionieren, da dann bereits für eine ausreichende Grundlast gesorgt ist. Man kann diesen Wert auch berechnen, insofern die Eingangsimpedanz der Empfänger sowie die Leitungsimpedanz bekannt ist.

Anmerkung: Bei kurzen Leiterlängen und relativ geringen Datenraten kann sowohl der Abschluss als auch die Verwendung eines Twisted-Pair Kabels entfallen. Hier genügt zum Beispiel normales Telefonkabel oder ähnliches vollkommen.

Allen beschriebenen Busformen ist gemein, dass sie lediglich die physikalische Seite der Übertragung reglementieren. Über das Datenformat (Protokoll) werden keine Aussagen getroffen, dieses bleibt dem Anwender überlassen. Auch können die Steckerbelegungen je nach verwendeter Schnittstelle und deren hardwaremäßiger Realisierung variieren. Beim Aufbau eines eigenen Systems bleibt sie dem Anwender überlassen, bei Anschluss an bestehende Systeme (bspw. verschiedene Industriebusse) muss er sich nach deren Spezifikationen richten.
Wie man sich denken kann, arbeiten bei allen Übertragungsformen die Kabellänge und die Datenrate gegeneinander. Auf einem sehr langen Kabel wird also nie die maximale Übertragungsgeschwindigkeit möglich sein und umgekehrt.

Die Anwendung in einer Zielapplikation gestaltet sich für den Anwender relativ einfach. Er bringt einfach an der Kommunikationsschnittstelle seiner Applikation (bspw. USART) einen entsprechenden Schnittstellenbaustein an. Diese sind von diversen Herstellern verfügbar. Hat man alle Bausteine, welche miteinander kommunizieren sollen, entsprechend bestückt, muss man nur noch je nach verwendeter Schnittstelle eine entsprechende Verbindung zwischen ihnen realisieren (Modemkabel, Nullmodemkabel, Twisted-Pair Kabel, ...).

Zum Abschluss hier noch ein Beispiel, wie eine RS485 Kommunikation mit den entsprechenden Bausteinen aussehen könnte. Als Aufgabe steht, eine Kommunikation zwischen zwei AVRs in einem gestörten Umfeld zu realisieren. Als Bausteine sollen Transceiver verwendet werden. Es bieten sich zum Beispiel der AD485 von Analog Devices, der LTC1487 von Linear Technology sowie der MAX485 von Maxim an, um hier nur einige zu nennen. Als Schnittstelle am Mikrocontroller soll exemplarisch der USART verwendet werden.

Exemplarisch wird der ADM485 verwendet. Nun zur Pinbelegung. A und B stellen die Schnittstelle zum RS485-Bus dar. Vcc ist mit 5V festgelegt. Dann wären da noch RO, was für den Empfänger-Ausgang und DI, was für den Daten-Eingang steht. Beide können wechselseitig über /RE bzw. DE aktiviert werden. Bedingt dadurch, dass der eine Eingang negiert und der andere normal ist, reicht es, beide Pins zusammenzuschließen und auf einen Pin des MC zu führen. Hat dessen Steuerpin H-Pegel, so wird gesendet, im anderen Fall empfangen.