xmlskript Lok-Geschwindigkeitvirtueller In-Melder
Pfad: mknetz/Eisenbahn/Digital/RocRail/xmlskript
Impressum
Autor: Klaus Merkert
Letzte Änderung dieser Seite: 10.06.2019 17:08:50 1423
virtueller In-Melder

Rückmelder r125 löst über einen Timer den Halt aus

Auf unserer Anlage ist es ein häufiges Problem, dass ein Bahnhofsgleis z.B. Karlsbad Gleis 4 nur einen Rückmelder, hier r125, hat.

Der Rückmelder r125 soll nun einen virtuellen In-Melder ri125 richtungsabhängig über Timer auslösen. Der In-Melder veranlasst dann das Bremsen.

<?xml version="1.0" encoding="UTF-8"?>
<xmlscript>
  <query vr="lcid125" table="fblist" id="%callerid%" get="identifier"/>
  <if condition="#lcid125 = 0">
    <then>
      <trace text="ri125 : -"/>
      <exit/>
    </then>
  </if>
  ...

Es wird eine Variable lcid125 für die Lok-ID angelegt. Da die Variable exklusiv für den Rückmelder r125 benutzt werden soll, erhält sie die angehängte Nummer 125. Die query-Anweisung liest den Wert des Attributs 'identifier' ein. Es ist nun möglich, dass das Attribut 'identifier' von r125 keine Lok-ID enthält, z.B. weil ein Wagen den Besetztmelder auslöst. In diesem Fall wird ein Wert 0 übergeben und das Skript wird gleich verlassen.

  ...
  <query vr="bes125" table="lclist" id="@lcid125" get="blockenterside"/>

Das Attribut 'blockenterside' der erkannten Lok kann die Werte 'true' und 'false' annehmen. 'true' bedeutet dabei, dass der kleine Pfeil im Blocksymbol von der +-Seite wegweist. Wenn in Rocrail alles richtig eingerichtet und initialisiert ist, zeigt der Pfeil die Fahrtrichtung des Zugs an.

...
  <if condition="@bes125 = true">
    <then> <!-- true-Richtung -->
      <!-- special -->
      <if condition="@lcid = 2150">
        <then>
          <sleep=12000/> <fb id="ri125" cmd="on"/> <fb id="ri125" cmd="off"/>
          <trace text="ri125>: @lcid125 hält nun."/>
          <exit/>
        </then>
      </if> 
      <!-- default -->
      <sleep=8000/> <fb id="ri125" cmd="on"/> <fb id="ri125" cmd="off"/>
      <trace text="ri125>: @lcid125 hält nun."/>
      <exit/>
    </then>
    <else> <!-- false-Richtung -->
      <sleep=9000/> <fb id="ri125" cmd="on"/> <fb id="ri125" cmd="off"/>
      <trace text="ri125>: @lcid125 hält nun."/>
      <exit/>
    </else>
  </if>  
</xmlscript>

Es empfiehlt sich, in die entsprechenden Kommentare statt 'true- und false-Richtung' die Richtungen vor Ort einzutragen.

ri125.xml

Links