Benutzer-Werkzeuge

Webseiten-Werkzeuge


steuerungsprogramme:rocrail-xpressnet-weiche

Multimaus-Aktionen

Rocrail bietet mindestens 2 Möglichkeiten um die Weichen-Befehle der Multimaus auszuwerten und andere Aktionen wie z.B. den Aufruf von Accessories auf BiDiB-Knoten zu steuern.

  • Befehls-Zuordnung
  • mittels Skript

Befehls-Zuordnung

Die einfachste Möglichkeit des Schalten ist über Befehlszuordnung:

Quelle: Rocrail Wiki

Nach dem Erstellen der Befehls-Zuordnung muss Rocrail neu gestartet werden.

Schalten über XML-Skript

Dazu muss für jede Weiche die über die Multimaus gesteuert werden soll eine Weiche in Rocrail angelegt werden. Im Beispiel wird eine Weiche mit der Adresse 24 angelegt. Sie erhält die Kennung sw24.

Auf dem Schnittstellen-Tab muss (anders als normalerweise bei den BiDiB-Knoten) die Adresse 24 und nicht der Port 24 eingerichtet werden.

Das Skript welches den Multimaus-Befehle auswertet muss über den Aktionen…-Button auf dem Allgemein Tab(siehe oben) definiert werden:

Die Skript-Aktionen müssen zuvor über Tabellen > Aktionen … eingerichtet werden.

Als Type muss Ext. Programm starten ausgewählt werden. Anschliessend kann unter Befehl der Scriptname vergeben werden. Durch Klick auf den Edit-Button öffnet sich der Script-Editor.

Im Skript-Editor wird Rocrail-Script verwendet:

Das gezeigte Beispiel-Script schreibt alle Anweisungen mit <trace…> mit grünem Text in das Server-Trace-Fenster von Rocview.

Accessory schalten

Um ein Accessory zu schalten, muss eine Weiche (z.B. sw1) ganz normal konfiguriert werden. Für das nachfolgende Skript ist die Weiche sw1 im Plan als Weiche an einer OneControl definiert und das Accessory schaltet die Weiche hin und her.

<?xml version="1.0" encoding="UTF-8"?>
<xmlscript>
  <trace text="Script is called, '%callerid%' "/>
  <if state="sw sw24 = straight">
    <then>
      <trace text="SW24 is straight" />
        <sw id="sw1" cmd="straight"/>
    </then>
    <else>
      <trace text="SW24 is not straight" />
        <sw id="sw1" cmd="turnout"/>
    </else>
  </if>
</xmlscript>

Im Skript kann diese Weiche dann angesteuert werden durch die Zeilen:

<sw id="sw1" cmd="turnout"/>

Mit diesem Befehl wird die Weiche mit der Kennung sw1 auf abzweigend geschalten. Diese Zeile kann durch Zusammenstellung im unteren Bereich des XmlSkript-Editor von Rocrail erstellt werden.

Es ist auch möglich ganze Fahrstrassen zu schalten. Dazu muss eine Anweisung für eine Route erstellt werden.

Trace Level einstellen

Um zu sehen ob Rocrail die Weiche korrekt findet, muss der Trace Level Automat aktiviert werden. Im nachfolgenden Trace sieht man, dass die Weiche (switch) nicht gefunden wurde, weil die Adressierung falsch war:

