13.07.2015 Aufrufe

Funkruf-Sender basierend auf Software Defined Radio - Institut für ...

Funkruf-Sender basierend auf Software Defined Radio - Institut für ...

Funkruf-Sender basierend auf Software Defined Radio - Institut für ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Funkruf</strong>-Controllers uPSDrpc von AATiS e.V. (AS637)Der Arbeitskreis Amateurfunk und Telekommunikation in der Schule e.V. bewirbt in seinemRundschreiben Sommer/Herbst 2006 eine Platine von etwa halber Europakartengröße, die diegleiche Funktionalität wir die Lösung von ADACOM enthalten soll. Eine Analyse ergibt, dass hierein Mikrocontroller benutzt wurde, um die Anzahl der Bauteile stark zu reduzieren. Diese Lösungist also eine Weiterentwicklung der ADACOM-Lösung, die zum Nachbau geeignet war. Leidertreten folgende Probleme <strong>auf</strong>:• Der Bausatz ist von AATiS nicht mehr lieferbar.• Der verwendete Mikrocontroller wird nicht mehr produziert.• Der Entwickler veröffentlicht laut AAtiS den Quellcode seiner <strong>Software</strong> nicht.Motivation der ArbeitDamit gibt es also seit mehreren Jahren keine Möglichkeit, zeitgemäß neue <strong>Funkruf</strong>sender<strong>auf</strong>zubauen und Versorgungslücken zu schließen. Hinzu kommt, dass das POCSAG-Protokoll imInternet nur an wenigen Stellen dokumentiert ist. Auch die Kommunikation zwischen<strong>Funkruf</strong>Master und <strong>Funkruf</strong>-<strong>Sender</strong> ist aus Sicht der Autoren nur durch Analyse des Quellcodeserreichbar. Somit bestand für uns akuter Handlungsbedarf, eine Lösung zur einfachen Installationvon neuen <strong>Funkruf</strong>sendern zu schaffen.Konzept der vorgestellten LösungDer Aufbau des Hamnet bringt eine Erneuerung der verbauten Technologien an Standortenautomatisch arbeitender Amateurfunkstationen mit sich. RMNCs werden durch PCs ersetzt und stattKISS und AX.25 werden Ethernet und IP verwendet. Damit ist ein Rechner mit Soundkarte (perUSB oder On-board) verfügbar oder leicht zu beschaffen. Auch FM-<strong>Sender</strong>, die einenausreichenden Frequenzgang besitzen (9k6-fähig), stellen kein Problem dar. Somit wurde <strong>auf</strong> Basisdes Konzeptes des SDR (<strong>Software</strong> <strong>Defined</strong> <strong>Radio</strong>) ein Programm geschrieben, welcher als RPC-Controller wirkt. Die wichtigsten Eigenschaften sind:• Verwendung von Java als Programmiersprache, d.h. l<strong>auf</strong>fähig unter Linux und Windows• Grafische Oberfläche zur Konfiguration• Speichern der so erzeugten Konfiguration in einer Textdatei, so dass auch ein Betrieb vonder Kommandozeile aus möglich ist.• Kommunikation mit dem <strong>Funkruf</strong>Master über TCP/IP (zeitgemäß und Hamnet-freundlich)• Ansteuerung der <strong>Sender</strong>tastung über serielle Schnittstelle (klassisches Interface)• Ausgabe der Modulation im POCSAG-Format über die SoundkarteUm diese Zielvorgaben zu erreichen, musste zunächst das POCSAG-Protokoll und dieKommunikation zwischen <strong>Funkruf</strong>Master und <strong>Funkruf</strong>-<strong>Sender</strong> (auch als <strong>Funkruf</strong>Slave bezeichnet)analysiert und verstanden werden. Neben dem Quellcodes des <strong>Funkruf</strong>master war [2] eine guteQuelle. Wir möchten diese Tagung nutzen, um das von uns erarbeitete Wissen der Öffentlichkeitvorzustellen und so für mehr Innovation im Bereich <strong>Funkruf</strong> im Amateurfunk sorgen.


