Forum: Mikrocontroller und Digitale Elektronik Xbee Pro 868: Hat jemand ein gutes Datenblatt/Infos?


von Matthias Larisch (Gast)


Lesenswert?

Moin zusammen!

Ich entwickele derzeit eine Anwendung mit dem Xbee Pro 868, welche 
später mal bei niedriger Datenrate mit hoher Reichweite funktionieren 
soll. Dazu wird ein Protokoll implementiert, welches eine gesicherte 
Punkt-zu-Punkt Verbindung über das API-"Protokoll" des Xbees herstellt.

Die Dokumentation ist leider relativ schlecht, Erfahrungen von anderen 
Xbees scheinbar nicht direkt übertragbar.

Insbesondere stellen sich mir gerade folgende Fragen:
a) Automatische Retransmission:
In welchem Zeitintervall erfolgen diese? Ich möchte in meiner Anwendung 
einen Timeout festlegen, in welcher ich einen Ack empfangen sollte.

b) Was passiert bei verloren gegangenen ACK-Paketen? Sorgt das Xbee 
selbst dafür, dass der Empfänger einer Nachricht diese nur maximal 
einmal der Anwendung übergibt? Ist meine Annahme, dass eine Nachricht 
angekommen sein könnte, obwohl ich kein ACK bekommen habe, korrekt?


Eventuell hat jemand von euch Erfahrung mit den Modulen und kann mir 
helfen. Oder ich wende mich doch mal an digi, in der Hoffnung, dass die 
Antworten...

Gruß,

Matthias

von Kurt (Gast)


Lesenswert?

Matthias Larisch schrieb:
> Eventuell hat jemand von euch Erfahrung mit den Modulen und kann mir
> helfen. Oder ich wende mich doch mal an digi, in der Hoffnung, dass die
> Antworten...

In der Doku/API steht zu deinen Fragen nichts, da es sich um eine API 
über dem eigentlichen ZigBee handelt. Deine Fragen beziehen sich direkt 
auf das ZigBee-Protokoll, evtl. gibt es Headerfiles etc. mit den 
Parametern?


Grüße.

von Matthias Larisch (Gast)


Lesenswert?

Hallo!

Danke für deine Antwort.

Sollte nicht das Verhalten der API dennoch dokumentiert sein? Beim Xbee 
Pro 868 handelt es sich bei der RF-Implementierung auch (angeblich) 
nicht um ZigBee, sonst würde ich da wohl mal nachlesen. Das Datenblatt 
gibt auch keine weitere Auskunft zur RF Implementierung, im digi.com 
Forum stehen wohl ein paar Fragen dazu, jedoch seit Monaten ohne 
Antwort.

Gruß,

Matthias

von Kurt (Gast)


Lesenswert?

Matthias Larisch schrieb:
> Sollte nicht das Verhalten der API dennoch dokumentiert sein?

Es sollte dokumentiert sein, ist es wohl nicht :-).

> Beim Xbee
> Pro 868 handelt es sich bei der RF-Implementierung auch (angeblich)
> nicht um ZigBee, sonst würde ich da wohl mal nachlesen. Das Datenblatt
> gibt auch keine weitere Auskunft zur RF Implementierung, im digi.com
> Forum stehen wohl ein paar Fragen dazu, jedoch seit Monaten ohne
> Antwort.

Naja, das ist mehr oder weniger alles eine Soße mit Overhead (ZigBee) 
oder ohne. In den Networking "Features" steht auch:

Protocol: Proprietary

Wenn du Pech hast, dann musst du dir dein eigenes ACK/Retransmission in 
die höheren Layer bauen. Wird das DutyCycle auf den 868MHz vom Protokoll 
gehandelt oder ist das deine Aufgabe? Wenn vom Protokoll, dann könntest 
du auch Probleme mit dem ACK bekommen wenn die Kanalzeit um ist.


Grüße.

von Kurt (Gast)


Angehängte Dateien:

Lesenswert?

FYI

