Ich suche eine Lösung, eine bessere Idee oder auch nur einen Lösungsansatz. Frage: Gibt es eine elegante Methode mehrere Sender so zu synchronisieren dass sie zu keinem Zeitpunkt gleichzeitig senden? Aufbau: Es gibt mehrere Sender und einen Empfänger. Jeder Sender schläft zu 99,958% der Zeit und verschicken in einem bestimmten Intervall ein Datenpaket, zum Beispiel jede Minute oder auch nur jede Stunde. (Der Sender ist nur vornehmlich ein Sender und der Empfänger kann auch Senden, aber ich will mit der Bezeichnung nur die Hauptrichtung verdeutlichen.) Der Empfänger nimmt solch ein Datenpaket an, liest die Kennung des Senders aus und schickt dem Sender, nachdem das Datenpaket vollständig empfangen wurde, Korrekturdaten oder neue Einstellungen, wie zum Beispiel der Länge des Sende-Intervalls. Der Sender kann durch den Empfänger nicht aufgeweckt werden da ich ihn wirklich in den Tiefschlaf versetze und das Funkmodul deaktiviert ist. Ich habe jetzt also eine Maximale Zeit die der Sender braucht um das Datenpaket zu verschicken und dann noch eine gewisse Zeit für die Rückantwort des Empfängers eingeplant. Wenn die Intervalle unterschiedlich lang sind wird es unter Garantie manchmal zu einer Überlagerung der Sendungen kommen. Das will ich aber verhindern! Gegenmaßnahmen die ich treffe: Ich behalte das aktuelle Datenpaket im Speicher (Puffer für mehrere Pakete) und sende sie einfach noch mal wenn es keine Bestätigung (Rückantwort) des Empfängers gab. Theoretisch verliere ich somit keine Daten. Wenn aber zu viele Kollisionen auftreten werden die Datenpakte zu diesen Zeitpunkt immer verworfen, der Puffer wächst an und damit auch die Zeit um ein Datenpaket zu übertragen, was wiederum die Wahrscheinlichkeit erhöht dass es Kollisionen gibt. So kann das ganze System zugemüllt werden und es findet keine Kommunikation mehr statt obwohl alle senden und die Puffer schon übergelaufen sind. Jetzt kann man die Sender aber auch noch alle auf "Echtzeit" stellen und den Intervall zum Beispiel auf eine Sekunde legen. Bei einer Anzahl von nur 4 Sendern ist diese Intervallzeit zum Beispiel schon voll da ein Sender bis zu 250ms braucht um das Datenpaket zu senden. Bei über 4 Sender müsste ich dann schon Pakete verwerfen oder ich müsste die Sender auf eine höhere Intervallzeit setzen. Die Sender besitzen eine RTC und der Empfänger auch. Mein Ansatz ist der, dass bei einer Veränderung der Intervallzeit über ein grafisches Interface die nächsten Intervall-Zeitpunkte und die Sendelänge + Rückantwortlänge aller Sender berechnen zu lassen und die Sender dadurch zu synchronisieren da ich die Kollisionen somit berechnen kann. Wenn so ein Sender wieder mal ein Paket sendet kann der Empfänger (der alle Zeitpunkte kennt) ihm ein positives ober negatives zeitliches Delay als Zeit-Offset für die nächste Übermittlung senden. Alternativ könnte er auch sagen dass er das nächste Paket aussetzen soll um den Äther nicht zu verschmutzen und die in der Zeit gesammelten Daten werden dann später in einem anderen Daten-Paket mit versendet. Mir geht es also um eine sinnvolle Synchronisierung der Sender. Gibt es da schon Lösungen? Wie würdet ihr das machen?
Es kommt ja auch auf die Häufigkeit an. Wenn z.B. zu jeder zur vollen Minute nacheinander einer sendet, könntest Du bis zu 59 Sender in der Stunde senden lassen. Da aber auch mit Störungen zu rechnen ist, wäre eine Verschachtelung der Zeiten zu überlegen, wenn z.B. eine Störung von Minute 17 bis 23 auftritt. Eine weitere Frage der zeitlichen Synchonisierung ist das weglaufen der genauen Zeit. Deshalb hat man sich bei NTP viele Gedanken gemacht. https://de.wikipedia.org/wiki/Network_Time_Protocol
Hallo Mike, ich sehe da mehrere Ansätze: - Aloha, also die Sendezeitpunkte mittels Zufalssequenz verändern Tritt einmal eine Kollision auf, sollte sie zum nächsten Intervall nicht nocheinmal auftreten. Du nimmst Kollisionen in kauf ohne sie zu erkennen. Das wird typischerweise bei TRanspondern angewendet - Listen before talk, du schaust erst einmal, ob ein anderer gerade sendet und sendest erst dann. Collision "avoidance", aber Kollisionen lassen sich nicht zu 100% vermeiden. Schema wie bei Zigbit - beacon-synchronisation, der sender horcht erst mal eine Weile und wartet eine Sendung eines anderen ab. Mit Empfang der Message kann er die nächste Aussendung des anderen vorhersagen. Dann ist er aktiv zu dessen Sendezeitpunkt (Nachtriggern) und sendet kurz darauf selber. Collision avoidance, wenn die Gap zum eigenen Aussenden abhängig von der ID ist, können sich beliebig viele Sender synchronisieren. üblich in ANT+ Grüße, Adib.
@ Adib (Gast) Das mit der ID klingt interessant. Also wenn der Sender Nr. 19 lauscht und von einem anderen Sender die ID empfängt, dann kann er aus dessen ID berechnen wann er senden darf. Also er weiß dass Sender Nummer 12 gerade aktiv ist und durch ein genau definiertes "Gap" welches vielleicht eine halbe Sekunde beträgt kann er sein Paket in 7*Gap = 3,5 Sekunden versuchen absenden. Es könnte gerade noch ein Sender aktiv sein und er muss vielleicht 0,5 Sekunden warten, aber wenn nicht, dann kann er sofort senden. In meinem Fall kann es sein dass die Sender sich untereinander nicht empfangen können. Außerdem gibt es ja die Möglichkeit dass Sender1 alle 2 Minuten sendet und Sender2 alle 5 Minuten oder auch mal diese Echtzeit (jede Sekunde oder alle 10 Sekunden) aktiviert werden muss um das Verhalten mal genauer beobachten zu können. Ich werde den aktuellen Intervall wohl trotzdem ab und zu verschieben müssen. Der Empfänger steckt an meinem Laptop und ich kann dort auch größere Berechnungen durchführen und sie dann über den Empfänger zu den Sendern schicken. Ich habe da quasi einen kleinen Sender-Wald den ich auslesen würde! XD @ oszi40 (Gast) Danke für den Link auf NTP oder SNTP. Ich könnte die Reaktionszeit (das Delay) durch einen sehr kurzen Ping ermitteln und so auf das Delay für die Antwortzeit schließen, dann habe ich eine Zahl für die Verzögerung und kann die Zeit genauer einstellen da ich die Delays kenne.
Mike J. schrieb: > Gibt es eine elegante Methode mehrere Sender so zu synchronisieren dass > sie zu keinem Zeitpunkt gleichzeitig senden? Nun ja, GPS Satelliten machen die Synchronisation mit jeweils einer Atomuhr an Bord. > Jeder Sender schläft zu 99,958% der Zeit und verschicken in einem > bestimmten Intervall ein Datenpaket, zum Beispiel jede Minute oder auch > nur jede Stunde. An deiner Stelle würde ich einfach häufig genug senden, z.B. wenn du die Daten jede Stunde brauchst eben jede Viertelstunde. Aber der eine Sender sendet alle 900+2 Sekunden, der nächste alle 900+3, der nächste alle 900+5 der nächste alle 900+7(Primzahlenfolge) Sekunden für jeweils seine 30 Millisekunden sein Datenpaket. Falls sich die Sendeimpulse also mal zufälligerweise überlappen sollten, werden sich die nächsten Datenpakete schon nicht mehr überlappen, und innerhalb der Stunde wird man zumindest ein Datenpaket ungestört empfangen können. Eine Anforderung, daß man GARANTIERT jedes Datenpaket IMMER sicher empfangen kann, ist bei Funk sowieso nicht möglich. Mike J. schrieb: > Wenn so ein Sender wieder mal ein Paket sendet kann der Empfänger (der > alle Zeitpunkte kennt) ihm ein positives ober negatives zeitliches Delay > als Zeit-Offset für die nächste Übermittlung senden. Dazu müsste der Sender ja einen Empfänger besitzen. Wenn er das hat, kann er die Kollision selbst erkennen, in dem er die anderen abhört. Da aber auch hier gilt "Was ein Empfänger ungestört hört, muss nicht dem entsprechen was ein andere ungestört hört" weil je nach Feldstärke die Störungen unterschiedlich sein können, funktioniert das nuur mit erfolgreich empfangenen Nachrichten.
Michael B. schrieb: > Dazu müsste der Sender ja einen Empfänger besitzen. Dieser Empfänger benötigt auch Strom, solange er empfangen soll! Meine Auto-Fernbedienung dagegen sendet nur WENN ich auf den Knopf drücke. Deshalb hält die Batterie ewig. Wahrscheinlich sollte man gar nicht synchronisieren solange genug Pausen zwischen den Sendungen sind und lieber mehrfach mit Prüfzahlen gesichert den selben Text senden? Wenn natürlich alle Sender z.B. nach Stromausfall zur gleichen Zeit starten, sollte man an Hand der Adresse verschiedene, sinnvolle Wartezeiten einbauen um Kollisionen möglichst zu vermeiden (so ähnlich wie im LAN).
Ach ja, der Empfänger hat ständig Strom da er per USB angebunden ist. Noch mal zur Information, sowohl das was ich als Sender, also auch das was ich als Empfänger bezeichne können senden und empfangen da ich ja ein Acknowledge übertragen muss um den Datenverkehr etwas steuern zu können.
Dafür gibt es keinen perfekten Ansatz, u.a. wegen dem Hidden Station Problem, was man bei Funk immer hat im Gegensatz zu LAN oder anderen streng gekoppelten Systemen. Schau dir mal MACA von Karn an. Eigentlich gibts zu diesem Thema tonneweise im Web zu lesen.
:
Bearbeitet durch User
> Dieser Empfänger benötigt auch Strom, solange er empfangen soll! Meine > Auto-Fernbedienung dagegen sendet nur WENN ich auf den Knopf drücke. > Deshalb hält die Batterie ewig Vom Thema Auto-Fernbedienungen, das du gerade so schön ins Spiel gebracht hast, kann man sich auch einen Lösungsansatz abschauen, nämlich wie es die Wegfahrsperren und die elektronischen Schlüssel (die man nur in der Tasche haben muss, wenn man den Startknopf drückt) machen: Wenn man den Startknopf am Auto drückt, sendet das Auto sein Abfragesignal, welches primitiv aufgebaut ist und mit ausreichend Leistung auf irgendeiner "Mittelwellenfrequenz" gesendet wird und mit einem einfachen Detektor empfangen werden kann, welcher im Standby keinen Strom verbraucht. Die eigentliche Kommunikation findet dann m.W. im 433-Mhz-Band statt. Ergebnis ebenfalls: die Batterie hält ewig.
Waere es moeglich in festen Intervallen eine Sync Nachricht zu senden, zB zur vollen Sekunde/Minute/Stunde. Jeder zu dieser Zeit auf Empfang gehaltenen Empfaeger, kann von da mit seiner ID seine Sendezeitscheibe berechnen und genau dann senden. Diese Sendezeitscheibe muss fuer Wasauchimmer hin & zurueck reichen. Je nach "Echtzeit" steigen die Anforderungen. Muss man wegen der benoetigten Datenmenge & Zeitscheibenlaenge auf die Sekunde/Milisekunde/Mikrosekunde genau sein ? Dieses Vorgehen geht, wenn alle Empfaeger der Sender direkt empfangen. Nicht mehr, wenn etwas dazwischen ist, resp dann wird's schwieriger.
:
Bearbeitet durch User
Sebastian L. schrieb: > Wenn man den Startknopf am Auto drückt, sendet das Auto sein > Abfragesignal, welches primitiv aufgebaut ist und mit ausreichend > Leistung auf irgendeiner "Mittelwellenfrequenz" gesendet wird und mit > einem einfachen Detektor empfangen werden kann, welcher im Standby > keinen Strom verbraucht. Du meinst so was wie "Keyless gone"? http://www.heise.de/ct/ausgabe/2015-26-Autodiebe-tricksen-kontaktlose-Schliesssysteme-aus-3013915.html
W.A. schrieb: > Sebastian L. schrieb: >> Wenn man den Startknopf am Auto drückt, sendet das Auto sein >> Abfragesignal, welches primitiv aufgebaut ist und mit ausreichend >> Leistung auf irgendeiner "Mittelwellenfrequenz" gesendet wird und mit >> einem einfachen Detektor empfangen werden kann, welcher im Standby >> keinen Strom verbraucht. > > Du meinst so was wie "Keyless gone"? > http://www.heise.de/ct/ausgabe/2015-26-Autodiebe-tricksen-kontaktlose-Schliesssysteme-aus-3013915.html Vermutlich meint Sebastian die normale Induktionsspule ums Zündschloss, die vom Schlüssel empfangen wird und sowohl den Sender im Schlüssel auslöst, als ihn auch speist. @TE: M.E. ist 'Listen before Talk' hier am wirtschaftlichsten. Der Node startet den Empfänger, prüft auf freie Frequenz und sendet seine Daten. Dann kann er wieder schlafen.
:
Bearbeitet durch User
Mike J. schrieb: > Frage: > Gibt es eine elegante Methode mehrere Sender so zu synchronisieren dass > sie zu keinem Zeitpunkt gleichzeitig senden? Sicher. Loran-C z.B. macht das. https://de.wikipedia.org/wiki/LORAN
> Frage:
Gibt es eine elegante Methode mehrere Sender so zu synchronisieren dass
sie zu keinem Zeitpunkt gleichzeitig senden?
Schau unter Mobilfunk. GSM, usw. Da laufen die Zeitscheiben synchron.
Sogar die Oszillatoren sind frequenzgelockt.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.