POCSAGGrundsätzlich sind Aussendungen eingeteilt in sogenannte Batches, die wiederum eingeteilt sind inCodewords. Zunächst sieht der grundsätzliche Aufbau einer solchen Aussendung wie folgt aus:Präambel Batch Batch Batch …Die hier zu Beginn stehende Präambel (abwechselnde Bits 1 und 0, startend mit 1; besteht aus576 Bits) dient dazu, die Skyper mit der Sendefrequenz zu synchronisieren bzw. sie aus demStandby <strong>auf</strong>zuwecken. Danach folgt eine nahezu beliebige Anzahl an Batches. Zu beachten istjedoch, dass die gesamte Sendezeit - beginnend bei der Präambel – maximal 30 Sekunden betragendarf und dann (evtl. nach einer Sendepause) zunächst wieder eine Präambel folgen muss.Ein Batch selbst ist <strong>auf</strong>geteilt in acht sogenannte Frames, wobei man bei 0 zu zählen beginnt (alsoexistieren Frame 0 - 7). Zu Beginn des Batches steht ein Synchronisationswort und danach folgendie Frames. Das Synchronisationswort sieht wie folgt aus (hexadezimal): 7CD215D8.BatchSYNC Frame 0 Frame 1 Frame 2 Frame 3 Frame 4 Frame 5 Frame 6 Frame 7Ein Frame wiederum beinhaltet zwei Codewords, die jeweils 32 Bit lang sind (ein Batch bestehtsomit aus 17 mal 32 = 544 Bits). Hier können entweder Adress- (AW) oder Nachrichtenwörter(MW) stehen. Der Aufbau dieser Wörter ist:Bits0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31AW 0 Adresse Fktb PrüfsummeMW1 Nachricht PrüfsummeWie diesem Schema zu entnehmen ist, ähneln sich die beiden Codewords. Zu beachten ist nunfolgendes: Ein Adresswort beginnt immer mit einer 0 und ein Nachrichtenwort mit einer 1.Danach folgen beim Adresswort die oberen 18 (binären) Stellen der Adresse (die 3 LSBs werdenanderweitig eingebracht, Erklärung folgt später), gefolgt von 2 Funktionsbits (im Schema Fktb).Diese geben die Kodierung (numerisch, alphanumerisch, …) an. Bei einem Nachrichtenwortbeinhalten diese 20 Bits die Nachricht selbst. Beide Codewords enden anschließend mit einerPrüfsumme (11 Bits). Deren Berechnung folgt später.Beim Zusammenstellen eines Nachrichtenwortes gilt es nun noch Weiteres zu beachten. Verwendetwird hier eine 7-Bit-Kodierung, d.h. ein Zeichen besteht hier aus 7 Bits, eine Ziffer (für dienumerische Kodierung) aus 4 Bits. Dementsprechend passen in ein Codeword keine 3 ganzenZeichen und auch nur 5 Ziffern. Nachrichten, die länger sind, werden <strong>auf</strong> mehrere<strong>auf</strong>einanderfolgende Nachrichtenwörter <strong>auf</strong>geteilt. Des Weiteren muss ein Batch immer vollständigsein, d.h. wenn ein Batch noch keine 16 Codewords enthält, werden die restlichen Frames mit demIdle-Codeword (7A89C197) <strong>auf</strong>gefüllt.Bezüglich der Adresse gibt es nun noch eine Besonderheit. Wie bereits erwähnt, enthält dasAdresswort nur die oberen 18 Stellen einer Adresse. Die unteren 3 Stellen befinden sich nicht imAdresswort selbst, sondern ergeben sich durch die Position des Worts im Batch. Ergeben dieletzten 3 Bits z.B. zusammen eine 3 (im Dezimalsystem), so muss sich das Adresswort im 3. Framebefinden. Hier treten auch keine Probleme <strong>auf</strong>, da 3 binäre Stellen im Dezimalsystem den Bereichvon 0 bis 7 abdecken. Dies entspricht genau der Frameanzahl im Batch.Kommen wir nun zur Prüfsumme. Diese setzt sich aus dem Cycling redundancy check und derParität zusammen. Zunächst berechnet man entsprechend des CRCs die oberen 10 Bits der


