RS485 Bus Daisy-Chain - elektronisch trennen

#5735770
Lesenswert?

Hallo zusammen,

ich suche nach einer Möglichkeit, mehrere RS485 Slaves zu adressieren. 
Das Problem bei der Sache ist, ich benötige zwingend die Reihenfolge der 
Slaves -> erster Slave = 1, zweiter Slave = 2,...
Deshalb hatte ich an eine Daisy-Chain gedacht.
Allerdings habe ich keine Möglichkeit, eine zusätzliche Ader zu nutzen 
um so ein Signal vom Master an den ersten Slave oder von Slave zu Slave 
weiter zu geben.
Der Bus wird aber durch die Slaves durchgeschliffen.

Meine Idee war jetzt, dass jeder Slave beim Einschalten den Bus hinter 
sich öffnet/unterbricht, so dass der erste Slave der einzige Teilnehmer 
ist. Dieser wird adressiert, aktiviert den Bus bis zum Slave 2 usw...

Aber wie trenne ich den Bus sauber?

Rahmenbedingungen sind außerdem:
- kein Relais / mechanische Komponenten
- Kosten <1€ pro Slave

Ich hatte zuerst an mehrere Tranceiver gedacht, die man über 
DriverEnable / RevceiverEnable unterbricht, aber da muss es doch eine 
einfachere Lösung geben...

Danke, Gruß Tobi
Angehängte Dateien:
#5735882
Lesenswert?

Sebastian R. schrieb:
> Vielleicht etwas in Richtung SN74CBT3305C von TI?
>
> Der ist für genau soetwas gedacht.
>
> Hat halt nur das Problem, dass wenn Slave 1 ausfällt, der komplette Bus
> tot ist. Da wären (Reed-)Relais als Öffner, die stromlos den Bus
> durchleiten, im Vorteil.

Danke Sebastian, das ist genau das, was ich gesucht habe. Auf die 
Bezeichnung "Bus Switch" hätte ich auch selber kommen können...

Wenn Slave 1 ausfällt ist die sowieso die Funktionalität des 
Gesamtsystems nicht mehr gegeben und er muss ausgetauscht werden.
#5735885
Lesenswert?

Clemens L. schrieb:
> Tobi T. schrieb:
>> - kein Relais / mechanische Komponenten
>
> Ohne Mechanik im Chip nennt sich das "Analog Switch", die haben aber
> meist einen höheren Widerstand.
>
> Du brauchst zwei Kanäle, und solltest auf einen Terminierungswiderstand
> umschalten, also SPDT. Siehe z.B. TS5A23159.

Das sieht auch interessant aus. Aber mal ganz doof gefragt: Wie 
funktioniert das Ding? Also was ist da innen drin?
Gast #5735901
Lesenswert?

Tobi T. schrieb:
> Meine Idee war jetzt, dass jeder Slave beim Einschalten den Bus hinter
> sich öffnet/unterbricht, so dass der erste Slave der einzige Teilnehmer
> ist. Dieser wird adressiert, aktiviert den Bus bis zum Slave 2 usw...
>
> Aber wie trenne ich den Bus sauber?

Normalerweise gibt man den Slaves IDs und addressiert sie damit.
Dann können alle dauerhaft am Bus bleiben. Das Protokoll stellt sicher,
wer wann mit wem reden darf.
#5735905
Lesenswert?

Michael K. schrieb:
> Eine Adresskodierung über Brücken in den Slave Steckern ist keine
> Alternative?
> Der Analog Switch schalten nur Spannungen die sich innerhalb des VCC/GND
> Bereiches bewegen.
> Gängige RS485 Transceiver können +12V / -7V gegenüber GND und +-12V
> diff.

Die Slaves sind rund rum geschlossen (IP54) mit Industriesteckern, da 
ist nichts mehr von außen zu machen.

Da Master und Slaves alle an der gleichen Spannungsversorgung hängen, 
dürften sich die Bussignale auch nur innerhalb VCC und GND bewegen.
#5735917
Lesenswert?

Tobi T. schrieb:
> Michael K. schrieb:
>> Eine Adresskodierung über Brücken in den Slave Steckern ist keine
>> Alternative?
>> Der Analog Switch schalten nur Spannungen die sich innerhalb des VCC/GND
>> Bereiches bewegen.
>> Gängige RS485 Transceiver können +12V / -7V gegenüber GND und +-12V
>> diff.
>
> Die Slaves sind rund rum geschlossen (IP54) mit Industriesteckern, da
> ist nichts mehr von außen zu machen.
>
> Da Master und Slaves alle an der gleichen Spannungsversorgung hängen,
> dürften sich die Bussignale auch nur innerhalb VCC und GND bewegen.

Dann würde ich für jeden Slave eine Art Vorschaltgerät machen, das am 
RS485-Bus hängt und Addressierung kann. Nur wenn die Adresse stimmt, 
nimmt dann das Vorschaltgerät mit dem Slave über einen eigenen (lokalen) 
RS485-Bus Kontakt auf und vermittelt zwischen den Bussen.

Das funktioniert aber nur, wenn der Master Datenpakete mit Adressen 
verschicken kann. Und der Master muss mit der zusätzlichen Verzögerung 
durch die Busumsetzung in beide Richtungen klarkommen.
#5735933
Lesenswert?

Bus Driver schrieb:
> Tobi T. schrieb:
>> Meine Idee war jetzt, dass jeder Slave beim Einschalten den Bus hinter
>> sich öffnet/unterbricht, so dass der erste Slave der einzige Teilnehmer
>> ist. Dieser wird adressiert, aktiviert den Bus bis zum Slave 2 usw...
>>
>> Aber wie trenne ich den Bus sauber?
>
> Normalerweise gibt man den Slaves IDs und addressiert sie damit.
> Dann können alle dauerhaft am Bus bleiben. Das Protokoll stellt sicher,
> wer wann mit wem reden darf.

Ich brauche aber die Position der Slaves. Wenn ich Slave 1 und 2 tausche 
muss 1-->2 und 2-->1 werden. Da hilft mir eine ID nicht weiter
#5735939
Lesenswert?

Tobi T. schrieb:
> Die Slaves sind rund rum geschlossen (IP54) mit Industriesteckern, da
> ist nichts mehr von außen zu machen.

Doch, wenn man statt der Schalter die Addresse im EEPROM des Controllers 
abspeichert. Also bei der Inbetriebnahme des Systems einmalig die 
Addresse im Controller setzen und gut ist. Da braucht es keine 
mechanischen Schalter von aussen. Nur bei der Inbetriebnahme muss dann 
einmalig der betreffende Knoten/Controller alleine am Bus haengen und 
wird dann ueber ein Boardcast Commando angesprochen.
#5735942
Lesenswert?

Jungs, was da gesucht ist ist Autoadressierung.
Welche Kiste auch immer an den ersten Platz kommt soll sich selber 
Adresse 1 aussuchen.
Wenn ich sie an den zweiten Platz stecke, nimmt sie sich die 2.

Das geht nur mit getrennten Bussen, d.h. jede Kiste hat eine "IN"-Buchse 
und eine "OUT"-Buchse, jeweils mit Busabschluss.
Sie wartet auf die Initialisierung durch den Master auf einer 
Broadcast-Adresse, nimmt die Adresse mit und schaltet dann den Bus auf 
den nächsten Slave.

2 Transceiver, ein Busisolator oder evtl. ein Bus Switch müssten gehen.
#5735976
Lesenswert?

Peter D. schrieb:
> Tobi T. schrieb:
>> Deshalb hatte ich an eine Daisy-Chain gedacht.
>
> Eh Du nach Schalter suchst, überleg erstmal, wie Du das
> programmtechnisch realisieren willst bzw. ob das überhaupt geht. Die
> Schalter muß nämlich jemand umschalten und wieder zurück.

Ich baue Master und Slaves selbst, programmtechnisch bin ich also 
ziemlich frei. Die Einschränkungen sind eher mechanischer Natur (-> 
keine externe Adressierung möglich, keine zusätzliche Leitung möglich) 
und Nutzererlebnis (-> Plug and Play, keine Inbetriebnahmeprozedur).
Bus-IN und Bus-OUT Buchse ist zum Glück vorhanden
#5736078
Lesenswert?

Tobi T. schrieb:
> programmtechnisch bin ich also
> ziemlich frei.

Das hatte ich vorausgesetzt.
Ich meinte aber, Du solltest zuerst einen PAP erstellen, wie Du Dir die 
Adressierung und Umschaltung vorstellst und diesen dann gedanklich 
durchspielen, ob er auch funktioniert.

Bei Analogschaltern sollten diese die gleiche Spannungsfestigkeit haben, 
wie die Transceiver. D.h. +/-70V beim SN65HVD1781. Wenigstens aber 
+/-15V (standard Transceiver). Sonst brennen Dir ständig die 
Analogschalter durch.
#5736151
Lesenswert?

Peter D. schrieb:
> Tobi T. schrieb:
>> programmtechnisch bin ich also
>> ziemlich frei.
>
> Das hatte ich vorausgesetzt.
> Ich meinte aber, Du solltest zuerst einen PAP erstellen, wie Du Dir die
> Adressierung und Umschaltung vorstellst und diesen dann gedanklich
> durchspielen, ob er auch funktioniert.

Mit Power-ON sind alle Schalter geöffnet, der Master kann nur den ersten 
Slave erreichen und adressiert ihn. Sobald der Slave eine gültige 
Adresse hat, schließt er den Schalter und der Master findet einen 
weiteren, nicht-adressierten Slave und verpasst ihm eine Adresse... Das 
geht so lange weiter, bis der Master keinen unadressierten Slave mehr 
findet.
Gast #5736295
Lesenswert?

Tobi T. schrieb:
> Die Slaves sind rund rum geschlossen (IP54) mit Industriesteckern, da
> ist nichts mehr von außen zu machen.

Mindestens 2pins müssen ja frei sein, sonst kann der 'vordere' Slave die 
Verbindung zum 'hinteren' nicht unterbrechen.

Für eine Adressierung brauchst Du nur einen einzigen Pin.
Ein Widerstand nach GND im Stecker und das ganze mit dem internen ADC 
auswerten.

Von aufgetrennten Bussen halte ich wenig, denn Du unterbrichtst damit 
auch die Terminierung, die am Ende des Busses hängen muss.
Hat jeder Slave seine eigenen Failsafe Widerstände, oder floatet der Bus 
dann fröhlich, wenn Du den trennst?

Die Gleichtakt Spannungsfestigkeit und Kurzschlussfestigkeit von RS485 
sind u.a. die Eigenschaften die RS485 so robust machen. Das alles in die 
Tonne zu kloppen indem man da Analogschalter dranhängt die dafür gedacht 
sind innerhalb einer PCB zu funktionieren, halte ich für ... mutig oder 
dumm, such Dir was aus.

Industriestecker, industrielle Anwendung, aber alles weniger als 1€ ist 
auch irgendwie schräg.
Billig oder gut, was willst Du?
Materialkosten sind doch überhaupt nicht das Thema.
Arbeitszeit und Ausfallszeiten sind das was richtig Geld kostet.
Gast #5736727
Lesenswert?

Tobi T. schrieb:
> Sobald der Slave eine gültige
> Adresse hat, schließt er den Schalter

Das genügt überhaupt nicht. Der Slave muss den eingehenden Bus von der 
lokalen Terminierung trennen und mit dem ausgehenden Bus verbinden, es 
werden also Umschalter benötigt. In dem Zusammenhang ist auch die 
Festlegung "kein Relais" unsinnig, es gibt ja Relais mit Footprint 4 x 4 
mm.

Georg
Gast #5736950
Lesenswert?

Name H. schrieb:
> Da muss man nur einmal in einem Verwaltungstool die Serial einer
> Position zuweisen und das war's.

Die positionsbasierte Adressierung ist in einigen Bereichen ein Problem.
Hast Du mehrere identische Geräte, die durch Wartungstechniker 
installiert und getauscht werden, ist das vorherige Programmieren 
Kundenseitig eher nicht akzeptiert.
Hein Daddel kann eben nicht mal eben ein Gerät aus dem Lager nehmen und 
anschliessen.
Auch das Verständniss von Bussytemen ist bei Betriebselektrikern ein 
seltenes Gut.

Im Luftfahrtbereich ist das Programmieren auf eine neue Adresse ggf. 
sogar eine zertifizierungspflichtige Softwareänderung.
Pin programming im Stecker über Brücken oder ähnliches umgeht das 
Problem elegant.
#5749639
Lesenswert?

Wenn du mit dem gleichen Kabel auch die Stromversorgung durchschleifst, 
brauchst du nur diese zum nächsten Slave weiterschalten. Also am Anfang 
ist nur der erste versorgt und deshalb kann sich nur dieser am Bus 
melden. Dann schickt im der Master die Busadresse 1 und das 
Weiterschalten-Kommando. Dann meldet sich der 2. Slave ....

Den RS485 Bus würde ich auch aus den schon genannten Gründen nicht oder 
nur mittels Relais schalten.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren