mikrocontroller.net

Forum: Haus & Smart Home 80c535 verindung über rs485


Autor: Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich habe zuhause ein Siemens 80c535 Board auf 19“-Einschubkarte.
Mit dieser Karte lernen wir in der Schule das Programmieren am MC mit
Assembler. So weit ich weiß habe ich auch eine rs485 Schnitstelle. 
Unmittelbar vor der Schnittstelle ist ein IC MAX481.
Zum Programmieren benutzen wir die rs232 Schnittstelle.
Jetzt muß ich aber zu übungszwecken den Bus ans laufen bekommen.
Gibt es da ein tutorial oder ähnliches?
Wäre super wenn ihr mir helfen könntet.

Leider bin ich ein totaler Anfänger auf diesem Gebiet.

Danke
Gruß Heinz

Autor: Sebastian Eckert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun, ich nehme an, der verwendete Mikrocontroller hat zwei serielle 
Ports, also zwei UARTs, einen für den RS232-Anschluß und einen für 
RS485.

Wenn ich mal, ohne den Anspruch auf wissenschaftliche Korrektheit zu 
erheben, ein paar Faustregeln und Erkenntnisse aus der Praxis beisteuern 
dürfte:

RS485 arbeitet immer halbduplex, d.h. es kann nicht gleichzeitig 
gesendet und empfangen werden - sollte man dies versuchen, liest man nur 
die gerade gesendeten Daten zurück, was aber bei anspruchsvolleren 
Anwendungen zur Kollisionserkennung sinnvoll sein kann.

RS485 benutzt im Gegensatz zu RS232 nur 2 Datenleitungen. Die 
Pegeldifferenz zwischen beiden, bzw. ob diese positiv oder negativ ist, 
wird vom Empfänger ausgewertet. Der Wechsel von 0 auf 1 oder umgekehrt 
entsteht also durch Polaritätsumkehr. Zur Abschirmung wird hin und 
wieder Masse mitgeführt. Kann hilfreich sein, muß nicht.

RS485 ist als Bus verwendbar. Oftmals ist dabei ein Gerät Master, und 
die anderen Slaves. Slave-Geräte senden nicht von sich aus, sondern 
antworten nur auf Anfragen des Masters. Zur Unterscheidung der Geräte 
wird oft eine Adressierung verwendet. In "reinen" RS485-Systemen, wo 
eine direkte Anbindung von PCs micht erforderlich ist, wird oft ein 
UART-Modus mit 9 Datenbits verwendet. Das neunte Bit wird zur 
Unterscheidung benutzt, ob die restlichen acht ein Datenbyte oder eine 
Adresse darstellen. Diese Betriebsart ist aber nicht verpflichtend. Man 
kann die Schnittstelle auch wie RS232 im mit 8 Detenbits verwenden.

RS485 wird üblicherweise über verdrillte, unabgeschirmte Kabel verlegt. 
Auf kurze Distanz tut es jede Art von Litze oder Klingeldraht, verdrillt 
oder nicht. Entscheidend ist aber der Abschluß mit etwa 100 Ohm 
(Terminierung), die an einem Ende, oder verteilt auf beide Enden des 
Kabelstranges als 2x 200 Ohm ausgeführt sein können. Diese stellen eine 
Last für die Bustreiber dar, denn RS485 ist eine Stromschnittstelle: Die 
Sender, auch Treiber genannt, sorgen dafür, daß ein bestimmter, 
definierter Strom fließt. Dabei stellt sich i.A. eine Spannung von etwa 
+/-3 Volt ein. Der Wert des Abschlußwiderstandes ist nicht kritisch, 120 
Ohm funktionieren genauso wie 56, letzteres erhöht natürlich den 
Stromverbrauch.

Der Max481-Baustein, genauso wie seine etwas primitiveren Verwandten vom 
Typ SN75176, hat zwei Eingänge, die wahrscheinlich mit Portleitungen des 
Mikrocontrollers verbunden sind. Diese werden üblicherweise als "DE" 
(Driver Enable) und "RE" (Receiver Enable) bezeichnet. da eine dieser 
Leitungen invertiert, also Low-aktiv ist, kann man auch beide verbinden 
und über eine einzige Portleitung steuern. In diesem Fall ist der 
Empfänger immer aus, wenn der Treiber an ist, man liest also die 
gesendeten Daten nicht mit. Will man das, kann RE auch dauernd aktiviert 
bleiben und DE bei Bedarf zugeschaltet.
Die RS485-Treiberbausteine erlauben, falls man das so will, hohe 
Bitraten, teilweise bis in den Megabit-Bereich, falls der UART das 
hergibt. (In der Praxis wohl eher nicht). 115k sollten aber möglich 
sein, obwohl ich selber so etwas nur bis 9600 Baud betrieben habe - 
daran waren aber die langsamen Optokoppler schuld, weil meine 
Applikation galvanische Trennung benötigte. bei direktem Anschluß sollte 
viel mehr gehen.
Ach ja, die ganze Sache ist trotz allem polaritätsabhängig. Die "A" und 
"B" Signalleitungen sollten nicht vertauscht werden (d.h. an allen 
Geräten gleich angeschlossen).