Prüfsumme und anschließend das Paritätsbit. Das Verfahren funktioniert wie folgt:1. Ausgangspunkt: Codeword aus 32 Bits, wobei die unteren 11 Bits nur aus 0 besteht (hierstehen am Ende des Verfahrens CRC und Parität).2. Man nimmt das Generatorpolynom, durch das man teilen möchte (entspricht: ED200000).3. Beginnend beim MSB (also höchsten Bit) des Codewords verschiebt man das MSB desGeneratorpolynoms soweit nach rechts, dass dieses unter der ersten 1 des Codewords steht.4. Nun werden Codeword und Generatorpolynom enstprechend der Position mit XORverknüpft.5. Solange dieses Vorgehen noch nicht bis einschließlich dem 12. Bit von rechts durchgeführtwurde, wird mit Punkt 3 fortgesetzt das Ergebnis von Punkt 3 als Codeword genommen.6. Ist Punkt 5 bearbeitet, enthält das Codeword sowohl Adresse/Nachricht als auch den CRCund das LSB sollte noch 0 sein. Nun bestimmt man die Parität.7. Dafür zählt man alle 1 im Codeword zusammen. Ist die Anzahl der 1 ungerade, wird dasLSB <strong>auf</strong> 1 gesetzt, ansonsten bleibt es 0.Das Codeword beinhaltet nun sowohl die Daten als auch die vollständige Prüfsumme und ist bereitzum Versenden. Eine Tabelle zur Kodierung der Zeichen gibt es zum Download unter [5].Kommunikation mit dem <strong>Funkruf</strong>MasterDieser Abschnitt beschreibt den Aufbau der Nachrichten, die zwischen Master und Slave verschicktwerden. Diese Nachrichten müssen anschließend vom Slave entsprechend eines anderen Protokolls(Pocsag) kodiert und in Audio umgewandelt werden.Analyse des ProtokollsEs gibt verschiedene Nachrichtentypen, von denen bisher nur vier als relevant gefunden wurden:Nachrichttyp 2Eine Nachricht dieses Typs hat folgenden Aufbau:Nachricht vom Master 2:IDENT Bsp: 2:04Nachricht vom Slave 2:IDENT:TIME Bsp: 2:04:08IDENT gibt hier eine Art Identifizierung des Masters an und entspricht der aktuellen Zeit desMasters. Der Slave übernimmt IDENT in seiner Antwort und sendet weiterhin seine aktuelle Zeitmit (TIME).Die Nachrichten dieses Typs dienen zusammen mit den Nachrichten vom Typ 3 zurSynchronisierung der Zeit zwischen Master und Slave. Dies ist <strong>auf</strong>grund der Slots nötig. Mithilfeder Nachrichten dieses Typs ermittelt der Master die Zeitdifferenz zwischen dem Aussenden seinerNachricht und dem Empfangen der Antwort des Slaves. Dieser Wechsel von Nachrichten erfolgtnach dem Verbindungs<strong>auf</strong>bau, nachdem der Slave dem Master seinen Namen mitgeteilt hat.Nachrichttyp 3Nachrichten vom Typ 3 haben den Aufbau 3:+TIME bzw. 3:-TIME, wobei TIME die AnzahlZehntelsekunden angibt, um die die Uhr des Slaves verstellt werden soll. + und - entsprechen hierdem Hinzuzählen bzw. Abziehen zu der aktuellen Zeit.Beispiel-Nachricht: 3:+2B


