Forum: HF, Funk und Felder Funkmodul soll Überschneidung zweier Datenpakete erkennen


von Hans W. (hans_wurst)


Lesenswert?

Hallo,

auf der Suche nach einem Funkmodul zum Senden und Empfangen bin ich (wie 
viele hier im Forum) auf das Modul RFM70 bei Pollin gestoßen.

Wenn ich mir das Datenblatt anschaue, glaube ich, dass es keine 
Fehlerbehandlung gibt, falls mal mehrere Sender gleichzeitig anfangen zu 
senden. Sehe ich das richtig?

Für meine Anwendung wäre es wichtig, dass jeder Teilnehmer senden kann 
und dabei keine Daten verloren gehen. Eine Rückmeldung die Daten (im 
Fehlerfall) erneut senden zu müssen wäre völlig ok.

Kenn jemand ein günstiges Funkmodul welches mit dem Problem zeitgleichem 
Senden von Daten umgehen kann? Meine Anwendung bietet keinen 
übergeordneten Master, der eventuell time-slots vergeben könnte.

Edit: Eine Möglichkeit wäre sicher das ganze durch zwei Module (eines 
für Empfang + eines zum Senden) zu realisieren. Das würde ich aber gerne 
aus Platzgründen vermeiden.

: Verschoben durch Moderator
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Hans Wurst schrieb:
> Kenn jemand ein günstiges Funkmodul welches mit dem Problem zeitgleichem
> Senden von Daten umgehen kann?

Alle, die IEEE 802.15.4 (landläufig meist "Zigbee" genannt)
implementieren.  Da gibt's CSMA/CA plus ACK plus Wiederholungen
bei fehlendem ACK.  Wird bei allen aktuellen Modulen praktisch
durchweg bereits in der Hardware erledigt, braucht also keine
nennenswerte Softwareunterstützung.

von oszi40 (Gast)


Lesenswert?

Sende Deine Pakete oft genug zu einer sinnvollen Zeit und bilde 
PrüfzahleN.

Wenn Du 3 Quellen hast, die immer nach 3 Sekunden 1 Paket senden könnten 
sie sich theoretisch jedes Mal treffen, wenn jedoch die Zeiten sich 
ständig etwas verschieben, finden diese Treffen seltener statt.

Wer Funk kennt, nimmt Kabel.

von Hans W. (hans_wurst)


Lesenswert?

Danke für die Antworten.

Jörg Wunsch schrieb:
> Alle, die IEEE 802.15.4 ...

Gut, werde ich mich mal einlesen.


oszi40 schrieb:
> Sende Deine Pakete oft genug zu einer sinnvollen Zeit und bilde
> PrüfzahleN.

Genau das würde ich aber vermeiden wollen. Zum einen kann ich nicht 
bestimmen / voraussagen wann die Teilnehmer ihre Daten senden und zum 
anderen wären die freien Zeitschlitze immer kleiner, wenn mehrer 
Teilnehmer ihre Daten erneut senden wollen und somit eventuell (das 
gleiche Paket) ein fünftes mal senden müssen.

von Hans W. (hans_wurst)


Lesenswert?

Hallo,

mittlerweile habe ich gesehen, dass Zigbee nur funktioniert, wenn ein 
Master vorhanden ist. Ohne ihn können die Slaves nicht untereinander 
kommunizieren.

Hat noch jemand Vorschläge für Funkmodule, die mit dem zeitlichen 
Überschneiden von gesendeten Daten umgehen können?

Danke schon mal für weitere Tipps.

von Purzel H. (hacky)


Lesenswert?

Esgibt Zigbee module, ohne zigbee drauf. Dh man muss da sein eigenes 
Protokoll laufen lassen.  Ein Multimaster protokoll ist aber wesentlich 
aufwendiger wie ein master-slave protokoll.

von Wolfgang H. (Firma: AknF) (wolfgang_horn)


Lesenswert?

Hi, "Hans",

> Wenn ich mir das Datenblatt anschaue, glaube ich, dass es keine
> Fehlerbehandlung gibt, falls mal mehrere Sender gleichzeitig anfangen zu
> senden. Sehe ich das richtig?
Ja. Das Problem hatten schon die ersten Marconi-Funker mit ihren 
Funkensendern.

Die Forderung nach unkontrolliertem Funk und gleichzeitig Garantie gegen 
Überschneidungen ist nur zu realisieren, wenn man jeder Funkstrecke ihre 
eigene Sendefrequenz gibt - und jeder Empfänger nur auf seinen Sender 
abgestimmt ist.

Dann bleiben nur noch die Störungen durch andere Funkdienste im selben 
Band.

Die neuzeitlichen Forderungen nach Produkten mit Eigenschaften des 
perpetuum mobile kommen gern von fachdilettantischen Kunden.
Schön, wenn die wenigstens lernbereit sind.

Die Kosten für das eben beschriebene Funksystem könnten drastisch 
gesenkt werden durch zeitliche Steuerung der Sendeberechtigung. Wer ein 
übliches Handy benutzt, benutzt diese Technik.

Ciao
Wolfgang Horn

von Purzel H. (hacky)


Lesenswert?

Ein Mobiltelephon arbeitet im Master-slave Betrieb und bekommt die 
Zeitscheibe und Frequenz zugewiesen.

Wie schon gesagt, man kann ein Multimaster System aufbauen, indem das 
Netzwerk sich selbst per Algorithmus dynamisch adressiert, und ein Token 
herumgibt. Wenn das Token verloren geht, muss es neu generiert werden. 
das geschieht auch per Algorithmus. so ein System funktioniert gut auf 
einem Kabel. Dort hat man gleichbleibende Signalqualitaet und keine 
externen Stoerungen. Bei Funk kann es je nach Frequenz externe 
Stoerungen geben. Deshalb muesste man den Token-regenerier Algorithmus 
anpassen. Und alle Stationen muessen eine Routingtabelle mitfuehren. Da 
kann man sich vertun.

Ein Master-Slave Netzwerk ist viel einfacher. Mach sowas.

von Hans W. (hans_wurst)


Lesenswert?

Zunächst einmal herzlichen Dank für eure Beiträge.

Mir ging noch ein weiterer Lösungsweg durch den Kopf:
Wenn jedes Funkmodul einen Sender und einen Empfänger enthält, könnte es 
bei jedem Senden prüfen ob das gleiche auch am Empfangsmodul gelesen 
werden konnte.

Glaubt ihr das macht Sinn? Oder würde das Empfangsmodul (auf der 
Sender-Platine) dann eh immer das "richtige" Lesen, da es zu nah am 
Sendemodul sitzt?

von Wolfgang H. (Firma: AknF) (wolfgang_horn)


Lesenswert?

Was hast denn du für eine Vorstellung von Funk, Hans Wurst?

> Wenn jedes Funkmodul einen Sender und einen Empfänger enthält, könnte es
> bei jedem Senden prüfen ob das gleiche auch am Empfangsmodul gelesen
> werden konnte.
Das geht im Kabel. Ethernet macht das auch, "collision sense".

Aber im Funk kann die Störsituation bei jedem Empfänger eine andere 
sein.
Hast Du Dir das tatsächlich nicht überlegt?
Dann stell Dir das ganze Funknetz doch mal wie in der Modelleisenbahn 
vor und bevölkere es mit Störern.

Ciao
Wolfgang Horn

von A. W. (uracolix)


Lesenswert?

Hans Wurst schrieb:
>Für meine Anwendung wäre es wichtig, dass jeder Teilnehmer senden kann
>und dabei keine Daten verloren gehen. Eine Rückmeldung die Daten (im
>Fehlerfall) erneut senden zu müssen wäre völlig ok.

Diese Grundfunktionalitaeten sind u.a. bei den Atmel-Transceivern schon 
in Hardware implementiert. Die Anzahl der Daten-Wiederholungen ist 
natuerlich begrenzt (0 ... 15), d.h. du musst z.B. den Fehlerfall, dass 
der Kanal gestoert ist, selbst abfangen. Genauso ist ein intelligenter 
Kanalwechsel derzeit in den Standards nicht vorgesehen. Fuer einen 
ausfallsicheren Betrieb sollte es so sein, dass regelmaessig Pakete 
gesendet werden, und wenn diese ausbleiben, ein Fallback in einen 
sicheren Zustand erfolgt.

