Konzepte einer Modellbahn- steuerung mit dem Computer · 2018. 1. 8. · Konzepte einer...

10
Konzepte einer Modellbahn- steuerung mit dem Computer Thorsten F ¨ orstemann, [email protected] Hannover, September 2012 D as Konzept und die erprobte Umset- zung einer computergest¨ utzten Modell- bahnsteuerung sollen in diesem Artikel dargestellt werden. Dabei geht es konkret um den Halb- und vollautomatischen Be- trieb durch Jython-Skripte. Im wesentlichen basieren die hier entwickelten Konzepte auf ein paar Kniffen, die aufeinander Aufbauen: (1) Punktgenaue Ortsbestimmung der Loks durch Reed-Kontakte, (2) von der Lok- Orientierung unabh¨ angige Richtungsangaben auf der Anlage, (3) Zielbremsen von Z¨ ugen auch im Schubbetrieb durch Eichung der Loks, (4) Zerlegung komplexer Abl¨ aufe in einfache, sich wiederholende Steuerbefehle und Parameter, (5) Verkettung von Steuer- befehlen zu Routen und schließlich (6) Ver- kettung von Routen zu Fahrpl¨ anen. Voraussetzungen Damit die folgenden Ideen ¨ uberhaupt umsetzbar sind, muss die Modellbahn folgende Voraussetzungen erf¨ ullen: 1. Die komplette Modellbahn muss sich durch einen Computer steuern lassen. Das heißt, Loks, We- ichen und Signale m¨ ussen typischerweise ¨ uber Decoder von einer Digitalzentrale aus gesteuert werden k¨onnen. Die Zentrale muss eine Com- puterschnittstelle besitzen. 2. uckmeldungen ¨ uber Zugpositionen m¨ ussen ¨ uber geeignete R¨ uckmelder bzw. Sensoren und Decoder an die Digitalzentrale und den Com- puter ¨ ubermittelt werden. Die Z¨ uge m¨ ussen dabei nicht ¨ uber Transponder identifiziert wer- den. Die Position einer Lok sollte aber recht genau bei der Ausl¨osung des R¨ uckmelders bes- timmt sein. Insgesamt sind zum Beispiel Reed- Kontakte sehr gut geeignet. Man kann mit ¨ uberraschend wenig R¨ uckmeldern auskommen. 3. Der Computer muss ¨ uber eine Software verf¨ ugen, die mit der Digitalzentrale kommunizieren kann und die selber Skript-f¨ ahig ist. JMRI 1 ist daf¨ ur ideal geeignet. 4. Die Fahreigenschaften der Loks m¨ ussen repro- duzierbar sein. Das heißt, wenn eine Lok mit einer bestimmten Geschwindigkeit angehalten wird (Fahrstufe 0, nicht Nothalt), so muss sie reproduzierbar eine bestimme Strecke rollen, bis sie zum stehen kommt. Dies ist normalerweise der Fall. 5. Im Folgenden haben Signale keine zugbeein- flussende Funktion. Die Z¨ uge werden vollst¨ andig durch den Computer gesteuert – bis hin zur genau definierten Halteposition an einer beliebi- gen Stelle auf der Anlage. Signale haben also nur noch eine optische Funktion. Beispielhafte Umsetzung Unser Aufbau besteht aus einer Digitrax Chief Zen- trale mit LocoBuffer USB als Schnittstelle (siehe Abbildung 1). Weichenbefehle und R¨ uckmeldungen werden durch Digitrax DS64 Decoder ¨ uber Loconet vermittelt (siehe Abbildung 4). Die LED-Signale sind an LocoNet-Schaltmodule 63410 von Uhlenbrock angeschlossen. Loks werden ¨ uber geregelten Decoder 1 http://jmri.sourceforge.net Seite 1 / 10

Transcript of Konzepte einer Modellbahn- steuerung mit dem Computer · 2018. 1. 8. · Konzepte einer...

Page 1: Konzepte einer Modellbahn- steuerung mit dem Computer · 2018. 1. 8. · Konzepte einer Modellbahn-steuerung mit dem Computer Thorsten Forstemann,¨ thorsten@foerstemann.name Hannover,

Konzepte einer Modellbahn-steuerung mit dem ComputerThorsten Forstemann, [email protected]

Hannover, September 2012

Das Konzept und die erprobte Umset-zung einer computergestutzten Modell-bahnsteuerung sollen in diesem Artikel

dargestellt werden. Dabei geht es konkretum den Halb- und vollautomatischen Be-trieb durch Jython-Skripte. Im wesentlichenbasieren die hier entwickelten Konzepte aufein paar Kniffen, die aufeinander Aufbauen:(1) Punktgenaue Ortsbestimmung der Loksdurch Reed-Kontakte, (2) von der Lok-Orientierung unabhangige Richtungsangabenauf der Anlage, (3) Zielbremsen von Zugenauch im Schubbetrieb durch Eichung derLoks, (4) Zerlegung komplexer Ablaufe ineinfache, sich wiederholende Steuerbefehleund Parameter, (5) Verkettung von Steuer-befehlen zu Routen und schließlich (6) Ver-kettung von Routen zu Fahrplanen.

Voraussetzungen

Damit die folgenden Ideen uberhaupt umsetzbarsind, muss die Modellbahn folgende Voraussetzungenerfullen:

1. Die komplette Modellbahn muss sich durch einenComputer steuern lassen. Das heißt, Loks, We-ichen und Signale mussen typischerweise uberDecoder von einer Digitalzentrale aus gesteuertwerden konnen. Die Zentrale muss eine Com-puterschnittstelle besitzen.

2. Ruckmeldungen uber Zugpositionen mussenuber geeignete Ruckmelder bzw. Sensoren undDecoder an die Digitalzentrale und den Com-puter ubermittelt werden. Die Zuge mussen

dabei nicht uber Transponder identifiziert wer-den. Die Position einer Lok sollte aber rechtgenau bei der Auslosung des Ruckmelders bes-timmt sein. Insgesamt sind zum Beispiel Reed-Kontakte sehr gut geeignet. Man kann mituberraschend wenig Ruckmeldern auskommen.

