XBEE
Einleitung
-
Für die Funkverbindung des
Handreglers werden XBEE-Module des
Anbieters digi.com verwendet.
Diese senden gemäß 802.15.4 (ZigBEE) bei 2.4GHz mit DSSS (Direct-Sequence Spread Spectrum). Damit sind die
jeweiligen Antennen klein, auf dem rechts abgebildeten Modul ist z.B. eine kleine Keramikantenne.
Die Ausführung als Steckmodul erlaubt eine einfache Integration in die
Hardware und der Funkteil ist komplett fertig und zugelassen.
- PAN-ID:
Das ist die Kennnummer des ganzen Netzwerkes; die default PAN für XBEE Module ist 0x3332. - NODE-ID:
Das ist die Kennnummer des individuellen Netzteilnehmer, diese kann entweder als kurze Adresse (16 Bit) oder lange Adresse (64 Bit) eingestellt sein. Die lange Adresse ist voreingestellt und weltweit eindeutig. Die kurze Adresse muß für die jeweilige Applikation vergeben werden.
XBEE kennt sowohl Broadcast als auch Punkt-zu-Punkt Verbindungen.
Zum Senden von Broadcast muß DH=0 und DL=0xFFFF eingestellt werden.
Broadcast ist bandbreitenintensiv, weil
jeder Knoten die Nachricht bis zu viermal wiederholt.
Es gibt zwei verschiedene Ausführungen der XBEE Module mit unterschiedlichen Chipsätzen. In diese Module kann dann eine bestimmte Firmware für die jeweilige Aufgabe geladen werden. Diese Firmware wird mit einer vierstelligen Revisionsnummer "ABCD" bezeichnet. Innerhalb des Netzwerk sollte der gleiche Firmwarestand auf allen Modulen installiert sein.
Zur Adressierung werden zwei Adressbestandteile verwendet:
Für unsere Zwecke verwenden wir Star-Topologie mit langer Adresse. Die Star-Topologie kann auch auf Mesh-Netzwerken implementiert werden, der Master wird von den anderen Teilnehmer anhand seines Verhaltens erkannt. Es gibt zwei verschiedene Module: Series 1 (802.15.4) und Series 2 (ZB Pro/ZNet); MFT verwendet Series 2.
Nachrichtenübertragung zum Modul
- Die XBEE Module bieten eine Byte-orientierte serielle Schnittstelle an. Diese kann entweder
im Transparent-Mode oder Paketweise ('API mode') betrieben werden.
Neue Module haben Transparent-Mode voreingestellt (sind also quasi RS232-Ersatz) und müssen erst
per Modembefehle auf die folgenden Einstellungen konfiguriert werden.
Für das Modellbahnprotokoll WRP wird der API-mode verwendet, in diesen kann ohne weiteres Framing direkt zu übertragenen Nachrichten eingebettet werden. Innerhalb der API Schnittstelle wird ein feste Struktur verwendet, in welche die Daten (max. 72 Byte je Nachricht) eingebettet werden. Zur Sicherung der Übertragung wird eine Checksumme angehängt, so dass sich als Summe aus allen Bytes (beginnend nach dem Längenfeld und einschließlich der Checksumme) 0xFF ergibt.
API-Packet (Beispiel von Digi.com) | ||
---|---|---|
7E | Start Delimeter | |
00 0A | Length Bytes | |
01 | API Identifier | Checksum = 0xFF |
01 | API Frame ID | |
50 01 | Destination Address low | |
00 | Option Byte | |
48 65 6C 6C 6F | Data Packet | |
B8 | Checksum |
Verbindung mit dem Modul
-
Wie bei jeder seriellen Schnittstelle sind eine Reihe Parameter zu setzen. MFT verwendet folgende Parameter:
XBEE Setup | |
---|---|
Serielle Schnittstelle | 115200 Baud, 8N1 (8 Bit, no parity, 1 Stopbit) |
API Mode | 2 (API enabled, with escaping) |
PAN-ID | 0x1310 |
Adressing | Long, 64 Bit |
Funkmodul initialisieren
-
Um ein Funkmodul zu benutzen, muß es zuerst auf die beim Handregler bzw. Gateway verwendeten
Einstellungen konfiguriert werden.
Im Gateway wird ein COORDINATOR eingebaut, im Handregler ein ENDPOINT.
Hierzu geht man wie folgt vor:
- Verbinden des Moduls mit dem seriellen Port des PCs. Hierzu muß das Modul entweder im Adapter von digi.com stecken oder man benutzt das Gateway.
- Umschalten des Moduls in den Kommando-Mode:
- Pause mind. 1s
- Senden von +++ (das sind drei +-Zeichen)
- Pause mind. 1s - Nun kann man Kommandos an das Modul senden. Diese Kommandos müssen innerhalb einer gewissen Zeitspanne (command timeout)
gesendet werden, sonst verläßt das Modul den Kommandomodus wieder.
- ATBD 7 Umstellen der Baudrate auf 115200
- ATID Abfragen der PAN-ID
- ATID 0x1310 Setzen der PAN-ID
- ATPL 4 Sendeleistung einstellen (0=low, 4=highest)
- ATD7 1 Hardware-Handshake aktivieren (CTS)
- ATD6 1 Hardware-Handshake aktivieren (RTS)
- ATAC Anwenden der Werte
- ATAP 2 Aktivieren API Mode
- ATWR Permanentes Speichern der konfigurierten Werte (nur dann sind diese beim nächsten Start wieder gesetzt)
- ATCN Verlassen Kommandomodus
- Man kann diese Einstellungen auch mit der
X-CTU Software
von Digi.com vornehmen.
Leider weiß man zu Beginn nicht, wie die Parameter auf der Modulseite einstellt sind. Der steuernde Controller muß daher zumindest die Voreinstellung des XBEE-Moduls (default 9600 Baud) und die obige Einstellung beim Verbindungsaufbau probieren.
Das Zusammenspiel zwischen X-CTU und XBEE-Modul ist etwas kitzelig - speziell wenn man API-Mode und Baud ändert. Ich empfehle zuerst alle Einstellung im API Mode 1 (ATAP=1) vorzunehmen, erst dann die Baud umzustellen. Nach den Programmieren der Baud in de X-CTU zuest wieder auf dem PC-Settings Reiter nachziehen, Verbindung testen und dann nochmal die Modem Configuration einlesen.
Esrt dann auf API-Mode 2 wechseln und wieder das gleiche Spielchen: jetzt in PC Settings das Häkchen bei ATAP=2 rein, dann Test/Query und dann nochmals prüflesen. Erst wenn man im ATAP=2 mit der Baud 115200 prüflesen kann, dann darf das Modul in den Handregler / Gateway!
Die XBEE-Modul haben einen Sleep-Mode (Parameter SM). Wenn dieser Parameter auf 4 oder 5 steht, dann ist cyclic sleep aktiviert und das Modul schläft die meiste Zeit man kann nur noch in den kurzen Wachphasen damit reden. Es wirkt (und ist) dann ziemlich bockig. Wenn irgendwann mal Sleepmode aktiviert war, dann ist der nicht mehr abzuschalten (Forumsbeitrag).
Netzwerkverbindung
- Alle notwendigen Vorgänge (Verbindungsaufbau, Daten-Prüfung, Wiederholung)
werden von den XBEE-Modulen selbst erledigt.
Zu Beginn (und auch bei Hinzunahme neuer Handregler) muß das Netz konfiguriert werden, es muß also klar sein,
welcher Teilnehmer wie zu erreichen ist. Jeder Funkteilnehmer hat eine eindeutig Kennung (MAC).
Damit angeschlosssene Handregler wissen, an wem sie ihre Abfragen und Befehle zu senden haben,
sendet die Zentrale zyklisch Pakete aus, welche an alle möglichen Teilnehmer adressiert sind (Broadcast).
Die Teilnehmer erkennen am gesetzten Zentralenbit (MSB im header), dass diese Nachricht von der Zentrale stammt und merken sich die MAC als Ziel für ihren eigenen Verbindungsaufbau.
An einer Basisstation können bis zu 8 Funkhandregler betrieben werden, wobei wegen der Netzwerkstruktur der XBEE-Module es nicht erforderlich ist, dass jeder Funkhandregler direkten Kontakt zur Basisstation hat. Wenn kein direkter Kontakt besteht, so vermitteln andere Module die Nachrichten weiter.
Links:
- Definition der Nschrichten (WRP)
http://en.wikipedia.org/wiki/ZigBee wiki von Digi.com http://code.google.com/p/xbee-arduino/
Make Controller Kit Einführung von plischka.at
XBEE setup.pdf von humboldt.edu
Übersicht
Konfiguration
XBEE Setup (Tutorial, pdf)
API-Lib von Rob Faludi
Heise Ticker, Artikel