Thomas Kortschack

Hobby- und Projekt-Website

Modellbahnsteuerungssoftware CARC

Da ich immer mal wieder angeschrieben bzw. angesprochen werde, was es mit meiner selbst entwickelten Modellbahnsteuerungssoftware CARC auf sich hat bzw. was aus dieser geworden ist, stelle ich hier ein paar Hintergrundinfos bereit.
Ein Bericht "Alles fährt auf sein Kommando" wurde 2011 in der Bayerischen Rundschau veröffentlicht.

Vorgeschichte

Das Entwickeln einer eigenen Modellbahnsteuerungssoftware ist eigentlich in der Freizeit kaum zu stemmen, reizte mich aber schon seit ca. 2006.

Bereits zum damaligen Zeitpunkt gab es kommerzielle Produkte, doch die meisten Tests mit den Demo-Anwendungen überzeugten mich nur bedingt. Eine im Modellbahnverein angeschaffte Software war zwar vom Grundkonzept gut, jedoch kam es in der Praxis teils zu hängenden Fahrstraßen bzw. Fehlern während des Fahrbetriebs, welche auch Neustarts der Anwendung während Modellbahnausstellungen erforderten. Sicherlich ist keine Software fehlerfrei und man hätte durchaus damit leben können, doch Probleme in den gespeicherten Daten (unter den Experten als "Altlasten in Archiven" bekannt) waren auch nicht von der Hand zu weisen, was letztlich dazu führte, dass auch von einer Anlage ein Gleisbild nochmal komplett neu gezeichnet und konfiguriert werden musste.

Neben anderen kommerziellen Programmen gab es zum damaligen Zeitpunkt auch ein Open Source Projekt, was ich besonders hinsichtlich der Netzwerkunterstützung recht vernünftig finde. Leider wurde ich aber bis heute mit der Anwendung nie richtig warm. Eine Anwendung, bei der ich ständig in irgendwelchen Online-Dokus nachlesen muss, mich in Fenstern und Steuerelementen kaum zurechtfinde und nicht intuitiv bedienen kann, kann ich auch nicht in einem Verein einsetzen, in dem der Nachwuchs bzw. Vereinskollegen mit eingeschränkten PC-Kenntnissen die Anwendung bedienen sollen.

Eigene Lösung

Während meiner Diplom- und Masterarbeit bekam ich die Gelegenheit den Gedanken einer eigenen Steuerungssoftware zu realisieren.

CARC Logo

Die Namensidee kommt von der Bezeichnung CAD (engl. Computer Aided Design), was man übersetzt als rechnergestützten Entwurf bzw. rechnerunterstütztes Konstruieren verstehen kann.
Meine verwendete Bezeichnung CARC (engl. Computer Aided Railroad Controller) steht somit für eine computergestützte Eisenbahnsteuerung.

Aller Anfang ist schwer

Zu Beginn meiner Diplomarbeit musste ich mir durchaus Sätze wie "das schafft du doch in diesen paar Monaten alleine nie" anhören. Ganz unbegründet war diese Kritik nicht, denn oft gehen Studienarbeiten von Firmen/Institutionen/Forschungseinrichtungen aus und da gibt es Unterlagen, Hintergrundwissen und Unterstützung. All das hatte ich nicht, ich startete mit 0 Codezeilen und hatte wenig Hoffnung, dass mir bei Problemen jemand weiterhelfen kann. Eines war jedoch vorhanden: Motivation!