3. Der Computer muss uber eine Software verfugen,die mit der Digitalzentrale kommunizieren kannund die selber Skript-fahig ist. JMRI1 ist dafurideal geeignet.

4. Die Fahreigenschaften der Loks mussen repro-duzierbar sein. Das heißt, wenn eine Lok miteiner bestimmten Geschwindigkeit angehaltenwird (Fahrstufe 0, nicht Nothalt), so muss siereproduzierbar eine bestimme Strecke rollen, bissie zum stehen kommt. Dies ist normalerweiseder Fall.

5. Im Folgenden haben Signale keine zugbeein-flussende Funktion. Die Zuge werden vollstandigdurch den Computer gesteuert – bis hin zurgenau definierten Halteposition an einer beliebi-gen Stelle auf der Anlage. Signale haben alsonur noch eine optische Funktion.

Beispielhafte Umsetzung

Unser Aufbau besteht aus einer Digitrax Chief Zen-trale mit LocoBuffer USB als Schnittstelle (sieheAbbildung 1). Weichenbefehle und Ruckmeldungenwerden durch Digitrax DS64 Decoder uber Loconetvermittelt (siehe Abbildung 4). Die LED-Signalesind an LocoNet-Schaltmodule 63410 von Uhlenbrockangeschlossen. Loks werden uber geregelten Decoder

1http://jmri.sourceforge.net

Seite 1 / 10

Page 2: Konzepte einer Modellbahn- steuerung mit dem Computer · 2018. 1. 8. · Konzepte einer Modellbahn-steuerung mit dem Computer Thorsten Forstemann,¨ thorsten@foerstemann.name Hannover,

Abb. 1: Computer mit JMRI, LocoBuffer USB, DigitraxChief Zentrale und Heller Booster

(Lenz, Zimo, Massoth) gesteuert. Neodym-Magneteunter den Loks dienen zur betriebssichern Auslosungder Reed-Ruckmelder in Glasrohrenform (siehe Ab-bildung 2). Auf dem Steuerungs-PC lauft WindowsXP mit JMRI.

Es wird hier noch kein fertiger, lauffahiger Codevorgestellt. Zunachst werden nur die Ideen entwickelt.Aber wir haben unsere Modellbahn seit ca. 5 Jahrenmit diesen Ideen (und etwas Code) recht erfolgreichautomatisiert – es funktioniert also.

1. Positionsbestimmung der Loks

Fur eine betriebssichere Steuerung der Modellbahnmit dem Computer ist es notwendig, dass der Com-puter eine zuverlassige Ruckmeldung der Situationauf der Modellbahn bekommt. Dabei sind Ruck-melder zur genauen Positionsbestimmung der fahren-den Loks essenziell. Eine Ruckmeldung der Weichen-positionen ist nicht so wichtig und wird hier nichtvorgenommen. Eine Ruckmeldung von geschaltetenLichtern ist generell nicht notwendig.

Genauigkeit

Mit Reed-Kontakten im Gleisbett und Neodym-Magneten unter den Loks konnen die Positionenmit wenigen Zentimetern und Millisekunden Un-genauigkeit durch den Computer raumlich undzeitlich erfasst werden. Die in der Praxis erreichteGenauigkeit bei zum Beispiel Geschwindigkeitsmes-sungen liegt im Bereich von 1 – 5 % und liegtdamit auch in dem Bereich, der mit dem Zollstockbei Gleislangenbestimmungen leicht erreicht werdenkann. Diese Genauigkeit ist ausreichend aber fur diefolgenden Steuerungsaufgaben auch erforderlich.

Transponder-Funktionalitat ist wie obengeschrieben nicht notwendig. Die Auslosepositionkann fur Vorwarts- und Ruckwartsfahrt verschieden

sein. Wagen durfen den Sensor nicht auslosen.Doppeltraktion werden hier nicht betrachtet.

Lage der Ruckmelder

Eine Haltestelle braucht mindestens einen Ruck-melder. Dieser Ruckmelder muss mindestens diemaximale Zuglange + Loklange + Bremslange (siehe Ziel-bremsen) vor dem Prellbock oder dem roten Signalangebracht sein.

Ein Ruckmelder kann mehrere Haltestellen bedi-enen. Typische Position: vor der Einfahrtsweiche inden Bahnhof (siehe Abbildung 2).

Ruckmelder konnen auch andere Auslosungenubernehmen. Auch Ruckmelder ohne zugeordneteHaltestelle konnen an bestimmten Stellen sinnvollsein. Man kann insgesamt mit bemerkenswert wenigRuckmeldern auskommen.

Umsetzung

Als Reed-Kontakte konnen normale Reed-Schalterim Glasrohrchen verwendet werden. Diese sind leichtverfugbar und kosten wenige Cent. Die Ruckmeldungerfolgt uber die Eingange des DS64 Weichendecodersvon Digitrax. Damit spart man die Ruckmeldede-coder komplett.

Untern den Loks kleben Neodym-Magnete mitKantenlange von 2 cm (ca. 2e). Diese Magnete losenauch bei hoheren Lok-Geschwindigkeiten zuverlassigaus. Eine zuverlassige Auslosung der Ruckmelder istfur einen sicheren Betrieb mit dem Computer absolutnotwendig.

Zusammenfassung

• Eine Computersteuerung braucht genauePosition- und Zeitangaben der Loks

• Erforderliche Genauigkeit: Fehler beiGeschwindigkeitsmessungen < 5%

• Kostengunstige Losung: Reed Kontakte.Transponder werden nicht benotigt.

• Bei guter Wahl der Ruckmelderpositionen undflexibler Auswertung braucht man sehr wenigRuckmelder.

2. Lok-Orientierung

Die Digitalzentrale kann eine Lok vorwarts oderruckwarts fahren lassen. Wohin die Lok dann aber

Seite 2 / 10

Page 3: Konzepte einer Modellbahn- steuerung mit dem Computer · 2018. 1. 8. · Konzepte einer Modellbahn-steuerung mit dem Computer Thorsten Forstemann,¨ thorsten@foerstemann.name Hannover,

Abb. 2: Reed-Kontakt an typischer Position vor einerWeiche

