Komplexe Steuerung Vorsignal - Hauptsignal
Um in Rocrail Komplexe Steuerungen für Vor- und Hauptsignal zu machen braucht es Skripte. Basis für die nachfolgende Lösung ist diese Anleitung von Peter (Peter&basti)
Im nachfolgenden Bahnhof gibt es zwei Einfahrten und zwei Ausfahrten.
- Der Einfachheit halber kann nur nach Rechts ausgefahren werden. Das ist auch der Grund weshalb Richtungspfeile eingetragen sind.
- Ein Zug kann sowohl nach Block bC und Block bD ausfahren
- Es ist möglich das zwei Züge gleichzeitig ausfahren
- Von Block bA und bB könne alle Bahnhofsgleise (b1 - b3) angefahren werden
- Es können gleichzeitig zwei Züge einfahren
- Die Vorsignale sollen jeweils den korrekten Fahrbegriff des Hauptsignals im Ausfahrblock darstellen
Das Beispiel ist ein Kreis
Einrichten
Folgendes Skript im Skriptverzeichnis von Rocrail als Set-Vorsignal.xml speichern
<?xml version="1.0" encoding="UTF-8"?> <xmlscript> <!-- Dieses Script setzt ein gemeinsames Vorsignal auf den richtigen Begriff Dieses Script ist per Aktion in allen Blöcken welche zum entsprechenden Hauptsignal führen bei "reservd" aufzurufen. Im Feld Beschreibung der jeder Fahrstrasse ist die Kennung des Hauptsignales und des betroffenen Vorsignales (durch Komma getrennt) einzutragen => s121+,v120- Das Vorsignal kann durch einen Eintrag in der Befehlsliste beim Freiwerden normal auf Rot gestellt werden Version 1.2 History: 09.09.2017 andy Inital Version 12.09.2017 andy if condition angepasst wegen Fehlermeldungen 03.11.2017 andy generated="true" zu Variablen hinzugefügt, um die Variablen beim Beenden wieder zu löschen --> <!-- <trace text="Set-Vorsignal.xml: From Block = %frombkid%"/> <trace text="Set-Vorsignal.xml: To Block = %bkid%"/> --> <!-- Source Fahrstrasse suchen. Diese muss gelocked sein und bkb und bkbside müssen bka und bkaside der Zielblocks entsprechen --> <foreach table="stlist" state="st %oid% = locked"> <!-- <trace text="Set-Vorsignal.xml: Fahrstrasse %oid% ist locked"/> --> <!--if condition="%bkb% = %frombkid%|%bka% = %bkid%" alltrue="true"><then--> <if condition="%bkb% = %frombkid%" alltrue="true"><then> <!-- Beschreibung der Fahrstrasse lesen --> <query vr="xml_%oid%" table="stlist" id="%oid%" get="desc" generated="true"/> <!-- Beschreibung spliten in hsig und vsig --> <vr id="xml_%oid%_hsig" text="@@0xml_%oid%" generated="true" /> <vr id="xml_%oid%_vsig" text="@@1xml_%oid%" generated="true" /> <!-- FB Hauptsignal abfragen --> <query vr="xml_%oid%" table="sglist" id="@xml_%oid%_hsig" get="state" generated="true"/> <!-- <trace text="Set-Vorsignal.xml: Hsignal ist @xml_%oid%_hsig : Fahrbegriff @xml_%oid%"/> <trace text="Set-Vorsignal.xml: Vsignal ist @xml_%oid%_vsig"/> --> <!-- Fahrbegriff am Vorsignal einstellen --> <sg id="@xml_%oid%_vsig" cmd="@xml_%oid%"/> </then></if> </foreach> </xmlscript>
Aktion Set-Vorsignal erstellen
Bei allen Blöcken die Aktion Set-Vorsignal eintragen. Die Aktion muss nur bei Blöcken im Bahnhof, auf der Ausfahrseite oder Blöcke die aufgrund ihrer Fahrstrassen mehrere Vorsignale haben können eingetragen werden. Bei Kennung wird Set-Vorsignal eingetragen und bei Status reserved. Dadurch wird die Aktion jeweils aufgerufen wenn der Block reserviert wird, resp. Gelb ausgeleuchtet.
Bei jeder Fahrstrasse das Vorsignal und Hauptsignal im Beschreibungsfeld eintragen das an dieser Fahrstrasse liegt. Die beiden Einträge sind durch ein Komma zu separieren. Ist bereits ein Text vorhanden, kann dieser Beibehalten werden. In diesem Fall wird zuerst das Hauptsignal/Vorsignal eingetragen. Dann ein zusätzliches Komma und dann die eigentliche Beschreibung. Unter Befehle die entsprechenden Weichen- und Hauptsignalbefehle eintragen. Für das Vorsignal muss bei Freiwerden auf red eingetragen werden
25.11.2018 Mit der neusten Version muss die Option Signal-Befehl synchronisieren aktiviert werden