Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
stellwerksim:editor:zug-designer:zuege:zugscript [2016/03/13 11:58] – Externe Bearbeitung 127.0.0.1 | stellwerksim:editor:zug-designer:zuege:zugscript [2019/01/19 18:22] (aktuell) – Ersetzt durch stellwerksim:erbauer:zugbau:zugscript DevonFrosch | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== 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/ | ||
- | |||
- | <note warnung> | ||
- | |||
- | ===== takt ===== | ||
- | |||
- | === Syntax === | ||
- | |||
- | < | ||
- | takt(< | ||
- | </ | ||
- | |||
- | === Die Parameter === | ||
- | |||
- | * **<Takt in Minuten> | ||
- | * **ID=< | ||
- | * **GLEIS=< | ||
- | * **STUNDE=< | ||
- | * **MULTI=< | ||
- | * **NAME=< | ||
- | |||
- | 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**: | ||
- | * **STUNDE=std1..std2**: | ||
- | * **MILZEIT=mil**: | ||
- | * **MILZEIT=mil1..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. '' | ||
- | Sofern Sie derzeit funktionieren, | ||
- | |||
- | **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, | ||
- | |||
- | **__- 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, | ||
- | |||
- | 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, | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | 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, | ||
- | 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, | ||
- | 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, | ||
- | |||
- | Weitere Beispiele gibt es [[# | ||
- | |||
- | === Angabe von Namensmustern im Takt === | ||
- | |||
- | Innerhalb des takt()-Befehls kann mit **NAME=< | ||
- | 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. | ||
- | |||
- | <note wichtig> | ||
- | |||
- | Die genaue Beschreibung erfolgt im [[stellwerksim: | ||
- | |||
- | |||
- | ===== loop ===== | ||
- | |||
- | <note warnung> | ||
- | |||
- | == Syntax == | ||
- | |||
- | < | ||
- | loop(Bahnhof, | ||
- | loop(Bahnhof, | ||
- | </ | ||
- | |||
- | Die Parameter: | ||
- | * Bahnhof: Name eines Bahnhof, an dem der Zug hält. Dies wird angegeben mit " | ||
- | * 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: | ||
- | * 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, | ||
- | |||
- | |||
- | Der Zug oben soll aber Vormittags und Abends zur " | ||
- | loop(A, | ||
- | |||
- | |||
- | Sehr umständlich, | ||
- | loop(A, | ||
- | |||
- | 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, | ||
- | |||
- | ===== 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, | ||
- | </ | ||
- | |||
- | Ausgabe im Scripttest: | ||
- | < | ||
- | loop(ID=539, | ||
- | 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: | ||
- | </ | ||
- | |||
- | == Befehl takt == | ||
- | < | ||
- | takt(20, | ||
- | </ | ||
- | |||
- | Ausgabe im Script-Test: | ||
- | < | ||
- | takt(20, | ||
- | 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: | ||
- | </ | ||
- | |||
- | === 2. Einzelzug === | ||
- | == Befehl loop == | ||
- | < | ||
- | loop(ID=170, | ||
- | </ | ||
- | |||
- | Ausgabe im Scripttest | ||
- | < | ||
- | loop(ID=170, | ||
- | cmd: loop | ||
- | Start: 5 | ||
- | Stop: 6 | ||
- | N: S5 5000 %FrioSt 0508 (05:08) | ||
- | </ | ||
- | |||
- | == Befehl takt == | ||
- | < | ||
- | takt(60, | ||
- | </ | ||
- | |||
- | Ausgabe im Scripttest | ||
- | < | ||
- | takt(60, | ||
- | cmd: takt | ||
- | N: S5 5000 %FrioSt 30800 (05:08) | ||
- | </ | ||
- | |||
- | === 3. mehrere Einzelzüge === | ||
- | == Befehl loop == | ||
- | < | ||
- | loop(ID=170, | ||
- | </ | ||
- | |||
- | Ausgabe im Scripttest | ||
- | < | ||
- | loop(ID=170, | ||
- | cmd: loop | ||
- | Start: 6 | ||
- | Stop: 7 | ||
- | N: S5 5000 %FrioSt 0608 (06: | ||
- | |||
- | loop(ID=170, | ||
- | cmd: loop | ||
- | Start: 17 | ||
- | Stop: 18 | ||
- | N: S5 5000 %FrioSt 1708 (17: | ||
- | |||
- | loop(ID=170, | ||
- | cmd: loop | ||
- | Start: 21 | ||
- | Stop: 22 | ||
- | N: S5 5000 %FrioSt 2108 (21: | ||
- | </ | ||
- | |||
- | == Befehl takt == | ||
- | < | ||
- | takt(60, | ||
- | </ | ||
- | |||
- | Ausgabe im Scrtipttest | ||
- | < | ||
- | takt(60, | ||
- | cmd: takt | ||
- | N: S5 5000 %FrioSt 36800 (06: | ||
- | N: S5 5000 %FrioSt 102800 (17: | ||
- | N: S5 5000 %FrioSt 126800 (21:08) | ||
- | </ | ||
- | |||
- | === 4. Züge im Takt mit Einzelzügen === | ||
- | == Befehl loop == | ||
- | < | ||
- | loop(ID=170, | ||
- | </ | ||
- | |||
- | Ausgabe im Scripttest | ||
- | < | ||
- | loop(ID=170, | ||
- | 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: | ||
- | |||
- | loop(ID=170, | ||
- | cmd: loop | ||
- | Start: 7 | ||
- | Stop: 8 | ||
- | N: S5 5000 %FrioSt 0708 (07: | ||
- | |||
- | loop(ID=170, | ||
- | cmd: loop | ||
- | Start: 7 | ||
- | Stop: 8 | ||
- | N: S5 5000 %FrioSt 0728 (07:28) | ||
- | </ | ||
- | |||
- | == Befehl takt == | ||
- | < | ||
- | takt(20, | ||
- | </ | ||
- | |||
- | Ausgabe im Scripttest | ||
- | < | ||
- | takt(20, | ||
- | 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: | ||
- | N: S5 5000 %FrioSt 42800 (07:08) N: S5 5000 %FrioSt 44800 (07:28) | ||
- | </ | ||
- | |||
- | |||
- | |||
- | |||
- | ====== | ||
- | {{page>: |