Software

Wie wir schon gesehen haben sind nur wenige Hardwarekomponenten für den Digitalbetrieb einer Modellbahn notwendig. Mit der Software verhält es sich ähnlich. Die Software einer digital gesteuerten Modellbahnanlage besteht aus zwei Komponenten; einem Serverprozess welche die Funktionalität einer Zentrale nachbildet sowie verschiedenen Clientprogrammen die zur Steuerung der Anlage dienen.

Die hier nachfolgend vorgestellten Projekte stehen zum großen Teil als inoffizielle Debian Pakete zur Verfügung. Tragen Sie folgende Zeile in die Datei /etc/apt/sources.list ein:


deb http://www.openoffice.de/debian/ stable main


und installieren Sie dann die gewünschten Pakete, beispielsweise mit apt-get.

Natürlich können Sie sich auch die Sourcen der Programme besorgen und die kompletten Pakete selbst übersetzen.

Server

Die Auswahl der Software für den Server ist von der bereits vorhandenen Hardware abhängig. Beide hier vorgestellten Server unterstützen das SRC Protokoll (Simple Railroad Command Protocol). Die aktuelle Spezifikation dieses Protokolls findet sich unter http://srcpd.sourceforge.net/srcp/. Vorabversionen des Protokollstandards finden sich unter http://members.tripod.de/mtrute/Modellbahn/srcp-maintain.html

SRCP ist ein plattformunabhängiges Internetprotokoll zum Steuern von Modelleisenbahnen, insbesondere digital gesteuerter. Ein SRCP komformer Server stellt das Bindeglied zwischen der Modellbahn (Hardware) und den Steuerprogrammen (Clients), über welche die Modellbahn gesteuert werden soll, dar. Das Protokoll vermittelt eine Client-Server Struktur, wobei der Server die Schnittstelle zur Modellbahnanlage und die Clients die Schnittstelle zu den(m) Modellbahner(n) darstellen. SRCP ist Multiuser fähig.

erddcd

Das Projekt DDL - Digital Direct for Linux http://www.vogt-it.com/OpenSource/DDL/ von Torsten Vogt stellt mit dem Daemon „erddcd“ einen Serverprozess zur Verfügung, der mit dem Booster kommuniziert und somit eine Digitalzentrale überflüssig macht. erddcd ist Bestandteil des Paketes DDL.

Dieser Server kann mit den Boostern 6604, 6015 oder 6017 der Firma Märklin, sowie mit verschiedenen Selbstbauboostern verwendet werden.

Der Daemon erddcd sendet die Steuerdaten von unterschiedlichen Clients zum Booster, welcher über ein serielles Kabel mit dem Rechner verbunden ist. Das Debian Paket wurde um das Init-Script /etc/init.d/erddcd erweitert, ausserdem wird eine Konfigurationsdatei /etc/erddcd.conf ausgewertet. In dieser ist ggf. die Bezeichnung der seriellen Schnittstelle anzupassen, falls der Booster nicht an /dev/ttyS0 angeschlossen ist.

srcpd

