ein Rocrail Stellpult für den FREMO Bahnhof Borgstede


Rocrail-Umsetzung eines Hardware-Stellpultes für einen Bahnhof zum Einsatz im Fremo.


Einführung

Seit einigen Jahren bin ich nach dem Wiederausbruch des Modellbahnvirus jetzt im FREMO aktiv. Auf einem Treffen letztes Jahr habe ich mit einem Vereinskollegen eine Arbeitsgemeinschaft gegründet und Landschaft gegen Technik getauscht. So baue ich jetzt das Stellpult für sein neues Bahnhofsprojekt:
Borgstede, ein Abzweigbahnhof an der ehemaligen Strecke von Varel nach Neuenburg.
borgstede-flurplan180.jpg


Anforderungen

  • Das Stellpult soll in der letzten Baustufe aus echter Hardware bestehen: Schalter und Led.
  • In Optik und Bedieung angelehnt an ein Spurplanstellwerk → Rocrail!
  • Wichtiger als eine genaue Abbildung der Vorbildtechnik ist Bedienbarkeit auch durch nur kurz eingewiesenes Personal.
  • Es sollten Fahrstraßen benutzt werden und Flankenschutz verwendet.
  • Automatische Auflösung von Zugfahrstrassen durch Gleisrückmelder
  • Anders als das echte Borgstede soll die Modellumsetzung mit Lichtsignalen ausgestattet sein - und diese natürlich sinnvoll mit den Fahrstraßen gekoppelt.
  • Durch Verriegelung sowohl der Fahrstraßen als auch der Signale sollen Fehlbedienungen möglichst ausgeschlossen werden.
  • Der Bahnhof wird an allen drei Enden mit FREMO Streckenblock ausgestattet.


Die Umsetzung

gibt es bisher nur “virtuell” in Rocrail und sieht so aus:
borgstede-layout-mitblockvarel.jpg


Die Bedienung

die Bedienung sollte so einfach wie möglich sein - und trotzdem die oben genannten Anforderungen, vor allem die Nutzun von Fahrstraßen, erfüllen. Dazu gibt es für jeden möglichen Start- und Endpunkt einen Taster. Der Bediener drückt immer zwei Tasten: vom Startpunkt der Fahrstraße zum Zielpunkt der Fahrstraße. Die entsprechende Fahrstraße wird ausgewählt und geprüft, ob alle Elemente unverriegelt sind. Die Prüfung macht Rocrail automatisch, und, wenn erfolgreich, werden die Weichen gelegt und anschließend die Signale gezogen. Für Zugfahrstraßen nutzt man grüne Knöpfe und für Rangierfahrstraßen graue. Die grün/grauen Knöpfe werden für beide Fahrstraßen benutzt. Als Grundregel überspringt man keinen Knopf, sondern geht immer zum nächsten passend farbigen Knopf. Die erfolgreich ausgewählte Fahrstraße wird am Stellpult ausgeleuchtet. Hier als Beispiel eine Zugfahrstraße von Neuenburg nach Gleis 1 sowie eine parallel gestellte Rangierfahrstraße von Gleis 2 nach Gleis 6. Die zugehörigen Taster sind blau umkringelt
Als Erweiterung der oben genannten Grundregel (kein Knopf überspringen) gibt es noch einige Spezialfahrstraßen für Zugfahrten, bei der eben doch Knöpfe übersprungen werden:

  • Durchfahrt von Neuenburg nach Varel oder umgekehrt
  • Durchfahrt von Bramlogen nach Varel oder umgekehrt
  • “lange” Einfahrt von Varel nach Gleis 2n (Bahnsteig) oder nach Gleis 9 (Abzweig)

