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.
    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:
  • 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.

    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 Schnittstelle115200 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: