Dies ist eine alte Version des Dokuments!
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.
takt(<Takt in Minuten>,ID=<Referenz-AID>,GLEIS=<Referenz-Bahnsteig>,STUNDE=<std>|MILZEIT=<mil>[,MULTI=<Flag-Referenz>][,NAME=<Namensmuster>]);
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:
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.
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
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 genaue Beschreibung erfolgt im Kapitel Namensmuster.
loop(Bahnhof,Gleis,vonStd..bisStd,Schiebung[,Offset]); loop(Bahnhof,Gleis,Std,Schiebung[,Offset]);
Die Parameter:
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);
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:
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)
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)
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)
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)
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)
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)
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)
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)