In der Softwareumsetzung muss man die Taster natürlich nacheinander drücken. Der erste gewählte Taster (Startpunkt der Fahrstraße) färbt sich dann Gelb. Der zweite ebenfalls, wenn auch nur sehr kurz. Hat meine eine unerlaubte Kombination gewählt, so werden die beiden Knöpfe kurz rot. Als zusätzliche Debugmöglichkeit werden die gewählten Taster als Text ausgegeben und erfolgter Verschluß/Lösen von Fahrstraßen angezeigt.
In der Hardewareversion wird man aus Sicherheitsgründen beide Taster gleichzeitig drücken müssen. Also den ersten drücken und gedrückt halten, während man den Zieltaster hinzuwählt. Die falsche Kombination wird hier natürlich nicht jeden einzelnen Taster melden können, aber eine zentrale “Fehlbedienungsled” haben. Möglicherweise wird das ergänzt durch eine akustische Meldung, da für den Streckenblock-Wecker ja eh ein Lautsprecher vorhanden sein wird.
Es gibt im Moment zwei Möglichkeiten, Fahrstraßen aufzulösen:

  1. automatische Auflösung über Gleiskontakte. Wird nur für Zugfahrten implementiert. Die Gleiskontakte sind jeweils an der H-Tafel bzw. kurz vor dem Zielsignal.
  2. manuelle Auflösung: man wiederholt dieselbe Bedienhandlung, wie zum verriegeln der Fahrstraße. Also wieder Starttaster+Endtaster. Ist zwischen diesen beiden bereits eine Fahrstraße verriegelt, so wird diese aufgelöst.
    Rocrail bietet noch eine elegante Möglichkeit, Fahrstraßen über Zieltaster und FGT (Fahrstraßengruppentaste) aufzulösen. Sie ist http://wiki.rocrail.net/doku.php?id=route-wiring-de bei den Fahrstraßen beschrieben, kommt aber im Borgstede Stellpult nicht zur Anwendung.

Es ist nicht geplant, den Weichen/Signalen noch einzelne Schalter oder Taster zur Bedienung zuzuordnen. Alle möglichen Fahrten werden in Fahrstraßen abgebildet und entsprechend gesichert. Der Bediener bewegt sich also vollständig in der Start-Ziel-Systematik. Eien Ausnahme bildet hier der “Rangierbereich” zwischen dem Ziehgleis (Gleis 10) und Gleis 4/5. Er wird mit ortsgestellten Weichen bedient, um eine vom Bahnhofsbetrieb unabhängiges Spielelement zu haben. Er ist durch ein Deckungsignal vom Betriebsbahnhof abgetrennt.


Rocrail

Planerstellung und Bezeichnung

Den Plan habe ich ganz normal in der Rocrail-Gui gezeichnet. Bei Bennenung der Weichen habe ich einfach zweistellig durchnummeriert: beginnend links oben und dann runter. Unten angekommen sozusagen einen nach rechts in die zweite Spalte und dann wieder runter. Diese Systematik habe ich eisern durchgehalten, bei allem, was es zu nummerieren oder systematisch durchzugehen galt. Vor allem das spätere xml-Script mit den erlaubten Start/Ziel Kombinationen ist nur dank dieser Logik vollständig geworden. ;-) Zusätzlich zur Nummer tragen die Weichen noch ein “W” vor der Nummer.
Signale habe entsprechend den Vorbildbezeichnungen benannt, mit einem führenden “Sig”. Also “SigA/SigF/SigG” für die Einfahrtsignale, “SigP1/ SigP2/SigP3/SigN1/SigN2/SigN9” für die Ausfahrtsignale und “SigR2/SigR3/SigL6/SigL7/SigL9” für die Zwischen- und Deckungssignale. Alles klar? War mir am Anfang auch nicht. Aber lesen hilft, zum Beispiel auf den Seiten der Uni Stuttgart.

Zug- und Rangierfahrstraßen

