User Tools

Site Tools


micha68:virtualfbscript

virtuelle Enter-Melder mit xml-scripting

Aufgabenstellung

Dieses Beispiel erklärt die Verwendung von virtuellen Enter-Meldern mit xml-scripting.
Virtuelle Enter-Melder werden verwendet um unter bestimmten Bedingungen "echte" Rückmelder einsparen zu können.

Folgendes Bild zeigt den Gleisplan eines Schattenbahnhofs mit zwei Zufahrten:

Die Enter-Melder der Blöcke 2-6 können virtuell ausgelegt werden. Ein "echter" Rückmelder aktiviert in Abhängigkeit der eingestellten Fahrstrasse den passenden Enter-Melder.

Bisher musste man für jede mögliche Fahrstrasse eine Aktion erstellen und auf dem "echten" Enter-Melder ablegen.
In diesem Fall wären das 10 Aktionen (5 für Fahrstrassen Block1→Block2-6 und 5 für Block7→Block2-6)
Eine weitere Aktion ist nötig, um die virtuellen Melder wieder zu deaktivieren.
(→downloads siehe Demo2 meines Beispiels im Aufstellblock)

Mit der Möglichkeit der xml-Scripte reichen zwei Aktionen. Eine Aktion löst das xml-Script zum Setzen der virtuellen Melder aus. Eine weitere Aktion löst das Script zum Deaktivieren der virtuellen Melder aus.
Der Vorteil der Scripte liegt darin, dass diese sich mit Copy/Paste in einem Texteditor wesentlich schneller erstellen lassen, als die vielen Einzelaktionen.
Dies ist auch übersichtlicher - nur zwei Aktionen statt wie hier im Beispiel 11.

Scripte

Hier das Script zum Setzen der Melder:

<xmlscript>
<!-- virtueller Entermelder in Abhängigkeit der verriegelten Fahrstrasse SETZEN-->
 
	<!-- Entermelder für Block2 -->
  <if state="st autogen-[1-]-[2+] = locked">
    <then>
	<fb id="2e" cmd="on"/>
	<exit/>
	</then>
  </if>
  <if state="st autogen-[7-]-[2+] = locked">
    <then>
	<fb id="2e" cmd="on"/>
	<exit/>
	</then>
  </if>
 
	<!-- Entermelder für Block3 --> 
  <if state="st autogen-[1-]-[3+] = locked">  
    <then>
	<fb id="3e" cmd="on"/>
	<exit/>
	</then>
  </if>
  <if state="st autogen-[7-]-[3+] = locked">
    <then>
	<fb id="3e" cmd="on"/>
	<exit/>
	</then>
  </if>
 
	<!-- Entermelder für Block4 -->  
  <if state="st autogen-[1-]-[4+] = locked">
    <then>
	<fb id="4e" cmd="on"/>
	<exit/>
	</then>
  </if>
  <if state="st autogen-[7-]-[4+] = locked">
    <then>
	<fb id="4e" cmd="on"/>
	<exit/>
	</then>
  </if>
 
	<!-- Entermelder für Block5 -->  
  <if state="st autogen-[1-]-[5+] = locked">
    <then>
	<fb id="5e" cmd="on"/>
	<exit/>
	</then>
  </if>
  <if state="st autogen-[7-]-[5+] = locked">
    <then>
	<fb id="5e" cmd="on"/>
	<exit/>
	</then>
  </if>
 
	<!-- Entermelder für Block6 -->  
   <if state="st autogen-[1-]-[6+] = locked">
    <then>
	<fb id="6e" cmd="on"/>
	<exit/>
	</then>
  </if>
  <if state="st autogen-[7-]-[6+] = locked">
    <then>
	<fb id="6e" cmd="on"/>
	<exit/>
	</then>
  </if>
 
</xmlscript>

Script im Detail:

Nach dem ersten Auftreten von "wahr" kann das Script mit "exit" verlassen werden, da ja keine weitere Fahrstrasse gestellt sein kann.

Hier das Script zum Deaktivieren der Melder:

<xmlscript>
<!-- virtueller Entermelder DEAKTIVIEREN-->
 
<fb id="2e" cmd="off"/>
<fb id="3e" cmd="off"/>
<fb id="4e" cmd="off"/>
<fb id="5e" cmd="off"/>
<fb id="6e" cmd="off"/>
 
</xmlscript>

Zum Deaktivieren sind keine IF-Statements nötig. Es werden einfach alle Melder deaktiviert.

Konfiguration

Die beiden Aktionen werden folgendermaßen konfiguriert…

Unter "Befehl" wird der Pfad zum Script eingetragen. In diesem Beispiel liegen die Scripte im Arbeitsbereich.\\

…und auf dem echten Enter-Melder eingerichtet:

Die Aktion "ActionOn" wird beim Aktivieren des echten Melders ausgelöst und startet das Script "script_on.xml". Der der Fahrstrasse entsprechende virtuelle Melder wird aktiviert.
Die Aktion "ActionOff" wird beim Deaktivieren des echten Melders ausgelöst und startet das Script "script_off.xml". Alle virtuellen Melder werden deaktiviert.

Download

Plan und scripte:
virtualfbscript.zip

micha68/virtualfbscript.txt · Last modified: 2018/11/12 08:56 (external edit)