Protokoll gesucht

OP #1081311
Lesenswert?

Moin,

ich bin zur Zeit auf der Suche nach einem Protokoll mit dem ich einen 
Master und mehrrere Slaves per RS485 verbinden kann. Der Master soll von 
jedme Slave Daten lesen und an diese schreiben können.

Das Problem ist, das nicht immer die gleichen Slaves an den Bus 
angeschlossen sind sondern das hier auch mal einer dazukommen oder 
wegfallen kann. Solange sie aber angeschlossen sind (auch wenn der Strom 
einmal abgestellt wird) müßen sie aber immer wieder die geleiche ID 
bekommen. Nur wenn es eine Kollision bei den ID gibt sollen die nötigen 
IDs neu vergeben werden.

Wer hat einen Tip für mich, wo ich so ein Protokoll finden kann (selber 
entwickeln geht zwar auch, ist aber aufwändiger und dauert länger und 
wenn es schon etwas gibt würde ich ganz gerne nutzen).

Gruß Mike
Gast #1082335
Lesenswert?

ich überschlage das mal für 64bit und 1us pro Slave:

2^64 = 18446744073709551616 mögliche Slaves

18446744073710 Sekunden
30744573462 Minuten
5124095576 Stunden
213503982 Tage
584942 Jahre

Also nicht wirklich Praktikabel ;-)

Dann lieber in richtung sukzessive approximation. also immer die id 
teilen bis nur noch einer antwortet ;-)

oder sich auf 16bit begrenzen dann dauerts nur: 66ms

Mfg
Ulrich
#1082369
Lesenswert?

Welchen quatsch überlegt ihr da ?
Ein uC ohne ID muß die ID null haben, wird auch periodisch abgefragt,
und dann seine Seriennummer ausgeben. Sollte er nicht das auf dem Bus
lesen, was er sendet, dann timeout. Es bleibt eine Node übrig, und die
bekommt dann von einem Master eine neue Addresse zugesand.
Gast #1085952
Lesenswert?

>> 584942 Jahre

>> Also nicht wirklich Praktikabel ;-)

Ja, und die Ingenieure bei Maxim / Dallas sind auch so blöd, dass sie 
das nicht gemerkt haben.

Vielleicht würde ein Blick in eine App-Note ja für Erhellung sorgen.

DIP-Adresse! Wer macht denn sowas heutzutage noch?

Wenn dann mach einen Taster drauf, mit dem der Slave angelernt wird, 
sprich er bekommt eine Adresse, die dann im Eeprom abgelegt wird und 
immer wieder zur Verfügung steht. Der Master hat im Eeprom eine Tabelle, 
in der alle bisher verwendeten Adressen stehen und die gerade 
angeschlossenen markiert sind. Wenn ein Slave sich paarmal nicht meldet, 
wird er als inakiv markiert, aber die ID bleibt in der Liste.

Oder der Master sendet immer mal ein Query ohne ID, auf das sich ein 
neuer Slave meldet. Entweder der Slave hat schon eine ID, dann sendet er 
diese und der Master aktiviert sie. Der Slave merkt sich, dass er 
erkannt wurde, um nicht auf weitere Queries zu reagieren. Oder der Slave 
hat noch keine ID, dann fragt er eine an. Der Master vergibt eine neue 
ID, trägt sie in die Liste ein und aktiviert sie. Der Slave speichert 
sie im Eeprom, Rest wie oben.

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