mikrocontroller.net

Forum: Haus & Smart Home Protokoll gesucht


Autor: Mike R. (thesealion)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Sven (Gast)
Datum:

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

Autor: lrlr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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..

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Chris S. (schris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Frank L. (hermastersvoice)
Datum:

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

Autor: lrlr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn dann (mehrere) slaves zugleich senden, ..


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

Autor: Jörg S. (joerg-s)
Datum:

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

Autor: Volker G. (voga2073)
Datum:

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

Volker

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.