Also, Plan gezeichnet und mit Blöcken versehen. Beim Erstellen der Fahrstraßen hilft der Anlayser. Danach wurde es ein wenig kompliziert, da ich die meisten Fahrstraßen ja doppelt haben wollte, einmal als Zugfahrstraße und einmal als Rangierfahrstraße. Jetzt kommt wieder eine meine Namenskonventionen: die vom Analyser erstellten Fahrstraßen werden beibehalten und nur um das “autogen-” gekürzt. Statt dessen wird einer Fahrstraße ein “Zf-” vorangestellt, wenn es sich um eine Zugfahrstraße handelt und entsprechend ein “Rf-” für Rangierfahrstraßen. Und damit die Fahrstraßen auch entsprechend ausgeleuchtet werden, habe ich die Plandatei (borgstede.xml) mit einem Texteditor massiv bearbeitet: Suchen und ersetzen, zum Beispiel “autogen-[Neuenburg-]-[BgsG1+]” gegen “Zf-[Neuenburg-]-[BgsG1+],Rf-[Neuenburg-]-[BgsG1+]”. Und das für jede vorhandene Fahrstraße. Natürlich müssen hinterher der Block für die Fahrstraßen selbst (zwischen <st> und </st>) korrigiert werden: Konkret jeder Eintrag verdoppelt und danach im Namen jeweils die “Zf-[Neuenburg-]-[BgsG1+]” im einen Eintrag bzw. “Rf-[Neuenburg-]-[BgsG1+]” im anderen Eintrag gelöscht werden. Dadurch kommt man schnell und umkompliziert zu den benötigten Rangierfahrstraßen. Achtung: vorher eine Sicherheitskopie der Plandatei anlegen!
Die Fahrstraßen wurden dann noch um die entsprechenden Signalbefehle ergänzt, da hier die Signale ja nicht den Blöcken zugeordnet sind - weil die Blöcke jetzt ja leider nichts mehr tun. Sehr nützlich in diesem Zusammenhang die “at free” Funktion, die die Signale wieder in Grundstellung zurückbringt, wenn die Fahrstraße aufgelöst wird. Wichtig: für eine korrekte Funktion des Streckenblockes müssen die Signale in Fahrtstellung verriegelt (lock) werden.

Erstellung der Taster-svg

Die grünen,grauen und grau/grünen Taster sind svg's der Marke Eigenbau. Meine Inkscape-Versuche (wie im Wiki empfohlen) gingen mächtig in die Hose, aber wenn man sich die svg-Dateien (ascii) genau anschaut, versteht man schon wie die aufgebaut sind: Male Rechteck der Füllung schwarz. Male schwarzen Kreis mit grüner Füllung usw. Etwas schwieriger fand ich da schon die Halbkreise, weil die mit Koordinaten angegeben sind. Als Vorlage habe ich button-7-off.svg aus dem Standardthema genommen. Diese Datei kopiert als button-10-off.svg in ein Userverzeichnis (das natürlich auch in der rocview.ini angeben), die Farben anpassen und schon kann man im Properties-Dialog des Knopfes bei “SVG” einstellen, dass dieser Knopf in grün angezeigt werden soll. Man muss natürlich auch entsprechend button-10-on.svg und button-10-active.svg erstellen. Die “active”-Version ist bei mir der rote Knopf und wird bei einer Fehlbedienung angesteuert.
Alle Start-Ziel-Taster heissen bei mir “StartZielBlockname”

xml script zur Auswahl der Fahrstraßen

Das Herzstück der gesamten Stellwerkslogik steckt in einer einzigen Aktion “StartZielBorgstede”. Jeder Start-Ziel-Taster ruft bei Aktivierung diese Aktion auf. Im dahinter liegenden xml-script ScriptStartZielBorgstede.xml werden die Schalterkombinationen abgeprüft und als Ergebnis die gewählte Fahrstraße verriegelt bzw., wenn sie schon verriegelt ist, gelöst.
Der Ablauf im Script ist etwa wie folgt:

Prüfung: erster Schalter schon gewählt?
–> nein: gedrückter Schalter ist erster Schalter (%callerid% in Variable “firstButton”)
–> ja: gedrückter Schalter ist zweiter Schalter (%callerid% in Variable “secondButton”)

Prüfung: zwei Schalter gewählt?
–> nein: scriptende, warte auf nächsten (zweiten) Aufruf
–> ja: es geht weiter

Jetzt kommen zwei ineinander verschachtelte switch case befehle, in der die möglichen Kombinationen abgefragt werden. Beispielhaft etwa so:
falls erster Schalter “StartZielNeuenburg” ist
falls zweiter Schalter “StartZielBgsG1” ist
dann schalte die Route Zf-[Neuenburg-]-[BgsG1+] um.


Verriegelung und Ausschluss von Fahrstraßen

