mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RS485 - Abschlusswiderstände schaltbar


Autor: tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich möchte an einem RS485 mehrere Slaves betreiben, die ihre Adresse vom 
Master nach Power-Up automatisch zugewiesen bekommen. Allerdings muss 
dann auch der Busabschluss entsprechend zu bzw. abgeschaltet werden. 
Meine Frage
kennt jemand eine einfache Schaltung mit der ich den Abschlusswiderstand 
bei RS485 zu bzw. abschalten kann. Für die Pull-up bzw. Pull-down kann 
ich einen Transistor verwenden. Bei dem 120 Ohm zwischen den 
Busleitungen habe ich allerdings nur die Idee ein Relais einzusetzen - 
ist mir aber zu teuer.

Danke schon mal vorab
tom

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

einen kleinen FET seriel zum Widerstand per uC schalten

Autor: Batmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du galvanisch getrennte Treiber verwendest, wird die FET-Lösung 
doch verhältnismäßig Aufwändig.
Was spricht gegen kleine Reed-Relais?

Autor: Mensch_Z (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Abschlusswiderstand hat doch nichts mit der Slave_Adresse zu tun.

Die Einfachste Schaltung ist die Schwierigste ;-)(

Autor: Batmann (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
> Abschlusswiderstand hat doch nichts mit der Slave_Adresse zu tun.

Meistens doch, denn nur der letzte Slave in der Kette braucht einen 
Abschlußwiderstand. Nicht selten ist es der mit der höchsten Adresse.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
>> Abschlusswiderstand hat doch nichts mit der Slave_Adresse zu tun.

>Meistens doch, denn nur der letzte Slave in der Kette braucht einen
>Abschlußwiderstand. Nicht selten ist es der mit der höchsten Adresse.

Der letzte Slave (von der Adresse her) muss aber nicht zwingend der 
letzte Teilnehmer am Bus sein.


>einen kleinen FET seriel zum Widerstand per uC schalten

Ich vermute, das geht nicht, da der Widerstand in beide Stromrichtungen 
belastet wird.. Ein kleines Reedrelais ist wohl die beste Lösung.

Autor: morph1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ein mosfet relais vl? da gibts welche mit optokoppler

ich glaub die rennen unter solid state relais

kenn mich da aber nicht so aus

Autor: Stefan Kleinwort (_sk_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal angenommen, die Slaves hängen der Adresse geordnet am Bus.

Wie bekommt der Slave mit der höchsten Adresse mit, dass er der letzte 
ist?

Durch den Bus (noch) nicht, der kann u.U. (durch den noch nicht 
eingeschalteten Abschluss-Widerstand) noch garnicht funktionieren.

Ich denke, das wird ein Henne-Ei-Problem.

Gruß, Stefan

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich denke, das wird ein Henne-Ei-Problem.

Ja. Solche automatischen Adressvergaben gehen meiner Meinung nach nur, 
wenn die Information a la SPI durch die Teilnehmer durchgeht.

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Der Abschlusswiderstand hat doch etwas mit der mechanischen Anordnung 
der Slaves zu tun. Und wie schon erwähnt funktioniert ja der Bus noch 
nicht, wenn noch kein Abschlusswiderstand eingeschaltet ist. Ich würde 
das über Jumper im Gerät oder Schalter am Gerät machen. Oder jedes Gerät 
bekommt eine In- und eine Out- Buchse und auf die Outbuchse des letzten 
Gerätes wird ein Abschlusswiderstand gesteckt. Normalerweise ändert sich 
die Konfiguration ja nicht laufend. Und wenn man ein neues Gerät an den 
Bus hängt, muss man halt an dem letzten die Widerstände ausschalten und 
an dem neuen Slave einschalten.

Sven

Autor: Harald A. (embedded)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In Sachen schaltbarer Abschlusswiderstand haben wir in der Firma auch 
schon viel Gehirnschmalz reingesteckt. Mittlerweile verwenden wir für 
diesen Zweck bistabile(!) Relais. Bei uns ist es zwar der CAN Bus, tut 
aber nichts zur Sache.
Vorteile der Lösung mit bistabilen Relais:
Sofort nach Power-Up definierter Abschluss, bei Ausfall des Rechners mit 
dem Busabschluss trotzdem definierter Zustand für alle anderen 
Teilnehmer. Alle anderen elektronischen Lösungen können in realen 
Umgebungen so ihre Probleme haben, man denke nur an die zulässige 
Common-Mode Spannung des eigentlichen Treibers. Da gibt es ja welche, 
die durchaus bis +60V common mode gehen, legt für diesen Zweck mal eine 
zuverlässige(!) elektronische An-/Abschaltung für den 
Abschlusswiderstand aus - viel Spaß!

Und die Kosten sind garantiert NICHT höher als die einer 
vergleichbaren(!!!) elektronischen Lösung.

Autor: Batmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, Oh, hier scheint es eine Menge Ahnung nicht zu geben. Die Aussagen

> Ja. Solche automatischen Adressvergaben gehen meiner Meinung nach nur,
> wenn die Information a la SPI durch die Teilnehmer durchgeht.

> Ich vermute, das geht nicht, da der Widerstand in beide Stromrichtungen
> belastet wird.

> Ich denke, das wird ein Henne-Ei-Problem.

sind quatsch.

Die Slaves können sich zum Beispiel entsprechend ihrer Adresse 
nacheinander beim Master melden. Der aktuell meldende Slave hat seinen 
Widerstand eingeschaltet und schaltet ihn direkt ab, wenn sich noch ein 
weiterer Slave meldet. Nach dieser automatischen Initialisierungsphase 
übernimmt der Master die Regie. Je nach spezifischer Systemauslegung 
gibt es aber noch viele weitere Strategien bei der Initialisierung.

Autor: Harald A. (embedded)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Der aktuell meldende Slave hat seinen Widerstand eingeschaltet und
>schaltet ihn direkt ab, wenn sich noch ein weiterer Slave meldet.

Wozu sollte das gut sein?

>hier scheint es eine Menge Ahnung nicht zu geben.

Dann weißt du ja bestimmt, wozu so ein Abschlusswiderstand dient, gell?

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Die Slaves können sich zum Beispiel entsprechend ihrer Adresse
>nacheinander beim Master melden..........

Na das erkläre mal genauer!

Autor: Batmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wozu sollte das gut sein?

Es muß immer genau 1 Abschlußwiderstand pro Leitungsende vorhanden sein!
Folglich muß bei 2 eingeschalteten Widerständen einer abgeschaltet 
werden!

> Dann weißt du ja bestimmt, wozu so ein Abschlusswiderstand dient, gell?

Ja!

> Na das erkläre mal genauer!

Slave-Anmeldezeitpunkt =
Einschaltzeitpunkt (oder Timecodemarke etc.) x Slaveadresse x tx

(Alles Weitere ergibt sich mit der obigen Beschreibung.)

Autor: Stefan Kleinwort (_sk_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Ich denke, das wird ein Henne-Ei-Problem.
>
>sind quatsch.
>
>Die Slaves können sich zum Beispiel entsprechend ihrer Adresse
>nacheinander beim Master melden.

Erst lesen, dann mosern:
Der OP will die Adressen NACH dem Power-Up vom Master zuweisen:

>Ich möchte an einem RS485 mehrere Slaves betreiben, die ihre Adresse vom
>Master nach Power-Up automatisch zugewiesen bekommen.

Ein "entsprechend ihrer Adresse nacheinander" ist zu diesem Zeitpunkt 
nicht möglich, da die Adresse noch nicht vergeben ist. Zum Vergeben der 
Adresse durch den Master sollte aber der Abschlusswiderstand 
eingeschaltet sein.

Übrigens:
Abschlusswiederstand heisst dass Ding, weil es am Schluss des Buskabels 
hängen soll. Wenn der Bus so unkritisch ist, dass an beliebiger Stelle 
ein Buswiderstand eingeschaltet ist (wie von Dir vorgeschlagen), dann 
kann der ganze Aufwand auch entfallen und nur ein Zentralwiderstand am 
Master vorhanden sein.

Übrigens (II):
Wie soll der letzte Slave am Buskabel seine Position herausbekommen? 
Anhand der Geht dies nicht, wenn diese vom Master vergeben wird.


Gruß, Stefan

Autor: Batmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Stefan

Wie bereits beschrieben, gibt es je nach Systemauslegung viele Lösungen 
zu dem Problem. Wenn zum Beispiel die Adresse kein Kriterium für den 
Abschlußwiderstand darstellen, dann werden sich sicher andere Kriterien 
finden lassen. Im übrigen können die Slave-Adressen chaotisch vergeben 
sein und erst bei der Initialisierung sinnvoll vergeben werden. In 
diesem Fall kann das zeitlich versetzte Melden der einzelnen Slaves sehr 
hilfreich sein. Auch Adresskollisionen sind damit beherrschbar.

Anhand der spärlichen Angaben kann natürlich keine vollständige 
Beschreibung des Initialisierungsprozesses erfolgen; es können lediglich 
beispielhafte Lösungsansätze, die entsprechend den Randbedingungen noch 
modifiziert werden müssen, vorgestellt werden.

Trotzdem gab es hier schon einige grundsätzlich falsche Aussagen.

Gruß Batmann

Autor: tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die vielen Antworten
Noch kurz zur Beschreibung meiner Aussage "die Slaves bekommen ihre 
Adresse nacheinander". Ich denke das bekommt man hin mit nem Daisy-chain 
bzw. chain-enable Prinzip. Hier wird der Bus von jedem Slave erst zum 
nächsten Slave weitergeschleift (enabled) wenn er vom Master seine 
Adresse bekommen hat. So bekomme ich eine schöne Adressierung der Reihe 
nach hin. Sicherlich hab ich noch das Problem dass beim Initialisieren 
der Abschlusswiderstand nicht immer genau am Endes sitzt. Aber da ich 
mit sehr niedriger Baudrate (9600 Baud oder kleiner) könnte das noch 
funktionieren.
Das Weiterschleifen kann ggf. mit Relais oder einem zusätzlichen RS485 
Treiber erfolgen.

gruß tom

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tom wrote:

> bzw. chain-enable Prinzip. Hier wird der Bus von jedem Slave erst zum
> nächsten Slave weitergeschleift (enabled) wenn er vom Master seine
> Adresse bekommen hat.

Slave tot => Bus dahinter auch.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>So bekomme ich eine schöne Adressierung der Reihe
>nach hin. Sicherlich hab ich noch das Problem dass beim Initialisieren
>der Abschlusswiderstand nicht immer genau am Endes sitzt.

Wenn der Bus immer nur von einem zum anderen geht, brauchst du an jedem 
Ende einen Abschlusswiderstand. Also pro Teilnehmer ZWEI.

Autor: Mensch_Z (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was nuetzt eine schoene Adressierung 'der Reihe nach' ?
wie willst du wissen wer wo ist und was du wem uebermitteln willst.
...oder ist das alles Wurst ?

warum soll nicht jeder Slave seine eigene Adresse (evtl per DipSwitch 
einstellbar)haben ?
Was soll die ganze Schalterei? warum x Abschlusswiderstaende ein und 
ausschalten ? ...die sind ueberhaupt nicht so wahnsinnig bedeutend fuer 
die Funktion .....man koennte jedem slave einen sag mal 2k2 
Abschlusswiderstand goennen...dann ist alles unkritisch!...fuer 
Bastleranwendungen (und nicht nur) vollkommen  OK

Autor: Batmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> was nuetzt eine schoene Adressierung 'der Reihe nach' ?

Bessere Systemübersicht

> wie willst du wissen wer wo ist

Einfach mit den Augen kucken, wo die Dinger hängen

> und was du wem uebermitteln willst.

Ergibt sich aus der zu lösenden Aufgabenstellung

> ...oder ist das alles Wurst ?

Wohl nicht

> warum soll nicht jeder Slave seine eigene Adresse (evtl per DipSwitch
> einstellbar)haben ?

Vielleicht gibt es Probleme, an die Slaves heranzukommen

> Was soll die ganze Schalterei?

Die Antwort dazu gab es schon

> warum x Abschlusswiderstaende ein und ausschalten ?

Dito

> ...die sind ueberhaupt nicht so wahnsinnig bedeutend fuer die Funktion

Wer Daten über Leitungen überträgt, hat sicher schon öfters andere 
Erfahrungen gemacht.

> man koennte jedem slave einen sag mal 2k2 Abschlusswiderstand goennen

Urgh

> ...dann ist alles unkritisch!

Das ist in vielen Applikationen absolut tötlich.

> ...fuer Bastleranwendungen (und nicht nur) vollkommen  OK

... wenn es nicht unbedingt funktionieren muß!

Autor: Andi Hofmann (Firma: S&H) (andish)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt da so ne Schweizer Firma für Musiktechnik, ADAT von TosLink auf 
CAT-Kabel per RS-485-Transceiver.

Da wird ein simpler KlickKlack-Mehrfachschalter für 4 
Abschlusswiderstände für die 4 RS-485-Linien gleichzeitig geschalten.

Ich habe mit diesen schaltern nach ein paar Jahrzehnten Betrieb auch 
schon Pech gehabt, von wegen der Übergangswiderstände. Andererseits wird 
der Schalter ja nie wirklich belastet. Sollte halt Gold und kein Silber 
haben.

Ich tendiere zur Zeit zu DIP-Schaltern, weil die so schön verpackt sind.
Dann muss man halt 4x schalten in der oben skizzierten Anwendung.

Das mit dem common mode ist das harte Argument gegen die Mosfets.
Sonst können die sehr wohl Strom in beiden Richtungen schalten.
Passiert ja in H-Brücken bei synchroner Gleichrichtung ständig, damit 
nicht die Diodenstrecke 1V verbraten muss, sondern auch Rückwärts die 
schönen 10mOhm vom PowerMosFet genutzt werden. Doch da muss ich wirklich 
die +5 .. +10V ab Source (Richtung negativerem Anschluss) bei N-Kanal 
sicherstellen.

Frage: könnte man mit z.B. zwei alten DSL-Modems eine Kabelstrecke 
HF-technisch nach Reflexionen etc. automatisiert vermessen lassen? Die 
Lernphase eines jeden DSL-Modems ist ja nichts anderes als 
Refexionsunterdrückung und Einstellung der optimaler Anpassung an die 
Leitung. Vielleicht könnte man umgekehrt eine modifizierte Anlernung 
nehmen, und hinterher genau wissen, wo man welches Kabel mal lieber aus 
dem Verkehr zieht, und plötzlich stellt man fest: ja, die Abschließerei 
bringt wirklich was, nicht nur gegen Einbrecher.

Vielleicht tüftelt mal eine Fab einen 485-Chip, der so was selber machen 
kann. Der weiß dann wirklich, wo er auf der Leitung ist...

Gruß!

Andish.

Autor: Michael W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daß der letzte Beitrag dieses Freds jetzt (fast) 7 (in Worten: sieben) 
Jahre alt war, hattest Du bemerkt...?

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.