Seit geraumer Zeit wird die Steuerungs-Software der Modelleisenbahn neu implementiert. Die Anmutung ist am originalen ESTW orientiert. Statt Eclipse/Java wird C++/Qt verwendet. Sogar der Biermodus ist inzwischen implementiert und funktioniert einwandfrei. Ein weiterer Vorteil ist die direkte Ansteuerung des CAN-Bus über USB-Adapter. Dadurch entfällt die Tunnelung durch die serielle Schnittstelle. Das Modell wird direkt geladen, sodass kein Plugin mehr generiert und kompiliert werden muss. Ein Edit-Modus ermöglicht die Anpassung des Gleisbild-Layouts.
Die neue Steuerung ist auf Anwendungsebene komplett neu in C++17 entwickelt worden. Die Hardware wird durch Qt abstrahiert. Software-technisch werden konsequent Statecharts unter Benutzung der Yakindu Statechart Tools benutzt. Es werden Unit Tests, SCT-Units sowie Code Coverage genutzt, um die Software-Qualität auf höchstem Niveau zu halten.
Die Software auf den ATmega32 Mikrocontrollern bleibt unangetastet.
Das Projekt ist auf github unter der MIT-Lizenz gehostet. Die Software ist fertig paketiert über ein APT-Repository für Ubuntu oder Debian verfügbar. Die unterstützte Architektur ist x86_64 und arm64. Eine Anleitung zur Einrichtung der Installation findet sich auf den github Projektseiten.
Heute wurden die provisorischen Überbrückungsklammern der denkenden Fleischmann-Weichen durch originale Klammern ersetzt. Die kupfernen manuell zurechgebogenen Klammern waren häufig rausgesprungen und haben für Wackelkontakte gesorgt. Hintergrund war, dass in der ersten Anlage die Funktion der denkenden Weichen genutzt wurde. Das ist auf Grund der CAN-Bus basierten Steuerung nicht mehr notwendig.
Heute ist ein Standardwerk der Deutschen Bahn eingetroffen, das den Regelbetrieb eines elektronischen Stellwerks (ESTW) erklärt. Neben der technischen Beschreibung wie ein ESTW funktioniert, werden vor Allem Bedienung und die Benutzeroberfläche erklärt. Das kann dazu genutzt werden, eine neue Stellwerks-Software zu entwickeln.
Seit den ersten Entwicklungen mit dem CAN-Bus und der Eisenbahnsteuerungen hat sich im Embedded-Markt sehr viel getan. Insofern ist es nur logisch, sich mal günstige CAN-Busadapter anzusehen, ob sie mit der Eisenbahnsteuerung zusammenarbeiten könnten. Nach einem kurzen Test hat sich herausgestellt, dass der Standard-Linux-Treiber hervorragend mit dem CAN-Bus der Modelleisenbahn kommunizieren kann. Erfreulicherweise Ist der Anschluss über USB sehr einfach.
An diesem Wochenende haben die Wittener Eisenbahntage stattgefunden. Veranstalter waren die Eisenbahnfreunde Witten e.V. Neben einigen Modellbahnanlagen konnte man auch das Stellwerk des Wittener Hauptbahnhofs besichtigen. Eine Führerstandsmitfahrt auf einer in ursprünglicher Lackierung wieder hergerichteten V60 rundeten das Bild eines gemütlichen und freundlichen Eisenbahnvereins ab. Interessanterweise hat der Verein die 78 510 als Wappenlok auserkoren - eine gute Wahl.
Heute wurde ein Provisorium abgeschafft: Der Tisch mit dem Stellwerksrechner wurde durch eine stabile Schublade ersetzt. Diese ist niedrig genug, um nicht die Sicht auf die Anlage zu verdecken. Außerdem kann so bequem die ganze Steuerung bei Bedarf versteckt werden. Dadurch gewinnt der Raum deutlich an Platz.
Seit letztem Donnerstag entwickeln mein Kollege Marc Habiger und ich die Stellwerkssteuerung für die Modellbahn. Heute haben wir den CAN-Protokollumfang in den Griff bekommen. Dazu zählt natürlich der Austausch von CAN-Frames, sowie die vernünftige Filterung der Frames am Controller. Dadurch können gleich die unwichtigen Pakete rausgefiltert werden, ohne dass der Mikrocontroller mit Rechenzeit belastet wird. Auch das Versenden von Standard Data Frames sowie Extended Data Frames funktioniert problemlos.
Derzeit arbeiten wir an der Kopplung der Kommunikation mit dem PC. Diese soll über die schon altbackene RS232-Schnittstelle geschehen. Diese hat aber bis heute jeder PC und somit muss keine neue Steckkarte oder andere Erweiterung für den PC gekauft werden. Ein CAN-RS232-Gateway setzt die CAN-Frames vom PC über RS232-Schnittstelle auf den CAN-Bus um.
Ich werde häufig gefragt, warum das Ganze über CAN-Bus läuft. Schließlich gibt es genug ausgereifte Digitalmodule für die Modellbahn. Es ist so, dass der CAN-Bus viele gute Eigenschaften hat. Der CAN-Bus wurde von Bosch für den Automotive-Umfeld entwickelt. Ziel war es, durch Einsparung von Verkabelung Aufwand und Gewicht einzusparen. Inzwischen sind 20 Jahre vergangen und der CAN-Bus steckt in nahezu jedem Neuwagen. Die mechanische Belastung auch im Auto sind teilweise enorm, so dass mit dem CAN-Bus ein robuster 2-Draht-Bus (mit der Karosserie als Masse) geschaffen wurde. Bei der Modellbahn sind einige dieser Aspekte auch von Bedeutung. Ziel ist es, Verkabelung einzusparen. Nicht aus Gewichtsgründen, sondern aus rein ergonomischen Gründen, da die Drähte über Kopf montiert werden müssen. Auch die Robustheit spielt dabei eine Rolle. Es gibt auch auf einer Modellbahn viele Störeinflüsse gerade durch Antriebsspulen.
Zum guten Schluss zählt doch eins: Man hat etwas eigenes entwickelt um es zu verstehen. Obendrein ist es auch erheblich kostengünstiger, als die käuflich zu erwerbenden Digitalmodule. Letztlich ist es einfach nur cool, wenn man der Modellbahnanlage ein Firmware-Update spendiert ;-)