Ich habe eine allgemeine Frage zur drahtlosen Kommunikation und welche Techniken verwendet werden können, um zu erkennen, ob zwei Sender die Nachricht genau zur gleichen Zeit senden.
Da dies eine allgemeine Frage ist und Sie wirklich nicht viel über dieses Gebiet wissen und wirklich mehr wissen möchten, nehmen wir an, ich verwende supereinfache Techniken. Lassen Sie uns über die On-Off-Keying-Modulationstechnik sprechen (ich glaube, dass die Trägerfrequenz keine Rolle spielt, aber sagen wir das 433-IMS-Band) und eine Art Präambel verwenden (wie die in der Arduinos 433-Bibliothek, die 25 abwechselnd 1 und 0 sendet). ).
Was würde passieren, wenn zwei Sender gleichzeitig mit dem Senden ihrer Daten beginnen? Ich gehe davon aus, dass es zu einigen konstruktiven/destruktiven Interferenzen kommen wird und die Integrität der Daten gefährdet wäre. Ist die einzige Lösung, die Prüfsumme der Nachricht als Teil der Nachricht zu haben und dann die Integrität zu überprüfen und beschädigte Nachrichten zu löschen?
Wie wird dies in Wi-Fi/Cellular/LoRa/... gehandhabt?
Danke!
ACK und Retransmission ist eine gängige Lösung.
Der Sender wartet auf ein ACK (Acknowledge) vom Empfänger. Wenn es keine Bestätigung vom Empfänger erhalten kann (möglicherweise für eine begrenzte Zeitdauer), überträgt es die Nachricht erneut. Bei BLE zum Beispiel werden alle verlorenen Pakete (dh die Pakete, die kein ACK vom Empfänger zurückgegeben haben) unendlich wiederholt, bis ein Verbindungsverlust auftritt.
Natürlich werden die Sender der verlorenen Pakete nicht ewig gleichzeitig senden. Einer von ihnen wird schließlich während der Neuübertragung vor dem anderen senden.
Ist die einzige Lösung, die Prüfsumme der Nachricht als Teil der Nachricht zu haben und dann die Integrität zu überprüfen und beschädigte Nachrichten zu löschen?
Es ist ziemlich üblich, dass bei der Funkdatenübertragung eine Form robuster Fehlerprüfmethode verwendet wird. Es hat auch nichts mit zwei gleichzeitigen Sendern zu tun; Ein einzelner Sender/Empfänger und jede Form von Inband-Störungen führen zu einer möglichen Beschädigung Ihrer Daten, daher ist die Fehlerprüfung nicht nur nett, sondern von grundlegender Bedeutung.
Lassen Sie uns über die On-Off-Keying-Modulationstechnik sprechen (ich glaube, dass die Trägerfrequenz keine Rolle spielt, aber sagen wir das 433-IMS-Band) und eine Art Präambel verwenden (wie die in der Arduinos 433-Bibliothek, die 25 abwechselnd 1 und 0 sendet). ).
Zusätzlich zur Fehlerprüfung sollten Sie die in der Nachricht enthaltenen Adressbits, die Nachrichtenlänge und die Integrität der Nachrichtenpräambel überprüfen, wenn Sie möchten, dass Ihr System so robust wie möglich ist.
Abgesehen von CDMA und einigen anderen sehr komplexen Modulationsschemata, die in Smartphones verwendet werden, ist der Empfänger, wenn zwei Sender gleichzeitig eine Nachricht m auf derselben Frequenz senden, vollständig nicht in der Lage, die ursprüngliche Nachricht m zu rekonstruieren , es sei denn, ein Sender ist weit entfernt und der andere befindet sich in der Nähe des Empfängers.
Sie können mehr oder weniger komplizierte Protokolle für den Umgang mit dieser Situation erstellen. Jeder hat eine andere Reihe von Vorteilen und Problemen. Unabhängig davon müssen alle Übertragungen Prüfsummen oder ähnliches enthalten. Protokolle sind die Art, wie wir Computermenschen die "Regeln" für interagierende Systeme nennen.
Für mich fallen sie in zwei verschiedene Kategorien: mit einem Meister oder nicht.
In einem System mit einem Master kann die Masterstation jede Slavestation nach Informationen abfragen. Die Slaves senden nur auf Abruf. Zusätzlich prüft der Master in gewissen Abständen, ob neue Stationen eingetroffen sind.
Ohne Master wird das Protokoll komplizierter. Jede Einheit muss ein bisschen oder viel mehr Funktionalität haben.
Eine der besseren Lösungen ist kallade SOTDMA und wird in der AIS-Kommunikation von Schiffsdaten verwendet. In diesem Setup gibt es keinen Master, alle Einheiten verhalten sich gleich. Zur genauen Zeiteinteilung wird eine GPS-Uhr verwendet, um die Zeitfenster zu synchronisieren (die Schiffe haben sowieso ein GPS, da die Nachricht Position und Kurs/Geschwindigkeit enthält). Jede Einheit hört für eine Weile zu, um zu hören, welche Zeitschlitze, wenn überhaupt, gerade verwendet werden, und wählt zufällig einen der freien aus. Siehe für eine kurze Beschreibung: http://www.allaboutais.com/index.php/en/technical-info/transmission-types/105-ais-technicals/technical-lfundamentals/93-sotdma
Time Division Multiple Access, kurz TDMA, wird bei Verwendung einer einzelnen Frequenz (als Beispiel SOTDMA oben) auf unterschiedliche Weise verwendet. Ein Schema, das als STDMA (selbstorganisierender Zeitmultiplexzugriff, teilweise patentiert) bekannt ist, besteht darin, dass Sie auf eine Stille warten und dann die Nachricht senden und auf ein ACK-Signal vom Empfänger warten. Wenn Sie nach kurzer Zeit kein Bestätigungssignal erhalten, senden Sie die Nachricht erneut. Damit sich zwei Stationen nicht "synchronisieren", machen Sie das Warteintervall zwischen Neuübertragungen durch eine Zufallsfunktion gesteuert. Beim Empfang einer Nachricht berechnet der Empfänger beim Empfang die Prüfsumme und sendet bei Korrektheit direkt eine Bestätigung. Sie können verschiedene Variationen davon machen, aber im Grunde müssen alle Einheiten dem gleichen Protokoll folgen, damit es funktioniert.
Als Anmerkung...
Dies ist eine Technik, die tatsächlich in Paging-Systemen verwendet wird, um die Abdeckung und die Signalstärke im Empfänger zu verbessern. Dies wird Multi-Station-Simulcast oder umgangssprachlich Simulcasting genannt.
In einem Simulcast-Funkrufsystem mit mehreren Stationen sendet jede Basisstation dasselbe HF-Signal (FSK) gleichzeitig auf derselben Frequenz. Die Sender werden synchronisiert, um ein korrektes Bit-Timing sicherzustellen (zum Beispiel unter Verwendung von GPS-Timing-Informationen). Ein Paging-Empfänger im überlappenden Bereich empfängt mehrere HF-Signale, die von verschiedenen Basisstationen gesendet werden.
Ein Empfänger in der Nähe eines Senders wird kein Problem haben, die Paging-Nachrichten von dem nächstgelegenen Sender zu empfangen. Ein Empfänger irgendwo zwischen zwei (oder mehr) Sendern empfängt das kombinierte Signal der Sender. Da die Entfernung zu jedem Sender ungefähr gleich ist, ist das kombinierte Signal stärker und hat das richtige Bit-Timing.
Die Paging-Baudraten sind ziemlich niedrig (512, 1200 oder 2400 Baud), sodass das Bit-Timing nicht sehr kritisch ist. Paging-Daten (Pocsag) verwenden die BCH-Codierung für die Nachrichtenintegrität.
Andi aka
Lundin
Alan Birtles
Steve
Steve
Pelle