User Tools

Site Tools


action-example-de

Aktionen-Beispiele

InhaltObjekteAktionen


Anwendung der Statuswerte

Die Aktionssteuerung wird bei einer Weiche aufgerufen,
–» damit ist definiert, dass das Betätigen dieser Weiche die im Dialog eingestellte Aktion startet.
Im Feld "Status" steht "turnout".
–» damit ist definiert, dass die Aktion genau dann gestartet wird, wenn die Weiche auf "Abzweig" schaltet.

Die Aktionssteuerung wird bei einem Rückmelder aufgerufen,
–» damit ist definiert, dass dieser Rückmelder die im Dialog eingestellte Aktion startet.
Im Feld "Status" steht "off".
–» damit ist definiert, dass die Aktion genau dann gestartet wird, wenn der Rückmelder von "On" auf "Off" schaltet.

Die bei Fahrplänen definierbaren Aktionssteuerungen bilden eine Ausnahme:

Auf Karteikarte "Ziele" kann zu jedem Block im Fahrplan ein Aktionssteuerung definiert werden.
–» Die Aktion wird gestartet, wenn der Zug in den jeweiligen Block einfährt.

Auf Karteikarte "Nachfolge".
–» Die Aktion wird gestartet wenn der Fahrplan zu Ende ist.

Irgendwelche Statusdefinitionen sind hier z.Zt. nicht möglich. (Objekttyp = Fahrplan)

Zähler (count)


In diesem Beispiel wird diese Aktionssteuerung einem Rückmelder zugewiesen.
Wird dieser Rückmelder zum dritten Mal aktiv (Status = 3), wird die Aktion "Telex V90 030" ausgeführt.

Fahrstraße durch Start- und Zieltaste einstellen

Dieses Beispiel zeigt auf, wie man eine Fahrstraße durch zwei 'Schalter', einen am Anfang und den anderen am Ende der Fahrstraßen, aktivieren kann.


Wenn man die Schalter 'left' und 1 (die Reihenfolge spielt keine Rolle) drückt, schaltet Rocrail die Weiche T1 auf gerade (straight). Wenn man die Schalter 'right' und 3 betätigt, werden die Weichen T2 und T3 auf Abzweigung (turnout) gestellt und so weiter.

Der beste Weg um die Vorgänge zu verstehen, ist, einen Blick auf die Definitionen der Aktionen und Fahrstraßen bzw. wie die Aktionen in den fünf Rückmeldern verwendet werden. Die Namen der Objekte in dem Beispiel sind möglichst selbsterklärend gewählt.

In dem Beispiel ist keine weitere Logik (wie z. B. Blöcke) definiert, aber wenn man einmal die Idee hinter dieser Vorgehensweise verstanden hat, ist es einfach, weitere Aktionen mit mehr Logik hinzuzufügen.

Für einen Test des Beispiels enthält die folgende Zip-Datei eine "rocrail.ini" und die entsprechende "plan.xml". In der rocrail.ini ist die Zeit für das Schalten von Fahrstraßen auf 1 Sekunde eingestellt und damit werden Weichen in einem Abstand von 1 Sekunde geschaltet, um die Änderungen am Bildschirm besser verfolgen zu können.


Manuell zu schaltende Fahrstraßen mit Selbstverschluss und Ausleuchtung

Für die Ausleuchtung manuell geschalteter Fahrstraßen ist der Selbstverschluss Voraussetzung.


Gleichzeitig geschaltete Weichen

Das erste Beispiel zeigt, wie Weichen eingestellt werden, die immer zusammen geschaltet werden (beide gerade oder beide abzweigend), weil beide Weichenantriebe an denselben Dekoderausgang angeschlossen sind. Dabei wird eine Weiche einer realen Dekoderadresse zugeordnet, die andere einer virtuellen Adresse der Virtuellen Zentrale. Die Aktionen und Aktionsbedingungen sorgen dafür, dass dem Schalten der einen Weiche die andere folgt.

  • Hinweis: Dieses erste Beipiel wird nicht mehr benötigt, da jetzt im Gleisplan mehrere Weichen-Objekte mit den gleichen Adress-Daten (Adresse/Port) definiert werden können.


Im zweiten Beispiel wird gezeigt, wie dasselbe Resultat erzielt werden kann, wenn die Weichenantriebe an zwei verschiedene Decoderausgänge mit zwei realen Decoderadressen angeschlossen sind. Demonstriert wird dies anhand eines Weichenpaares, das synchron geschaltet wird.