Durch die Rocrail internen Mechanismen schließen sich konkurrierende Fahrstraßen von selbst aus. Voraussetzung ist, dass man die in den Fahrstraßen konfigurierten Weichen und Signale auf “lock” einstellt. Denn dadurch wird eine Weiche, die von einer Fahrstraße genutzt wird, für diese verriegelt. Eine andere Fahrstraße, die die Weiche Stellen möchte, kann dies nicht mehr. http://wiki.rocrail.net/doku.php?id=route-turnouts-en Damit werden die in Rocrail integrierten Prüfungen aktiviert und nicht zulässige Fahrstraßenkombinationen zuverlässig ausgeschlossen.
Bis auf eine Ausnahme: Fahrstraßen, die von zwei Seiten in denselben Gleisabschnitt (Block) führen. In der automatischen Rocrail Welt wird dieser Fall über die Nutzung von Blöcken abgefangen, die natürlich nur von einem Zug gleichzeitig reserviert oder belegt sein können. Beispiel: es ist gleichzeitig Einfahrt nach Gleis 1 von Neuenburg und von Varel möglich. Nur sind wir hier nicht in der automatischen Rocrail-Welt, sondern stellen die Fahrstraßen manuell. Da sollten solche Möglichkeiten abgefangen sein.

Als Abhilfe kann eine virtuelle Weiche eingeführt werden (denken wir sie uns als Schutzweiche), die jeweils von den konkurrierenden Fahrstraßen genutzt (=verriegelt) wird. Sie kann mit einer nicht real existierenden Adresse belegt werden. Sauberer ist es, eine “virtuelle Zentrale” in Rocrail anzulegen, und die “Schutzweiche” mit einer Adresse dieser virtuellen Zentrale zu belgen.

Hardware

Das Stellpult soll nachher als echtes Hardware-Stellpult ausgeführt sein. Also mit Tastern und Schaltern zu bedienen und LEDs zur Ausleuchtung. Das grenzt natürlich in der Ausführung gegenüber einem schön variablen Monitor etwas ein.
Der Rocrail-Server wird auf einem Raspberry-Pi laufen, der im Stellpult verbaut ist. Dort kommt dann auch noch ein lokaler RocnetNode drauf, und das Stellpult wird darüber verkabelt. Im Bahnhof selbst kommt dann für Weichendecoder, Signaldecoder und Gleisbesetztmeldung ebenfalls GCA Hardware zum Einsatz. Ich bin selbst noch nicht ganz klar, ob ich auch hier auf Rocnet setzen werde oder vielleicht doch auf Loconet. Denn der Bahnhof wird auch ohne einen erfahrenen Rocrail-Bediener im Einsatz sein und mit Loconet kennen sich einfach mehr Leute aus als mit Rocnet, zumal auf FREMO Treffen. Stromversorgung der Knoten ist das andere Argument in diesem Zusammenhang, denn das GCA Bahnhofsloconet (im FREMO auch “Lotusnetz” genannt), braucht nur eine zentrale Stromversorgung. Während bei Rocnet jeder Knoten einzeln versorgt werden muss. Das ist aufgrund der Versicherungsbedingungen (230V nur am Boden) im FREMO nicht immer ganz einfach. Für Rocnet wiederum spricht, dass die Verkabelung einfacher ist (Standard-Netzwerkkabel), die Hardware in Summe billiger (?) und TCP/IP als Bus einfach viel besser ;-) .Und man hat das LAN gleich da, zum Debuggen oder für die Übergangszeit für den digitalen Stellpultersatz.
Jedenfalls wird, so viel ist klar, die Schnittstelle zum Stellpult aus vielen I/Os bestehen, entweder GCA50 oder eben GCA-Pi02.
Aber kommen wir zum Stellpult: Rocrail bietet ja die Möglichkeit, bei Weichen und Fahrstraßen direkt die Hardware Taster und LEDs anzusteuern. Allerdings bei Signalen nicht. Unter anderem, weil ich bei Signalen nicht nur die LEDs der Signale auf der Anlage, sondern auch die entsprechenden Abbilder auf dem Stellpult ansteuern möchte, gehe ich einen anderen Weg: jede LED, die auf dem Schaltpult angesprochen werden soll, bekommt auch eine virtuelle Entsprechung. In der Rocrail-Terminologie also einen Ausgang/Output je LED oder genauer, je Aus- oder Umschalter. Damit die virtuelle Entsprechung auch wie ein Gleisbildstellpult aussieht, bekommen die Outputs, je nach Verwendung auch entsprechende svg's (mit den Zuständen off/on).

