Forum: HF, Funk und Felder ZigBee ohne Coordinator


von Carsten B. (hugo86)


Lesenswert?

Hallo Forenmitglieder,

ich möchte ein ZigBee Netzwerk aufbauen, in dem es keinen Coordinator 
gibt.
Soweit ich weiß fragt ein Coordinator immer alle angeschlossenen 
Endstationen zyklisch nach event. neuen zu sendenden Daten ab.
Also die Endknoten sollen nicht der Reihe nach von einem Coordinator 
abgefragt werden, ob diese zu sendende Daten haben. Ich möchte das so 
realisieren, dass die Endknoten sich selber an einem anderen Endknoten 
melden, wenn diese Daten untereinander austauschen wollen. Geht das 
überhaupt??

Also:
z.B. Drei Endknoten, wobei jeder selber bei dem anderen Knoten anfragt 
ob eine gewünschte Datenübertragung gestartet werden kann.

Ich freue mich auf eure Anregungen...

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


Lesenswert?

Carsten B. schrieb:

> ich möchte ein ZigBee Netzwerk aufbauen, in dem es keinen Coordinator
> gibt.

Dann ist es kein ZigBee[tm] mehr.

> Soweit ich weiß fragt ein Coordinator immer alle angeschlossenen
> Endstationen zyklisch nach event. neuen zu sendenden Daten ab.

Nein, andersrum wird ein Schuh draus.  Die Endstationen fragen den
Koordinator, ob er Daten für sie hat.  Dem Koordinator dürfen sie
immer (non beacon-enabled network) oder während der CAP (beacon-
enabled network) Daten senden.

> Geht das
> überhaupt?

In ZigBee nicht, denn das ist im Protokoll nicht vorgesehen.  Was du
mit der Schicht 2 von IEEE 802.15.4 selbst implementieren magst,
bleibt dir überlassen.  Denk aber dran, dass Empfangen der teure
Part ist, nicht das bisschen Senden.

von Michael R. (dj_motionx)


Lesenswert?

Hallo !!!
Wollte ich auch grade schreiben. Ein Netz ohne Koordinator ist in ZigBee 
nicht vorgesehen. Es gibt immer einen Knoten der das management des 
Netzes übernimmt. Du kannst netürlich selbst in den unteren OSI 
Schichten zu implementieren beginnen jedoch glaube ich das das nicht frü 
den Aufwand gerechtfertigt wird. Was du auch machen kannst ist dass du 
über dem ZigBee noch ein eigenen Protokoll legst in dem du deine 
Funktionalitäten implementierst. Sende und Empfanhsroutinen stehen ja zu 
verfügung.

Mfg Michi

von Carsten B. (hugo86)


Lesenswert?

Ich schildere mal meine Gedankenspiele :)
Was ist denn z.B. wenn ich mehrere Endknoten habe. An einen dieser 
Endknoten sind Sensoren angeschlossen (Poti,PT-100,Taster,...) .
An einen anderen Endknoten ist dann über PWM ein Heißluftföhn 
angeschlossen. Also ein Endknoten für einen Aktor.
Des Weiteren habe ich einen Knoten auf dem ein PID-Regler implementiert 
ist, der dann die in Abhängigkeit des PT-100 den Heizluftföhn steuert.

Somit müsste nach meinen Überlegungen der Knoten mit den Sensoren 
Bescheid geben, wenn er aktuelle Daten (Änderung PT-100 Signal,...) zum 
Senden hat. Diese müssten dann an den Knoten mit der Regelung gehen, 
wobei dieser einen neuen Stellwert für das PWM-Signal an den Knoten mit 
dem Aktor sendet.

Dabei sollen alle Knoten selbstständig signalisieren, dass sie neue 
Daten senden wollen....

so waren meine Gedanken zu dem Beitrag!

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


Lesenswert?

Du hast das wesentliche Problem noch gar nicht verstanden, warum man
den Koordinator überhaupt erst eingeführt hat: das Empfangen ist
(energiemäßig) schweineteuer.  Aus diesem Grunde möchte man die
Endknoten keinesfalls permanent auf Empfang haben, sondern nur so
kurz wie möglich, andernfalls kannst du einen Batteriebetrieb in den
Wind schreiben.  (OK, bei Pt100 kannst du Batteriebetrieb auch so in
den Wind schreiben ;-), aber solange du keine 500+ °C messen willst,
gibt's ja effektivere Methoden zur Temperaturmessen.)

Desweiteren erledigt der Koordinator noch die Vergabe der kurzen
Adressen, aber das kann man sicher auch anders organisieren.

von Michael R. (dj_motionx)


Lesenswert?

Hy !
Ja das geht schon. Jeder Endknoten erfährt beim Connecten des Netzes wer 
Koordinator ist (Parent Address). Im obrigen Beispiel könnte man das so 
relaisieren dass der Knoten der die Regelung enthält der 
Koordinatorknoten ist. Ablauf wäre dann folgendermaßen:
Der Endknoten schickt zyklisch neue Temperaturwerte an den Koordinator. 
(In dem Fall gleich dem Knoten mit der Regelung). Die neue PWM 
Stellgröße wird berechnet und ein PWM update an den Aktor Knoten 
gesendet.

Mfg Michi

von Carsten B. (hugo86)


Lesenswert?

> Der Endknoten schickt zyklisch neue Temperaturwerte an den Koordinator.

Geht das auch ohne dieses zyklische senden? Sondern nur senden, wenn 
auch wirklich eine Änderung vorliegt....

von Michael R. (dj_motionx)


Lesenswert?

Ja klar geht das auch nur bei Änderungen. Hier ist halt wieder wie schon 
oben erwähnt die Sache des Energieverbrauches im Spiel. Aber wenn du 
nicht auf den Askekt angewiesen bist, dass dein Controller so oft wie 
möglich schlafen soll und der RF Teil nur dann aktiviert wird wenns 
unbedingt sein muss kannst du das ohne weiteres so lösen.

Mfg

von Carsten B. (hugo86)


Lesenswert?

Also das wäre echt gut wenn das geht! Kannst du das bitte noch etwas 
genauer erklären wie das dann umgesetzt wird....
so dass bei mir der Groschen fällt :)
Danke!

von Michael R. (dj_motionx)


Lesenswert?

OK. Also ich nehme jetzt wieder mal an dass der Energieverbrau in deiner 
Applikation keine Rolle spielt.

Am Endknoten mit der PT100 Messung sind folgende Funktionen Verfügbar:
-> ZigBee Paket senden
-> ZigBee Paket empfangen
-> Pt100Temperaturmessung
-> 1 sekunde warten (wie auch immer realisiert)

Am Koordinatorknoten isnd folgende Funktionen relaisiert:
-> ZigBee senden und empfangen von Paketen
-> PID Algorithmus
-> Sollwert einstellen (wie auch immer)

Am Aktor endknoten gibt es funktionen für:
-> ZigBee senden und empfangen von Paketen
-> PWM starten
-> PWM Duty cycle update

1. Koordinator einschalten. Dieser eröffnet ein neues ZigBee Netz und 
wartet dan auf Endknoten. Initialisierung der Regelung. Initialen 
Sollwert vorgeben.
2. Endknoten einschalten. Diese connecten sich an das eröffnete netz des 
Koordinators und wissen auch welche addresse der Koordinator hat. 
Initialisierung der Endknoten (Pt100 Messung initialisieren, PWM starten 
und initialen Wert vorgeben)
3. Zyklische Ablauf:
-> Pt100 Knoten wartet 1 sekunde und führ dann eine PT100 Messung durch. 
Ist neuerWert != AlterWert so wird der neue Temperaturwert an den 
koordinator gesendet.
-> Dann wieder eine Sekunde warten und das Spiel beginnt erneut.

-> Empfängt der koordinator ein Paket des Pt100 Knotens so updatet er 
seine IstTemperatur variable.
-> PID Funktion Ausführen.
-> Den neuen Stellgrößenwert via ZigBee Send an den Aktor Knoten 
Schicken.
-> Dann wieder auf Pakete vom Pt100 Knoten warten

-> Empfängt der Aktor Knoten ein Paket so wird der PWM Duty cycle mit 
diesen PWM Daten upgedatet und somit die PWM neu eingestellt.
-> Dann wieder auf Daten vom Koordinator warten.

Mfg Michi

von Carsten B. (hugo86)


Lesenswert?

Vielen Dank für diese ausführliche Beschreibung!
Die hat mir für´s Verständnis sehr geholfen!!
Sind diese Funktionen zum Senden und Empfangen von Datenpaketen fertige 
Funktionen einer Bibliothek?
Der Energieverbrauch spielt bei mir nicht so die große Rolle. Allerdings 
müsstest du mir nochmal erklären, warum man bei einer derartige Lösung 
(wie oben beschrieben) einen hohen Energieverbrauch hat...das hab ich 
leider noch nicht so recht verstanden...

von teto (Gast)


Lesenswert?

Carsten B. schrieb:
> Sind diese Funktionen zum Senden und Empfangen von Datenpaketen fertige
> Funktionen einer Bibliothek?
Sowas: Meshnetics Zigbee vielleicht?

P.S.: Achtung, von mir noch nie benutzt worden, ich kenne nur die
 µc.net-Suche. ;-)

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


Lesenswert?

Carsten B. schrieb:
> Sondern nur senden, wenn
> auch wirklich eine Änderung vorliegt.

Ist doch nur eine Frage der Messauflösung. ;-)  Wenn die hinreichend
hoch ist, liefert jede Messung ein anderes Ergebnis.

Ich verstehe gar nicht, warum du dich so sehr gegen periodische
Messungen sträubst.

Carsten B. schrieb:
> Allerdings
> müsstest du mir nochmal erklären, warum man bei einer derartige Lösung
> (wie oben beschrieben) einen hohen Energieverbrauch hat.

Weil der Betrieb allein des Empfängers bereits so ziemlich mit dem
maximal möglichen Stromverbrauch "belohnt" wird.  Ist schließlich
oberes Ende des UHF-Bereichs, und die Digitalmimik für die Korrelation
gibt's auch nicht kostenlos.  Die einzige Maßnahme zum Energiesparen
ist: Abschalten, solange es nicht unbedingt betrieben werden muss.

von Michael R. (dj_motionx)


Lesenswert?

Jörg Wunsch schrieb:
> Ist doch nur eine Frage der Messauflösung. ;-)

Ja das stimmt schon kann man sich aber mit schwellwerten zur Reaktion 
abhelfen.

Jörg Wunsch schrieb:
> Ich verstehe gar nicht, warum du dich so sehr gegen periodische
> Messungen sträubst.

Ich würde auch periodisch einen neuen Ist-Wert messen. Und dann auch 
zyklisch ein PWM update machen.

Als Softwarelösung kann man z.B. 6LoWPAN auf einem Meshnetics Zigbee 
Chip implementieren. Hab ich schon gemacht solltest du auch so ein 
System haben kannst du dich gern noch mal wegen sources und getting 
started Beispiele melden. Ansonsten gibts auch andere gute Libs 
(openMac, bitcloud, ...). Musst dich mal herumgoogeln was für deinen 
controller und RF chip möglich und verfügbar ist.

mfg Michi

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.