Verschweigen möchte ich nicht, dass ich viele Wochenenden durchgearbeitet habe und es durchaus Tage gab, an denen ich aufgrund der vielen Baustellen verzweifelt war. Eine Steuerungssoftware ist keine reine Desktop-Anwendung, die nur mit dem Benutzer interagiert. Vielmehr ist hier jede Menge Hardware mit im Spiel, was die Unterstützung unterschiedlichster Schnittstellen/Bussysteme und deren Protokolle nötig macht. Züge und Loks werden nicht nur beschleunigt, sondern müssen auch irgendwann mal wieder zum Stehen kommen und das möglichst an einer konfigurierbaren Position, was eine entsprechende Bremswegberechnung nötig macht. Auch sollte meine Software keinesfalls auf irgendeine konkrete Anlage ausgelegt sein, sondern das Zeichnen eines schemenhaften Gleisbildes ermöglichen und so natürlich für unterschiedlichste Modellbahnanlagen verwendet werden können (für verschiedene Nenngrößen/Maßstäbe). Um das manuelle Anlegen von Schrittketten bzw. Fahrwegen zu vermeiden, legte ich von vornherein großen Wert darauf, dass die Software während der Laufzeit möglichst alles selbst berechnet und freie Fahrwege anhand eingestellter Regeln automatisch ermittelt und reserviert. Am Rande sei erwähnt, dass wir hier zwar von Modelleisenbahnen im Miniaturformat sprechen, jedoch die Fahrzeuge nach Vorbildgeschwindigkeit gesteuert werden, sodass eine Dampflok z.B. mit 80 km/h durch die Lande fährt und ein ICE je nach Anlagengegebenheiten auch mal auf über 300 km/h beschleunigt. Zudem sind i.d.R. dutzende Fahrzeuge parallel unterwegs und dabei darf es natürlich nie zu Zusammenstößen kommen. Neben der Fahrzeugansteuerung müssen dazu auch Weichen korrekt geschaltet, Sensoren zur Positionsbestimmung ausgewertet und Signale möglichst vorbildgerecht gestellt werden.

Es lassen sich zwar viele Themen in Teilbereiche gliedern und nach und nach implementieren, doch diese müssen letztendlich miteinander kooperieren, sonst lässt sich eine Modellbahnanlage im Automatikbetrieb nicht steuern.
Glücklicherweise fügte sich das Puzzle nach Monaten dann doch nach und nach zusammen und plötzlich stand man als Entwickler neben einer Modellbahnanlage und konnte selbst bestaunen, wie im Automatikbetrieb alles nahezu von Geisterhand gesteuert wird.

Praxisnahe Tests

Möchte man solch eine selbst implementierte Steuerungssoftware in der Praxis einsetzen, kommt man während der Entwicklung ums Testen nicht herum.

Ganz naiv bin ich nicht an das Thema herangegangen und wusste zur damaligen Zeit, dass die von mir bereits digitalisierte H0-Anlage "Bahnhof Kulmbach" des Kulmbacher Modellbahnvereins ein prima Testobjekt darstellt. Für Technikinteressierte sei hierbei erwähnt, dass die Anlage zu diesem Zeitpunkt u.a. mit Lenz LZV100 Digitalzentrale, Lenz LV102 Boostern, Lenz USB-Interface, LDT Gleisbesetztmeldern (RS-8), LDT Magnetartikeldecodern (S-DEC-4-DC) und Servodecodern (S4DCC + E4) von Claus Ilchmann ausgestattet war.

Gleisplan Kulmbach

Ein generelles Problem dieser Anlage ist jedoch, dass diese ca. 17 m lange Anlage weder ins Vereinsheim passt, noch privat genügend Platz vorhanden ist. Durch Zufall ergab sich in den leerstehenden Räumlichkeiten im ehemaligen ProMarkt (danach Adler) des fritz Einkaufszentrums in Kulmbach die Gelegenheit die Anlage hinter den verschlossenen Rolltoren aufzustellen. Ab und zu habe ich die Rolltore geöffnet und mir beim Testen von Besuchern des Einkaufszentrums über die Schulter schauen lassen.

Um dennoch auch zu Hause Tests durchzuführen, baute ich mir mit C-Gleisen eine Anlage auf dem Boden auf.

Gleisplan Testanlage

Als Digitalsystem lag zwar eine Märklin Control Unit 6021 mit Märklin Interface nahe, doch da ohnehin schon eine Uhlenbrock Intellibox 650 zum Inventar gehörte, hatte ich diese zunächst im Einsatz.
Allerdings setzte ich diese nicht sehr lange ein, denn sie hat leider das bekannte Reset-Problem und startet manchmal aus heiterem Himmel neu. Das Problem ist in der Branche bekannt.
Deshalb wechselte ich relativ schnell auf eine Tams MasterControl und setze s88-N Rückmeldemodule ein. Für die Weichen habe ich teils uralte Märklin Einbau-Digital-Decoder verwendet bzw. mir noch weitere LDT Magnetartikeldecoder (S-DEC-4-MM) besorgt.

Im Laufe der Zeit kamen dann noch modernere Komponenten dazu, u.a. die Märklin CS2 bzw. Märklin Gleisbox und zudem Module von CAN-digital-Bahn, um Zubehör (Weichen, Signale, ...) direkt über den CAN-Bus anzusteuern.

