Handbuch

STS Handbuch

Stellwerksim Handbuch

Webseiten-Werkzeuge


Seitenleiste



JavaScript ist deaktiviert!

stellwerksim:editor:zug-designer:zuege:zugscript

Dies ist eine alte Version des Dokuments!


ZugScript

Allgemeines zum Zugscript

Das Zugscript ist der zweite Baustein, neben dem Fahrplan, um Züge erzeugen zu lassen. Hierzu gibt es zwei Befehle: takt und loop. Da der loop-Befehl vor einiger Zeit fehlerhaft war, wurde der Befehl takt mit seinen Parametern eingeführt. Die Zug-Designer werden gebeten, nur noch den takt-Befehl zu verwenden (und vorhandene Templates bei einer Änderung umzustellen). Bei beiden Befehlen ist zu beachten, dass sie immer mit einem Semikolon abgeschlossen werden müssen.

Der im Zugscript angegebene Referenzbahnsteig darf nur einmal als Fahrplaneintrag enthalten sein!

Ferner dürfen die Zugscriptbefehle loop und takt selbst nur klein geschrieben und alle Parameter in den Klammern nur Groß geschrieben werden! Alles anderen Schreibweisen funktionieren ggf. per Zufall und werden nicht unterstützt/supported.

Das Zugscript darf nicht aus der History oder einem Textverarbeitungsprogramm wie Word kopiert werden! Ansonsten kann es sein, dass das Zugscript in mehrere Teile zerrissen wird, da hier nicht sichtbare Zeichen mitkopiert werden.

takt

Syntax

takt(<Takt in Minuten>,ID=<Referenz-AID>,GLEIS=<Referenz-Bahnsteig>,STUNDE=<std>|MILZEIT=<mil>[,MULTI=<Flag-Referenz>][,NAME=<Namensmuster>]);

Die Parameter

  • <Takt in Minuten>: Das ist eine ganze Zahl, die den Takt in Minuten angibt.
  • ID=<Referenz-AID>: Hier wird die Anlagen-ID der Referenzanlage angegeben.
  • GLEIS=<Referenz-Bahnsteig>: Hier wird der Referenzbahnsteig angegeben. Dieser muss in der Referenzanlage vorhanden und im Fahrplan angegeben sein.
  • STUNDE=<std>|MILZEIT=<mil>: Der Zeitraum, in dem der Zug verkehren soll. Die Parameter STUNDE und MILZEIT können in einem takt-Befehl mehrfach verwendet werden. (siehe unten)
  • MULTI=<Flag-Referenz>: Hier wird das Multiflag eingetragen, welches in dem vorher angegebenen Zeitraum aktiv sein soll. Dieser Parameter ist nur einzubauen, wenn im Fahrplan auch ein Multiflag verwendet wird.
  • NAME=<Namensmuster>: Hier kann ein Namensmuster für die Züge festgelegt werden.

Der <Takt in Minuten> muss immer als erstes im Befehl stehen und einen Mindestwert von 1 haben! Auf keinen Fall darf der <Takt in Minuten> weg gelassen werden. Sollte es sich nur um eine Einzelfahrt handeln, so ist der Wert 60 oder ähnliches einzugeben. Wird der <Takt in Minuten> nicht eingegeben kann es zum Absturz des Scriptlaufes kommen! Bei den anderen Parametern ist die Reihenfolge egal.

Bei STUNDE und MILZEIT gibt es mehrere Möglichkeiten:

  • STUNDE=std: Der Zug fährt nur zu dieser Stunde
  • STUNDE=std1..std2: Der Zug startet in std1 und endet vor std2
  • MILZEIT=mil: Der Zug fährt zur angegebenen Zeit am Referenzbahnhof ab
  • MILZEIT=mil1..mil2: Der Zug fährt zur Zeit mil1 das erste Mal ab und das letzte Mal vor mil2

Für Stunde wird eine ganze Zahl angegeben. MILZEIT muss im Format HHMM eingegeben werden. STUNDE, MILZEIT und MULTI dürfen mehrfach vorkommen und auch gemischt werden. Zeitangaben nach 23:59 (also z. B. STUNDE=05..26 oder MILZEIT=2420) werden nicht unterstützt. Sofern Sie derzeit funktionieren, kann sich dieses Verhalten in Zukunft ohne Ankündigung ändern.

Grundsätzlich ist der Parameter STUNDE zu benutzen und der Fahrplan an die zu erzeugenden Züge anzupassen. Bei Eintragung des Fahrplans sollte man sich an der ersten zu erzeugenden Zugfahrt orientieren. Der Parameter MILZEIT dient für besondere Konstellationen und ist mit bedacht zu verwenden, da hierdurch der eingetragene Fahrplan ausgehebelt werden kann und etwaige Änderungen ihre Wirkung verlieren!

Beispiel: Eine RB fährt von A über B,C,D nach E. Am Referenzbahnsteig D soll der Zug laut eingetragenen Fahrplan um 10:10 Uhr fahren. Durch die Nutzung des Parameters MILZEIT mit dem Wert 10:20 Uhr wird der Zug nun NICHT wie im Fahrplan eingetragen um 10:10 Uhr am Referenzbahnsteig berechnet sondern erst um 10:20 Uhr.

Zur Vereinfachung sowie zur Pflege- und Wartbarkeit für alle Zug-Designer, QS & Admins, ist der Parameter MILZEIT nur zu verwenden, wenn:

- mehrere Zugfahrten in einem Takt unter 60 Minuten erzeugt werden sollen.

Beispiel:

Eine S-Bahn verkehrt im 20 Minuten-Takt und die erste und/oder die letzte Zugfahrt innerhalb der laufenden Stunden verkehren soll.

- mehrere Zugfahrten zu wechselnden Ankunfts- oder Abfahrtzeiten, welche nicht in einem synchronen Takt erzeugt werden sollen.

Beispiel:

Eine RB verkehrt von 8 Uhr bis 20 Uhr im Stundentakt am Referenzbahnsteig zur Minute 16, jedoch zur Stunde 14 soll die RB zur Minute 12 fahren. Die Zugscriptzeile könnte hierfür wie folgt aussehen: takt(60,ID=999,GLEIS=Adorf,STUNDE=8..14,MILZEIT=1412,STUNDE=15..21);

Bei STUNDE werden die Minutenwerte der ersten Abfahrt aus dem Fahrplan des Templates verwendet - bei Takten kleiner 60 Minuten sollte die Minute kleiner dem Taktwert sein (z.B. 20 Minuten-Takt zwischen 0 und 19 liegen). Bei MILZEIT wird der angegebene Wert als erste Abfahrtzeit verwendet. Bei Takten wie 60, 120 etc ist zur besseren Übersicht der Parameter STUNDE statt des Parameters MILZEIT zu verwenden.

Beispiele

takt(20,ID=163,GLEIS=Wrs1,MILZEIT=1419..1729); Der Zug fährt das erste Mal am Referenzbahnsteig um 14:19 Uhr ab. Danach fährt er alle 20 Minuten. Ist im Fahrplan zum Beispiel die Abfahrtszeit auf 14:19 Uhr gesetzt, fährt der Zug von 14:19 Uhr bis 17:19 Uhr alle 20 MInuten.

takt(20,ID=163,GLEIS=Wrs1,STUNDE=14..17); Der Zug fährt das erste Mal um 14:xx Uhr zur Minute ab, die im Fahrplan für den Referenzbahnsteig angegeben ist. Danach fährt der Zug alle 20 Minuten. Der letzte Zug fährt vor 17:00 Uhr. Ist im Fahrplan zum Beispiel die Abfahrtszeit auf 14:19 Uhr gesetzt, fährt der Zug von 14:19 Uhr bis 16:59 Uhr alle 20 MInuten.

Mehrfache verschiedene MULTI-Flags in einer ZS-Zeile sind möglich. Beispiel: takt(30,ID=23,GLEIS=TST101,MILZEIT=0953,MILZEIT=1953,MULTI=F1,MULTI=E2);

Weitere Beispiele gibt es unten

Angabe von Namensmustern im Takt

Innerhalb des takt()-Befehls kann mit NAME=<Namensmuster> ein Namensmuster angegeben werden, welches dann für alle Züge, die mit dem takt()-Befehl erstellt wurden, gültig ist. Dabei ist folgendes zu beachten:

  • Die Angabe des Namensmuster ist nur im takt()-Befehl möglich.
  • Die Angabe des Namensmuster ist nur möglich, wenn das Feld Namensmuster in den Stammdaten leer ist (und es darf auch nur in diesem Fall leer sein).
  • Wenn eine Angabe des Namensmusters im takt()-Befehl erfolgt, so muss in jedem takt()-Befehl ein Namensmuster eingegeben werden.
In jeder Takt-Befehl-Zeile kann der Parameter NAME nur einmal vorkommen