Abb. 3: Verkabelung unter der Position in Abbildung 2

auf der Anlage fahrt, hangt davon ab, wie sie auf derAnlage steht. Dabei gibt es zwei Moglichkeiten:

1. Fahrt die Lok bei Vorwartsfahrt beim Blick vonoben auf die Anlage im Urzeigersinn, so giltOCW = true (Orientation ClockWise).

2. Fahrt die Lok bei Vorwartsfahrt beim Blick vonoben auf die Anlage entgegen dem Uhrzeiger, sogilt OCW = false.

Die Charakterisierung mit dem Uhrzeigersinn magnicht fur jede Anlagenform sinnvoll sein – auf jedenFall gibt es aber nur zwei Falle zu unterscheiden.

Die Fahrtrichtung direction der Lok wird nun nichtmehr durch forward und backward sondern durch CW

(clockwise) und CC (counter clock) festgelegt. DieseFestlegung hangt nicht mehr von der Orientierungder Lok ab.

Soll zum Beispiel die untere Lok in Abbildung 5aus dem Blindgleis hinausfahren, so fahrt sie immerCW – ob die Lok dann vorwarts oder ruckwarts fahrt,hangt von der Orientierung der Lok ab.

Abb. 4: Typische Verkabelung der Weichen- undRuckmelde-Decoder

OCW = true

CC → backward

CW → forward

Abb. 5: Beide Loks haben die Orientalion OCW = true.Aus dem oberen Gleis kommt man nur in Rich-tung CC heraus, aus dem Unteren nur in Rich-tung CW. Fur die Loks ergeben sich somit dienormalen Fahrtrichtungen backward und forward.

Die Richtungsangabe des Fahrbefehls an die Lokbezieht sich also auf die (unveranderliche) Anlageund nicht auf die veranderliche Lok (Aufgleisen,Schleifendurchfahrt).

Die Richtung der Lok (CW oder CC) und ihre Ori-entierung (OCW) bestimmen, ob die Lok vorwartsoder ruckwarts fahrt. Der Zusammenhang entsprichteiner logischen XOR-Operation und ist der Tabelle 1dargestellt.

OCW muss beim Aufgleisen der Lok einmaliggesetzt werden. Hat die Anlage eine Schleife, somuss OCW beim Durchfahren invertiert werden. Dies

Tab. 1: Zusammenhang zwischen gewohnlicher Fahrtrich-tungsbeschreibung (forward und backward) undneuer Fahrtrichtungsbeschreibung (CW und CC)in Abhangigkeit der Lokorientierung OCW

OCW = true OCW = false

CW →forward CW →backward

CC →backward CC →forward

Seite 3 / 10

Page 4: Konzepte einer Modellbahn- steuerung mit dem Computer · 2018. 1. 8. · Konzepte einer Modellbahn-steuerung mit dem Computer Thorsten Forstemann,¨ thorsten@foerstemann.name Hannover,

kann bei Routen durch den Befehl flip () automatischerledigt werden (siehe Abschnitt Routenbefehle).

Der folgende Befehl move(speed, direction ) bundeltdie getroffenen Festlegungen und beschleunigt eineLok auf die Geschwindigkeit speed in Richtungdirection . Dabei kann direction entweder CW oder CC

annehmen. Der Befehlt hat dann folgenden Pseudo-Code:

1 move ( speed , d i r e c t i o n )2 i f ( d i r e c t i o n == CW) x o r OCW then3 l o k . s e t D i r e c t i o n = backward4 e l s e5 l o k . s e t D i r e c t i o n = f o r w a r d6 l o k . s e t S p e e d ( speed )7 re tu rn

Zusammenfassung

• Die Fahrtrichtung der Lok wird nicht mehrdurch forward und backward sondern durch clock-wise (CW) und counter clock (CC) festgelegt.

• Großer Vorteil: Fahrbefehle werden universeller.

• Kleiner Nachteil: Ein neuer Parameter Lokori-entierung (OCW) ist erforderlich.

• Der Parameter muss einmalig beim Aufgleisenmanuell gesetzt werden und bei Durchfahreneiner Schleife durch die Software invertiert wer-den.

3. Zielbremsen

Das Zielbremsen ist einer der wichtigen Kniffe beiunserer Modellbahnsteuerung. Dabei wird die Lokdurch den Computer an einer bestimmten Haltepo-sition zum stehen gebracht. Dies wird durch eineberechnete Zeitverzogerung zwischen der Auslosungdes Halte-Sensors durch die Lok und dem Versendendes Halte-Befehls an die Lok durch den Computererreicht. Damit der Computer diese Zeitverzogerungberechnen kann, sind Randbedingungen festzulegenund Parameter zu bestimmen.

Lok-Geschwindigkeit

Zunachst muss mindestens eine Lok-Geschwindigkeitfestgelegt werden. Dies ist die Geschwindigkeit, mitder die Lok uber den Halte-Sensor fahrt. Dieser Wertkann einmalig frei gewahlt werden (z.B. Fahrstufe8), ist dann aber festgelegt und wird im FolgendenSPD1.step (speed 1 step) genannt. Bei Bedarf kann

man auch noch weitere Geschwindigkeiten (2, 3 usw.)festlegen.

Dann muss die reale Geschwindigkeit der Lok beiSPD1 gemessen werden. Dieser Wert wird im Folgen-den SPD1.mess genannt und hat die Einheit cm/sec.Fur Vorwarts- und Ruckwartsfahrt sollten sich dieWerte kaum unterscheiden. Bei den Messungen isteine Genauigkeit von mindestens 5 % anzustrebenund nach unserer Erfahrung auch erreichbar. DieMessungen konnen bequem durch Skripte (Routen)vorgenommen werden.

Bremspunktbestimmung

Danach erfolgt die Bremspunktbestimmung der Lok.Dazu wird die Lok zunachst am Halte-Sensor vonder Geschwindigkeit SPD1 ohne Zeitverzogerung zumStehen gebracht. (Fahrbefehl 0, nicht Nothalt).Durch die Decoder-interne Bremsverzogerung (typ-isch CV41) benotigt die Lok eine gewisse Strecke,um zum Stehen zu kommen. Diese Stecke wird beiVorwartsfahrt vom Haltesensor bis zur VorderkanteLok in cm gemessen und im Folgenden ROLLF1

(rolling forward speed 1) genannt. Bei Ruckwarts-fahrt wird bis zur Hinterkante Lok (zeigt in Fahrtrich-tung) gemessen und der Wert wird ROLLB1 (rollingbackward speed 1) genannt. Auch diese Messun-gen konnen spater durch Skripte (Routen) bequemdurchgefuhrt werden.

Gleislange

Dann wird die Gleislange benotigt. Dies ist derAbstand vom gewunschten Haltepunkt (Vorderkanteder Lok bei Vorwartsfahrt und Zugbetrieb) und demSensor in cm. Dieser Wert wird TRACK genannt undmuss einmalig mit dem Zollstock bestimmt werden.Auch hier ist eine Genauigkeit von 5 % anzustreben.

Zuglange

Als letztes muss die Zuglange bestimmt werden. Diesist die reine Zugange ohne Lok in cm und wird TRAIN

genannt. Zieht die Lok den Zug bei Vorwartsfahrt,so hat TRAIN ein positives Vorzeichen (siehe Abbil-dungen 6 und 9), schiebt die Lok bei Vorwahrtsfahrtden Zug, so ist TRAIN negativ (siehe Abbildungen7 und 8). Dieser Wert andert sich nur, wenn dieWagen umgekuppelt werden.

Berechnung des Haltepunktes

Mit Hilfe der oben genannten Parameter und Fes-tlegungen kann der Computer die Zeitverzogerung

Seite 4 / 10

Page 5: Konzepte einer Modellbahn- steuerung mit dem Computer · 2018. 1. 8. · Konzepte einer Modellbahn-steuerung mit dem Computer Thorsten Forstemann,¨ thorsten@foerstemann.name Hannover,

Länge

Geschwindigkeit

SPD1

0

Sensor-auslösung

Halte-befehl

Loksteht

Sensor

ROLLF1

TRAIN

TRACK

length

Abb. 6: Zielbremsen bei Vorwartsfahrt und Zugbetrieb

GeschwindigkeitSensor-

auslösungHalte-befehl

Loksteht

Länge

SPD1

0

Sensor

ROLLB1

–TRAIN

TRACK

length

Abb. 7: Zielbremsen bei Ruckwartsfahrt und Zugbetrieb

fur den Haltebefehl (Fahrstufe 0) nach Uberfahrendes Halte-Sensors berechnen. Dazu wird zunachstdie Position (length) nach dem Haltesensor berechnet,bei dem der Haltebefehl abgesendet wird. Dann wirddie Zeitverzogerung (time) berechnet und gewartet;am Ende wird die Lok angehalten. Die Abbildungen6 bis 9 geben einen Uberblick uber die verschiedenenSituationen und Parameter. Der Pseudo-Code siehtetwa so aus:

1 w a i t A c t i v e ( H a l t e s e n s o r )2 i f ( l o k . g e t D i r e c t i o n == f o r w a r d ) then3 l e n g t h = min (TRACK, TRACK+TRAIN) − ROLLF14 e l s e5 l e n g t h = min (TRACK, TRACK−TRAIN) − ROLLB16 t ime = max ( 0 , l e n g t h ) / SPD1 . mess ∗ 10007 waitMsec ( t ime )8 l o k . s e t S p e e d ( 0 )

Die vielen Parameter werden beim Betrieb ausfolgenden Quellen ermittelt:

GeschwindigkeitSensor-

auslösungHalte-befehl

Loksteht

Länge

SPD1

0

Sensor

ROLLF1

–TRAIN

TRACK

length

Abb. 8: Zielbremsen bei Vorwartsfahrt und Schubbetrieb

GeschwindigkeitSensor-

auslösungHalte-befehl

Loksteht

Länge

SPD1

0

Sensor

ROLLB1

TRAIN

TRACK

length

Abb. 9: Zielbremsen bei Ruckwartsfahrt und Schubbetrieb

• Lok-Konfigurationsdatei: TRAIN, ROLLF1, ROLLB

1, SPD1.mess

• Track-Konfigurationsdatei: TRACK

Weitere Anwendung: Freiziehen einerWeiche

Ein weiterer Anwendungsfall der obigen Uberlegun-gen ist der Fall, bei dem ein Zug uber eine Weichefahrt und erst anhalten soll, bis diese freigezogen ist.Im Gegensatz zu oben soll der Zug also nicht bis zueinem Signal oder Prellbock vorfahren, sondern eineWeiche freiziehen.

In Abbildung 10 befinde sich in der EntfernungPOS vom Sensor eine Weiche, die freizuhalten ist. Estauchen im wesentlichen bekannte Parameter auf.Der neue Parameter LOCO ist die Lange der Lok.Da es beim Freiziehen von Weichen nicht auf hoheGenauigkeit ankommt, kann man hier eine Standard-Loklange von LOCO = 40 cm verwenden. Bei derWahl von POS kann man einen kleinen Puffer furlange Loks vorsehen.

Bei Anderung der Fahrtrichtung der Lok oder beimWechsel von Zug auf Schubbetrieb gelten die gleichenUberlegungen wie oben. Der Pseudo-Code sieht dannetwa so aus:

1w a i t A c t i v e ( H a l t e s e n s o r )2i f ( l o k . g e t D i r e c t i o n == f o r w a r d ) then3l e n g t h = max (LOCO,LOCO+TRAIN)+POS −ROLLF14e l s e5l e n g t h = max (LOCO,LOCO−TRAIN)+POS −ROLLB16t ime = max ( 0 , l e n g t h ) / SPD1 . mess ∗ 10007waitMsec ( t ime )8l o k . s e t S p e e d ( 0 )

Man beachte, dass POS sogar negativ sein kann, d.h.der Sensor befindet sich in Fahrtrichtung gesehenhinter der freizuziehenden Weiche.

Erweiterung: Flexible Halteposition

Bei den Beispielen oben fahrt der Zug immer maxi-mal durch das Gleis durch bis zum Signal oder Prell-

Seite 5 / 10

Page 6: Konzepte einer Modellbahn- steuerung mit dem Computer · 2018. 1. 8. · Konzepte einer Modellbahn-steuerung mit dem Computer Thorsten Forstemann,¨ thorsten@foerstemann.name Hannover,

Länge

Geschwindigkeit

SPD1

0

Sensor-auslösung

Halte-befehl

Loksteht

Sensor

ROLLF1

TRAIN POS

length

LOCO

Abb. 10: Freiziehen bei Vorwartsfahrt und Zugbetrieb biszur Position POS

bock. Fur lange Zuge mag das wunschenswert sein,kurze Zuge konnten aber auch in der Mitte des Bahn-steiges anhalten. Mit den oben eingefuhrten Pa-rametern und etwas Rechnen lasst sich das leichtbewerkstelligen.

Bei uns hat sich folgendes Vorgehen bewahrt:Es wird zusatzlich zur Gleislange TRACK eine Wun-schlange WISH festgelegt, die den Mittelpunkt desBahnsteiges markiert – ein extrem kurzer Zug sollteidealerweise dort halten. Langere Zuge werden soangehalten, dass ihre Zugmitte an dieser Positionzum Stehen kommt. Dabei wird aber nie die maxi-male Gleislange TRACK uberfahren.

Mit dem neuen Parameter WISH und ein paarzusatzlichen Zeilen im Haltebefehl kann so ein rechtrealistisches Anhalten von Zugen unter verschieden-sten Randbedingungen realisiert werden.

Anmerkungen zur Genauigkeit

Ungenauigkeiten schleichen sich uber jeden derobigen Parameter ein. Mit etwas Muhe erreichtman bei der Parameterbestimmung im Schnitt eineGenauigkeit von 5 % (zum Beispiel die Messung derGleislange mit dem Zollstock). Bei einer typischenGleislange TRACK ist zum Beispiel length = 300 cmund damit bei einem Fehler von 5 % die Haltepositionder Loks auf 15 cm genau. Diese Genauigkeit erre-ichen auch wir im praktischen Betrieb – uberwiegendsogar eine Genauigkeit von 5 cm.

Eine hohere Genauigkeit ist nur mit hoheremAufwand bei der Bestimmung aller Parametermoglich. Da die Unterschiede von kalten und war-mgefahrenen Loks auch in dieser Großenordnungliegen, lohnt der Aufwand jedoch nicht.

Zusammenfassung

• Mit einigen Parametern konnen Loks flexibelauf der Anlage gesteuert werden.

• Je Lok muss einmalig festgelegt werden:SPD1; und gemessen werden: SPD1.mess, ROLLF1,ROLLB1 (Messung durch spezielle Routen)

• Je Gleis muss einmalig festgelegt werden: TRACK

(Messung durch Zollstock) und ggf. WISH

• Je Zug auf der Anlage muss beim Aufgleisen fest-gelegt werden: TRAIN (Messung durch Zollstock)mit Vorzeichen

4. Routen-Befehle

Eine Route ist ein Skript mit wenigen, sich wieder-holenden und einfachen Befehlen, die im Folgendenerlautert werden. Man kommt mit recht wenigen Be-fehlen aus, um eine Modellbahn zu automatisieren.

Manche der folgenden Befehle sind so einfach, dasssie nur der Vollstandigkeit wegen hier aufgefuhrtwerden. Der Pseudo-Code orientiert sich an denJython-Befehlen von JMRI.

Warte-Befehl

Dieser Befehl hat nur den Parameter time und wartettime Millisekunden. Der waitMsec-Befehl2 steht inder Klasse AbstractAutomaton zur Verfugung. Der aus-geklugelte Pseudo-Code sieht dann etwa folgender-maßen aus:

1warten ( t ime )2waitMsec ( t ime )3re tu rn

Weichen- und Signal-Befehl

Diese Befehle34 haben zwei Parameter: turnout bzw.head und state . Sie bringen die Weiche turnout oderdas Signal head in die Position state . Der Parameterstate ist bei Weichen entweder THROWN oder CLOSED

und bei Signalen entweder, RED, GREEN, YELLOW oderDARK.

1weiche ( t u r n o u t , s t a t e )2t u r n o u t . s e t S t a t e ( s t a t e )3re tu rn45s i g n a l ( head , s t a t e )6head . s e t S t a t e ( s t a t e )7re tu rn

2http://jmri.sourceforge.net/JavaDoc/doc/

jmri/jmrit/automat/AbstractAutomaton.html#

waitMsec(int)3http://jmri.sourceforge.net/JavaDoc/doc/jmri/

Turnout.html#setCommandedState(int)4http://jmri.sourceforge.net/JavaDoc/doc/jmri/

SignalHead.html#setAppearance(int)

Seite 6 / 10

Page 7: Konzepte einer Modellbahn- steuerung mit dem Computer · 2018. 1. 8. · Konzepte einer Modellbahn-steuerung mit dem Computer Thorsten Forstemann,¨ thorsten@foerstemann.name Hannover,

Sensor-Befehl

Dieser Befehl5 hat nur den Parameter name undwartet bis der Sensor name auslost.

1 s e n s o r ( name )2 w a i t S e n s o r A c t i v e ( name )3 re tu rn

Move-Befehl

Jetzt wird es etwas interessanter. Diesen Be-fehl kennen wir schon aus dem Abschnitt Lok-Orientierung. Er hat die Parameter speed unddirection und beschleunigt eine Lok in Richtung6

direction mit Geschwindigkeit7 speed.

speed kann dabei die Kennungen von vorherdefinierten Geschwindigkeiten annehmen. Wir kom-men mit vier Geschwindigkeiten aus (SPD1 bis SPD4).

Der Parameter direction ist entweder CW oder CC.Der Befehl readConfig() liest die Konfigurationsdateienneu ein, in denen zum Beispiel die Variable OCW

gespeichert ist. Der bekannte Parameter OCW giltjeweils nur fur eine Lok. Aus diesem Grund wird hierlok .OCW geschrieben. Die Lok muss nicht ubergebenwerden, da innerhalb einer Route die betreffendeLok bekannt ist. Gleiches gilt auch fur den Funk-tionsparameter speed mit dem dann speed.step (sieheZielbremsen) ermittelt wird. speed.step hangt auchvon der Lok ab – deswegen wird hier etwas lax lok .

speed.step geschrieben.

Im Prinzip wird mit diesem Befehl auch das Lichtund der Ton der Lok eingeschaltet, ein wenig gewartetund dann erst losgefahren. Im Pseudo-Code sinddiese Befehle einfach mal ausgelassen.

1 move ( speed , d i r e c t i o n )2 r e a d C o n f i g ( )3 i f ( d i r e c t i o n == CW ) x o r l o k .OCW then4 l o k . s e t D i r e c t i o n = backward5 e l s e6 l o k . s e t D i r e c t i o n = f o r w a r d7 l o k . s e t S p e e d ( l o k . speed . s t e p )8 re tu rn

Beispiel

Mit den vorgestellten Befehlen kann man schon einkleinere Beispiel konstruieren. Der bell (..) -Befehl

5http://jmri.sourceforge.net/JavaDoc/doc/

jmri/jmrit/automat/AbstractAutomaton.html#

waitSensorActive(jmri.Sensor)6http://jmri.sourceforge.net/JavaDoc/doc/jmri/

Throttle.html#setIsForward(boolean)7http://jmri.sourceforge.net/JavaDoc/doc/jmri/

Throttle.html#setSpeedSetting(float)

wird spater im Text vorgestellt. Die Beispiel-Routefuhrt durch eine Baustelle:

1# Abfahr t Bahnhof23weiche ( A u s f a h r t w e s t , CLOSED )4# Aus f ah r t swe i c h e s c h a l t e n56s i g n a l ( A u s f a h r t w e s t , GREEN )7# S i g n a l au f Grun89warten ( 5000 )10# warten , b i s de r Lok f u h r e r d i e Z i g a r e t t e

ausgemacht hat1112move ( SPD4 , CW )13# l o s f a h r e n mit SPD4 ( s c h n e l l )1415# Bau s t e l l e , Langsamfahrt1617s e n s o r ( B a u s t e l l e e a s t )18# Sen so r au s l o s ung1920move ( SPD2 , CW )21# abbremsen au f SPD22223b e l l ( 0 , 200 )24# Glocke s o f o r t e i n s c h a l t e n und nach 200 cm

au s s c h a l t e n2526# f r e i e Fahr t2728s e n s o r ( B a u s t e l l e w e s t )29# Sen so r au s l o s ung3031move ( SPD4 , CW )32# wiede r b e s c h l e u n i g e n au f SPD43334. . .

Flip-Befehl

Dieser Befehl hat keinen Parameter. Er in-vertiert OCW (siehe Lok-Orientierung) bei einerSchleifendurchfahrt. Der Befehl writeConfig () schreibtdie Parameter (hier OCW) in die Konfigurations-dateien zuruck. Der Parameter OCW gilt jeweils nurfur eine Lok. Aus diesem Grund wird hier lok .OCW

geschrieben.

1f l i p ( )2r e a d C o n f i g ( )3l o k .OCW = not ( l o k .OCW )4w r i t e C o n f i g ( )5re tu rn

Halte-Befehl

Dieser Befehl ist im Prinzip aus dem AbschnittZielbremsen ubernommen. Er hat die Parametersensor, TRACK und speed und bremst eine Lok mit

Seite 7 / 10

Page 8: Konzepte einer Modellbahn- steuerung mit dem Computer · 2018. 1. 8. · Konzepte einer Modellbahn-steuerung mit dem Computer Thorsten Forstemann,¨ thorsten@foerstemann.name Hannover,

Geschwindigkeit speed ab dem Sensor sensor so langeab, bis sie auf der Position TRACK zum stehen kommt.

speed kann dabei die Kennungen von vorherdefinierten Geschwindigkeiten annehmen. Wir kom-men mit zwei Geschwindigkeiten aus (SPD1 furlangsames Einfahren und SPD2 fur schnelles Ein-fahren). Fur jede Geschwindigkeit gibt es unter-schiedliche Werte von ROLLF1 und ROLLB1.

Der Befehl readConfig() liest die Konfigurations-dateien neu ein, in denen zum Beispiel die VariableTRAIN oder ROLLB1 gespeichert ist. Parameter, dienur fur eine Lok gelten, werden hier wieder als lok .

PARAMETER geschrieben.

1 h a l t ( s e n s o r , TRACK, speed )2 w a i t A c t i v e ( s e n s o r )3 r e a d C o n f i g ( )4 i f ( l o k . g e t D i r e c t i o n == f o r w a r d ) then5 l e n g t h = min (TRACK,TRACK+l o k . TRAIN)− l o k .

ROLLF16 e l s e7 l e n g t h = min (TRACK,TRACK−l o k . TRAIN)− l o k .

ROLLB18 t ime = max ( 0 , l e n g t h ) / l o k . speed . mess ∗10009 waitMsec ( t ime )

10 l o k . s e t S p e e d ( 0 )

Turn-Befehl

Diesen Befehl kennen wir schon aus dem AbschnittZielbremsen. Er hat die Parameter sensor, POS undspeed und bremst eine Lok mit Geschwindigkeit speed

ab dem Sensor sensor so lange ab, bis sie die PositionPOS in Fahrtrichtung hinter dem Sensor inklusive Zuguberfahren hat. POS ist dabei die Entfernung zumSensor in Zentimeter. Liegt POS in Fahrtrichtungvor dem Sensor, so ist POS negativ.

speed kann dabei die Kennungen von vorherdefinierten Geschwindigkeiten annehmen. Wir kom-men mit zwei Geschwindigkeiten aus (SPD1 furlangsames Einfahren und SPD2 fur schnelles Ein-fahren). Fur jede Geschwindigkeit gibt es unter-schiedliche Werte von ROLLF1 und ROLLB1. Es sindaber die selben wie beim Halt-Befehl.

Der Befehl readConfig() liest die Konfigurations-dateien neu ein, in denen zum Beispiel die VariableTRAIN oder ROLLB1 gespeichert ist. Parameter, dienur fur eine Lok gelten, werden hier wieder als lok .

PARAMETER geschrieben.Pseudo-Code sieht dann etwa folgendermaßen aus:

1 t u r n ( s e n s o r , POS, speed )2 w a i t A c t i v e ( H a l t e s e n s o r )3 i f ( l o k . g e t D i r e c t i o n == f o r w a r d ) then4 l e n g t h = max (LOCO, LOCO+l o k . TRAIN)+POS −

l o k . ROLLF15 e l s e

6 l e n g t h = max (LOCO, LOCO−l o k . TRAIN)+POS −l o k . ROLLB1

7 t ime = max ( 0 , l e n g t h ) / l o k . speed . mess ∗10008 waitMsec ( t ime )9 l o k . s e t S p e e d ( 0 )

10 re tu rn

Bell- und Horn-Befehl

Die Befehle bell (..) und horn (..) schalten die Glockeein und aus und losen einen Piff aus. Diese Soundswerden typischerweise uber Decoder-Funktionen 1–8geschaltet. Die Funktionszuordnung kann fur jedeLok anders sein und wird in einer Zuordnungstabellein der Lok-Konfigurationdatei gespeichert. Diesewird mit readConfig() eingelesen. Die Funktionsnum-mern werden im Folgenden mit lok .FnBell oder lok .

FnHorn bezeichnet.

Statt die Sounds einfach ein und wieder auszuschal-ten konnen die Effekte mit den Parametern aus demAbschnitt Zielbremsen genauer gesteuert werden.Der Horn-Befehl hat dazu zwei Parameter: speed

gibt die Geschwindigkeit an, mit der die Lok geradefahrt und EIN gibt die Entfernung in Zentimeter an,bei der der Pfiff ausgelost werden soll. Damit kannman die Auslosung des Pfiffs unabhangig von denSensoren sehr genau festlegen.

Der Bell-Befehl hat gegenuber dem Horn-Befehlnoch zusatzlich den Parameter AUS. Dieser Parame-ter legt die Entfernung in Zentimetern fest, bei demdie Glocke wieder ausgeschaltet wird. Der Pseu-docode sieht in etwa so aus:

1horn ( speed , EIN )2r e a d C o n f i g ( )3t ime = EIN/ l o k . speed . mess ∗ 10004waitMsec ( t ime )5l o k . setFN ( l o k . FnHorn )6re tu rn78b e l l ( speed , EIN , AUS)9r e a d C o n f i g ( )10t ime = EIN/ l o k . speed . mess ∗ 100011waitMsec ( t ime )12l o k . setFN ( l o k . F n B e l l )13t ime = (AUS − EIN ) / l o k . speed . mess ∗ 100014waitMsec ( t ime )15l o k . setFN ( l o k . F n B e l l )16re tu rn

Ein kleiner Hinweis noch zur Ausfuhrung diesesBefehls. Fahrt eine Lok mit Glocke durch denBahnhof, so sollen gegebenenfalls parallel weitereSensorauslosungen vom Skript registriert und aus-gewertet werden. Der Befehl waitMsec() blockiertaber das Skript, wahrend die Lok weiterfahrt. Ausdiesem Grund mussen der Bell- und Horn-Befehl

Seite 8 / 10

Page 9: Konzepte einer Modellbahn- steuerung mit dem Computer · 2018. 1. 8. · Konzepte einer Modellbahn-steuerung mit dem Computer Thorsten Forstemann,¨ thorsten@foerstemann.name Hannover,

parallel zum Skript als eigener Thread ausgefuhrtwerden. Bei JMRI kann das leicht durch eine neueAbstractAutomaton-Instanz erledigt werden. Solche dur-chaus wichtigen Details sind im Pseudocode ausge-lassen.

5. Routen

Routen sind kleine Skripte bestehend aus einer se-riellen Abfolge weniger Befehle aus dem AbschnittRouten-Befehle. Eine Route hat ein paar wesentlicheEigenschaften:

• Eine Route steuert genau eine Lok.

• Eine Route holt eine Lok aus einer Startpositionab, steuert sie uber die Anlage und bring sie aneiner Halteposition wieder zum stehen.

• Routen konnen parallel ausgefuhrt werden.Dann fahren mehrere Loks gleichzeitig auf derAnlage.

Damit man mit Routen den Betrieb einer Anlagebequem steuern kann, sind einige Randbedingungenfestzulegen. Diese werden im Folgenden dargestellt.

Haltepositionen auf der Anlage

Loks durfen auf der Anlage nur auf bestimmten Posi-tionen geparkt werden. Typischerweise sind das dieGleise im Bahnhof und die Abstellgleise. Die Hal-tepositionen werden eindeutig benannt (zum BeispielTRK1 fur Gleis 1 im Bahnhof).

Jede Halteposition auf der Anlage hat die Param-eter TRACK und WISH (siehe Abschnitt Zielbremsen).Kann eine Halteposition aus verschiedenen Richtun-gen (und damit uber verschiedene Haltesensoren)angefahren werden, so gibt es fur eine Haltepositionauch mehrere TRACK- und WISH-Parameter.

Routenbenennung und Lokverfolgung

Als Start- und Endpunkt einer Route kommtgrundsatzlich jeder Haltepunkt auf der Anlage inFrage. Zwischen zwei Haltepunkten kann es auchmehrere Routen geben. Mit diesen Randbedingun-gen hat sich folgende Routenbenennung bewahrt:

Startposition Halteposition Beschreibung

Also zum Beispiel steht der NameTRK1 TRK2 222 fur eine Route, die eineLok von TRK1 (Gleis 1 im Bahnhof) nach TRK2

Abb. 11: Bildschirmfoto des Routen Panels

(Gleis 2) fahrt und dabei drei mal im Kreis durchGleis 2 fahrt.

Wird die Route gestartet, so muss der Computerwissen, mit welcher Lok er losfahren muss. BeimAufgleisen einer Lok muss die Halteposition einmaliggesetzt werden. Dann kann der Computer anhanddes Routennamens die Lokposition automatisch ak-tualisieren.

Das Routen-Panel

Hauptsachlich wird der Betrieb durch Routen ges-teuert. Zum Auslosen von Routen dient das Routen-Panel in Abbildung 11. Das Panel besteht aus 7Spalten.

1. Spalte: Lokname und -nummer

2. Spalte: Lok-Orientierung als Toggle-Button8

(CW/CC); muss nur beim Aufgleisen einmaliggesetzt werden.

3. Spalte: Aktuelle Halteposition der Lok alsAusklappmenu (JCombobox9 ); muss nur beimAufgleisen einmalig gesetzt werden. “- - - -“bedeutet, die Lok seht nicht auf der Anlage.

4. Spalte: Set-Button aktualisiert die Halteposi-tion der Lok.

5. Spalte: Mogliche Zielpositionen

6. Spalte: run-Button startet die Route; die dunkleFarbung markiert Loks, die bereits in benutztwurden.

8http://docs.oracle.com/javase/1.4.2/docs/api/

javax/swing/JButton.html9http://docs.oracle.com/javase/1.4.2/docs/api/

javax/swing/JComboBox.html

Seite 9 / 10

Page 10: Konzepte einer Modellbahn- steuerung mit dem Computer · 2018. 1. 8. · Konzepte einer Modellbahn-steuerung mit dem Computer Thorsten Forstemann,¨ thorsten@foerstemann.name Hannover,

7. Spalte: edit-Buton ladt die route in den Editor

Eine Beispielroute

Die erste Lok (StainzII) in Abbildung 11 konnte z.B.von YRD2 nach DEPO fahren. Das entsprechendeoriginale Routenskript mit den bekannten Routen-Befehlen sieht wie folgt aus:

1 s e l f . we iche ( ”YRD1 IN” , ”CLOSED” )2 s e l f . we iche ( ”YRD2 IN” , ”THROWN” )3 s e l f . we iche ( ”UTRN DIV” , ”CLOSED” )4 s e l f . we iche ( ”UTRN IN” , ”THROWN” )5 s e l f . s i g n a l ( ”GRADE” , ”GREEN” )6 s e l f . move ( ”SPD3” , ”CW” )78 s e l f . s e n s o r ( ”TUNNEL” )9 s e l f . s i g n a l ( ” DIIR ” , ”GREEN” )

10 s e l f . we iche ( ”EAST IN” , ”THROWN” )11 s e l f . we iche ( ”RAMP IN” , ”CLOSED” )1213 s e l f . s e n s o r ( ”UTRN IN” )14 s e l f . s i g n a l ( ”GRADE” , ”RED” )15 s e l f . we iche ( ”DEPO IN” , ”CLOSED” )1617 s e l f . s e n s o r ( ”EAST IN” )18 s e l f . s i g n a l ( ”TRK4W” , ”YELLOW” )19 s e l f . s i g n a l ( ” DIIR ” , ”RED” )20 s e l f . move ( ”SPD2” , ”CW” )2122 s e l f . s e n s o r ( ”TRK4” )23 s e l f . move ( ”SPD1” , ”CW” )2425 s e l f . s e n s o r ( ”WEST OUT” )26 s e l f . s i g n a l ( ”TOWER” , ”DARK” )27 s e l f . t u r n ( ”SPD1” , 20)28 s e l f . we iche ( ”WEST OUT” , ”THROWN” )29 s e l f . we iche ( ”DEPO IN” , ”THROWN” )30 s e l f . warten (2000)31 s e l f . s i g n a l ( ”TOWER” , ”GREEN” )32 s e l f . s i g n a l ( ”TRK4W” , ”RED” )33 s e l f . move ( ”SPD1” , ”CC” )3435 s e l f . s e n s o r ( ”WEST OUT” )36 s e l f . s i g n a l ( ”TOWER” , ”DARK” )37 s e l f . h a l t ( ”SPD1” , ”DEPO” )

6. Fahrplane

Fahrplane sind Skripte die Routen aufrufen. DieRouten konnen dabei auch parallel ausgefuhrt wer-den. Einzelne Routen dauern wenige Minuten –Fahrplane sind in der Regel 10 bis 20 Minuten lang.

Es ist sinnvoll durch Fahrplane Loks nur zutauschen – belegte Haltepositionen jedoch nicht zuverandern. Auf diese weise konnen Fahrplane nahtloshintereinander ausgefuhrt werden.

Fahrplanbefehle

Analog zu den Routen-Befehlen gibt es fur FahrplaneFahrplanbefehle:

• route(x): startet die Route x im Hintergrundals eigenen Thread

• finish(x): wartet bis Route x beendet ist

• sensor(x): wartet auf Auslosung von Sensor x

• warten(x): wartet x Millisekunden

• plan(x): startet Fahrplan x (nicht im Hinter-grund – Fahrplane durfen nicht parallel aus-gefuhrt werden)

Fazit

Eine Modellbahnsoftware wie JMRI, die durch eineSkriptsprache wie Python erweitert werden kann, er-laubt nahezu beliebig Steuerungsaufgaben auf derModellbahn zu ubernehmen, ohne dass man spurbaran konzeptionelle Grenzen stoßt. Mehr noch: JederAspekt der Modellbahnsteuerung, den man von derHardware in die Software verlagert, profitiert nichtnur von der viel großeren Flexibilitat der Softwaregegenuber der Hardware – jeder in Software abge-bildete Aspekt spart auch noch Geld fur die nichtmehr benotigte Hardware. Zum Beispiel wurdehier eine Zugverfolgung ohne aufwandige Transpon-dertechnik realisiert. Und schließlich: die Reduktionder Modellbahn-Hardware erhoht auch noch die Zu-verlassigkeit.

Das vorgestellte Konzept zeigt, dass aus weni-gen aber durchdachten Grund-Befehlen einfach undschnell komplexe Steuerungsaufgaben (Fahrplane)zusammengesetzt werden konnen, die eine Modell-bahn uber Stunden vollig automatisieren. Auchbeim manuellen Fahren greift man gerne auf Routenzuruck, da sie viele fehleranfallige Aufgaben bundelnund bequem abrufbar machen.

Es bleibt aus meiner Sicht nur ein Nachteil: Wersich mit der Modellbahn beschaftigt, um nicht vordem Rechner zu sitzen, sollte sich nach einer anderenLosung umsehen.

Seite 10 / 10