Forum: Haus & Smart Home Protokoll gesucht


von Mike R. (thesealion)


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

von ... .. (docean) Benutzerseite


Lesenswert?

Man könnte die ID per DIP Schalter einstellen...

Das wäre mal so das einfachste...

Oder wenn dein µC eine Seriennummer hat, nimm doch die...

von Sven (Gast)


Lesenswert?

Beim Brennen der Slaves individuelle 64-Bit-Seriennummer vergeben. Macht 
Dallas bei den 1-wire-ICs so.

von lrlr (Gast)


Lesenswert?

(u.U. blöde frage)

nachdem die slaves (sag ja schon der name) sich wohl nicht selbstständig 
bemerkbar machen können / dürfen

woher willst wissen dass ein neuer angeschlossen wurde..

von Jörg S. (joerg-s)


Lesenswert?

Könnte man so machen wie bei Profibus. Der Master fragt zyklisch alle 
Adressen nach einer Status Meldung ab. Meldet sich ein Slave auf diese 
Anfrage, so ist er existend.

von Ulrich (Gast)


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

von Chris S. (schris)


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.

von Jörg S. (joerg-s)


Lesenswert?

>Also nicht wirklich Praktikabel ;-)
Für Geräte mit Seriennummer als Adresse nicht, aber Profibus Slaves 
haben Adressen (max 128) die per Dip-Schalter eingestellt werden. Da 
geht's dann etwas schneller ;)

von Frank L. (hermastersvoice)


Lesenswert?

sollte es für solche Fälle nicht eine Broadcastfunktion geben mit Der 
der Master zum identifizieren aller Slaves aufruft?

von lrlr (Gast)


Lesenswert?

wenn dann (mehrere) slaves zugleich senden, ..


kann man da nicht gleich multimaster machen, scheint gleich "aufwändig" 
zu sein ?!!?

von Jörg S. (joerg-s)


Lesenswert?

Es gibt so viele Möglichkeiten :)
Sowas wie das DHCP System kommt dem von Mike geforderten ja auch recht 
nahe.

von Volker G. (voga2073)


Lesenswert?

Mir fällt da die TEI-Vergabeprozedur aus dem ISDN ein, schau mal in die 
Q.921 (gibt bei ETSI).

Volker

von Sven (Gast)


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.

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
Noch kein Account? Hier anmelden.