Die genaue Beschreibung erfolgt im Kapitel Namensmuster.

loop

Der Loop-Befehl weist einige Fehler auf, der Takt-Befehl ist zu bevorzugen. Die Fehler werden nicht mehr behoben.
Syntax
loop(Bahnhof,Gleis,vonStd..bisStd,Schiebung[,Offset]);
loop(Bahnhof,Gleis,Std,Schiebung[,Offset]);

Die Parameter:

  • Bahnhof: Name eines Bahnhof, an dem der Zug hält. Dies wird angegeben mit „ID=wert“ wobei hier die Anlagen-ID des Bahnhof einzutragen ist. Bahnhof gilt als Referenz für die folgenden Werte. Alternativ kann statt der ID auch der Name des Bahnhofs angegeben werden, dies erfolgt über „Bahnhof“. Beispiele loop(ID=43,…) und als Alternative
  • Gleis: Gleis am Bahnhof, an dem der Zug hält. Die Abfahrtszeit von diesem Gleis dient als Referenz für die folgenden Werte.
  • vonStd..bisStd: Der Zeitraum, an dem der Zug fahren soll. Dabei wird die Referenz-Abfahrtszeit als Basis genommen, die bisStd wird dabei nicht mehr als Haltezeit aufgenommen (entspricht einem Programmcode etwa von: for(z=vonStd;z<bisStd;z++)).
  • Std: Nur eine Stunde, sonst wie vonStd..bisStd.
  • Schiebung: Wieviele Minuten zwischen den einzelnen Zügen im Zeitraum liegen soll, z.B. 60.
  • Offset: Optionaler Wert, setzt die Minuten, die zu den Zeiten eines Zugs addiert werden. Negative Werte sind hier nicht erwünscht, was also einem Mindestwert von 1 bedeutet.

Jeder Zug kann mehrere loop-Aufrufe haben, einfach hintereinander geschrieben.

Die Spieluhrzeit läuft z.Z. von 5:00 bis 20:59 Uhr, entsprechend sollten Loop-Zeitintervalle zwischen 5 und 21 liegen (5..21).

Schauen wir uns einige Fallbeispiele an, das dürfte mehr erklären:

Ein Zug soll alle 60 Minuten fahren, er hält an den Bahnhöfen A, Gleis 1 und B, Gleis 5 und zwischen 5 und 20 Uhr fahren (der Simulatorzeit): loop(A,1,5..21,60);

Der Zug oben soll aber Vormittags und Abends zur „Rush-Hour“ alle 30 Minuten fahren: loop(A,1,5..6,60); loop(A,1,6..9,30); loop(A,1,9..16,60); loop(A,1,16..18,30); loop(A,1,18..21,60);

Sehr umständlich, hier eine bessere Lösung: loop(A,1,5..21,60); loop(A,1,6..9,60,30); loop(A,1,16..18,60,30);

Hier brauchen wir das Offset-Feld.

Ein Zug fährt alle 30 Minuten, allerdings nicht genau alle 30, sondern um 2 Minuten verschoben, also z.B. um :10 und um :42. Das machen wir so: loop(A,1,5..21,60); loop(A,1,5..21,60,32);

Beispiele

Der Befehl takt dient zur Vereinfachung für Züge, die in der Regel in einem dichten Takt fahren oder aus mehreren einzelnen Loops mit Offset bestehen würden. Es werden zur Verdeutlichung die Befehle Loop und takt gegenüber gestellt. Hierzu mal ein paar Beispiele:

1. Zug im normalen 20 Minutentakt

Befehl loop
loop(ID=539,Ols10,15..18,20);

Ausgabe im Scripttest:

loop(ID=539,Ols10,15..18,20): 1330751
cmd: loop
Start: 15
Stop: 18
    N: LS 70250 %OsbOls10 1532 (15:32) N: LS 70252 %OsbOls10 1552 (15:52) N: LS 70254 %OsbOls10 1612 (16:12)
    N: LS 70256 %OsbOls10 1632 (16:32) N: LS 70258 %OsbOls10 1652 (16:52) N: LS 70260 %OsbOls10 1712 (17:12)
    N: LS 70262 %OsbOls10 1732 (17:32) N: LS 70264 %OsbOls10 1752 (17:52) N: LS 70266 %OsbOls10 1812 (18:12) 
Befehl takt
takt(20,ID=539,GLEIS=Ols10,MILZEIT=1532..1832);

Ausgabe im Script-Test:

takt(20,ID=539,GLEIS=Ols10,MILZEIT=1532..1832): 1330751
cmd: takt
    N: LS 70250 %OsbOls10 93200 (15:32) N: LS 70252 %OsbOls10 95200 (15:52) N: LS 70254 %OsbOls10 97200 (16:12)
    N: LS 70256 %OsbOls10 99200 (16:32) N: LS 70258 %OsbOls10 101200 (16:52) N: LS 70260 %OsbOls10 103200 (17:12)
    N: LS 70262 %OsbOls10 105200 (17:32) N: LS 70264 %OsbOls10 107200 (17:52) N: LS 70266 %OsbOls10 109200 (18:12) 

2. Einzelzug

Befehl loop
loop(ID=170,Frio1,5,60);

Ausgabe im Scripttest

loop(ID=170,Frio1,5,60): 1290712
cmd: loop
Start: 5
Stop: 6
    N: S5 5000 %FrioSt 0508 (05:08)
Befehl takt
takt(60,ID=170,GLEIS=Frio1,MILZEIT=508);

Ausgabe im Scripttest

takt(60,ID=170,GLEIS=Frio1,STUNDE=5): 1290712
cmd: takt
    N: S5 5000 %FrioSt 30800 (05:08)

3. mehrere Einzelzüge

Befehl loop
loop(ID=170,Frio1,6,60);loop(ID=170,Frio1,17,60);loop(ID=170,Frio1,21,60);

Ausgabe im Scripttest

loop(ID=170,Frio1,6,60): 1290712
cmd: loop
Start: 6
Stop: 7
    N: S5 5000 %FrioSt 0608 (06:08) 

loop(ID=170,Frio1,17,60): 1290712
cmd: loop
Start: 17
Stop: 18
    N: S5 5000 %FrioSt 1708 (17:08) 

loop(ID=170,Frio1,21,60): 1290712
cmd: loop
Start: 21
Stop: 22
    N: S5 5000 %FrioSt 2108 (21:08) 
Befehl takt
takt(60,ID=170,GLEIS=Frio1,STUNDE=6,STUNDE=17,STUNDE=21);

Ausgabe im Scrtipttest

takt(60,ID=170,GLEIS=Frio1,STUNDE=6,STUNDE=17,STUNDE=21): 1290712
cmd: takt
    N: S5 5000 %FrioSt 36800 (06:08) 
    N: S5 5000 %FrioSt 102800 (17:08) 
    N: S5 5000 %FrioSt 126800 (21:08)

4. Züge im Takt mit Einzelzügen

Befehl loop
loop(ID=170,Frio1,5..7,20);loop(ID=170,Frio1,7,60);loop(ID=170,Frio1,7,60,20);

Ausgabe im Scripttest

loop(ID=170,Frio1,5..7,20): 1290712
cmd: loop
Start: 5
Stop: 7
    N: S5 5000 %FrioSt 0508 (05:08) N: S5 5000 %FrioSt 0528 (05:28) N: S5 5000 %FrioSt 0548 (05:48)
    N: S5 5000 %FrioSt 0608 (06:08) N: S5 5000 %FrioSt 0628 (06:28) N: S5 5000 %FrioSt 0648 (06:48) 

loop(ID=170,Frio1,7,60): 1290712
cmd: loop
Start: 7
Stop: 8
    N: S5 5000 %FrioSt 0708 (07:08) 

loop(ID=170,Frio1,7,60,20): 1290712
cmd: loop
Start: 7
Stop: 8
    N: S5 5000 %FrioSt 0728 (07:28)
Befehl takt
takt(20,ID=170,GLEIS=Frio1,MILZEIT=508..748);

Ausgabe im Scripttest

takt(20,ID=170,GLEIS=Frio1,MILZEIT=508..748): 1290712
cmd: takt
    N: S5 5000 %FrioSt 30800 (05:08) N: S5 5000 %FrioSt 32800 (05:28) N: S5 5000 %FrioSt 34800 (05:48)
    N: S5 5000 %FrioSt 36800 (06:08) N: S5 5000 %FrioSt 38800 (06:28) N: S5 5000 %FrioSt 40800 (06:48) 
    N: S5 5000 %FrioSt 42800 (07:08) N: S5 5000 %FrioSt 44800 (07:28)
stellwerksim/editor/zug-designer/zuege/zugscript.1457866715.txt.gz · Zuletzt geändert: 2016/03/13 11:58 von 127.0.0.1