xmlskript Lok-Geschwindigkeitvirtueller In-Melder
Pfad: mknetz/Eisenbahn/Digital/RocRail/xmlskript
Impressum
Autor: Klaus Merkert
Letzte Änderung dieser Seite: 10.06.2019 17:09:11 1354
Lok-Geschwindigkeit

Rückmelder r217 setzt Geschwindigkeit

Ein Triebfahrzeugführer muss sich an den Buchfahrplan halten. Im Modell wird die Kilometerangabe durch einen speziellen Rückmelder ersetzt.

Ein Rückmelder, z.B. r217, soll die Geschwindigkeit, z.B v=13km/h bzw. v=17km/h, einer auslösenden Lok richtungsabhängig setzen. Das kann nur klappen, wenn der Rückmelder entsprechende Daten liefern kann. Ein entsprechendes Skript v217.xml könnte folgendermaßen beginnen:

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

Es wird eine Variable lcid217 für die Lok-ID angelegt. Da die Variable exklusiv für den Rückmelder r217 benutzt werden soll, erhält sie die angehängte Nummer 217. Die query-Anweisung liest den Wert des Attributs 'identifier' ein. Es ist nun möglich, dass das Attribut 'identifier' von r217 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="bes217" table="lclist" id="@lcid217" 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="@bes217 = true">
    <then> <!-- true-Richtung -->
      <!-- special -->
      <if condition="@lcid = 2150">
        <then>
          <lc id="@lcid217" V="14"/>
          <trace text="v217>: @lcid217 v=14"/>
          <exit/>
        </then>
      </if> 
      <!-- default -->
      <lc id="@lcid217" V="13"/>
      <trace text="v217>: @lcid217 v=13"/>
      <exit/>
    </then>
    <else> <!-- false-Richtung -->
      <lc id="@lcid217" V="17"/>
      <trace text="v217<: v='17"/'>
      <exit/>
    </else>
  </if>  
</xmlscript>

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

v2.xml

Soll die ganze Sache nur im Automatik-Modus funktionieren, so kann man sich an folgendem Skript orientieren.

<?xml version="1.0" encoding="UTF-8"?>
<xmlscript>
  <if state="auto auto = off">
    <then>
      <trace text="Auto off"/>
    </then>
    <else>
      <trace text="Auto on"/>
    </else>
  </if>
</xmlscript>

Links