Table of Contents
Lok-Aktions-Aufrufe
Userpages - Hermann (hermannk) → de: Lok-Aktions-Aufrufe
| hier geht es direkt zum Rocrail-Arbeitsbereich-Download |
Vorwort
Vorwort 1:
Diese Dokumentation wurde erstellt am: 05.11.2025
| Bereich | Details | Bemerkungen |
|---|---|---|
| Software | Rocrail | Version 6253+ (macOS „Tahoe“ für Apple CPU) |
| Computer | MacBook Pro (M2) | macOS 15.6.1 (Sequoia) |
| - | - | Schlüsselwörter: Lokomotive, Block, Eigenschaften, Aktion, Aktionssteuerung, XMLScript, Status, Bedingungen |
Vorwort 2:
- Die Nutzung dieser Lösung erfolgt auf eigene Gefahr;
- Regelmäßige Datensicherungen des Rocrail-Arbeitsbereichs werden empfohlen.
A) Benutzeranfrage
Welchen Status kann eine Lokomotive annehmen, was bedeutet der Status und wie kann man den Status in einer Aktionssteuerung anwenden?
B) Lösung
B0) Einleitung
Die verwendeten Worte/Zeichen für einen Lok-Status sind nicht eindeutig. So wird das Wort "stop" sowohl als Befehl als auch als Status verwendet. Der jeweilige Kontext, in dem das Wort angewendet wird, schafft aber in der Regel Klarheit.
Die Befehle einer Lokomotive sind im Rocrail-Wiki beschrieben: Die Typen, Befehle & Parameter - Lokomotiven
go (starten), govirtual (virtuell starten), stop (anhalten), velocity (Geschwindigkeit stellen), velocity2 (Geschwindigkeit 2. Dekoder stellen), percent (Prozent), dispatch (abfertigen), swap (Logische Richtung tauschen), blockside (Blockseite), carcount (Wagenzählung), min (min), mid (mittel), cruise (Reise), max (max), consist (Mehrfachtrakton), assigntrain (Zug zuweisen), releasetrain (Zug lösen), binstate_on (Binär ein), binstate_off (Binär aus), pomwrite (CV via POM), Vvar (Geschwindigkeit), shuntingon (Rangiermodus ein), shuntingoff (Rangiermodus aus)
Der Status einer Lokomotive ist im Rocrail-Wiki beschrieben: Aktions-Steuerung / Status
home, forwards, reverse, diesel, steam, electric, battery, min, mid, cruise, max, fon, foff, +, -, #, x, light, lightgoods, local, goods, post, ice, mixed, regional, shunting, cleaning, none, service, commuter, class, schedule:, idle, wait, auto, run, manual, automatic, stop, stall, f1-f28, eventtimeout, eventtimeoutreset
In dieser Liste stehen auch Worte/Zeichen, die in Aktions-Bedingungen angewendet werden: Mögliche Zustände für den Typ Lok
Im Folgenden sollen die Worte/Zeichen erklärt und angewendet werden.
Die Lok-Aktionen in diesem Beispiel schreiben einen Text in ein Textfeld im Rocrail-Plan, damit man schnell erkennen ab, ob eine Aktion ausgeführt wurde und welche Aktion ausgeführt wurde.
Eine praktische Anwendung würde z.B. einen Pfiff auslösen, eine Schranke schliessen oder … .
Im Arbeitsbereich ist der Rocrail-Plan von dieser Beschreibung enthalten. Er kann für eigene Test gerne erweitert werden.
B1) Lok-Aktionen
Hier sollen aus der Liste die Worte/Zeichen beschrieben werden, die in der Aktionssteuerung einer Lokomotive angewendet werden können.
Der Status der Lokomotive wird dabei im Status-Feld bzw. im Substatus-Feld der Aktionssteuerung angewendet.
| home, forwards, reverse, diesel, steam, electric, battery, min, mid, cruise, max, fon, foff, +, -, #, x, light, lightgoods, local, goods, post, ice, mixed, regional, shunting, cleaning, none, service, commuter, class, schedule:, idle, wait, auto, run, manual, automatic, stop, stall, f1-f28, eventtimeout, eventtimeoutreset |
Hinzu kommen Worte, die im Aktions-Kontextmenü einer Lokomotive enthalten sind:
| assigntrain, dirchange, lights, releasetrain, V0, calibrate |
Die Aktions-Kennung bezieht sich auf die Beispiele im unten stehenden Arbeitsbereich .
- Objekt "lc" = Lokomotive.
| Wort | Objekt | Aktions-Kennung | Status | Substatus | löst eine Aktion aus, wenn … |
|---|---|---|---|---|---|
| min | lc | ac_ala_lc_min | min | … sich die Geschwindigkeit der Lok zu "Vmin" ändert. | |
| mid | lc | ac_ala_lc_mid | mid | … sich die Geschwindigkeit der Lok zu "Vmid" ändert. | |
| cruise | lc | ac_ala_lc_cruise | cruise | … sich die Geschwindigkeit der Lok zu "Vcruise" ändert. | |
| max | lc | ac_ala_lc_max | max | … sich die Geschwindigkeit der Lok zu "Vmax" ändert. | |
| schedule: | lc | ac_ala_lc_useschedule | useschedule | … der Lok ein Fahrplan zugewiesen wird | |
| idle | lc | ac_ala_lc_mode_idle | mode | idle | … die Lok im Modus "idle" (Leerlauf) ist |
| wait | lc | ac_ala_lc_mode_wait | mode | wait | … die Lok im Modus "wait" (warten) ist |
| auto | lc | ac_ala_lc_mode_auto | mode | auto | … die Lok im Modus "auto" (automatisch) ist |
| run | lc | ac_ala_lc_run | run | … die Lok im Modus "run" (sie fährt) ist | |
| stop | lc | ac_ala_lc_mode_stop | mode | stop | … die Lok im Modus "stop" ist |
| stop | lc | ac_ala_lc_stop | stop | … die Lok im Modus "stop" ist | |
| stall | lc | ac_ala_lc_stall | stall | … die Lok im Modus "stall" (Stand) ist | |
| f1-f28 | lc | ac_ala_lc_f3_off | f3 | off | … die Funktion F3 ausgeschaltet wird |
| f1-f28 | lc | ac_ala_lc_f3_on | f3 | on | … die Funktion F3 eingeschaltet wird |
| assigntrain | lc | ac_ala_lc_assigntrain | assigntrain | … ein Zug zugewiesen wird | |
| dirchange | lc | ac_ala_lc_dirchange | dirchange | … die Fahrtrichtung geändert wird | |
| lights | lc | ac_ala_lc_lights_off | lights | off | … die Funktion F0 (Licht) ausgeschaltet wird |
| lights | lc | ac_ala_lc_lights_on | lights | on | … die Funktion F0 (Licht) eingeschaltet wird |
| releasetrain | lc | ac_ala_lc_releasetrain | releasetrain | … ein Zug von der Lok gelöst wird | |
| V0 | lc | ac_ala_lc_V0 | V0 | … die Geschwindigkeit V0 eingestellt wurde |
Realisiert man die Aufgabe mit XMLScripts, so könnte man in einem einzigen XMLScript jeden oben aufgeführten Status mit einer "switch-case"-Konstruktion abhandeln. Das XMLScript "ac_alx_lc_xmlscript.xml" ist so aufgebaut. Der beim Aufruf vorliegende Status (<switch var="%state%">) verzweigt zu den je nach Status erforderlichen Massnahmen, z.B. <case val="useschedule"> .
<switch var="%state%">
<case val="useschedule">
...
</case>
<case val="f3">
...
</case>
<case val="assigntrain">
...
</case>
<case val="dirchange">
...
</case>
<case val="lights">
...
</case>
<default>
...
</default>
</switch>
| Wort | Objekt | Aktions-Kennung | Status | Substatus | löst eine Aktion aus, wenn … |
|---|---|---|---|---|---|
| min mid cruise … useschedule f3 assigntrain dirchange lights … | lc | ac_alx_lc_xmlscript | min mid cruise … useschedule f3 assigntrain dirchange lights … | … |
B2) Block-Aktionen einer Lok
Hier sollen aus der Liste die Worte/Zeichen beschrieben werden, die in der Aktionssteuerung eines Blocks bezogen auf eine Lokomotive angewendet werden können.
Der Status der Lokomotive wird dabei nicht im Status-Feld der Aktion angewendet, sondern in der Aktions-Bedingung.
Sollte ein Zug der Lokomotive zugeordnet sein, wird in der Aktions-Bedingung die Eigenschaft des Zuges angewendet.
| home, forwards, reverse, diesel, steam, electric, battery, min, mid, cruise, max, fon, foff, +, -, #, x, light, lightgoods, local, goods, post, ice, mixed, regional, shunting, cleaning, none, service, commuter, class, schedule:, idle, wait, auto, run, manual, automatic, stop, stall, f1-f28, eventtimeout, eventtimeoutreset |
Die Aktions-Kennung und die callerid beziehen sich auf die Beispiele im unten stehenden Arbeitsbereich .
- Objekt "bk" = Block.
- nicht für jeden Lok-Status wurde eine normale Aktion angelegt.
| Lok-Status | Objekt | Aktions-Kennung | Status | Sub-status | Aktions-Bedingung | callerid | löst eine Aktion aus, wenn … |
|---|---|---|---|---|---|---|---|
| forwards | bk | ac_abac_forwards | enter | lc,*,forwards | bk22 | … sich die Fahrtrichtung auf "vorwärts" ändert | |
| reverse | bk | ac_abac_reverse | enter | lc,*,reverse | bk22 | … sich die Fahrtrichtung auf "rückwärts" ändert | |
| diesel | bk | - | … Lok/Zug die Antriebsart "diesel" (Diesel) besitzt | ||||
| steam | bk | - | … Lok/Zug die Antriebsart "steam" (Dampf) besitzt | ||||
| electric | bk | ac_abac_type_electric | occupied | lc,*,electric | bk21 | … Lok/Zug die Antriebsart "electric" (elektrisch) besitzt | |
| battery | bk | - | … Lok/Zug die Antriebsart "battery" (Batterie) besitzt | ||||
| fon | bk | ac_abac_f3_fon | occupied | lc,*,"fon,3" | bk23 | … die Funktion F3 ausgeschaltet ist | |
| foff | bk | ac_abac_f3_foff | occupied | lc,*,"foff,3" | bk23 | … die Funktion F3 eingeschaltet ist | |
| + (Plus-Zeichen) | bk | ac_abac_plus | enter | lc,*,+ | bk22 | … Lok/Zug auf der Plus-Seite in den Block fährt | |
| - (Minus-Zeichen) | bk | ac_abac_minus | enter | lc,*,- | bk22 | … Lok/Zug auf der Minus-Seite in den Block fährt | |
| # (Hashtag) | bk | ac_abac_hashtag | occupied | lc,*,"#21,#22" | bk23 | … Lok/Zug-Adresse ist 21 oder 22 | |
| x (ein X) | bk | ac_abac_x | occupied | lc,*,"x22,x24" | bk23 | … Lok/Zug-Adresse ist nicht 22 und nicht 24 | |
| light | bk | - | … Lok/Zug ist vom Typ "light" | ||||
| lightgoods | bk | - | … Lok/Zug ist vom Typ "lightgoods" | ||||
| local | bk | - | … Lok/Zug ist vom Typ "local" | ||||
| goods | bk | - | … Lok/Zug ist vom Typ "goods" | ||||
| post | bk | - | … Lok/Zug ist vom Typ "post" | ||||
| ice | bk | ac_abac_type_ice | occupied | lc,*,ice | bk21 | … Lok/Zug ist vom Typ "ice" | |
| mixed | bk | - | … Lok/Zug ist vom Typ "mixed" | ||||
| regional | bk | - | … Lok/Zug ist vom Typ "regional" | ||||
| shunting | bk | - | … Lok/Zug ist vom Typ "shunting" | ||||
| cleaning | bk | ac_abac_type_cleaning | occupied | lc,*,cleaning | bk21 | … Lok/Zug ist vom Typ "cleaning" | |
| none | bk | - | … Lok/Zug ist vom Typ "none" | ||||
| service | bk | - | … Lok/Zug ist vom Typ "service" | ||||
| commuter | bk | - | … Lok/Zug ist vom Typ "commuter" (Pendelzug) | ||||
| class | bk | ac_abac_class_MYCLASS | occupied | "lc,*,"class:MYCLASS21" lc,*,"class:MYCLASS22" | bk21 | … Lok/Zug gehört zur Klasse "MYCLASS21" oder "MYCLASS22" | |
| manual | bk | ac_abac_manual | occupied | lc,*,manual | bk21 | … Lok/Zug wird manuell gesteuert | |
| automatic | bk | ac_abac_automatic | occupied | lc,*,automatic | bk21 | … Lok/Zug wird automatisch gesteuert |
B3) offene Punkte
Jetzt sind noch einige Punkte aus der Liste die Worte/Zeichen nicht beschrieben worden.
| home, forwards, reverse, diesel, steam, electric, battery, min, mid, cruise, max, fon, foff, +, -, #, x, light, lightgoods, local, goods, post, ice, mixed, regional, shunting, cleaning, none, service, commuter, class, schedule:, idle, wait, auto, run, manual, automatic, stop, stall, f1-f28, eventtimeout, eventtimeoutreset calibrate |
Das wird später ergänzt.
B4) Ein praktisches Beispiel
Aufgabe:
- ein ICE soll auf seiner Rangierfahrt
- einen Pfiff auslösen,
- wenn er im Block bk22 ist und
- die Funktion "F3" aktiv ist (warum auch immer).
Voraussetzungen:
- alle Lokomotiven haben eine Funktion "horn", welche das Pfeifen durchführen soll. In diesen Beispielen ist das die Funktion "F2".
In diesem Beispiel ist die Funktion für 2 Sekunden eingeschaltet.
Realisierung:
Es gibt eine Aktions-Definition "ac_example_horn", die das Pfeifen bei einer beliebigen Lok auslösen soll:
| Aktion | Typ | Kennung | Sub-Kennung | Befehl | Parameter |
|---|---|---|---|---|---|
| ac_example_horn | Funktion | - | - | on | horn |
In der Aktionssteuerung von Block bk22 wird diese Aktion angewendet:
| Objekt | Aktions-Kennung | Status | Sub-Status | Aktions-Bedingungen | Muss wahr sein |
|---|---|---|---|---|---|
| bk22 | ac_example_horn | occupied | - | lc,*,ice lc,*,"fon,3" lc,*,shunting | ja ja ja |
Test:
Bei der Lokomotive "lc23" (das ist eine Lokomotive vom Typ "ice")
- die Funktion "F3" einschalten
- das "Rangieren" einschalten
- in den Block "bk22" fahren lassen,
dann wird die Funktion "horn" ausgelöst.
In allen anderen Fällen passiert das nicht.
Zusätzlich wird durch zwei Aktionen in der Lokomotive “lc23” der Zustand der Funktion in dem Textfeld protokolliert.
Die Definitionen der Aktionen:
| Aktion | Typ | Kennung | Sub-Kennung | Befehl | Parameter |
|---|---|---|---|---|---|
| ac_example_horn_on | Text | tx_loga | - | update | %hour%:%min%:%sec% ala: horn on … |
| ac_example_horn_off | Text | tx_loga | - | update | %hour%:%min%:%sec% ala: horn off … |
Die Anwendung der Aktionen bei der Lokomotive “lc23”:
| Objekt | Aktions-Kennung | Status | Sub-Status | Aktions-Bedingungen | Muss wahr sein |
|---|---|---|---|---|---|
| lc23 | ac_example_horn_on | f2 | on | - | - |
| lc23 | ac_example_horn_off | f2 | off | - | - |
C) Der Arbeitsbereich
Der Inhalt
Der heruntergeladene Arbeitsbereich " loco_action_calls.zip" enthält die folgenden Dateien:
| Datei | Bemerkung |
|---|---|
| plan.xml | die Rocrail-Plan-Datei |
| ac_alx_lc_xmlscript.xml | optionales XMLScript |
zurück zu B) Einleitung.
Die Anwendung
Den Arbeitsbereich öffnen;
- die Lokomotiven in verschiedene Blöcke platzieren, um alle verschiedenen Situationen zu testen;
- oder
- die Lokomotiven zum Testen starten.
Vorzugsweise:
- die Lokomotive lc01 im Block bk01 (und bk02 und bk03);
- die Lokomotiven lc21, lc22, lc23 und lc24 im Block bk21 (und bk22 und bk23).
Viel Spaß!
Fragen beantwortet das Rocrail-Forum.
Das XMLScript
Das XMLScript ist optional; für alle normalen Lok-Aktionen gibt es in diesem Beispiel nur ein XMLScript.
Die Block-Aktionen wurden zur besseren Dokumention von Abläufen hinzugefügt.
| Aktion | XMLScript | Anwendung |
|---|---|---|
| ac_ala_lc_xxx | ac_alx_lc_xmlscript.xml | Lok-Status |
| ac_aba_xxx | - | Block-Aktionen |
| ac_abac_xxx | - | Lok-Status in Aktions-Bedingungen bei Block-Aktionen |
Während bei normalen Aktionen für jeden Status eine Aktion angelegt werden muss, kann ein XMLScript mehrere Einzelaktion abdecken:
| Status | Aktionen | XMLScript |
|---|---|---|
| min mid cruise max … | ac_ala_lc_min ac_ala_lc_mid ac_ala_lc_cruise ac_ala_lc_max … | ac_alx_lc_xmlscript.xml |
Die Lok-Eigenschaften
Die Lokomotiven haben für die Tests unterschiedliche Eigenschaften.
| Eigenschaften | ||||
|---|---|---|---|---|
| Kennung | home | cargo | engine | class |
| lc01 | bk01 | goods | diesel | - |
| lc21 | bk21 | cleaning | diesel | MYCLASS21 |
| lc22 | - | none | diesel | MYCLASS22 |
| lc23 | bk23 | ice | electric | - |
| lc24 | - | none | diesel | - |
Die Block-Eigenschaften
In den Blöcken sind für die Tests unterschiedliche Aktionen vorgesehen.
| Eigenschaften | ||||
|---|---|---|---|---|
| Kennung | Aktion | Status | Bedingung | Muss wahr sein |
| bk01 | ||||
| ac_aba_occupied | occupied | - | - | |
| ac_aba_enter | enter | - | - | |
| ac_aba_in | in | - | - | |
| ac_aba_free | free | - | - | |
| bk02 | - | |||
| bk03 | - | |||
| bk21 | ||||
| ac_aba_occupied | occupied | - | - | |
| ac_abac_class_MYCLASS | occupied | Loco,*,"class:MYCLASS21" Loco,*,"class:MYCLASS22" | nein nein |
|
| ac_abac_type_cleaning | occupied | Loco,*,cleaning | ja | |
| ac_abac_type_ice | occupied | Loco,*,ice | ja | |
| ac_abac_type_electric | occupied | Loco,*,electric | ja | |
| ac_abac_manual | occupied | Loco,*,manual | ja | |
| ac_abac_automatic | occupied | Loco,*,automatic | ja | |
| bk22 | ||||
| ac_abac_plus | enter | Loco,*,+ | ja | |
| ac_abac_minus | enter | Loco,*,- | ja | |
| ac_abac_forwards | enter | Loco,*,forwards | ja | |
| ac_abac_reverse | enter | Loco,*,reverse | ja | |
| bk23 | ||||
| ac_abac_hashtag | occupied | Loco,*,"#21,#22" | ja | |
| ac_abac_x | occupied | Loco,*,"x22,x24" | ja | |
| ac_abac_f3_fon | occupied | Loco,*,"fon,3" | ja | |
| ac_abac_f3_foff | occupied | Loco,*,"foff,3" | ja | |