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
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.
:
Bearbeitet durch User
2 transceiver halte ich für am einfachsten. dann können auch die abschlusswiderstände fest eingebaut werden und deren konfiguration fällt weg.
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.
:
Bearbeitet durch User
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.
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?
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.
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.
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.
Tobi T. schrieb: > Wie funktioniert das Ding? Also was ist da innen drin? CBT-C, CB3T, and CB3Q Signal-Switch Families: http://www.ti.com/lit/pdf/scda008 Selecting the Right Texas Instruments Signal Switch: http://www.ti.com/lit/pdf/szza030
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.
:
Bearbeitet durch User
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
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.
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.
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.
Danke @all. Das mit mehreren Tranceivern wird mir glaub ich zu groß/teuer. Ich brauch mindestens 3, oder? Sonst habe ich auf TX von Slave 1 die Signale von Slave 2...?! Ich schau mir die verschiedenen Analog und Bus Switches an und steck mir dann mal was zusammen.
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
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.
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.
Ja, so könnte das gehen. Als Schalter würde ich 2 Stück AQY212 nehmen. Die sollten genügend spannungsfest (60V) und niederohmig (0.7Ω) sein. Der 10. Slave sieht dann zusätzliche 14Ω bis zum Master.
:
Bearbeitet durch User
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.
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
Normalerweise macht man auf jeden Teilnehmer eine Serialnummer drauf, zB einen 24AA02E48, und macht eine dynamische, automatische Adressierung damit. Da muss man nur einmal in einem Verwaltungstool die Serial einer Position zuweisen und das war's.
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.
Wie wärs damit: Einen 1 wire EEPROM in den Stecker. Da steht dann die Stationsnummer drin. Das braucht keine Verbindung zum Master. Die Kabel müssen ja eh irgendwie hergestellt werden.
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.
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.