Mit srcpd von Matthias Trute (http://srcpd.sourceforge.net) steht ein weiterer Server zur Verfügung mit dem die Märklin Central Unit 6020 oder 6021 zusammen mit den Märklin Interfaces 6050 oder 6051 angesprochen werden können. Weiterhin unterstützt srcpd die Intellibox der Firma Uhlenbrock.

Das srcpd Projekt wurde im Sommer 2001 aus der Taufe gehoben und hat sich zum Ziel gesetzt einen einfach zu benutzenden SRCP-konformen Server für die digitale Modellbahnsteuerung zu erstellen.

Der Urahn des srcpd ist der erddcd von Torsten Vogt. Dieser emuliert auf dem PC ein Interface und benötigt zur Steuerung der Modelleisenbahn nur die Booster, Schaltdecoder, Rückmeldemodule etc., jedoch kein Interface.

Auf dieser Basis wurde mit Beginn des Jahres 2000 die ersten SRCP Fassungen entwickelt und parallel dazu begann Matthias Trute einen Dämon (m6051d) für das Märklin-Interface M6051 zu schreiben. Dieser benutzte einige Routinen des erddcd, schlug aber schon früh einen anderen Weg ein. Diesen Dämon wiederum nahm Frank Schmischke wiederum zusammen mit dem erddcdals Ausgangsbasis für einen Dämon für die Intellibox von Uhlenbrock.

Da der überwiegende Teil der beiden Dämonen (für M6051 und Intellibox) identischen Code besitzt wurde von Matthias Trute die Idee geboren, einen universellen SRCP-Server zu erstellen, der alle bekannten Interfaces abdecken soll. Den größten und aufwendigsten Anteil am Server hat der SRCP-Teil, wo die eingehenden Befehle auf ihre Korrektheit geprüft und anschließend dekodiert werden, und wo die Informationen für die Clients zusammengestellt werden.

Aus diesem Grund wurde im Sommer 2001 das srcpd-Projekt vom Matthias Trute (Maintainer) und Frank Schmischke aus der Taufe gehoben. Sie haben ihre beiden SRCP-Server zum neuen srcpd verschmolzen. Änderungen die das SRCP betreffen (und da wird es einige sehr interessante geben!), brauchen jetzt nur noch einmalig für alle intergrierten Interfaces durchgeführt zu werden. Hierdurch ist ein wesentlich besseres weiterentwickeln möglich, da nun mehrere Leute am selben Code rumwerkeln und Fehler schneller und besser aufgespürt und beseitigt werden können.

Clients

Während die SRCP Serversoftware ledigliche eine anfängliche Konfiguration benötigt und dann unbemerkt im Hintergrund arbeitet, stellen die hier vorgestellten Client Programme die Verbindung zum Lokführer vor dem Bildschirm her. Jeder SRCP Server kann Instruktionen von mehreren Clients gleichzeitig verarbeiten, es können also die hier vorgestellten Programme bunt gemischt eingesetzt werden.

telnet

Zuerst zu einem etwas ungewöhnlichen Client, telnet. telnet wird sich sicherlich nicht zum bevorzugten Werkzeug zur Modellbahnsteuerung entwickeln, für die Fehlersuche kann es jedoch sinnvoll sein auch dieses Werkzeug zu kennen.

telnet stellt die einfachste Variante der Arbeit mit dem srcpd dar. Wenn der srcpd und telnet auf dem gleichen Rechner laufen, kann man mittels

% telnet localhost 12345

den srcpd in Verbindung mit telnet betreiben. Wenn der srcpd auf einem anderen Rechner läuft, so ist bei telnet der Parameter localhost durch den entsprechenden Rechnernamen zu ersetzten. Bei einer abweichenden Portadresse ist der Parameter 12345 entsprechend anzupassen.

Nach dem Start von telnet wird eine Verbindung zum srcpd aufgebaut. Wenn dies erfolgreich durchgeführt worden ist, wird vom srcpd eine Willkommensmeldung an telnet zurückgeschickt. Alle Ausgaben erscheinen auf der aktuellen Console, es gibt keine weitere Benutzeroberfläche. Nun kann am Prompt ein Befehl gemäß SRCP Standard eingegeben werden, Beispielsweise:

% SET GL PS 33 1 12 14 0 4 0 0 0 0

Dieser bewirkt, daß die Lok mit der Adresse 33 mit Fahrstufe 12 (von 14 möglichen) ohne Licht oder sonstige Zusatzfunktionen (4) vorwärts fahren soll. Dies soll nur als Beispiel dienen, wenn telnet zur weiteren Steuerung benutzt werden soll, so hilft ein Blick in die SRCP Spezifikation.

Zum Beenden können die Befehle:

% LOGOUT

oder

% SHUTDOWN

verwendet werden. Bei ersterem wird nur die Verbindung zum srcpd unterbrochen und telnet beendet sich, während mit dem zweiten Befehl der srcpd angewiesen wird sich zu Beenden, telnet wird hierbei ebenfalls beendet.

keyboard

Um einfach die Magnetartikel zu schalten, gibt es Keyboard. Um einen Automatikbetrieb zu realisieren gibt es Memory. Die gleichnamigen Produkte der Fa. Märklin sind zwar die geistigen Paten, aber haben nichts mit diesem Programm gemein. Das Programm benutzt TCL/TK und läuft auch unter Windows.

Benutzung: ganz unten wird die aktuelle Basisadresse angezeigt Diese kann mit den Buttons um jeweils 16 nach oben bzw. nach unten verändert werden. Zu dieser Basisadresse muß sodann die Zahl zwischen den Buttons hinzugezählt werden, um die Adresse des Dekoders zu ermitteln, die letztendlich angesprochen wird.

Solange eine der Tasten gedrückt wird, wird der entsprechende Ausgang des Dekoders aktiviert. Vorsicht ist also geboten, die Spulen können dabei durchbrennen.

recorder

Der Recorder ist für automatisierte Aktionen und für Makrofunktionen wie Weichenstraßensteuerung gedacht. Gegenwärtig kann man 24 Aktionen auf Knopfdruck abrufen und auch von einem Feedbackereignis triggern lassen. Daneben kann die Liste der SRCP Befehle editiert, gespeichert und auch wieder eingelesen werden. Einzig der Record-Modus funktioniert noch nicht. Auch gibt es noch Probleme mit der Parallelverarbeitung. Mehrere Trigger gleichzeitig funktionieren noch nicht.

Die Benutzung ist einfach: Programm starten und für die 24 "Tasten" die jeweiligen Aktionen einlesen. Sodann kann mit einem Mausclick auf eine der Tasten die zugehörge Aktion ausgelöst werden. über die Radiobuttons ganz oben wird die Wirkung des Mausklicks verändert: Jetzt wird die Liste editierbar (ein Editfenster klappt auf), die Aktionsliste kann gespeichert und wieder eingelesen werden, oder eben das Programm lauscht am SRCP Server und speichert die Ereignisse so, daß sie wieder ausgeführt werden können. Momentan werden alle Befehle einer Taste auf einmal ausgeführt.

rcsh

rcsh ist eine Shell zur Steuerung von digitalen Modellbahnen. Eine einfach Scriptsprache erlaubt es Lokomotiven direkt aus der Shell heraus zu steuern. Hier ein einfaches Beispiel:


l = locoN1(4)
# Licht an, langsam aus Bahnhof herausfahren
l.func(1)
l.speed(1)
l.send()
# Immer noch langsam im Bahnhofsbereich
l.speed(3)
l.send()
time.sleep(12)
# Beschleunigen auf freier Strecke
l.speed(7)
l.send()
time.sleep(20)
# langsam in Bahnhof
l.speed(2)
l.send()
time.sleep(5)
# Kriechen und Stillstand an alter Startposition
l.speed(1)
l.send()
time.sleep(3)
l.speed(0)
l.func(0)
l.send()
print l.speed()


In diesem Beispiel zur (zeitlichen) Steuerung eines Zuges aus dem Bahnhof auf die Strecke und wieder zurück in den Bahnhof, sind die wichtigsten Funktionen benutzt worden. Eine etwas ausführlichere Dokumentation finden Sie auf Ihrem Debian System in der Datei /usr/share/doc/rcsh/README.Debian.

SpDrS60

SpDrS60 SpDrS60 ist das erste Programm zum nächsten Monaten noch starken Änderungen unterzogen wird. Aber trotzdem komfortablen Steuern von Weichen und Signalen für die Benutzung mit SRCP-konformen Servern. Es ist ausserdem das erste grafische ausgereifte Programm, um unter Linux seine Modellbahn zu steuern. Es bietet schon jetzt viel Komfort, um seine Modellbahnanlage getreu den bei der Deutschen Bahn AG immer noch verwendeten Spurplan-Drucktastenstellwerken (SpDr) zu steuern. Bei der Benutzung dieses Programms muss man sich - sofern man es kennt - von einigen gewohnten Eigenschaften eines Steuerprogramms verabschieden, da diese meistens zu sehr auf die Belange der Modellbahn abgestimmt sind.

JoyCtrl

JoyCtrl benutzt den Joystick zur Steuerung der Loks unter Linux und ist eine Alternative/Ergänzung zu Maus- oder Tastatursteuerungen.

Als Hardware dient mir ein billiger analoger Joystick mit einigen Feuerknöpfen.

Für die Umrechnung der Knüppelbewegungen in Lokkommandos habe ich ein Kennlinienkonzept verwirklicht. Damit kann ich den Knüppelbewegungen unterschiedliche Lokaktionen zuordnen, je nach Situation. Ein jederzeitiges Umschalten ermöglicht, etwa im Bahnhofsbereich rangieren zu können und auf der freien Strecke entspannt die Lok laufen zu lassen.

dtcltiny

Ein weiterer Client ist mit dtcltiny von Markus Pfeiffer verfügbar, dieser Client basiert auf QT.

Auch dieses Paket wurde gegenüber dem urspünglichen Paket ein wenig angepasst, ein einfacher Aufruf von dtcltiny startet das Programm mit sinnvollen Parametern und versucht im Homeverzeichnis des Benutzers eine Konfigurationsdatei zu laden. Wenn Sie die Ursprungsversion benutzen möchten, so finden Sie das Programm unter /usr/bin/dtcltiny.bin.

Die Beispielkonfiguration unter /usr/share/doc/dtcltiny/SAMPLE.dtcltiny.data kann als .dtcltiny.datain das Homeverzeichnis kopiert werden (cp /usr/share/doc/dtcltiny/SAMPLE.dtcltiny.data ~/.dtcltiny.data). Diese Beispielkonfiguration enthält zwei Einträge, mit der die beiden Decoder der Dampflokomotive „Big Boy“ (Märklin Nummer 37990) gesteuert werden können.

Über das Menü „File“ können andere Konfigurationsdateien geladen oder aber die aktuelle Konfiguration gespeichert werden. Auch können über den Menüpunkt „New loco“ weitere Lokomotiven hinzugefügt werden.

Unter dem Menüpunkt „General“ kann neben dem Namen und einem Alias, also eine Bezeichnung für den ganzen Zug beispielsweise, noch der verwendete Decoder, das Protokoll sowie natürlich die Adresse des Decoders eingestellt werden.

Im zweiten Abschnitt lassen sich die Funktionen des Decoders einstellen. Unter „Type“ finden sich die Funktionen wie „light“, „smoke“, „coupling“, „sound“ und „shunting“. Dies verändert das angezeigte Symbol für diese Funktion. In der Zeile „Activate as“ lässt sich das Verhalten der Schaltfläche als Taster oder Schalter einstellen.

Der letzte Abschnitt dient zur Parametrisierung des Fahrverhaltens der Lok. Zunächst kann die maximale Geschwindigkeit der Lok in km/h oder mph eingestellt werden. Es lassen sich Werte für die Minimale und die Durchschnittliche Geschwindigkeit einstellen. Diese drei Werte werden im Hauptfenster durch drei Balken (grün, gelb, rot) dargestellt. Ein Mausklick auf einen der Balken beschleunigt sanft auf die eingestellte Geschwindigkeit dieses Bereiches. Natürlich läßt sich die Lok durch einen Klick in einen langsameren Bereich auch sanft abbremsen.

Im unteren Bereich lassen sich die Verzögerungen für das Anfahren und Bremsen einstellen.