Viel interessanter ist aber, wie das zeitliche Sende-Empfangsschema 
aussehen soll und ob die Knoten auf Batterie laufen sollen?

Delta Oschi schrieb:
>Esgibt Zigbee module, ohne zigbee drauf. Dh man muss da sein eigenes
>Protokoll laufen lassen.  Ein Multimaster protokoll ist aber wesentlich
>aufwendiger wie ein master-slave protokoll.

Der Koordinator bei Zigbee-artigen Netzen dient nicht nur dazu, das 
Netzwerk unnoetig kompliziert zu machen, sondern, dass Funkknoten die 
mit einer Batterie laufen moeglichst lange schlafen koennen. (sie 
muessen daher nicht permanent im RX mode zu sein, der eine Menge Strom 
braucht).

Der Koordinator ist aber auch ein Single-Point-Of-Failure.

Ein Multimaster-Protokoll, das stromsparend sein soll braucht pro Knoten
eine sehr genaue Zeitbasis, damit alle Stationen auch im selben Zeitslot 
aufwachen und Daten austauschen koennen.

von Sascha W. (sascha-w)


Lesenswert?

Hans Wurst schrieb:
> Zunächst einmal herzlichen Dank für eure Beiträge.
>
> Mir ging noch ein weiterer Lösungsweg durch den Kopf:
> Wenn jedes Funkmodul einen Sender und einen Empfänger enthält, könnte es
> bei jedem Senden prüfen ob das gleiche auch am Empfangsmodul gelesen
> werden konnte.
Dann wird dir der Empfänger der am Sender sitzt immer sagen das das 
Signal erfolgreich gesendet wurde weil der durch die räumliche Nähe in 
dem Moment gar keine anderen Sender hören kann.

Sende eine Datenpaket und warte auf Bestätigung vom Empfänger, wenn 
keine kommt dann widerhole das Paket. Die Zeit bis zur Widerholung 
stellst du bei jedem Modul geringfügig anders ein.

Sascha

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Sascha Weber schrieb:
> Sende eine Datenpaket und warte auf Bestätigung vom Empfänger, wenn
> keine kommt dann widerhole das Paket. Die Zeit bis zur Widerholung
> stellst du bei jedem Modul geringfügig anders ein.

Das ist letztlich genau das, was IEEE 802.15.4 macht (landläufig
oft mit "ZigBee" verwechselt).  Die Zeit bis zur Wiederholung (und
auch die Zeit der ersten Aussendung) werden dabei zufällig gewählt.

Axel Wachtler schrieb:
> Der Koordinator bei Zigbee-artigen Netzen dient nicht nur dazu, das
> Netzwerk unnoetig kompliziert zu machen, sondern, dass Funkknoten die
> mit einer Batterie laufen moeglichst lange schlafen koennen. (sie
> muessen daher nicht permanent im RX mode zu sein, der eine Menge Strom
> braucht).

Oder anders ausgedrückt: wenn man für die Knoten Strom ohne Ende zur
Verfügung hat, kann auch problemlos jeder mit jedem kommunizieren.
Sie bleiben dann halt permanent auf Empfang und werden nur zum Senden
umgeschaltet.

Das geht auf der Ebene von IEEE 802.15.4 (also auf MAC-Ebene) praktisch
"aus der Dose raus" bereits mit den langen 64-bit-Adressen, von denen
jeder Knoten eine eigene hat.  Wenn man stattdessen lieber mit kurzen
16-bit-Adressen arbeiten will, müsste man sich aber ein Schema
ausdenken, wie jeder Knoten eine eindeutige 16-bit-Adresse bekommt und
wie man trotzdem noch weiß, wer welche hat (denn man will ja in der
Regel mit einem ganz genau definierten Endpunkt kommunizieren ;-).
Diese Adressverteilung ist bei Zigbee auch eine der Aufgaben des
zentralen Koordinators.

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
Noch kein Account? Hier anmelden.