Einfacher Balisenleser für den Messzug
Eurobalisen sind auf allen Bahntrassen installiert und identifizieren Zuggleise eindeutig. In erster Linie natürlich für die Zugsicherung, aber auch für Diagnosezüge ist dies eine wichtige Information. Nur soll hier die Balise unkompliziert ausgelesen werden, unabhängig vom komplexen und teuren Zugsicherungssystem.
-
Ausgangslage
Messzüge lesen unter anderem Balisen aus, um den Standort und das exakte Gleis zu ermitteln, damit die erfassten Diagnosedaten verortet werden können. Dazu werden spezielle Balisenleser eingesetzt, die unabhängig vom Zugsicherungssystem arbeiten. Von diesen Geräten gibt es aber nur noch eine Handvoll Exemplare. Sie werden nicht mehr hergestellt und die ursprünglichen Produzenten bieten keinen Support mehr.
-
Lösung SCS
SCS machte ein Reverse Engineering eines der bestehenden Balisenleser und entwickelte ein preisgünstiges Gerät auf Basis eines Standard-Funkmoduls (Software Defined Radio) und einem kundenspezifischen RF-Board. Damit wird die Balise angeregt und das zurückgesendete Signal empfangen. Eine Python-Applikation gibt über Websocket die Daten ans übergelagerte Positionierungssystem des Messzugs.
-
Mehrwert
Dank offenem Quellcode, Produktionsdaten und IP-Rechten ist die Verfügbarkeit von Balisenlesern nun für die SBB als Kunde gesichert. Der neue Balisenleser besteht zudem aus deutlich weniger Komponenten und ist nur noch eine statt drei Units hoch im 19" Rack. Durch das FPGA-SoC und dem Software-Defined Radio ist der Balisenleser flexibel erweiterbar.
Projekteinblicke
Das Schienennetz ist ausgestattet mit Balisen, also magnetisch gekoppelten Transpondern, die zwischen den Schienen eines Gleises montiert sind. Jede davon trägt eine eindeutige Identifikationsnummer. Eine Antenne unter der Lokomotive regt die Balise mit einem 27 MHz RF-Feld an, worauf die Balise auf 4 MHz die Identifikationsnummer zurückgibt. Über die Identifikationsnummer wird der Zug sicher lokalisiert für das ETCS-Zugsicherungssystem.
Diagnosezug liest Balisen aus
Zur Überwachung und Instandhaltung der Infrastruktur setzt die SBB Diagnosezüge ein, die mit diversen Sensoren und Kameras den Zustand der Gleise erfassen. Für die Verortung der Diagnosedaten auf der Topologie der Infrastruktur werden, neben Odometrie und GPS, auch die Balisen als fixe Objekte verwendet, da diese in der Datenbank mit Position eingepflegt sind. Dafür hat die SBB eine Handvoll nicht-sicherheitsrelevanter Balisenleser im Einsatz, die nicht mit dem Zugsicherungssystem verbunden sind.
Die heute genutzten Balisenleser können nicht nachbestellt werden, da die beiden aktuellen Hersteller dieser Geräte keinen Support mehr anbieten und die Geräte nicht mehr produziert werden. Aus Gründen der Wirtschaftlichkeit und Verfügbarkeit sollte ein neuer Balisenleser entwickelt werden, der in einer kleinen Serie zu einem tiefen Preis hergestellt werden kann.
Reverse Engineering
Von den bestehenden Balisenlesern existiert keine Dokumentation, weshalb der Typ eines Lieferanten per Reverse Engineering analysiert und mit der Spezifikation der Eurobalisen abgeglichen wurde. Die Schlüsselkomponenten sind:
- ein TX Sender bei 27.095 MHz als Telepower Source, die genaue Leistung ist unbekannt, liegt aber aufgrund der Leistungsaufnahme bei rund 3 bis 5 Watt.
- ein RX Verstärker mit einem Tiefpassfilter (DC bis 5MHz) mit einer Attenuation von -50dB bei 27MHz.
- ein Duplexer, um Sender und Empfänger zu trennen bei der Antenne.
- ein Software Defined Radio (SDR), um den Sender einzuschalten und das Signal der Balise zu demodulieren.
- ein Industrie-PC, der das Signal decodiert.
Retrofit: Nicht nur eine Kopie
Bei einem Retrofit soll nicht nur eine Kopie hergestellt, sondern auch aus dem bestehenden System gelernt werden. Im bestehenden Balisenleser wird der Sender beispielsweise über ein USB-attached Relais aus der Software ein- und ausgeschaltet, könnte aber auch direkt über das SDR-Board gesteuert werden. Zudem wird das SDR-Board nur fürs Sampling (und Demodulation) der empfangenen Signale genutzt – die Daten werden danach auf dem integrierten PC decodiert. Auch werden viele verschiedene Speisespannungen (+5V, +15V, -15V, 24V) eingesetzt. Die System-Architektur ist recht komplex und belegt wertvollen Platz im Messzug (4U Höheneinheiten im 19-Zoll Rack).
Das neue System soll deutlich vereinfacht werden:
- TX Kontrolle direkt auf dem SDR-Board
- reduzierte Anzahl Speisespannungen (Amplifier nicht symmetrisch versorgt)
- Decoding direkt auf dem SDR Board, ohne separaten PC
Ohne relevante Abstriche bei der Funktionalität konnte das neue Design um einen Faktor 4 verkleinert werden (auf eine Höheneinheit im 19-Zoll Rack). Weniger Komplexität bringt zudem höhere Zuverlässigkeit und bessere Wartbarkeit.
Neues Systemdesign
Das 27 MHz Signal wird im neuen Balisenleser direkt im SDR-Board erzeugt und vom RF-Modul nur verstärkt. Da das SDR-Board mit einer Taktfrequenz von 125 MHz arbeitet, werden die Oberwellen für ein sauberes Ausgangssignal nach dem Verstärker herausgefiltert.
Das Empfangssignal wird direkt im SDR-Board decodiert. Damit besteht das neue System nur noch aus drei wesentlichen Elementen: einem Netzgerät zur Speisung, dem SDR-Board und dem RF-Frontend. Letzteres wurde kundenspezifisch für den Balisenleser entwickelt.
RF-Frontend
Im RF-Frontend sind sowohl der TX- als auch RX- und Duplexer-Pfad integriert. Auf dem Bild (unten) sieht man unten den TX- und oben den RX-Pfad. Rechts ist der Anschluss für die Antenne. Die Ausgangsleistung von 35dBm (3.2W) reicht zuverlässig, um die Balisen auszulesen. Die Leistungsaufnahme des RF-Moduls liegt bei 700mA/12V.
Software Defined Radio (SDR)
Die SDR-Plattform basiert auf einem Red Pitaya Board mit 125MHz Takt und einer Auflösung von 14bit. Es ist bestückt mit einem Xilinx Zynq 7010 FPGA. Als Betriebssystem wurde ein Yocto-basiertes Linux mit einem U-Boot Bootloader aufgesetzt. Sichere Software-Updates sind jederzeit über das Webinterface möglich. Die Applikation (Decoder) ist in Python3 geschrieben.
Während der frühen Entwicklungsphase wurden verschiedene Algorithmen für Demodulation und Decoding mit Hilfe von GNU Radio und einem Hardware-in-the-Loop Setup evaluiert. Im fertigen Produkt übernimmt das FPGA die rechenintensive Demodulation, das anschliessende Decoding geschieht in der Python-Applikation.
Websocket Applikation
Die Applikation ist als Websocket-Server ausgestaltet. Im Vergleich zu einem HTTP-Server kann ein Websocket bei einer geöffneten Verbindung auch von sich aus Daten schicken, ohne auf eine neue Verbindung des Clients zu warten. Sobald eine Balise erkannt wird, sendet der Server die Identifikationsnummer und einen Zeitstempel. Weil die Balise bei der Überfahrt mehrfach erkannt wird, kann sehr genau bestimmt werden, wann sich die Balise mittig unter dem Leser befindet. Die Genauigkeit (Jitter) des Zeitstempels ist besser als 200 Mikrosekunden, wenn die Zeitsynchronisation mittels Network Time Protocol geschieht.
Der neue Balisenleser wurde für die SBB umgesetzt und im Diagnosefahrzeug in die OpenTLS Messapplikation integriert. Täglich werden damit tausende Balisen zuverlässig ausgelesen. Über ein Web-Interface kann der Status oder das Live Log abgerufen werden. Und dank offenem Quellcode, Produktionsdaten und IP-Rechten ist die Verfügbarkeit von Balisenlesern für die SBB nun gesichert.