RS-485: Unterschied zwischen den Versionen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
Keine Bearbeitungszusammenfassung
 
(24 dazwischenliegende Versionen von 14 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Einleitung ==
== Einleitung ==
Der RS485-Standard ist eine physikalische Spezifikation einer Reihe bidirektionaler Verbindungen über ein differentielles Leitungspaar, die von mehreren Protokollen benutzt wird. RS485 erlaubt grundsätzlich Point-2-Point-Verbindungen wie auch Multi-Point-Verbindungen mit mehreren Mastern und Slaves. Einsatzgebiete sind Umgebungen, bei denen es auf Störfestigkeit ankommt. Der Großteil sind industrielle und militärische Anwendungen, aber auch im Konsumerbereich ist RS485 zu finden, wenn sehr lange Leitungen verwendet werden, bei z.B. bei [[DMX]].


[[Datei:RS485.png|thumb|right|Transceiver ADM483E: Links ist CMOS/TTL-Logik, rechts die RS485-Leitung.]]
== Aufbau und Verwendung ==
RS485 ist die physikalische Spezifikation einer bidirektionalen Verbindung über ein differentiales Leitungspaar. Die Leitung ist idealerweise ein twisted Pair mit 120Ω [[Wellenwiderstand]]. Es können zwei oder mehrere Teilnehmer angeschlossen sein. Der Leitungsaufbau ist immer eine Linie, kein Stern und ohne Stichleitungen. Die Leitung ist idealerweise an beiden Enden terminiert. Idealerweise bedeutet hier für höhere Geschwindigkeiten und Distanzen zwingend, bei kurzen Leitungen und niedrigen Geschwindigkeiten nicht, siehe Artikel [[Wellenwiderstand]]. Das Interface ist ein RS485 Transceiver, der beinhaltet einen Sender und einen Empfaenger.
Die Leitung wird idealerweise als twisted Pair mit 120Ω [[Wellenwiderstand]] ausgeführt. Der Aufbau erfolgt dabei immer als eine Linie und niemals als Stern mit etwaigen Stichleitungen. Die Leitung ist idealerweise an beiden Enden terminiert, was für höhere Übertragungsgeschwindigkeiten sowie größere Distanzen zwingend erforderlich ist. Bei sehr kurzen Leitungen oder niedrigen Ü-Geschwindigkeiten ist dies nicht unbedingt der Fall, siehe Artikel [[Wellenwiderstand]]. Das physikalische Interface in Mikrocontrollern und CHIP-basierten Anwendungen ist meistens ein vollständiger RS485 Transceiver, der einen Sender sowie einen Empfaenger beinhaltet und das logische Protokoll realisiert. Bei FPGAs und schnellen Microcontrollern reicht ein RS-485 Buffer.


Da nicht mehrere Sender gleichzeitig auf die Leitung aufgeschaltet sein dürfen, muss der jeweilige Sender nach Bedarf eingeschaltet werden ([http://de.wikipedia.org/wiki/Duplex_%28Nachrichtentechnik%29 Halbduplex]). Dies wird auf Protokollebene definiert. Der Sender steuert das differentielle Leitungspaar voll aus, d.h. geht unbelastet auf 0V/Vcc, wobei es 3.3V, sowie 5V Bausteine gibt. Unter Last nimmt die Amplitude dann ab. Der Empfaenger braucht minimal 70mV Differenzspannung in einem Gleichtaktbereich von -7...+12V. Es gibt auch Bausteine mit höheren Gleichtaktspannungen.  
Da nicht mehrere Sender gleichzeitig auf die Leitung aufgeschaltet sein dürfen, muss der jeweilige Sender nach Bedarf eingeschaltet werden ([http://de.wikipedia.org/wiki/Duplex_%28Nachrichtentechnik%29 Halbduplex]). Dies wird auf Protokollebene definiert. Der Sender steuert das differentielle Leitungspaar voll aus, d.h. geht unbelastet auf 0V/Vcc, wobei es 3.3V, sowie 5V Bausteine gibt. Unter Last nimmt die Amplitude dann ab. Der Empfänger braucht minimal 70mV Differenzspannung in einem Gleichtaktbereich von -7...+12V. Es gibt auch Bausteine mit höheren Gleichtaktspannungen.  


Während der Standard von bis zu 32 Bausteinen pro Leitung ausgeht, sind Viertel- und Achtelpower Bausteine erhältlich, wovon dann 128 bzw. 256 Stück an eine Leitung angeschlossen werden können. Die Geschwindigkeit und die Reichweite sind nicht im Standard definiert.  
Während der Standard von bis zu 32 Bausteinen pro Leitung ausgeht, sind Viertel- und Achtelpower-Bausteine erhältlich, wovon dann 128 bzw. 256 Stück an eine Leitung angeschlossen werden können. Die Geschwindigkeit und die Reichweite sind nicht im Standard definiert.  


Bisher sind alle Transceiver pinkompatibel.
Bisher sind alle Transceiver pinkompatibel.
[[Datei:RS485.svg|thumb|right|Transceiver ADM483E: Links ist CMOS/TTL-Logik, rechts die RS485-Leitung.]]


== Meist genutzte RS485-Bausteine ==
== Übersicht RS485 / RS422 Bausteine ==
* SN75176, günstig und leicht zu beschaffen, aber ein Stromfresser (28-50mA!)
{| {{Tabelle}} border="1" class="wikitable sortable" id="rs485ics"
* LTC485
|- style="background-color:#eeeeee"
* MAX485 Moderne CMOS-Variante mit weniger als 1mA Eigenverbrauch
! style="width:6em" | Bezeich-<br>nung
* ADM485
! style="width:6em" | Package
* ADM483 von Analog Devics, 250kBit, supply 350uA plus load, SO8, 1.14$@100
! style="width:8em" | Hersteller
* SN65HVD11D von Texas, für 3V3 Schaltungen, recht billig
! style="width:4em" | Vcc [V]
! style="width:6em" | Datarate<br>[Mbit/s]
! Slewrate<br>limited
! Max.<br>Tranceiver
! Lieferant
|-
| LTC1480
| SO-8
| Linear
| 3,3
| 2,5
| ?
| 32
| R
|-
| MAX481
| SO-8
| Maxim
| 5
| 2,5
| nein
| 32
| R
|-
| MAX485
| SO-8
| Maxim
| 5
| 2,5
| nein
| 32
| R
|-
| MAX3485
| SO-8
| Maxim
| 3,3
|
| ja
| 32
| R
|-
| SP3485
| SO-8
| Exar
| 3,3
| 10
| nein
| 32
| R
|}


== Speziellere Ausführungen ==
=== Meist genutzte RS485-Bausteine ===
* [//www.mikrocontroller.net/part/SN75176 SN75176], günstig und leicht zu beschaffen, aber ein Stromfresser (28-50mA!)
* [//www.mikrocontroller.net/part/LTC485 LTC485]
* [//www.mikrocontroller.net/part/MAX485 MAX485] Moderne CMOS-Variante mit weniger als 1mA Eigenverbrauch
* [//www.mikrocontroller.net/part/ADM485 ADM485]
* [//www.mikrocontroller.net/part/ADM483 ADM483] von Analog Devics, 250kBit, supply 350uA plus load, SO8, 1.14$@100
* [//www.mikrocontroller.net/part/SN65HVD11 SN65HVD11D] von Texas, für 3V3 Schaltungen, recht billig (der [//www.mikrocontroller.net/part/SN65HVD75 SN65HVD75D] arbeitet auch mit 3V3, hat zusätzlich ESD Protection und kostet derzeit bei Farnell nur 2,15€ also etwa einen Euro billiger als der SN65HVD11D)
* ISL83483 von Intersil, 3,3 V, recht günstig, inkl. Failsafewiderständen


* SN65HVD23D  von TI, extended common mode -20 to +25V, 25MBit @160m, 64nodes, supply 7mA plus load, SO8, 4.05$@1
=== Speziellere Ausführungen ===
* SN65HVD24D   von TI, extended common mode -20 to +25V, 3MBit @500m, 256 nodes, supply 10mA plus load, SO8, 4.05$ @1
 
* SN65HVD23D  von TI
** extended common mode -20 to +25V
** 25MBit @160m
** 64 nodes
** Supply 7mA plus load
** SO8 Gehäuse
** 4.05$@1
 
* SN65HVD24D von TI
** extended common mode -20 to +25V
** 3MBit @500m
** 256 nodes
** Supply 10mA plus load
** SO8 Gehäuse
** 4.05$ @1
 
== Beispielprotokolle ==
* DMX : +/- 5V, 250 kb/s.
* ProfiBus :  ab +/-3V, bis 10Mb/s


== Weitere Hinweise ==
== Weitere Hinweise ==


[[bild:rs485_term.png | framed | RS485 Terminierung mit Pull-Up/Down Widerständen]]
[[bild:rs485_term.png | framed]]


* Failsafe - was passiert auf dem Bus, wenn kein Sender aktiv ist? Dann muss man mittles Pull Up und Pull Down Widerstand für definierte Pegel sorgen. Das ist vor allem dann nötig, wenn man mittles [[UART]] Daten überträgt, was bei 90% der RS485 Anwendungen der Fall ist. Arbeitet man mit Terminierung, so werden klassisch die Werte wie im nebenstehenden Bild verwendet. Ohne Terminierung entfällt R2 und R1=R3=1k&Omega;. Diese Terminierung gibt es nur einmal auf dem Bus, nicht an jedem Teilnehmer!
* Failsafe - was passiert auf dem Bus, wenn kein Sender aktiv ist? Dann muss man mittels Pull-Up- und Pull-Down-Widerstand für definierte Pegel sorgen. Das ist vor allem dann nötig, wenn man mittels [[UART]] Daten überträgt, was bei 90% der RS485 Anwendungen der Fall ist. Arbeitet man mit Terminierung, so werden typischerweise die Werte im nebenstehenden Bild verwendet. Ohne Terminierung entfällt R2 und R1=R3=1k&Omega;. Diese Terminierung darf nur einmal am Bus exisiteren - nicht an jedem Teilnehmer!
* Verlustleistung - die Terminierung (100..120Ω) verbraucht einiges an Strom, den man mit einem 1µF in Serie unterdrücken kann (AC-Terminierung, siehe Artikel [[Wellenwiderstand]]).
* Verlustleistung - die Terminierung (100..120Ω) verbraucht einiges an Strom, den man mit einem 0,1µF in Serie reduzieren kann ([[Wellenwiderstand#AC-Terminierung | AC-Terminierung]]).
* [[Galvanische Trennung]] - speziell bei ausgedehnten Systemen können die -7...+12V Gleichtaktbereich nicht genügen, speziell in einem industriellen Umfeld nicht. Dann sollte man eine galvanische Trennung einführen.
* Speziell bei ausgedehnten Systemen im industriellen Umfeld können die -7...+12V Gleichtaktbereich ungenügend sein. Dann sollte man eine [[Galvanische Trennung | galvanische Trennung]] einführen.
* Die Masse als Referenz sollte man IMMER im Kabel mitführen, auch wenn es scheinbar oft auch ohne funktioniert.
* Die Masse sollte man '''immer''' als Referenz im Kabel mitführen, auch wenn es oft auch ohne funktioniert.
** [https://www.mikrocontroller.net/topic/547801 Forumsbeitrag]: GND-Erdung wegen fehlender Masse an RS485 Gegenstelle
** [http://www.mikrocontroller.net/topic/306725#new Forumsbeitrag]: Kein GND auf RS485
** [https://www.mikrocontroller.net/topic/460030?goto=5568496#5568444 Forumsbeitrag]: Datenübertragung über >100m
** [https://www.ti.com/lit/an/slla272d/slla272d.pdf The RS-485 Design Guide], von TI


== Weblinks ==
== Weblinks ==
Zeile 39: Zeile 121:
* Slla70c (TI) 422 and 485 Standards Overview and System Configurations
* Slla70c (TI) 422 and 485 Standards Overview and System Configurations
* Slla169 (TI) Use receiver equalization to extend RS485 data communication
* Slla169 (TI) Use receiver equalization to extend RS485 data communication
* AN-1057 (National) Ten Ways to Bulletproof RS-485 Interfaces
* [http://www.ti.com/lit/an/snla049b/snla049b.pdf  Ten Ways to Bulletproof RS-485 Interfaces], AN-1057 (National)
* [http://focus.ti.com/lit/an/slyt324/slyt324.pdf RS-485: Passive failsafe for an idle bus], Application Note slyt324 von TI
* [http://focus.ti.com/lit/an/slyt324/slyt324.pdf RS-485: Passive failsafe for an idle bus], Application Note slyt324 von TI
* [http://pdfserv.maxim-ic.com/en/an/AN1090.pdf Methods for Trimming the Power Required in RS-485 Systems], Application Note 1090 von Maxim
* [http://pdfserv.maxim-ic.com/en/an/AN1090.pdf Methods for Trimming the Power Required in RS-485 Systems], Application Note 1090 von Maxim
* [http://www.youtube.com/watch?v=iH2UdrRyz7U Video-Anleitung RS485 Konverter Verkabelung]


[[Category:Datenübertragung]]
[[Category:Datenübertragung]]
[[Category:RS-485]]
[[Category:DMX]]

Aktuelle Version vom 20. Dezember 2022, 08:19 Uhr

Einleitung

Der RS485-Standard ist eine physikalische Spezifikation einer Reihe bidirektionaler Verbindungen über ein differentielles Leitungspaar, die von mehreren Protokollen benutzt wird. RS485 erlaubt grundsätzlich Point-2-Point-Verbindungen wie auch Multi-Point-Verbindungen mit mehreren Mastern und Slaves. Einsatzgebiete sind Umgebungen, bei denen es auf Störfestigkeit ankommt. Der Großteil sind industrielle und militärische Anwendungen, aber auch im Konsumerbereich ist RS485 zu finden, wenn sehr lange Leitungen verwendet werden, bei z.B. bei DMX.

Aufbau und Verwendung

Die Leitung wird idealerweise als twisted Pair mit 120Ω Wellenwiderstand ausgeführt. Der Aufbau erfolgt dabei immer als eine Linie und niemals als Stern mit etwaigen Stichleitungen. Die Leitung ist idealerweise an beiden Enden terminiert, was für höhere Übertragungsgeschwindigkeiten sowie größere Distanzen zwingend erforderlich ist. Bei sehr kurzen Leitungen oder niedrigen Ü-Geschwindigkeiten ist dies nicht unbedingt der Fall, siehe Artikel Wellenwiderstand. Das physikalische Interface in Mikrocontrollern und CHIP-basierten Anwendungen ist meistens ein vollständiger RS485 Transceiver, der einen Sender sowie einen Empfaenger beinhaltet und das logische Protokoll realisiert. Bei FPGAs und schnellen Microcontrollern reicht ein RS-485 Buffer.

Da nicht mehrere Sender gleichzeitig auf die Leitung aufgeschaltet sein dürfen, muss der jeweilige Sender nach Bedarf eingeschaltet werden (Halbduplex). Dies wird auf Protokollebene definiert. Der Sender steuert das differentielle Leitungspaar voll aus, d.h. geht unbelastet auf 0V/Vcc, wobei es 3.3V, sowie 5V Bausteine gibt. Unter Last nimmt die Amplitude dann ab. Der Empfänger braucht minimal 70mV Differenzspannung in einem Gleichtaktbereich von -7...+12V. Es gibt auch Bausteine mit höheren Gleichtaktspannungen.

Während der Standard von bis zu 32 Bausteinen pro Leitung ausgeht, sind Viertel- und Achtelpower-Bausteine erhältlich, wovon dann 128 bzw. 256 Stück an eine Leitung angeschlossen werden können. Die Geschwindigkeit und die Reichweite sind nicht im Standard definiert.

Bisher sind alle Transceiver pinkompatibel.

Transceiver ADM483E: Links ist CMOS/TTL-Logik, rechts die RS485-Leitung.

Übersicht RS485 / RS422 Bausteine

Bezeich-
nung
Package Hersteller Vcc [V] Datarate
[Mbit/s]
Slewrate
limited
Max.
Tranceiver
Lieferant
LTC1480 SO-8 Linear 3,3 2,5 ? 32 R
MAX481 SO-8 Maxim 5 2,5 nein 32 R
MAX485 SO-8 Maxim 5 2,5 nein 32 R
MAX3485 SO-8 Maxim 3,3 ja 32 R
SP3485 SO-8 Exar 3,3 10 nein 32 R

Meist genutzte RS485-Bausteine

  • SN75176, günstig und leicht zu beschaffen, aber ein Stromfresser (28-50mA!)
  • LTC485
  • MAX485 Moderne CMOS-Variante mit weniger als 1mA Eigenverbrauch
  • ADM485
  • ADM483 von Analog Devics, 250kBit, supply 350uA plus load, SO8, 1.14$@100
  • SN65HVD11D von Texas, für 3V3 Schaltungen, recht billig (der SN65HVD75D arbeitet auch mit 3V3, hat zusätzlich ESD Protection und kostet derzeit bei Farnell nur 2,15€ also etwa einen Euro billiger als der SN65HVD11D)
  • ISL83483 von Intersil, 3,3 V, recht günstig, inkl. Failsafewiderständen

Speziellere Ausführungen

  • SN65HVD23D von TI
    • extended common mode -20 to +25V
    • 25MBit @160m
    • 64 nodes
    • Supply 7mA plus load
    • SO8 Gehäuse
    • 4.05$@1
  • SN65HVD24D von TI
    • extended common mode -20 to +25V
    • 3MBit @500m
    • 256 nodes
    • Supply 10mA plus load
    • SO8 Gehäuse
    • 4.05$ @1

Beispielprotokolle

  • DMX : +/- 5V, 250 kb/s.
  • ProfiBus : ab +/-3V, bis 10Mb/s

Weitere Hinweise

Rs485 term.png
  • Failsafe - was passiert auf dem Bus, wenn kein Sender aktiv ist? Dann muss man mittels Pull-Up- und Pull-Down-Widerstand für definierte Pegel sorgen. Das ist vor allem dann nötig, wenn man mittels UART Daten überträgt, was bei 90% der RS485 Anwendungen der Fall ist. Arbeitet man mit Terminierung, so werden typischerweise die Werte im nebenstehenden Bild verwendet. Ohne Terminierung entfällt R2 und R1=R3=1kΩ. Diese Terminierung darf nur einmal am Bus exisiteren - nicht an jedem Teilnehmer!
  • Verlustleistung - die Terminierung (100..120Ω) verbraucht einiges an Strom, den man mit einem 0,1µF in Serie reduzieren kann ( AC-Terminierung).
  • Speziell bei ausgedehnten Systemen im industriellen Umfeld können die -7...+12V Gleichtaktbereich ungenügend sein. Dann sollte man eine galvanische Trennung einführen.
  • Die Masse sollte man immer als Referenz im Kabel mitführen, auch wenn es oft auch ohne funktioniert.

Weblinks