Table of Contents
Lok umsetzen
Userpages - Hermann (hermannk)
hier geht es direkt zum Rocrail-Arbeitsbereich-Download |
Voraussetzungen
- Lok ist im Uhrzeigersinn aufgegleist (Schornstein zeigt nach rechts)
- der Wagon (der Rocrail-Zug) ist hinten angekoppelt
Zug-Eigenschaften / Übersicht | Zug-Attribute | |||
Zugbild umkehren | Umsetzen | runaround | swaplocoimage | swaptrainimage |
---|---|---|---|---|
NEIN | NEIN | NEIN | JA | NEIN |
"swaptrainimage": wird in den XML-Scripts nicht benötigt;
"swaplocoimage" ("Zugbild umkehren"): zeigt die Lok links bzw. rechts von den Wagons;
"runaround" ("Umsetzen"): wird in den XML-Scripts nicht benötigt;
"swaptrainimage" und "runaround" sollten korrekt konfiguriert sein, damit die optische Darstellung von Lok und Wagons passt.
Vorwort 1:
Damit wurde diese Dokumentation erstellt: Stand 21.02.2022
was | womit | Bemerkung |
---|---|---|
Steuerung | Rocrail | Version 2.1.2207+ (Intel macOS Catalina) |
Rocrail Arbeitsbereich | Lok_umsetzen |
Vorwort 2:
Es wird getestet mit
- Rocrail-Lok "DB_86_128_Lueneburg_Luebeck" und Rocrail-Zug "Lueneburg_Luebeck";
- auf dem Layout "Lok_umsetzen";
- der Start-Block ist der Block "bk24";
- für das Umfahren werden die Blöcke "bk28", "bk26", "bk25", "bk29" und "bk23" benutzt;
- es wird vorausgesetzt, dass diese Blöcke auch frei befahrbar sind (sonst geht es eben nicht).
Die Lok hat eine fernbedienbare TELEX-Kupplung.
Es werden C-Gleise eingesetzt.
Die Lok und die Wagons lösen mit ihren Achsen Gleis-Besetzt-Melder (GBM) aus.
Ablauf-Übersicht
Vorbemerkung: die bunten Gleise sind Rückmelder.
Der Zug ist im Bahnhof angekommen (siehe oben). Später soll der Zug seine Fahrt entgegengesetzt fortsetzen. Dazu soll (1) die Lok vorn von den Wagons abgekuppelt werden, (2) die stehenden Wagons sollen auf einem freien Bahnhofsgleis umfahren werden und (3) die Lok soll hinten an die Wagons angekuppelt werden. (4) Zusätzlich fährt die Lok noch in den Block bk23 vor (das ist in der Grafik oben nicht abgebildet).
Der zugehörige Rocrail-Plan ist hier abgebildet:
Die kurzen Bahnsteig-Blöcke sind jeweils zu einem virtuellen Block zusammengefasst (bk2324v, bk2526v).
Der Ausgang "co_UMSETZ" startet das Lok-Umsetzen; das Textfeld "tx_UMSETZ" enthält Informationen zum Lok-Umsetzen.
Ablauf-Details
Der Ausgang “co_UMSETZ” wird angeklickt und
- startet ein XML-Script "ac_UMSETZ_begin.xml",
- welches die Voraussetzungen für ein Lok-Umsetzen prüft,
- die nötigen Vorbereitungen für ein Lok-Umsetzen trifft,
- die Lok von den Wagons (dem Rocrail-Zug) abkoppelt und
- letztlich die Lok auf ihre Fahrt um die geparkten Wagons herum an das andere Ende schickt und
- dort die Wagons ankoppelt.
zu erledigen:
- eine Aktion "ac_UMSETZ_begin" definieren, welches das XML-Script "ac_UMSETZ_begin.xml" aufruft;
- die Aktion "ac_UMSETZ_begin" beim Ausgang "co_UMSETZ" anwenden beim Status "on".
1 Lok umsetzen beginnen
Der Zug, bestehend aus der Rocrail-Lok “DB_86_128_Lueneburg_Luebeck” und dem Rocrail-Zug “Lueneburg_Luebeck”, ist im Bahnhof angekommen und steht im Block "bk24".
Eine wesentliche Voraussetzung ist, dass nur die Lok den IN-Rückmelder von Block "bk24" belegt! (nicht die Wagons!)
(Später sollen die Wagons den IN-Rückmelder auslösen und so das Ankuppeln der Lok an die Wagons beenden).
a) die Voraussetzungen für ein Lok-Umsetzen prüfen
Für das Lok-Umsetzen wird die Rocrail-Automatik benötigt.
<if state="auto Automode = off"> <then> <tx id="tx_UMSETZ" format="UMSETZ aus" /> <vr id="vr_UMSETZ" text="aus" /> <exit cmt="ac_UMSETZ_begin: no auto mode; "/> </then> </if>
b) die nötigen Vorbereitungen für ein Lok-Umsetzen treffen
Es wird geprüft, ob eine Lok in den Blöcken "bk2324v", "bk24" oder "bk23" steht.
<vr id="vr_UMSETZ_loc" text="" /> <vr id="vr_UMSETZ_block" text="bk2324v" /> <query vr="vr_UMSETZ_loc" table="bklist" id="@vr_UMSETZ_block" get="locid" /> <if condition="@vr_UMSETZ_loc = (null)"> <then> <vr id="vr_UMSETZ_block" text="bk24" /> <query vr="vr_UMSETZ_loc" table="bklist" id="@vr_UMSETZ_block" get="locid" /> <if condition="@vr_UMSETZ_loc = (null)"> <then> <vr id="vr_UMSETZ_block" text="bk23" /> <query vr="vr_UMSETZ_loc" table="bklist" id="@vr_UMSETZ_block" get="locid" /> <if condition="@vr_UMSETZ_loc = (null)"> <then> <vr id="vr_UMSETZ_block" text="" /> <vr id="vr_UMSETZ_loc" text="" /> <trace text="aUb: keine Lok gefunden; EXIT" /> <exit cmt="ac_UMSETZ_begin: keine Lok gefunden;"/> </then> </if> </then> </if> </then> </if>
Es werden noch zusätzliche Variablen definiert.
<vr id="vr_UMSETZ" text="an" value="1" /> <tx id="tx_UMSETZ" format="UMSETZ an" /> <vr id="vr_UMSETZ_operator" text="" /> <vr id="vr_UMSETZ_swaplocoimage" text="" value="0" /> <vr id="vr_UMSETZ_tmp" text="" value="0" generated="true" />
Es wird für die Lok der angekoppelte Rocrail-Zug ermittelt.
<query vr="vr_UMSETZ_operator" table="lclist" id="@vr_UMSETZ_loc" get="train" /> <query vr="vr_UMSETZ_swaplocoimage" table="operatorlist" id="@vr_UMSETZ_operator" get="swaplocoimage" />
Die Lok bekommt die Klasse "UMSETZ" zugeteilt, um sie später leichter erkennen zu können.
<lc id="@vr_UMSETZ_loc" cmd="classset" class="UMSETZ"/>
c) die Lok von den Wagons (dem Rocrail-Zug) abkoppeln
Falls keine Lok-Funktion für einen Kupplungswalzer vorhanden ist, kann man es so lösen:
- Lok-Richtung umschalten (zurücksetzen);
- TELEX-Kupplung auslösen (es sollte Lok-intern zeitgesteuert sein, um die Hardware zu schützen);
- Lok-Richtung umschalten (wieder vorwärts fahren);
- optional die TELEX-Kupplung noch einmal auslösen;
- die Lokomotive vom Rocrail-Zug lösen (releasetrain).
<lc id="@vr_UMSETZ_loc" cmd="swap"/> <lc id="@vr_UMSETZ_loc" V="10"/> <sleep time="2000"/> <fn id="@vr_UMSETZ_loc" fndesc="TELEX" fncmd="on"/> <lc id="@vr_UMSETZ_loc" V="0"/> <lc id="@vr_UMSETZ_loc" cmd="swap"/> <lc id="@vr_UMSETZ_loc" V="10"/> <sleep time="1000"/> <fn id="@vr_UMSETZ_loc" fndesc="TELEX" fncmd="on"/> <lc id="@vr_UMSETZ_loc" cmd="releasetrain"/> <sleep time="500"/>
d) die Lok an das andere Ende der geparkten Wagons schicken
d1) den Rocrail-Fahrplan bestimmen
Es werden Fahrpläne eingesetzt; je nach Start-Block kommen vier verschiedene Fahrpläne zum Einsatz:
- "sc_UMSETZ_bk2324v_true" für den Start-Block "bk2324v" mit Fahrtrichtung "gegen die Uhr";
- "sc_UMSETZ_bk2324v_false" für den Start-Block "bk2324v" mit Fahrtrichtung "mit der Uhr";
- - das true/false am Ende kommt aus "swaplocoimage".
- "sc_UMSETZ_bk23" für den Start-Block "bk23";
- "sc_UMSETZ_bk24" für den Start-Block "bk24".
<vr id="vr_UMSETZ_tmp" text="sc_UMSETZ" value="0" generated="true" /> <if condition="@vr_UMSETZ_block # bk2324v"> <then> <!-- gegen die Uhr= sc_UMSETZ_bk2324v_true; mit der Uhr= sc_UMSETZ_bk2324v_false --> <vr id="vr_UMSETZ_schedule" format="%s_%s_%s" text="@vr_UMSETZ_tmp @vr_UMSETZ_block @vr_UMSETZ_swaplocoimage" /> </then> <else> <!-- sc_UMSETZ_bk23; sc_UMSETZ_bk24 --> <vr id="vr_UMSETZ_schedule" format="%s_%s" text="@vr_UMSETZ_tmp @vr_UMSETZ_block" /> </else> </if>
d2) die Lok starten
Die Lokomotive soll langsam fahren und schaltet daher den Rangiergang ein (cmd="shuntingon").
Dann wird der Lok der Fahrplan zugewiesen (cmd="useschedule").
Dann soll die Lok losfahren (cmd="go").
<lc id="@vr_UMSETZ_loc" cmd="shuntingon"/> <lc id="@vr_UMSETZ_loc" cmd="useschedule" scheduleid="@vr_UMSETZ_schedule"/> <lc id="@vr_UMSETZ_loc" cmd="go"/>
2 Umfahren
Dieser Teil ist in drei Unterabschnitte aufgeteilt:
- 2a die Lok entfernt sich von den Wagons
- 2b die Lok fährt an den stehenden Wagons vorbei
- 2c die Lok nähert sich den Wagons
Dabei soll das "in"-Ereignis in den Blöcken bk28 und bk29 jeweils kurz nach dem "enter"-Ereignis künstlich erzeugt werden. Das wird mit der Aktion "ac_UMSETZ_generateIN" abgearbeitet, die das XML-Script nach 2.500 ms aufruft (Aktion-Eigenschaften/Definition/Zeitgeber = 2500).
Der Fahrplan “sc_UMSETZ_bk24” sieht so aus:
Block | Haltepunkt | Aktion |
bk24 | - | keine |
bk28 | ja | Logische Richtung tauschen |
bk26 | nein | keine |
bk25 | nein | keine |
bk29 | ja | Logische Richtung tauschen |
bk23 | nein | keine |
bk24 | ja | Logische Richtung tauschen |
bk23 | ja | keine |
Zum Schluss wird die Lok mit dem angekoppelten Rocrail-Zug noch in den Block bk23 gefahren; das vereinfacht die gesamte Logik ein wenig.
2a die Lok entfernt sich von den Wagons
Die Lok ist nun auf dem Weg und kommt als Erstes im Block "bk28" an, indem sie den ENTER-Melder "fb28+" auslöst.
Damit sie nicht den ganzen Weg bis zum IN-Melder "bk28-" zurücklegt, wird der IN-Melder durch das XML-Script "ac_UMSETZ_generateIN.xml" mit einer Verzögerung von 2,5 Sekunden ausgelöst. Das genügt im konkreten Fall, die Lok von der letzten Weiche herunter fahren zu lassen!
Die Aktion "ac_UMSETZ_generateIN" ist in den Blöcken "bk28" und "bk29" hinterlegt.
Das Erzeugen des IN-Ereignisses wird nur durchgeführt, wenn die Variable "vr_UMSETZ" den Wert "an" hat.
<fb id="fb28-" cmd="on"/> <sleep time="500"/> <fb id="fb28-" cmd="off"/>
2b die Lok fährt an den stehenden Wagons vorbei
Sobald die Lok den ENTER-Melder "fb29-" von Block "bk29" ausgelöst hat, wird auch hier die Fahrt abgekürzt, indem abermals über das XML-Script "ac_UMSETZ_generateIN.xml" der IN-Melder "fb29+" von Block "bk29" ausgelöst wird.
<fb id="fb29+" cmd="on"/> <sleep time="500"/> <fb id="fb29+" cmd="off"/>
2c die Lok nähert sich den Wagons
3 Ankuppeln
Die Lok kuppelt an die Wagons und schiebt die Wagons noch bis auf den IN-Melder "fb24-" von Block "bk24"
Das XML-Script "ac_UMSETZ_end.xml" wird durch das IN-Ereignis von Block "bk24", von Block "bk23" und von Block "bk2324v" aufgerufen. Es führt noch einige Abschlussarbeiten in Rocrail durch:
- "swaplocoimage" wird für die Darstellung der Zug-Bilder richtig gesetzt (true bzw. false);
- "assigntrain" ordnet der Rocrail-Lok den Rocrail-Zug zu;
- "classset" löscht die Klasse "UMSETZ" wieder aus der Lok;
- "shuntingoff" schaltet den Rangier-Modus der Lok wieder aus;
<model cmd="modify"> <operator id="@vr_UMSETZ_operator" swaplocoimage="false" /> </model> ... <sleep time="500"/> <lc id="@vr_UMSETZ_loc" cmd="assigntrain" train="@vr_UMSETZ_operator"/> <sleep time="500"/> <lc id="@vr_UMSETZ_loc" cmd="classset" class=""/> <lc id="@vr_UMSETZ_loc" cmd="shuntingoff"/> <sleep time="500"/>
Falls die Lok im Block "bk24" oder "bk23" steht, ist der Fahrplan noch nicht abgearbeitet und die Lok setzt ihre Fahrt zum Ziel-Block fort.
4 den Zielblock erreichen
Der Fahrplan ist erst abgearbeitet, wenn der Zielblock erreicht ist ("bk23", "bk24" bzw. "bk2324v").
- die Werte aller benutzen Variablen werden dann gelöscht (insbesondere erhält "vr_UMSETZ" den Wert "aus");
- der Ausgang "co_UMSETZ" wird ausgeschaltet (cmd="off").
<vr id="vr_UMSETZ_schedule" text="" /> <vr id="vr_UMSETZ_operator" text="" /> <vr id="vr_UMSETZ_swaplocoimage" text="" /> <vr id="vr_UMSETZ_loc" text="" /> <vr id="vr_UMSETZ_block" text="" /> <vr id="vr_UMSETZ_direction" text="" /> <tx id="tx_UMSETZ" format="UMSETZ aus" /> <vr id="vr_UMSETZ" text="aus" value="0"/> <co id="co_UMSETZ" cmd="off" value="0" />
Fertig.
5 Nachbemerkung
Das alles funktioniert auch in der Gegenrichtung und mit langen Zügen im virtuellen Block "bk2324v".
6 Rocrail-Arbeitsbereich
In dem Download-Arbeitsbereich "Lok umsetzen" sind folgende Dateien enthalten:
— die ZIP-Datei ist aktualisiert zurück; hermannk 22.02.2022 18:39 Uhr —
Datei | Bedeutung |
---|---|
plan.xml | die Rocrail-Plan-Datei |
für_images | ein Ordner mit den Lok- und Wagon-Bildern von diesem Beispiel |
ac_UMSETZ_begin.xml | XML-Script für das Starten des Lok-Umsetzens |
ac_UMSETZ_generateIN.xml | XML-Script, um die Fahrt zu verkürzen |
ac_UMSETZ_end.xml | XML-Script für das Ende des Lok-Umsetzens |
Achtung: die Anwendung erfolgt auf eigene Gefahr!