Diese werden dann jeweils im Eigenschaften-Dialog des Outputs eingestellt. Die Benennung der Outputs folgt wieder einem Schema: zunächst “LED”, dann der Typ des Darstellung (route für Fahrstrasse, bm für Besetztmelder, Sig für Signal) und dann die Gleisnummer, gefolgt von einer laufenden Nummer.
Analog zu den Schaltbefehlen für die Signale werden dann auch diejenigen für die LEDs auf dem Stellpult eingetragen. Und zwar in jede Fahrstraße zweimal: einmal “an” beim Aktivieren und einmal “aus” mit //bei freiwerden// Schalter aktiviert. Dadurch wird die LED angeschaltet, wenn die Fahrstraße verriegelt wird und wieder ausgeschaltet, wenn die Fahrstraße wieder freigegeben ist. Die im Bild eingestellte Fahrstraße (vom Kopf Neuenburg nach Gleis 3) sieht so aus:

Wenn erst einmal alle Ausgänge in den Fahrstraßen eingetragen sind, braucht man nur noch die Ausgänge den LEDs zuordnen und das Stellpult wird funktionieren. Hoffe ich ;-)
Denn ach ja, natürlich müssen noch die Hardware-Taster und Hardware-LEDs mit echten Hardware-Kabeln an die Ausgänge des Pi02 angeschlossen werden. Ich werde berichten.

Streckenblock

Was ist Streckenblock?
Siehe Artikel von Rene Pabst im Hp1 über Tf71 und die Bahnhofsschnittstelle
sowie Allgemeine und betriebliche Informationen zu Stellwerken und (Strecken)block
Während Weichen, Signale und die Logik der Fahrstraßen in Rocrail für mich recht einfach umzusetzen waren, stellt mich der Streckenblock doch vor Herausforderungen.
Die Technik des Streckenblocks ist im FREMO fertig entwickelt und unter anderem in Form von sogenannten “Blockkisten” verfügbar. In der einfachsten Form handelt es sich um eine Kiste, die man neben das Bahnhofsstellpult stellt. Die Verbindung zum Bahnhof wird dann über eine 15polige Bahnhofsschnittstelle hergestellt. In der Blockkiste werden dann Leiterpaare kurzgeschlossen oder auch nicht, je nach Zustand. Zunächst war mein Plan, die Bahnhofsschnittstelle mittels I/O Ausgängen Loco I/O oder Rocnet I/O nachzubilden und per Relais oder Optokoppler auf den Pegel der Blockkiste zu bringen. Allerdings hätte ich dann drei einzelne Kisten zusätzlich zum Stellpult. Und das fand ich irgendwie unschön.
Dann habe ich auf den Webseiten zur Blockkiste gelesen, dass es auch eine Schnittstelle zu einem Bedienteil gibt. Die zusätzlich zu nutzen hat für mich den Charme, dass ich die Bedienung des Blocks nahtlos in die Rocrail Systematik einbinden kann, und dass ich mit denselben 5V arbeiten kann, die auch das Bedienteil benutzt. Die Blockplatine benötigt keine zusätzlich Stromversorgung, sondern kann von der GCA Reihe mit versorgt werden. Ausgehend vom Schaltlan des Bedienteils für Tf71 habe ich also die Verbindungen gemappt. Und wenn man die optionalen Melder weglässt (E.Sig.Halt, AsGT) und die für alle drei Blocks gültigen Taster/Melder zusammenfasst bzw. wo anders verdrahtet(Wecker und BlGT), passt der I/O einer Blockplatine genau auf ein I/O header :-)
Das sieht im Schaltplan dann so aus:

Dateien

Meine Svg's zur Darstellung der verschiedenfarbigen Taster, LED's, Weichen und Signale skippassvg.zip
Die Plandatei von Borgstede mit virtuellem Hardwarestellpult Version Oktober 2017 rocrail_borgstede2017-10-14.zip


Personal Tools