Also, kurz zusammengefaßt, RS485 kann ähnlich wie RS232 benutzt werden, 
man muß aber zum Senden die Datenrichtung über den entsprechenden Pin 
umschalten. Es gibt Möglichkeiten, RS485 auf RS232 zu wandeln, falls man 
einen PC über Terminalprogramm anschließen will. Der PC versteht 
allerdings keinen 9-Bit-Modus. Soweit ich das verstehe, definiert RS485 
mehr oder weniger die Hardwareseite der Schnittstelle, impliziert aber 
kein bestimmtes Protokoll. Wenn man darüber kein fertiges Gerät, sondern 
beispielsweise ein weiteres selbst programmiertes Mikrocontrollerboard 
anspricht, ist eigentlich jedes gewünschte serielle Datenformat und 
Protokoll möglich.

Autor: Jochen S. (jochen_s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne mich mit dem genannten Controller nicht genau aus aber der 
Wandler den du beschreibst beruht auf dem System, dass er zum senden 
über einen Portpin des Mikrocontrollers diesen Befehl erhält. du kannst 
mit RS232 immer auf den Controlle zugreifen, da diese Vollduplex kann 
RS485 hingegen kann nur Halbduplex. Schliess also die Prog-Leitungen 
ganz normal an, verende die gleiche Schnittstelle wie zum Progen, da das 
Progen durch einen String eingeleitet wird den der µc eigentlich 
erkennen sollte und in den PROG-Modus schaltet.

Gruss
Jochen

RS485-Hausbus.de.vu

Autor: unsichtbarer WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Grober Patzer:
>RS485 arbeitet immer halbduplex,

Der halbduplexe Variante ist ein Multimaster-Bus - es können also 
mehrere Leute "ungefragt" anfangen zu "reden".

Es gibt aber auch eine Vollduplex-RS485. Bei dieser Variante kommt nur 
ein Master zum Einsatz, dessen TXD-Leitungen an diverse Slaves verteilt 
wird.
Die Slaves wiederum hängen alle gemeinsam an den RXD-Leitungesn des 
Masters.
Insgesamt gibt es also 4 Leitungen bei der Vollduplex-Variante.

Die zweidraht-Variante wird aber häufiger benutzt.

Autor: Jochen S. (jochen_s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
JA, das ist korrekt allerdings werden für volldublex 2 Bustreiber 
benötigt wovon einer immer auf Empfang steht und einen der im 
Bedarfsfall auf senden gestellt wird.

Ist aber wie gesagt eine sehr seltene Methode,
"Dauergespräche" zwischen den Komponenten sind nicht die Regel. Also 
kann auch Softwaremässig geschaut werden ob der Bus frei ist und dann in 
den Sendemodus schaltet.

JOCHEN
rs485-hausbus.de.vu

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nabend,

> Wenn ich mal, ohne den Anspruch auf wissenschaftliche Korrektheit zu
> erheben, ein paar Faustregeln und Erkenntnisse aus der Praxis beisteuern
> dürfte:

Wenn ich die Faustreglen und Erkenntnisse mal ein wenig korrogieren 
dürfte   . . .

> RS485 arbeitet immer halbduplex, d.h. es kann nicht gleichzeitig

Meistens. RS485 kann auch vollduplex arbeiten.

> RS485 benutzt im Gegensatz zu RS232 nur 2 Datenleitungen. Die

RS232: single ended, also Signal + Masse
RS485: differentiell, Positives Signal (A) , dazu inverse Signal (B), 
Masse

> RS485 wird üblicherweise über verdrillte, unabgeschirmte Kabel verlegt.
> Auf kurze Distanz tut es jede Art von Litze oder Klingeldraht, verdrillt
> oder nicht. Entscheidend ist aber der Abschluß mit etwa 100 Ohm
> (Terminierung), die an einem Ende, oder verteilt auf beide Enden des
> Kabelstranges als 2x 200 Ohm ausgeführt sein können. Diese stellen eine

AUA!!! Entweder richtig oder gar nicht!

Sinnvollerweise sollte das verdrille Kabel ca. 100 Ohm Impedanz haben 
(+/- 10%). Ethernet-Patchkable sind ideal. Es gehen aber auch andere. 
Ein RS485 Strang wird immer an beiden Enden mit 100 Ohm terminiert. 
2x200 Ohm an einem Ende ist Nonsense. Die Terminierung kann man sparen, 
wenn die Kabel realtiv kurz sind und die Tranceiver langsam. Z.B. der 
MAX487 ist speziell verlangsamt, um bei kurzen Kabeln (<10m) auch ohne 
Terminierung ordentliche Signale zu erhalten.

> Last für die Bustreiber dar, denn RS485 ist eine Stromschnittstelle: Die

Falsch. RS485 ist ein Spannungsschnittstelle.

> +/-3 Volt ein. Der Wert des Abschlußwiderstandes ist nicht kritisch, 120
> Ohm funktionieren genauso wie 56, letzteres erhöht natürlich den
> Stromverbrauch.

Und ist totaler Nonsens! Entweder richtig oder gar nicht! Siehe oben.

> Der Max481-Baustein, genauso wie seine etwas primitiveren Verwandten vom
> Typ SN75176, hat zwei Eingänge, die wahrscheinlich mit Portleitungen des
> Mikrocontrollers verbunden sind. Diese werden üblicherweise als "DE"

Was heisst hier "wahrscheinlich"? Es muss (sinnvollerweise) mit RX/TX 
vom UART im Controller verbunden werden.

> hergibt. (In der Praxis wohl eher nicht). 115k sollten aber möglich

Geht praktisch mit allen RS485 Tranceiver. Man sollte aber dabei auf die 
"slew rate limited" Versionen zurückgreifen. Spart bei kurzen Leitungen 
die Terminierung und bei längeren EMV Probleme.

MfG
Falk

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.