Wie würdest du so eine Laufzeitmessung durchführen wollen? Das ist ein sehr wichtiger Aspekt.
Es interessiert eigentlich nur die Laufzeit vom Master zum Slave, damit ich als Master weiß, wieviel Zeit ich auf meine aktuelle Zeit addieren muss, um dem Slave zu sagen was er in seinen RTC schieben soll. Danach laufen die RTC synchron.
Um noch mal das Init auf einen Verständnislevel zu bringen:
Master versucht erst mal alle Slaves im Alleingang zu erreichen.
Wenn er das nicht kann, dann nimmt er sich den ersten Slave und versucht nur über diesen die restlichen Slaves zu erreichen.
Sollten da immer noch welche unerreichbar bleiben nimmt er den nächsten Slave und so fort.
Ist in der ersten indirekten Runde ein bzw sind mehrere Slave(s) gefunden worden, aber es sind immer noch unerreichte übrig, dann versucht der Master über die Ergebnisse der ersten indirekten Runde an die fehlenden Slaves zu kommen.
So geht das weiter, bis alle Möglichkeiten ausgeschöpft sind.
Ist ein Slave erreicht worden, dann gibt es zur Kommunikation einen eindeutigen Weg für den Master zum Slave, aber auch für den Slave zum Master, der auf beiden Seiten gemerkt werden kann.
Daran anschließend folgt die RTC sync..
Beim Init müsste nun ein Relais das vom Master auserwählt wurde als solches für einen Slave zu fungieren einen Befehl bekommen: "versuche SlaveX zu erreichen". Wenn das geht sendet der neue Slave über die Relaisstrecke an den Master zurück, dass er da ist. Dazu muss aber im Datenteil der bisherige Weg dokumentiert werden. Dann könnte man nämlich auch im Header bloß immer die Zieladresse abschneiden. Und was ich für einen Vorteil erachte -es ist unabhängig von der ID-Größe-.
Bsp.: Master sendet über Slave3 und Slave5 an Slave1
Header:
sync|sync|sync|S3|S5|S1|Absenderadresse folgt|M|...
S3 erzeugt eigene sync Bytes und sendet das Paket ab S5|S3|... wieder weiter
Wenn es bei S1 ist kommt als nächstes der Indikator das jetzt der Absender kommt und das Paket somit am Ziel angekommen ist.
Daraufhin wird ein CRC Test gemacht und ein ACK oder NAK an die Absenderadresse geschickt. Dabei verwendet S1 den Pfad, den er für M irgendwo gespeichert hat.
Wir sollten nicht davon ausgehen, dass das Ziel immer der Master ist, da ja Master und Slave senden können und auch beide empfangen.
sast
Lesezeichen