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
Hi, einen kleinen FET seriel zum Widerstand per uC schalten
Wenn Du galvanisch getrennte Treiber verwendest, wird die FET-Lösung doch verhältnismäßig Aufwändig. Was spricht gegen kleine Reed-Relais?
Abschlusswiderstand hat doch nichts mit der Slave_Adresse zu tun. Die Einfachste Schaltung ist die Schwierigste ;-)(
> 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.
>> 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.
ein mosfet relais vl? da gibts welche mit optokoppler ich glaub die rennen unter solid state relais kenn mich da aber nicht so aus
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
>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.
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
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.
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.
>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?
>Die Slaves können sich zum Beispiel entsprechend ihrer Adresse >nacheinander beim Master melden.......... Na das erkläre mal genauer!
> 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.)
>> 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
@ 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
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
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.
>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.
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
> 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ß!
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.
Daß der letzte Beitrag dieses Freds jetzt (fast) 7 (in Worten: sieben) Jahre alt war, hattest Du bemerkt...?
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.