20180915.181406.371 r9999I bidibrea OBiDiB   3985 MSG_CS_ACCESSORY_MANUAL path=0.0.0.0 addr=23 event=0x20 ON
20180915.181406.371 r9999a 000041DC OModel   5158 trying to match switch event: 1744830518:24:0:0 type=0 uidname=[ ]
20180915.181406.371 r9999a 000041DC OModel   3651 no more switches found by address [24,0]
20180915.181406.371 r9999a 000041DC OModel   5183 trying to match signal event: 1744830518:24:0 type=0 uidname=[ ]
20180915.181406.371 r9999a 000041DC OModel   3733 no signal found by address [1744830518,24,0] type=0 uidname=[ ]
20180915.181406.371 r9999a 000041DC OModel   4421 no tt found by address 1744830518:0
20180915.181406.371 r9999a 000041DC OModel   5235 trying to match output event: 1744830518:24:0 type=0 value=0 uidname=[ ]
20180915.181406.371 r9999a 000041DC OModel   3763 no output found by address [1744830518,24,0] type=0 uidname=[ ]
20180915.181406.371 r9999a 000041DC OModel   5252 trying to match signal event: 1744830518:24:0 type=0 uidname=[ ]
20180915.181406.371 r9999a 000041DC OModel   3733 no signal found by address [1744830518,24,0] type=0 uidname=[ ]
20180915.181406.561 r9999I bidibrea OBiDiB   3985 MSG_CS_ACCESSORY_MANUAL path=0.0.0.0 addr=23 event=0x00 OFF
20180915.181408.883 r9999I bidibrea OBiDiB   3985 MSG_CS_ACCESSORY_MANUAL path=0.0.0.0 addr=23 event=0x21 ON
20180915.181408.883 r9999a 000041DC OModel   5158 trying to match switch event: 1744830518:24:0:0 type=0 uidname=[ ]
20180915.181408.883 r9999a 000041DC OModel   3651 no more switches found by address [24,0]
20180915.181408.883 r9999a 000041DC OModel   5183 trying to match signal event: 1744830518:24:0 type=0 uidname=[ ]
20180915.181408.883 r9999a 000041DC OModel   3733 no signal found by address [1744830518,24,0] type=0 uidname=[ ]
20180915.181408.883 r9999a 000041DC OModel   4421 no tt found by address 1744830518:0
20180915.181408.883 r9999a 000041DC OModel   5235 trying to match output event: 1744830518:24:0 type=0 value=0 uidname=[ ]
20180915.181408.883 r9999a 000041DC OModel   3763 no output found by address [1744830518,24,0] type=0 uidname=[ ]
20180915.181408.883 r9999a 000041DC OModel   5252 trying to match signal event: 1744830518:24:0 type=0 uidname=[ ]
20180915.181408.883 r9999a 000041DC OModel   3733 no signal found by address [1744830518,24,0] type=0 uidname=[ ]
20180915.181409.123 r9999I bidibrea OBiDiB   3985 MSG_CS_ACCESSORY_MANUAL path=0.0.0.0 addr=23 event=0x01 OFF

Wenn die Weiche korrekt konfiguiert ist, wird sie gefunden und das Skript ausgeführt:

20180915.182214.399 r9999I bidibrea OBiDiB   3985 MSG_CS_ACCESSORY_MANUAL path=0.0.0.0 addr=23 event=0x21 ON
20180915.182214.399 r9999a 000041DC OModel   5158 trying to match switch event: 1744830518:24:0:0 type=0 uidname=[ ]
20180915.182214.399 r9999I 000041DC OSwitch  1986 switch [sw24] field event: state=straight(field:straight) gatevalue=2 inv=0 fieldstate=straight
20180915.182214.399 r9999a 000041DC OSwitch  0353 sw24 action state does not match: [turnout-straight]
20180915.182214.399 r9999I 000041DC OSwitch  0327 switch action: test1
20180915.182214.399 r9999I 000041DC OSwitch  0348 switch execute action: test1
20180915.182214.399 r9999I 000041DC OAction  1096 run xmlscript file [.\testscript.xml], size=276 called by [sw24]
20180915.182214.399 r9999I 000041DC OXmlScri 2083 script: [xmlscript]
20180915.182214.399 r9999I 000041DC OXmlScri 2001 run script [-] function [-]
20180915.182214.399 r9999I 000041DC OXmlScri 0688 execute [<trace text="Script is called :)"/>
] id[] cmd[-] oid[] callerid[sw24]
20180915.182214.399 r9999x 000041DC OXmlScri 1412 Script is called :)
20180915.182214.399 r9999I 000041DC OXmlScri 1736 if state [sw sw24 = straight]
20180915.182214.399 r9999I 000041DC OXmlScri 0493 state [sw sw24 = straight] is true
20180915.182214.399 r9999I 000041DC OXmlScri 0688 execute [<trace text="SW24 is straight"/>
] id[] cmd[-] oid[] callerid[sw24]
20180915.182214.399 r9999x 000041DC OXmlScri 1412 SW24 is straight
20180915.182214.399 r9999I 000041DC OSwitch  0541 switch[sw24] isSet=true wanted state [straight], reported state [straight] isfbset=false
20180915.182214.399 r9999I 000041DC OSwitch  2010 polarise Frog [sw24] state=straight(straight)
20180915.182214.399 r9999a 000041DC OModel   3651 no more switches found by address [24,0]
steuerungsprogramme/rocrail-xpressnet-weiche.txt · Zuletzt geändert: 2018/11/06 14:48 von akuhtz

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki