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)

http://wiki.rocrail.net/doku.php?id=signaling-de#kombinierte_signale_hauptsignal_mit_vorsignal_am_mast_dunkeltasten

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

Beispiel


Personal Tools