Im dritten Beispiel wird diese Technik auf die beiden Schranken eines Bahnüberganges angewendet.



Lokbild der Blockbelegung anzeigen

Mit Aktionen kann das Bild einer den Block belegenden Lok angezeigt werden:
Blockbelegung als Lokbild

Variable (z. B. 'Zähler') in einem Textelement anzeigen

1. ein Text-Element erstellen, z.B. "Zähler".
2. eine neue Aktion definieren "Zähler_anzeigen", Typ="text", Parameter ist die Variable, hier "%counter%"; Befehl="update"
3. diese Aktion wird nun dem Rückmelder eines Blocks zugeordnet (status="on")
Die Variable (hier '4') kommt somit zur Anzeige …

Handhabung zwei kurzer Blöcke in Reihe für lange Züge

Dies wird nicht offiziell unterstützt und wird als Problem-Umgehung für Fehler im Plan-Entwurf angesehen.
Besser ist es, lange Züge durch Fahrstraßen-Bedingungen unter Verwendung der zwei kurzen Blöcke als kreuzende Blöcke direkt in Block "1a" fahren zu lassen.

Dieser Demo-Plan hat - hoffentlich - selbsterklärende Namen für die Objekte (englisch). Die Idee hinter diesem Plan ist es, dass ein (Schatten-) Bahnhof zwei Blöcke hintereinander haben kann. Jeder von diesen Blöcken 1a u. 1b kann einen kurzen Zug enthalten, während ein langer Zug beide Blöcke belegt, indem er eine Fahrstraße zu Block 1b mit Block 1a als kreuzenden Block verwendet.

Ohne besondere Maßnahmen würde nach der Ankunft eines langen Zuges in Block 1b der Block 1a wieder frei sein und Rocrail könnte einen Zug dorthin leiten. Auch wenn der lange Zug den Block 1b wieder verlässt, könnten Rückmelder in Block 1a ein Geisterzug-Ereignis in Block 1a auslösen.

Der Plan verwendet eine Dummy-Lok, wobei diese Lok entweder der virtuellen Zentrale zugewiesen wird oder eine nicht verwendete Adresse erhält. (Es muss aber sichergestellt sein, dass diese Adresse auch zukünftig unbenutzt bleibt) Für jeden "Satz" von Blöcken in Reihe wird eine separate Dummy-Lok benötigt, weil ein Dummy nicht mehrere Blöcke belegen kann.
Vier Fahrstrassen werden manuell angelegt, manual-[start]-[destination] genannt. Die anderen Fahrstrassen wurden vom Router angelegt. Einige Fahrstraßen haben Berechtigungs-Einstellungen, so dass entweder nur lange oder nur kurze Züge diese Fahrstrasse verwenden.
Zwei der manuellen Fahrstrassen beinhalten eine Aktions-Steuerung und eine hat eine Aktions-Bedingung. Eine Aktion setzt die Dummy-Lok in Block 1a, die andere entfernt sie wieder. Beide Aktionen werden am Ende der Fahrstrasse ausgelöst, wenn der Zug seinen Ziel-Block erreicht hat und die Fahrstraße wieder freigegeben wurde. Nochmal, wenn mehrere "Sätze" von Blöcken in Reihe existieren, benötigt jeder Satz seine eigenen Fahrstraßen und Aktionen.
Beim Setzen einer Dummy-Lok in Block 1a kümmert sich Rocrail nicht darum, dass Rückmelder in Block 1a aktiv werden, weil der lange Zug in 1b sie auslöst, wenn er zu Block 3 fährt. Das verhindert den Geisterzug-Status in Block 1a.
Für Versuche mit der virtuellen Zentrale den kurzen Zug short in Block start2, den langen Zug long in Block start setzen und beide im Automodus starten. Der Zug long verwendet die Fahrstraße von start zu 1b und 1a als kreuzenden Block. Nach der Ankunft in Block 1b erscheint durch die Aktion in der Fahrstraße die Dummy-Lok in Block 1a. Der Zug short wartet in Block start, weil Block 1a durch die Dummy-Lok belegt und Block 2 geschlossen ist. Nach dem Aufenthalt in 1b verwendet long die manuelle lange Fahrstraße von 1b nach 3. Man kann die Rückmelder von Block 1a so oft auslösen wie man will, aber weil die Dummy-Lok darin ist, tritt kein Geisterzug-Status auf. Nach der Ankunft in Block 3 entfernt die zweite Aktion die Dummy-Lok aus Block 1a und der Zug short fährt nun nach Block 1a.

Damit soll es probiert werden.