Nachrichttyp 4Diese Nachricht gibt an, in welchen Slots der Slave senden darf. Der Aufbau der Nachricht ist4:SLOTS, wobei SLOTS die hexadezimale Darstellung meint, z.B. 4:02468ACF.Nachrichttyp 5 und 6Hierbei handelt es sich um Zeit- (5) bzw. Textnachrichten (6). Hier erfolgt die Bestätigung mit dernächsten Nachrichtennummer. Eine Nachricht des Typs 5 sieht z.B. wie folgt aus (Nachrichten desTyps 6 sehen gleich aus): #03 5:1:9C8:0:094016 130212Erläuterung: #03 – Hier steht die Nachrichtennummer. Mit der nächsten Nummer wird der Erhaltder Nachricht bestätigt (Antwort-Nachricht: #04 +)5 – Nachrichtentyp; 5 = Zeit, 6 = Nachricht1 – Gibt die Sendegeschwindigkeit an (1 steht für 1200 bps)9C8 – Hier steht die Skyper-Adresse des Empfängers (in diesem Fall Broadcast-Adresse für die Uhrzeit)0 – Funktionsbit094016 130212 – Hier steht die Nachricht bzw. Zeit, in diesem Beispiel Uhrzeit undDatum (getrennt durch 3 Leerzeichen)Auf den Erhalt einer Nachricht antwortet der Slave zur Bestätigung mit einem +. Dies gilt für alleNachrichtentypen. Eine besondere Bestätigung erfolgt nur bei Typ 5 und Typ 6.Verbindungs<strong>auf</strong>bau zwischen Master und SlaveBeim Herstellen der Verbindung erwartet der Master vom Slave zunächst den Namen, derbeispielsweise so aussieht: [uPSDrpc/XOS v1.0-SCP-#2345678]Dar<strong>auf</strong>hin beginnt der Master Nachrichten des Typs 2 zu schicken und wartet bei jeder Nachricht<strong>auf</strong> eine Antwort des Slaves. Dieser antwortet mit dem gleichen Nachrichtentyp, jedoch in derVariante des Slaves. Hiermit ermittelt der Master den Zeitunterschied zwischen dem Slave und sich.Sobald der Master genügend Informationen über die Zeitdifferenz gesammelt hat, sendet er eineNachricht vom Typ 3. Hierin enthalten ist die vom Slave durchzuführende Zeitkorrektur. Der Slavebestätigt diese Nachricht mit einem +.Sind diese Schritte soweit absolviert, teilt der Master dem Slave nun die zugewiesenen Slots mit.Dies geschieht mit einer Nachricht des Typs 4. Auch hier antwortet der Slave mit einem +.Die Verbindung ist nun erfolgreich hergestellt.Beispiel:Master: 2:13d2Slave: 2:13d2:0025Slave: +Master: 2:13d3Slave: 2:13d3:0026Slave: +Master: 2:13d3Slave: 2:13d3:0026Slave: +Master: 2:13d3Slave: 2:13d3:0026Slave: +[…]Master: 2:13d8Slave: 2:13d8:002bSlave: +Master: 3:+13adSlave: +Master: 4:01245689ACDESlave: +


Beschreibung der <strong>Software</strong>Die <strong>Software</strong> ist unter Linux und Windows l<strong>auf</strong>fähig. Zum Einschalten des <strong>Sender</strong>s über eineserielle Schnittstelle wird die Bibliothek rxtx [3] benötigt. Nach dem einfachen Installieren dieserZusatzkomponente kann das Programm unter Windows mit Doppelklick und unter Linux mitjava -jar <strong>Funkruf</strong>Slave.jargestartet werden. Weitere Kommandozeilenparameter für z.B. eine Log-Datei gibt die Hilfe aus.Die Option -nogui unterdrückt das grafische Fenster und erlaubt so den Betrieb auch <strong>auf</strong> Servern,die keine grafische Oberfläche installiert haben.Abbildung 1: Bildschirmfoto der grafischen KonfigurationsoberflächeIm Fenster können die erlaubten <strong>Funkruf</strong>Master eingetragen werden. Dies kann sowohl einDomainname als auch eine IP-Nummer sein. Meistens wird man nur einen Master eintragen,mehrere sind aber unterstützt. Die <strong>Sender</strong>tastung wird mittels eines gewöhnlichen RS-232Interfaces über die Leitungen DTR oder RTS ausgelöst. Sollte die PTT-Beschaltung es verlangen,kann der Schaltpegel auch invertiert werden. Unter Delay ist die Zeit einzustellen, die der <strong>Sender</strong>vom Einschalten bis zu einem stabilen Betrieb braucht. Um diese Zeit möglichst klein einzustellenwird empfohlen, beim Einschaltvorgang das Sendesignal mittels eines Empfängers und einerSoundkarte <strong>auf</strong>zuzeichnen. Anschließend schaut man sich mit einem Audioprogramm wie z.B.Audacity [4] den zeitlichen Verl<strong>auf</strong> des Signals an. Beginnt die Präambel bevor der <strong>Sender</strong>eingeschwungen ist, so muss der Delay-Wert entsprechend erhöht werden. Eine optimaleEinstellung dieses Parameters ist für einen hohen Datendurchsatz und ein sicheres Erkennen derPräambel durch die <strong>Funkruf</strong>-Empfänger notwendig.Der Frequenzhub bei der verwendeten 2-FSK liegt laut Spezifikation bei 4 kHz. Diese Größe istdirekt vom Signalpegel am Ausgang der Soundkarte abhängig. Wer einen Spektrum-Analysator zurVerfügung hat, kann den Korrektur-Regler genau einstellen. Im anderen Fall kann der automatischeSuchl<strong>auf</strong> verwendet werden. Der Korrektur-Wert ist ein linearer Faktor, mit dem die Lautstärke deserzeugten Ton-Signals und damit auch des Frequenzhub eingestellt werden kann. Negative Wertebedeuten dabei eine Invertierung. Diese Möglichkeit ist notwendig, da nicht alle Funkgeräte beipositiver Modulationsspannung auch eine Frequenzverschiebung in positiver Richtung durchführen.Unter Skyper-Adresse trägt man die Nummer eines vorhandenen Test-Skypers ein, wählt eine


Schrittseite und startet den Suchl<strong>auf</strong>. Nun werden mit sich änderndem Hub <strong>Funkruf</strong>e ausgesendet.Inhalt der Nachricht ist der jeweilige Korrektur-Faktor. Wenn der Wert passt, wird der Skyper dieNachricht empfangen. Nun sucht man sich den Mittelwert aller empfangenen Korrektur-Faktorenheraus und stellt den Schieberegler entsprechend ein. Damit ist die Konfiguration abgeschlossenund kann gespeichert werden.Besteht eine Verbindung mit einem <strong>Funkruf</strong>Master, so kann links unter Slots in grün und gelb derzeitliche Verl<strong>auf</strong> der aktiven und gesperrten Zeitschlitze betrachtet werden.Die <strong>Software</strong> kann bei der Amateurfunkgruppe der RWTH Aachen [5] heruntergeladen werden.ZusammenfassungEs wurde eine <strong>Software</strong> vorgestellt, mit der ein <strong>Funkruf</strong>-<strong>Sender</strong> einfach <strong>auf</strong>gebaut werden kann.Neben einer TCP/IP-Verbindung zu einem <strong>Funkruf</strong>Master ist nur ein 9k6 fähiges Funkgerät und einPTT-Interface notwendig. Die <strong>Software</strong> ist einfach zu konfigurieren und läuft unter Linux undWindows.Literatur und Quellen[1] http://ham-pager.sourceforge.net/[2] http://www.uni-stuttgart.de/akafunk/aktivitaet/basics/pocsag.html[3] http://rxtx.qbang.org/wiki[4] http://audacity.sourceforge.net/[5] http://www.afu.rwth-aachen.de/svn/<strong>Funkruf</strong>Slave/[6] http://www.uni-kl.de/AFG/funkruf.htm

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!