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.