Ende 2010 wurde mit der Software CARC eine N-Anlage in der Modellbahnausstellung Kulmbach im Dauerbetrieb gesteuert. In den Folgejahren setzte ich die Software für sämtliche PC-gesteuerte Anlagen ein.

Funktionsprinzip

Das Funktionsprinzip ist relativ leicht zu verstehen und mit anderen Modellbahnsteuerungsprogrammen vergleichbar.

Die Anlage wird schemenhaft als Gleisbild gezeichnet, entsprechend die Rückmelder/Gleisbesetztmelder eingetragen und das Zubehör konfiguriert. Dazu zählen z.B. Weichen, Signale und anderweitige Gimmicks. Auch werden sogenannte Blöcke eingezeichnet, in denen dann später Regeln definiert werden können.

Bahnhof Kulmbach in CARC

Um eine Verbindung mit der Anlage aufbauen zu können, werden die Schnittstellen dem System bekannt gegeben. Dazu zählen u.a. die Digitalsysteme verschiedener Hersteller, deren Komponenten z.B. per serieller Schnittstelle, USB bzw. Ethernet eingebunden werden.

Für den Automatikbetrieb werden Lokomotiven und Züge angelegt, die wiederum Kategorien/Gattungen zugeordnet werden können. Diese Gattungen können frei definiert werden, beispielsweise könnte man eine Gattung für Personenzüge bzw. Güterzüge anlegen, oder für gewisse U-Bahn-Linien U1, U2 (der Fantasie sind keine Grenzen gesetzt). In den bereits erwähnten Blöcken können damit Regeln definiert werden, z.B. wo ein Güterzug fahren darf, an welcher Stelle ein Personenzug anhalten soll.
Damit die Software das Fahrverhalten der Lokomotiven kennt, muss deren Geschwindigkeitskennlinie bekannt sein. Um diese zu bestimmen, werden die Lokomotiven auf einer Messstrecke bzw. einem Rollenprüfstand mit Messeinheit eingemessen. Die in den Lokomotiven verbauten Digitaldecoder haben Fahrstufen (z.B. 28) und zu jeder Fahrstufe wird die Geschwindigkeit ermittelt. Mit dieser Kennlinie und etwas Rechnerei ist es der Software möglich eine Lokomotive bzw. einen Zug herunterzuregeln und auf wenige Zentimeter genau vor einem Signal oder am Bahnsteig anzuhalten.

Geschwindigkeitskennlinie in CARC

Meine Software ermöglicht es diverse Einstellungen zu verändern ohne den Betrieb zu stoppen. Dass die Software fast schon kinderleicht zu bedienen ist, zeigte sich während einer Modellbahnausstellung. Da stellte ich mir irgendwann selbst die Frage, warum plötzlich Züge in gewissen Anlagenbereichen unterwegs sind, was ich so nicht definiert habe. Als Informatiker bekommt man erstmal Angst (Fehler in der Software!?), doch schnell stellte ich fest, dass die Jugend meine Einstellungen erweitert hat, sodass noch mehr Betrieb auf der Anlage los ist.

Fortführung als Freizeitprojekt

Aufgrund meiner beruflichen Tätigkeit reichte mir die Zeit leider nicht das Projekt ab 2012 mit dem gleichen zeitlichen Aufwand weiterzuentwickeln.
Dennoch habe ich es nie ganz aufgegeben und in meiner Freizeit fortgeführt, solange es anderweitige Privat- bzw. Vereinsprojekte zugelassen haben.
Neben kleineren Anpassungen und Erweiterungen, unterstütze ich mittlerweile auch das BiDiB-System, kurzgefasst ein bidirektionales Bussystem für die Modellbahn.

Es lassen sich direkt aus meiner Steuerungssoftware heraus die sogenannten BiDiB-Knoten konfigurieren, ohne dafür ein separates Tool zu installieren.

BiDiB-Unterstützung in CARC

Zum Einsatz kam diese Technik bereits bei mehreren Modellbahnanlagen, zuletzt beim hier auf meiner Website vorgestellten Kernkraftwerkprojekt, wobei aufgrund von neueren Protokollversionen ich einige Dinge erweitern müsste.

In den Anfängen von CARC setzte ich u.a. noch Windows XP ein, später Windows Vista und Windows 7. Leider kommt deshalb die grafische Benutzeroberfläche an manchen Stellen etwas altbacken daher und so gehen schon ein paar Wege in Richtung einer Version 2 mit überarbeiteter Oberfläche, um ein etwas moderneres Design zu bieten (ab Windows 10).