Hallo zusammen, ich bin gerade dabei Sensorplatinen für einen RS485 Bus zu designen. Bei RS485 ist es ja möglich bis zu 32 Teilnehmer anzuschließen und jeder Teilnehmer erhält hierfür eine Adresse. Die Adressen der einzelnen Teilnehmer würde ich gerne direkt auf der Platine einstellen können. Ursprünglich habe ich dabei an Lötjumper (5 Stück für die 32 Möglichkeiten) gedacht. Allerdings reichen hierfür meine Pins am Mikrocontroller (vermutlich Attiny 441/841) nicht aus. Ich habe schon daran gedacht den ADC zu verwenden und die Adresse über einen Spannungsteiler und 5 Widerstände (auch wieder über Lötjumper zu- oder abwählbar) einzustellen. Bei einer Parallelschaltung der Widestände (E6 Reihe) liegen die Werte zum Teil sehr eng beieinander und ich befürchte, das das nicht eindeutig funktioniert. Oder gibt es hier einen "Trick"? Oder gibt es noch eine andere elegante Lösung um die Adresse einstellen zu können und keine 5 Pins benutzen zu müssen? Alternativ würde ich die Adresse fest in den EEPROM schreiben (das ist dann aber nicht mehr auf der Platin zu sehen) oder muss mir doch noch einen größeren Controller suchen. Vielen Dank und viele Grüße Fabian
Hallo, Du könntest einen I2C Portexpander verwenden, macht nur Platzmäßig keinen Sinn, könnte man gleich einen größeren µC verwenden. Du kannst wie schon gesagt die Adresse ins EEprom schreiben. Du kannst die Adresse im Programm hinterlegen. Muss nur vorm flashen immer die Adresse für jede Platine ändern. Analog sollte mit 32 noch gehen. Ggf. nochmal filtern. Allerdings sollte der Spannungsteiler schon recht genau aufgebaut sein. Darfst nur nicht in Spannung umrechnen, nur die ADC Bits behandeln / vergleichen. Am Einfachsten wäre allerdings, wenn du den ATtiny841 schon lieb gewonnen hast einen ATtiny1634 zu verwenden. Ggf. mit DIP-Schalter statt Lötjumper solange es der Platz hergibt. Für RS485 und nur 32 Teilnehmer kannste den MAX487 verwenden. Der hat Slewrate bis 250kBaud und ist damit gutmüdiger. Gibts auch von anderen Herstellern. Datenblätter und Preise vergleichen.
:
Bearbeitet durch User
Fabian W. schrieb: > Bei einer Parallelschaltung der Widestände > (E6 Reihe) liegen die Werte zum Teil sehr eng beieinander und ich > befürchte, das das nicht eindeutig funktioniert. Warum sollten die eng beieinander liegen. Kannst Doch die Spannungen gleichmäßig über den Spannungsbereich verteilen. Spannungsteiler aus einem Einzelwiderstand und zwei parallelen oder zweimal zwei parallele, für die Werte muss man sich halt ein bisschen im Excel spielen. Die Auswertung sollte der 8-bit ADC doch wunderbar hinbekommen. Zur besseren Sichtbarkeit kann man (bei maschineller Bestückung) auch einfach irgendwo am Rand eine Reihe Dummy-Widerstände vorsehen, wo je nach Variante/Adresse einer/mehrere bestückt ist/sind.
Hallo Fabian, mit einem Jumper und einer LED die Adresse ins EEPROM bringen: Jumper offen: Software zählt die Adressen durch und lässt die LED jeweils kurz aufleuchten. Der Beginn wird durch langes Aufleuchten angezeigt. Jumper schließen: Der aktuelle Zählerstand wird als Adresse ins EEPROM geschrieben. Oder Vergabe der Adresse per Software: Alle deine Geräte akzeptieren eine "Broadcast" Adresse (z.B.: 0). Mit einer Punkt zu Punkt Verbindung kann darüber die Adresse eingestellt oder abgefragt werden. Gruß Ulrich PS.: Offensichtlicher Nachteil, die aktuelle Adresse wird nicht auf dem Board angezeigt
Pin1 floating, Low, high Das gleiche für Pin2 und du hast schon 6 mögliche Adr. Pin1+2 short + floating, short + high, short + low. 9 Adr über zwei pins. Wenn Du dann noch verschiedenen Gerätetypen definierst, die in unterschiedlichen Adressbereichen liegen, kommst Du ganz schön weit. Aber Adr über ADC ist auch leicht. Du must für einen 10bit ADC nur 32 diskrete Werte erkennen. Das sollte wohl schaffbar sein.
Vielen Dank für Eure schnellen Antworten! Veit D. schrieb: > Hallo, > > Du könntest einen I2C Portexpander verwenden, macht nur Platzmäßig > keinen Sinn, könnte man gleich einen größeren µC verwenden. Das habe ich mir auch schon überlegt, aber genau aus dem gleichen Grund wieder verworfen. > Für RS485 und nur 32 Teilnehmer kannste den MAX487 verwenden. Der hat > Slewrate bis 250kBaud und ist damit gutmüdiger. Gibts auch von anderen > Herstellern. Datenblätter und Preise vergleichen. Ich habe mich für den MAX3483 ausgesucht. Der ist auch Slewrate begrenzt und arbeitet mit 3,3 V. Ulrich K. schrieb: > mit einem Jumper und einer LED die Adresse ins EEPROM bringen: Das ist auch eine interessante Idee! > Oder Vergabe der Adresse per Software: > Alle deine Geräte akzeptieren eine "Broadcast" Adresse (z.B.: 0). Mit > einer Punkt zu Punkt Verbindung kann darüber die Adresse eingestellt > oder abgefragt werden. Punkt zu Punkt möchte ich vermeiden. mm schrieb: > Warum sollten die eng beieinander liegen. Kannst Doch die Spannungen > gleichmäßig über den Spannungsbereich verteilen. Du hast recht. Ich habe mich irgendwie zu sehr auf die "Standard" Werte versteift. Ich werde mal Excel anwerfen, das durchspielen und dann auch so umsetzen. Danke nochmal für die schnelle Hilfe! Fabian
Hallo Fabian, Punkt zu Punkt Verbindung ist nur zum konfigurieren der Adresse nötig. Im Betrieb natürlich Multidrop mit der eingestellten Adresse. Gruß Ulrich
Wie viele Pins stehen denn zur Verfügung? Hast Du 2 Stück über, so könnte ein - du musst ja sowieso an das Gerät - Programmieradapter, der über eine serielle Schnittstelle läuft, helfen. Die meisten Käfer haben was Serielles. Einfachstprotokoll mit Komfortfunktion: Anzeigen. Der Adapter kann dann sogar ein Display und ein paar Tasten enthalten oder gleich eine PC-Schnittstelle zur Verfügung stellen. Ist ja dann ein externes und nur zum Einstellen nötiges Teil. Die ursprüngliche Platine muss dann nur Rx und GND bzw. Tx, Rx und GND – etwas geschützt - zur Verfügung stellen.
Fabian W. schrieb: > Du hast recht. Ich habe mich irgendwie zu sehr auf die "Standard" Werte > versteift. Ich werde mal Excel anwerfen, das durchspielen und dann auch > so umsetzen. http://www.gjlay.de/helferlein/spannungsteiler.html kann da auch ganz gut helfen... ist zwar für E12/E24, aber dafür gibt's ja dann die Parallelschaltung.
Ich würde mal hinterfragen, ob du wirklich 32 Busteilnehmer brauchst. Für mich klingt das nämlich nach einer typischen AnfängerWollMilchSau.
Fabian W. schrieb: > Ursprünglich habe ich dabei an Lötjumper (5 > Stück für die 32 Möglichkeiten) gedacht. > Allerdings reichen hierfür meine Pins am Mikrocontroller (vermutlich > Attiny 441/841) nicht aus. Mit einem Pin 32 Adressen per HW festzulegen, wird knapp. Fünf Pins hast du nicht frei. So weit - so gut. Wenn du also die Konfiguration nicht per SW machen willst, wäre es nicht unpraktisch, wenn du verraten würdest, wie viele Pins sich für den Zweck erübrigen lassen und ob die nur digital können oder auch an einen ADC geschaltet werden können.
Fabian W. schrieb: > Ulrich K. schrieb: > >> mit einem Jumper und einer LED die Adresse ins EEPROM bringen: > > Das ist auch eine interessante Idee! Bei der Firma MEP werden bei den Handmeldern von Brandmeldeanlagen, die Bus Adressen auf ähnliche Weise eingestellt. Wenn der Melder keine Adresse hat leuchtet eine rote LED dauerhaft. Und dann hat man einen SMD Knopf, dort stellt man dann Einer, Zehner und Hundert nacheinander durch eine jeweilige Anzahl von Tasten drücken ein. Und am Ende bekommt man das Ergebnis einmal vor geblinkt, und kann zum überprüfen mitzählen.
Fabian W. schrieb: >> Warum sollten die [Anm.: Widerstandwerte] eng beieinander liegen. >> Kannst Doch die Spannungen >> gleichmäßig über den Spannungsbereich verteilen. > Du hast recht. Ich habe mich irgendwie zu sehr auf die "Standard" Werte > versteift. Ich werde mal Excel anwerfen, das durchspielen und dann auch > so umsetzen. Denk dran, E12 hat (std.) 10% Toleranz, d.h, ein 10k+10% (=11k) und ein 12k-5% (=10.8k) uberschneiden sich schon. Du musst also schon mal jeden 2. Wert auslassen. Für 32 unterscheidbare Adressen musst dann 6 Dekaden vorhalten. Würde ich mir gut überlegen, v.A. da "im Feld" nicht wirklich konfigurierbar (Lötkolben, Entlötpumpe, Widerstandskiste mitschleppen). Die Jumper-Idee finde ich da besser. Beim Booten kann man ja über eine LED (auf dem Jumper-Pin) die Adresse rausmorsen (binär 5bit, 0=kurz, 1=lang). just my 2ct
> > Alternativ würde ich die Adresse fest in den EEPROM schreiben (das ist > dann aber nicht mehr auf der Platin zu sehen) oder muss mir doch noch > einen größeren Controller suchen. > > Vielen Dank und viele Grüße > Fabian Ein Taster auf dem Slave. Beim Drücken fragt der Slave beim Master nach einer Adresse und bekommt diese zugewiesen. Diese dann einfach im EEPROM abspeichern.
Wenn Du noch eine Ader frei hast, kannst Du das auch ganz anders machen: Jeder Slave hat einen Eingang mit Pullup und einen Open Collector/Open Drain Ausgang. Alle Slaves sind hintereinander geschaltet, die Datenleitungen als terminierter Bus, und der Eingang eines jeden Slaves an den Ausgang des vorhergehenden Slaves. Die Ausgänge sind Normal high. Nach dem Poweron sind alles Slaves passiv. Der Master zieht den Eingang des ersten Slaves auf low und sendet ihm seine Adresse. Wenn der erste Master konfiguriert ist, setzt er seinen Ausgang auf low. Jetzt kann der Master dem zweiten Slave seine Adresse geben usw usw, so lange, bis niemand mehr auf eine Konfigurationsanforderung antwortet. Damit ist alles dynamisch und automatisch konfiguriert. fchk
Was spricht dagegen, die Adresse per software zu setzen, resp ins EEPROM zu schreiben ?
Wenn ich deine Frage richtig verstehe ist der "Trick" den zu suchst ein R2R-Netzwerk. https://de.wikipedia.org/wiki/R2R-Netzwerk
Ein drehschalter, ok. Ein Speicherchip mit i2c oder onewire, ok. Aber Widerstände/lötbrucken ist Bastelei. Den sensor über rs485 konfigurieren und gut ist. Egal ob per Taster im Netz, per Schritt beim kalibrieren oder per Seriennummer manuell. Und notfalls mit Filzstift draufschreiben.
Fabian W. schrieb: > Allerdings reichen hierfür meine Pins am Mikrocontroller (vermutlich > Attiny 441/841) nicht aus. Charlieplexing! ?
Es findet sich oft ein Weg, mehrere eigentlich für andere Zwecke genutzten Ausgänge über Dioden an einen einzelnen Eingang zu ziehen. In der Startphase kann dann darüber die Adresse definiert werden. Allerdings ist dieses Verfahren natürlich von der konkreten Schaltung abhängig und damit nicht universell definierbar.
:
Bearbeitet durch User
Xerxes schrieb: > Beim Drücken fragt der Slave beim Master .... cool! :-D (Der ist dann kein Master mehr ...) Gruß Jobst
Ich löste das Problem der Adressenkodierung vor Jahren bei einem 433MHz Alarmsystem mit einem Druckknopf und langsam blinkenden LED Anzeige für bis zu 20 Sender und die Adresse wurde automatisch im EEPROM des PICs hinterlegt. Man könnte hier ähnlich vorgehen.
Vielen Dank für Eure vielen Antworten! Es sind einige interessante Ansätze dabei, auf die ich im ersten Moment nicht gekommen wäre. In habe auch eingesehen, dass es in Hardware in meinem Fall nicht wirklich Sinn macht die Adresse einzustellen. Deswegen werde ich die Adresse wohl einmal in den EEPROM schreiben und diese dann mit Filzstift o.ä. auf die Platine schreiben. Vielen Dank nochmal an alle! Fabian
Gerhard O. schrieb: > Ich löste das Problem der Adressenkodierung vor Jahren bei einem 433MHz > Alarmsystem mit einem Druckknopf und langsam blinkenden LED Anzeige für > bis zu 20 Sender und die Adresse wurde automatisch im EEPROM des PICs > hinterlegt. Man könnte hier ähnlich vorgehen. Ich greife hier nochmals die Heart-Beat-LED auf. Kostet eine I/O Leitung. Diese LED kann nach Reset die Adresse raus morsen: z.B. kurz-lang-kurz-kurz-lang = 01001 = Adr-9. Wenn man es geschickt anstellt, könnte über den gleichen I/O-Pin vielleicht auch noch der Druckknopf/Taster gehen. just my 2ct
Ich finde die Lösung interessant, die bei Türsprechstellen verwendet wird. Da sind normale Widerstände dabei, mit den Ziffern 0-9 bedruckt. In einen 8-Pin DIL-Sockel lassen sich 4 davon stecken. Über ADC werden daraus 00-99 dekodiert, Busabschluß und eine Sonderfunktion.
Und die läuft über RS485? Welche Werte haben die Widerstände?
Ansonsten böte es sich an, die Adresse über den Bus zu setzen. Der Slave lauscht auf seiner eingestellten Adresse und einer Programmier-Adresse, die bei allen Slaves gleich ist. Letztere wird nur dann genutzt, wenn der entsprechende Sensor mit dem Master allein ist. Dann spart man sich das Gefummel mit Tastern und LEDs und kann die Eingabemethoden des Masters nutzen. Alternative: Per Jumper oder Taster in den "Adresse-Ändern-Modus" wechseln.
:
Bearbeitet durch User
Abdul K. schrieb: > Und die läuft über RS485? Ich glaube du hast ihn missverstanden. Man kann 4 Widerstände stecken. 2 Davon codieren die Adresse, einer ist der optionale Abschlusswiderstand für den Bus und der letzt stellt Sonderfunktionen ein.
Sprechanlagen haben häufiger sowas ähnliches wie RS485, allerdings mit eingekoppelter Versorgungsspannung (24..30V) auf den Datenadern. Wenn ich die nächste Anlage mache, kann ich die Widerstände mal messen. Glaube 0 war Brücke, ging hoch bis 1M für 9.
Walter T. schrieb: > Ansonsten böte es sich an, die Adresse über den Bus zu setzen. Nachtrag: Eigentlich kann man sich die Programmier-Adresse und den Programmier-Schalter komplett sparen. Der Adressraum ist ja klein genug, dass man den kompletten Adressraum schnell durchscannt hat.
Jetzt habe ich zu dem Thema Adressvergabe über den Bus/über den Master noch ein paar Fragen. Soweit ich es verstanden habe gilt in diesem Fall, dass jeder Slave die gleiche Programieradresse hat, bzw. über eine (natürlich auch wieder einheitliche) Broadcastadresse verfügt. Eine "normale" Adresse ist nicht vorhanden, bzw. nur eine voreingestellte, die zufällig oder voreingestellt ist. Dadurch ist ein einzelner Slave ja nicht ansprechbar, denn es fühlen sich alle (oder die zumindest die Adressgleichen) Slaves gleichzeit angesprochen. Die Adressvergabe kann dann nur durch einen Tastendruck am Slave oder das einzeln nacheinander anstecken der Slaves funktionieren, oder? Oder wie löst man das normal? Wenn nacheinander eingesteckt wird, wäre eine Hot-Plug-Fähigkeit natürlich von Vorteil. Wäre RS485 mit einem MAX3483 denn Hot-Plug fähig? Bzw. unter welchen Voraussetzungen ist da möglich? Hiermit habe ich mich noch überhaupt nicht beschäftigt. Wie gut verkraften denn RJ45 Stecker das Einstecken/Ausstecken, wenn eine Bus-Versorgungsspannung (12 V) mitgeführt wird?
Fabian W. schrieb: > Oder wie löst man das normal? Normal? Keine Ahnung. Ich habe noch nie ein Gerät mit RS485 gesehen, das ich als "normal" bezeichnet hätte. Und keines davon habe ich selbst entwickelt. Aber bei anderen Bussen existiert die gleiche Fragestellung, wenn man die Adresse selbst vergeben kann. Fabian W. schrieb: > Die Adressvergabe kann dann nur durch einen Tastendruck am Slave oder > das einzeln nacheinander anstecken der Slaves funktionieren, oder? Das wäre zumindest der naheliegende Ansatz. Irgendwie muss man das Gerät, das umprogrammiert werden soll, von den anderen unterscheiden können. Und irgendwie sollte man eine einmal gesetzte Adresse auch wieder oder ändern können. "Exklusiv auf einem Bus" wäre ein solches Unterscheidungsmerkmal. "Eigene Adresse nur zum Umprogrammieren" ein anderes. "Meldet einen bestimmten Status zurück" wäre ein mögliches drittes. "Der Master listet die Geräte-IDs aller Teilnehmer auf, und dann muss man da auswählen" ein Viertes. Fabian W. schrieb: > Wie gut verkraften denn RJ45 Stecker das Einstecken/Ausstecken, wenn > eine Bus-Versorgungsspannung (12 V) mitgeführt wird? Die Antwort auf diese Frage hängt zu 100% an Deiner (hier nicht bekannten) Beschaltung, da RJ45 keinerlei voreilenden/nacheilenden Kontakte hat, die helfen würden.
:
Bearbeitet durch User
Fabian W. schrieb: > Die Adressvergabe kann dann nur durch einen Tastendruck am Slave oder > das einzeln nacheinander anstecken der Slaves funktionieren, oder? Ja. Oder wie ich das geschrieben habe, mittels einer zusätzlichen Leitung von Slave zu Slave. Andere Möglichkeit: Jeder Slave hat von sich aus bereits eine eindeutige ID. Die kann er durch ein 1-Wire Device oder ein EEPROM mit vorprogrammierter Ethernet-Adresse (24AA02E48/E64 oder AT24MAC402/602 für I2C, 25AA02E48/E64 für SPI) bekommen. > Wenn nacheinander eingesteckt wird, wäre eine Hot-Plug-Fähigkeit > natürlich von Vorteil. Wäre RS485 mit einem MAX3483 denn Hot-Plug fähig? Hotplug ist bei RS485 nicht vorgesehen. Wenn Du den Bus auftrennen musst, um ein Device einzuhängen, ist der Bus in der Zwischenzeit tot, weil nicht mehr ordentlich terminiert. Bei Twisted Pair Ethernet ist das beispielsweise gar kein Problem, weil alle Devices dort mit einem Switch sprechen. > Wie gut verkraften denn RJ45 Stecker das Einstecken/Ausstecken, wenn > eine Bus-Versorgungsspannung (12 V) mitgeführt wird? Power Over Ethernet existiert und funktioniert problemlos. Allerdings nimmt man dort 48V, um mehr Leistung übertragen zu können. 48V Nennspannung ist die höchste Spannung, bei der man sich nicht um Berührungsschutz usw kümmern muss. Jedes PoE-Gerät hat daher einen DC-DC-Wandler von 48V auf die benötigten internen Spannungen eingebaut. fchk
Fabian W. schrieb: > Wenn nacheinander eingesteckt wird, wäre eine Hot-Plug-Fähigkeit > natürlich von Vorteil. Dafür ist RS485 nicht vorgesehen, also schlage dir das aus dem Kopf. Du gibst mir das Gefühl, soviel Universalität wie möglich unterbringen zu wollen, ohne dass dafür konkreter Bedarf besteht. Damit machst du es nur unnötig kompliziert. Es sind immer die komplizierten Systeme, die einem später ärger bereiten. Wenn dein Mikrocontroller für eine simple Address-Eingabe die jeder nachvollziehen kann zu wenig Pins hat, hat nimm einen größeren. Wenn es keinen größeren gibt, dann nimm Port Expander. Dein Hot-Plug fähiges System mit automatischer Address-Zuteilung wurde schon lange erfunden und hat sich bewährt: Ethernet. Versuche nicht, dieses Rad neu zu erfinden!
Hallo Stefan, keine Sorge, so universell soll und wird es nicht werden ;) Meine erste Idee war, dass ich die Adressen über die Pins eingebe. Denn das schien mir am einfachsten. Da ich dafür aber keine freien Pins mehr habe, fiel das mit dem aktuellen Tiny flach. Als Hobbybastler ist es aber so, dass man an viele Sachen nicht denkt, die für einen Profi zum Standard gehören. Deswegen habe ich mich ans Forum gewandt um zu hören wie ein Profi das ganze lösen würde. Ich habe aber dann schnell (ein-)gesehen, dass es hier für mich keine einfache uns sinnvolle Lösung gibt. Deswegen bekommt der Tiny seine Adresse in den EEPROM beim ersten Programmieren und die Sache ist erledigt. Alternativ nehme ich einen größeren Tiny, aber das ist mir nur für die Adresseingabe eigentlich zu schade. Jetzt kommen aber die vielen Kommentare zur automatischen Adresseingabe und meine Neugier ins Spiel :) Das System dahinter habe ich irgendwie nicht verstanden oder es ist wieder recht kompliziert/aufwändig. Daher wollte ich nochmal nachfragen, das ganze verstehen und schauen ob meine Überlegungen Sinn machen. Die Entscheidung ist aber schon gefallen und so Sachen wie Hot-Swap, automatische Zuteilung, ... werde ich sicher nicht machen. Interessant ist es aber schon darüber nachzudenken, Probleme versuchen zu verstehen und diese Probleme (zumindest im Kopf) versuchen zu lösen. Das ist für mich nämlich auch ein großer Teil des Hobbys. Selbst wenn die Problemlösung dann gar nicht gebraucht oder umgesetzt wird. Danke, viele Grüße und schon mal ein schönes Wochenende! Fabian
Fabian W. schrieb: > Die Adressvergabe kann dann nur durch einen Tastendruck am Slave oder > das einzeln nacheinander anstecken der Slaves funktionieren, oder? Oder bei der Fertigung oder durch Seriennummer oder zufällige Verzögerungen, oder oder > Wenn nacheinander eingesteckt wird, wäre eine Hot-Plug-Fähigkeit > natürlich von Vorteil. Wäre RS485 mit einem MAX3483 denn Hot-Plug fähig? Was meinst Du damit? Notfalls geht halt ein Telegramm kaputt. Das kann immer passieren.
Fabian W. schrieb: > Alternativ nehme ich einen größeren Tiny, aber das ist mir nur > für die Adresseingabe eigentlich zu schade. Was genau ist "zu schade"? Der nächst größere wird wohl kaum so viel teurer sein, dass es eine Rolle spielt. Hast du keinen Platz? Oder sind dir wenig genutzt Pins zu kostbar? Das wäre albern. Fabian W. schrieb: > Interessant ist es aber schon darüber nachzudenken, Auf jeden Fall. Befasse dich mit Ethernet: - Was mach ein MAC? - Wie sehen die Signale von 10Base-T aus? Was ist bei 100 MBit und Gigabit anders? - Warum verwendet Ethernet Übertrager? Warum 2 verdrillte Leitungen? Warum kann man nicht jede beliebige Kabel verwenden? - Wo ist der Unterschied zwischen MAC und IP Adresse? - Wo kommt die IP Adresse her? - Woher weiß ein Switch, an welchem Port ein Gerät mit einer bestimmten Adresse angeschlossen ist? Zählt hier die MAC- oder die IP-Adresse? - Woher weiß ein Router, über welchen Weg ein Gerät erreichbar ist? Zählt hier die MAC- oder die IP-Adresse? - Was mach das UDP Protokoll? Welche Vor- und Nachteile hat es? - Was mach das TCP Protokoll? Welche Vor- und Nachteile hat es? - Was kommt bei WLAN noch dazu? (AP, STA, WPA2, WPS) Ich empfehle dir das, weil dort viele bewährte Grundlagen zu Bus-Systemen kombiniert wurden. Was du sort lernst wird dir auch bei anderen Bussen immer wieder begegnen. Und im Mikrocontroller Umfeld ist die Anbindung via Ethernet/WLAN längst alltäglich geworden.
Dumme Idee... Du kannst zwar 32 Teilnehmer physikalisch betreiben aber die wirklich Anzahl der Teilnehmer hängt vom Protokoll ab. In jenes Protokoll kann man auch das setzen der Adresse einbauen. Somit ist keine Hardware dazu nötig. Da baut man sich dann eine Art Programmiergerät welches die Adressen setzt.
:
Bearbeitet durch User
Also ich würde bedenken dass bei einem Bussystemen welches erweitert wird, auch Adressen mitten im Busstrang ausgetauscht werden müssen z.b. oder eingefügt, oder entfernt. Man sollte sicherstellen dass dies am Ende einwandfrei funktioniert, sonst ist der Bus ziemlich unpraktikabel.
Stefan ⛄ F. schrieb: > Es sind immer die komplizierten Systeme, die > einem später ärger bereiten. Da denke ich an so machen Kunden ...
Walter T. schrieb: > Fabian W. schrieb: >> Wie gut verkraften denn RJ45 Stecker das Einstecken/Ausstecken, wenn >> eine Bus-Versorgungsspannung (12 V) mitgeführt wird? > > Die Antwort auf diese Frage hängt zu 100% an Deiner (hier nicht > bekannten) Beschaltung, da RJ45 keinerlei voreilenden/nacheilenden > Kontakte hat, die helfen würden. Generell sind Stecker nicht dafür gedacht, unter Last gesteckt zu werden. Allerdings sind 12V noch mal harmloser als 48V, siehe oben. Nur mit dem Strom muss man aufpassen, recht viel mehr als 0.5A sind nicht drin. Und bei langen Kabeln muss man auch den Spannungsabfall berücksichtigen. Offiziell hat RJ45 vielleicht keinerlei voreilende Kontakte, praktisch macht das Schirmblech von Patch-Kabeln mehrere Millimeter vorher Kontakt. Natürlich nicht mit UTP-Kabeln und natürlich gibt es RJ45-Buchsen, die das nicht unterstützen. Aber solche muss man ja nicht einbauen. Bleiben noch die Benutzer, die mal eben das übrige UTP-Kabel vom kaputten Router benutzen...
Frank K. schrieb: > Nach dem Poweron sind alles Slaves passiv. Der Master zieht den Eingang > des ersten Slaves auf low und sendet ihm seine Adresse. Wenn der erste > Master konfiguriert ist, setzt er seinen Ausgang auf low. Jetzt kann der > Master dem zweiten Slave seine Adresse geben usw usw, so lange, bis > niemand mehr auf eine Konfigurationsanforderung antwortet. Damit ist > alles dynamisch und automatisch konfiguriert. So ähnlich habe ich das mal in einem Sensornetzwerk gemacht und auch kürzlich irgendwo hier im Detail beschrieben. Wir hatten vor gefühlt 6 Wochen ein ähnliches Thema. Ist im Prinzip eine einmalige Busarbitrierung. Man muss nur durch die Verkabelung sicherstellen, dass bekannt ist, welcher Sensor an welcher Position sitzt. Damit kriegt mal alles eingebunden, was es zu kaufen gibt. Wenn man die Sensoren aber selber herstellt, kann man sie meistens branden, also eine Seriennummer verpassen. In einem Fall habe ich meinem Kunden empfohlen, einfach eine lokale MAC-Adresse einzubrennen. Das hat sich Jahre später sehr bewährt! Hier würde ich mal nachprüfen, ob man nicht bei der Auslieferung und dem Test der Module einfach eine fortlaufende Seriennummer in das board bekommt. Wer weiß wie die später mal konfiguriert werden müssen und ob nicht mehrere Einheiten aus mehreren Subnetzwerken verschaltet werden müssen.
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.