Nun hab ich so meine Probs, alles zu verstehen.


Aber ich denke Du solltest meine Idee mal aufnehmen und durchdenken.

Also Du solltest mehrere Ebenen einführen.

Funknetzwerkebene

Unterste Ebene ist die Sicherstellung der Funkübertragung. Hierbei sollte der Master die Führungsrolle übernehmen.
Zunächst sollte - um möglichst variable eine "beliebige" Anzahl Slaves einbinden zu künnen, das Funknetzwerk untersucht werden.

Die Untersuchung hat den Vorteil, daß das System leicht erweitert werden kann. Du könntest auch von festen Parametern und
Verbindungen ausgehen, dann entfallen die Suchfunktionen.

Dem Master sollten bekannt sein, wieviele Slaves es gibt, Wert einstellbar. Daraus sollte sich ableiten, wie die Slaves heißen (IDs).
Zunächst sollte der Master den ersten Slave ansprechen, wenn die Verbindung klappt - ask: also "hallo bist Du da" - "ja": ack (acknowledge=Empfangsbestätigung)
dann den nächsten .usw.
Wurden alle Slaves gefunden, dann bedeutet es, daß der Master mit allen Slaves direkte Verbindug hat. Die Salves sollten dann nicht im Repeatermous arbeiten.

Fehlen Slaves, dann sollte der Master über den ersten Slave versuchen, den/die Fehlenden zu erreichen.

Das kann zu einer Kette gesteigert werden. Die Adressierung sollte die Tatsache berücksichtigen, daß zwischenliegende Slaves auch als Repeater fungieren. Das ist wichtig für die Timeouts, in denen der Master eine Antwort erwartet. Und wichtig für die Slaves am Ende der Kette, damti die wissen, wie der Master zu adressieren ist!

Während des späterern Ablaufs muß dieser Netzwerktest im Gesamten oder einzelnen Ästern nur noch manuell stattfinden, wenn z.b. eine längerwierige Funkstörung auftritt, diese behoben werden konnte ... u.s.w.

Ein Fehlschlag einer Verbindung zu einem Slave, sollte zu z.b. 3 Wiederholungen des Verbindungsaufbaus führen und dann als Fehler angezeigt werden, erneute Überprüfung entweder manuell auslösen oder automatisch in größeren Zeitintervallen.

Das Funknetzwerk ist die Basis.
Das hier vorgeschlagene Verfahren eine Möglichkeit, die Kontrolle und Übersicht vom Master aus zu wahren um auch feststellen zu können, welcher Salve ggf. ausgefallen oder wessen Funkverbindung gestört ist.


Diese Ebene betrifft auch die Datendurchreichung der Slaves, wenn sie ein Kettenglied sind. Das ist unabhängig von den durchzureichenden Daten. Hierbei beachten, der Slave wird gepollt ... empfängt er nichts aus Richtung Master, tut er auch nichts.
Hinweis: die Adressierung sorgt dafür, daß nur angesprochene Slaves antworten, auch wenn sie den Master hören, aber das Netzwerk über die Adressierung festlegt, daß ein Kettenslave die Kommunikation übernimmt.


Alternativ zur Funkstrecke könnte auch ein RS485-Netzwerk stehen, wobei hier über Draht alles Slaves einen direkten Kontakt haben könnten ... oder eben auch eine Mischung aus allem


Kontrollfunktionen-Ebene

Wenn das Netzwerk initialisiert ist, pollt der Master die Slaves zyclisch über das Netzwerk an um die Funkstrecke(n) zu prüfen.

Dieser Zyclus sollte allen Slaves bekannt sein oder bekannt gemacht werden, damit sie ihr Zeitfenster kennen, in dem diese selbständig Events melden dürfen.


Dantenübertragunsebene

Die nächste Ebene ist die Übertragung der Daten über das bestehende Netzwerk.

Kann das Netzwerk nicht genutzt werden, so ist das Event zwischenzuspeichern (fifo oder ring)

Ein Event wird dem Netzwerk zur Übertragung übergeben. (Im erlaubten Zeitfenster sendet der Slave also selbständig Events!!!)


Die Zeitsynchronisation ist in meinen Augen nur eine (wichtige) Sonderfunktion des Events. Wobei nach der Initialisierung des Netzwerkes das als erstes erfolgen muß, später dann ebenso passend zyclisch.




Idee verstanden ?



Deine Umsetzung der Unabhängigkeit vom Master finde ich hier nicht passend und zwar, weil der Master und der Mensch dahinter den Überblick behalten muß, was abgeht. Im Fehlerfall muß dieser auch den selbigen möglichst genau einschränken.

So wie Du das dargestellt hast, kann bei Fehlern (wo die auch immer herkommen) nicht festgestellt werden, ob es an einer Selbstfindung der Slaves untereinander liegt, oder eben an Übertragungsproblemen ...

Außerdem schriebst Du ja, daß Dein Netzwerk zu lange Laufzeiten hat ....

LG
Vajk