User Tools

Site Tools


userpages:hermannk:loco_action_calls-de

Lok-Aktions-Aufrufe

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


userpages/hermannk/loco_action_calls-de.txt · Last modified: 2025/11/05 16:28 by hermannk