Geteiltes Bahnhofsgleis

Aufgabenstellung:
Ein Bahnhofs-Bahnsteig soll unterteilt werden in z. B. die Blöcke 1A und 1B. Wie kann man es lösen, dass lange Züge den kompletten Bahnsteig nutzen und kürzere Züge sich einen Bahnsteig teilen? Zusätzlich befindet sich in der Mitte des Bahnsteigs eine Weiche, um auf ein Durchfahrtsgleis zu gelangen, sodass der hintere Zug eher abfahren kann. Das Beispiel beinhaltet 3 Züge, einen langen und zwei kurze. Das Bahnhofsgleis ist aufgeteilt in 2 Blöcke (1A + 1B) mit Umfahrgleis.
Geteiltes Bahnhofsgleis

Lösungsvorschlag:
*) Zu den automatisch erstellten Fahrstrassen ist eine manuelle FS (Fahrstraße) hinzugefügt: Vom Einfahrblock (Efb) nach 1B mit Block 1A als kreuzendem Block.
*) Eine weitere manuelle FS ist erstellt: 1A → Ausfahrblock mit kreuzendem Block 1B.
*) Die FS Efb → 1A ist für den langen Zug gesperrt (FS-Berechtigung) - somit muss der lange Zug immer die manuelle FS nach 1B nehmen.
*) Fährt der lange Zug in 1B ein, sperrt er die FS Efb → 1A. Es kann also kein Zug in 1A einfahren, der ja auch noch vom langen Ende des Zuges belegt ist (Aktion bei Block "occupied" - Bedingung "Lok", "langer Zug").
*) Fährt der lange Zug aus 1B aus, bleibt die FS Efb → 1A gesperrt. Ein folgender Zug fährt also auch bis 1B durch (via die manuell angelegte FS!)
*) Fährt einer der beiden kurzen Züge in 1B ein, wird die FS Efb → 1A wieder freigegeben und ein nachfolgender kurzer Zug kann in 1A einfahren.
*) Fährt einer der beiden kurzen Züge in 1A ein, sperrt er mittels Aktion die FS 1A → 1B und kann somit nur über das Umfahrgleis ausfahren. Die Aktion verhindert, dass dieser Zug erst in 1A und dann in 1B anhält, falls 1B in der Zwischenzeit frei geworden ist.
*) Fährt Kurzzug aus 1B früher los und räumt den Block 1B, so wählt der nachfolgende Kurzzug in 1A die FS 1A → Ausfahrblock (und nicht das Umfahrgleis) und fährt ohne Halt in 1B zum Ausfahrblock. Eine Aktion sperrt die FS "autogen-[1A-]-[Ausfahrblock-]" (dies ist die Umfahrung von 1B), wenn ein (kurzer) Zug 1B verläßt (depart) UND 1A besetzt ist. Somit muss der Folgezug durch 1B und nimmt nicht das Umfahrgleis. Die zweite Aktion öffnet die FS wieder, wenn ein kurzer Zug 1A verläßt. *) Bei einer Ausfahrt über das Umfahrgleis wird die FS 1A → 1B wieder freigegeben (Aktion: Block 1A, Status "depart").

Unter "Tabellen/Aktionen" finden sich die 6 benötigten Aktionen, ihre Definitionen und die Information, wo und wie die Aktionen (Aktionssteuerung, Aktionsbedingung) aufgerufen/verarbeitet werden.

Zum Testen den angehängten Plan herunter laden und im virtuellen Modus laufen lassen.
bsp_geteiltes_bfgleis.zip

Das Verhalten der FS kann an Hand der FS-Symbole mitverfolgt werden: rote Farbe - FS gesperrt, weiße Farbe - FS geöffnet.

Hinweis:
Das Beispiel zeigt didaktisch den Umgang mit und die Verwendung von Aktionen.
Mit der virtuellen Zentrale funktioniert dieses Beispiel problemlos.
An realen Anlagen kann es erforderlich sein, z. B. mit Aktionen Vorkehrungen zu treffen, die die Melder im Block 1A zurücksetzen,
wenn der lange Zug in Block 1B einfährt, aber die Melder im Block 1A noch besetzt sind.


Warten im Block ein-/ausschalten

Aufgabenstellung:
Mittels Taster in der Gleisplanansicht die Eigenschaft "Warten" eines Blocks im Automatikbetrieb ein- bzw. ausschalten.
Lösungsvorschlag von User peters:
Warten im Block

action-example-de.txt · Last modified: 2022/11/22 01:00 by rainerk