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
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.
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
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.
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
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.