4.4 Transmission Modes
There are two transmission modes: unicast and broadcast. Unicast is the 
default. It supports retries; broadcast doesn’t.
In unicast mode, a module receiving a packet will send an ACK back to 
the transmitter. If the transmitter does not
receive an ACK within 200mS, it will retry up to three times. These 
three retries are provided automatically, but the RR
command will set or read a multiplier: the number of times the (up to) 3 
retries will be repeated if necessary. The range
of the RR parameter is 0 to 6, and the default is 0. The parameter was 
introduced in firmware version 1xa0.
The EA parameter gives the number of ACK failures since the counter was 
last reset. The counter is incremented
when the module reaches its retransmission limit without an ACK having 
been received. When the counter reaches 0xffff
it retains that value instead of overflowing. To reset the counter, set 
the EA parameter to 0.
In broadcast mode, all RF modules within range will accept the 
transmission. No ACKs are sent, and there is no
automatic retransmission of packets. A packet is sent in broadcast mode 
if its destination address is DL=0xffff and DH=0.

von Matthias Larisch (Gast)


Lesenswert?

Danke für deine Mühe, leider gilt das Cookbook nicht fürs Pro 868 :) 
Zumindest die Angaben zu den Retransmissions sind nachweislich anders: 
Diese sind nämlich in 1er Schritten von 0-15 konfigurierbar fürs 868, 
laut Datenblatt...

Ich mache jetzt erstmal Annahmen über den genauen Ablauf und teste mal 
ne Weile, wie gut das funktioniert. Auf niedriger Sendeleistung kann ich 
im Gebäude auch ganz gut verlorene Pakete "erzeugen" und sollte somit 
hoffentlich mal alle Situationen testen können.

Wenn alle Stricke reißen, deaktivier ich das Low-Level Ack und bastel 
halt selbst (Inkl. Retransmission & Ack), wobei das sicherlich die 
Hardware besser kann als ich selbst, zumal die Anwendung unter Linux in 
Java läuft und somit von der Reaktionszeit vermutlich recht schlecht 
abschneidet.

Duty Cycle macht das 868 selbst, der ist aber kein Problem. Ich kann ihn 
zum einen jederzeit auslesen, außerdem übertrage ich meistens nicht so 
viele Daten. Irgendwer hat mal nen Overhead von rund 60-70% 
überschlagen, d.h. ich schaff effektiv rund 1 kBit/s und das reicht mir.

Gruß,

Matthias

von Harald (Gast)


Lesenswert?

Rufe einfach bei Digi in Dortmund an, die sind eigentlich sehr 
hilfsbereit, unabhängig vom Kundenstatus!

von Matthias Larisch (Gast)


Lesenswert?

Hi!

Tschuldigung, dass ich länger nicht reingeschaut habe.

Also das Ack-Timeout liegt in der Größenordnung von 60ms (durch PL4 
innerhalb eines Raumes kann ich manuell gut packet loss erzeugen, 10 
Retransmissions dauern etwa 600ms).

In diesem Fall habe ich ACK Pakete verloren (TX Xbee auf PL0, RX Xbee 
auf PL4), der Empänger hat (scheinbar) das erste Paket bereits an die 
Anwendung ausgegeben, weitere Paketduplikate kamen nicht (war eigentlich 
so zu erwarten - aber nun bin ich mir sicher). Getestet habe ich durch 
Übertragen von etwa 500 Paketen - erstaunlicherweise kam in allen Fällen 
spätestens bei der 10. Retransmission das ACK an, da muss ich auch 
nochmal schauen, denn das ergibt wenig Sinn.


Grundsätzlich ist mein Paketdurchsatz derzeit noch etwas schlecht. Ich 
versende nur ein Paket zur Zeit und warte zwischendurch im Java-Code auf 
das TX Finished Frame. Dies erhalte ich minimal etwa 50-60ms nach dem 
Versand (selbst bei 0 Retransmissions). Diese Latenz kann allerdings gut 
auch durchs Scheduling vom BS oder in Java selbst entstehen, da muss ich 
bei Zeiten nochmal ran. Derzeit ist es so akzeptabel :)

Ich würd sagen:
Thema erstmal so gelöst!

Gruß,

Matthias

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.