Handbuch

STS Handbuch

Stellwerksim Handbuch

Webseiten-Werkzeuge


stellwerksim:erbauer:zugbau:zugscript

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
stellwerksim:erbauer:zugbau:zugscript [2017/04/03 18:45] – Ergänzung Zugscript Referenzbstg nur 1x vorhanden DragonGuardstellwerksim:erbauer:zugbau:zugscript [2023/01/22 21:09] (aktuell) – Hinweis aus MARKER-Regelungen in der QS PhilippK
Zeile 2: Zeile 2:
 ==== Zugscript ==== ==== Zugscript ====
  
-Für das Zugscript gibt es zwei verschiedene Möglichkeiten. Dabei handelt es sich um den Takt und den Loop Befehl. +Zugscripte (kurz ZS) werden mit dem Takt-Befehl geschriebenJeder Befehl bekommt eine eigene Zeile, am Schluss jeder Zeile muss ein Semikolon gesetzt werden.
-**Es sollte nur noch der Takt Befehl benutzt werden.** Vollständigkeitshalber ist am Ende dieser Seite auch noch der Loop Befehl aufgeführt. +
- +
-<note warnung>Am Schluss jeder Zeile muss ein Semikolon gesetzt werden.</note>+
  
 Die Taktbefehle sehen wie folgt aus: Die Taktbefehle sehen wie folgt aus:
-<code>takt(<Takt in Minuten>,weitere Parameter);</code>+  takt(<Takt in Minuten>,weitere Parameter); 
 + 
 +Der <Takt in Minutenmuss 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. 
 + 
 +Das Wort ''takt'' muss immer klein, die Befehle innerhalb der Klammern immer groß geschrieben werden. Alle anderen Schreibweisen funktionieren höchstens zufällig und werden nicht unterstützt. 
 Die weiteren Parameter werden dabei im Format "Befehl=Zuweisung" angegeben. Einzelne Parameter werden voneinander mit einem Komma getrennt und können in beliebiger Reihenfolge angegeben werden. Die weiteren Parameter werden dabei im Format "Befehl=Zuweisung" angegeben. Einzelne Parameter werden voneinander mit einem Komma getrennt und können in beliebiger Reihenfolge angegeben werden.
  
-^ Befehl ^ Zuweisung ^ Bemerkung ^ obligatorisch +^ Befehl ^ Zuweisung ^ Bemerkung ^ Pflichtangabe ^ Anzahl pro Zugscript 
-| ID | Referenz AID | Hier wird die AID des Referenz Stellwerks (in welchem die Zeiten des Script gelten) angegeben | Ja | +| [[#referenzbahnsteig_id_und_gleis|ID]] | Referenz-AID | AID des Referenz-Stellwerks (in welchem die Zeiten des Script gelten) angegeben | Ja | Genau einmal 
-| GLEIS | Referenz Bahnsteig Der Name des Bahnsteiges im Referenz Stellwerk für welches die Zeiten des Scripts gelten | Ja | +| [[#referenzbahnsteig_id_und_gleis|GLEIS]] Referenzbahnsteig | Name des Referenz-Bahnsteiges | Ja | Genau einmal 
-| STUNDE | std oder std1..std2 | Fährt der Zug nur in einer Stunde wird diese eingetragen. Fährt der Zug mehrere Stunden wird die erste Stunde in der der Zug fährt und nach zwei Punkten die erste Stunde in der der Zug nicht mehr fährt eingetragen Wenn kein Milzeit verwendet wird +| [[#abfahrtszeit_stunde_und_milzeit|STUNDE]] std1 oder std1..std2 | std1 = Stunde der ersten Abfahrt, std2 = Stunde __vor__ der letzten Abfahrt Ja | Mindestens einmal, beliebig viele, auch gemischt 
-| MILZEIT | mil oder mil1..mil2 Die Milzeit wird im Format stdmin angegeben (kein Leerzeichen oder Doppelpunkt zwischen Stunde und Minute). Fährt der Zug nur einmal wird die Milzeit eingetragen. Fährt der Zug mehrmals wird die erste Milzeit in der der Zug fährt und nach zwei Punkten die erste Milzeit in der der Zug nicht mehr fährt eingetragen Nur wenn keine Stunde verwendet wird. Der Stundebefehl ist zu bevorzugen +| [[#abfahrtszeit_stunde_und_milzeit|MILZEIT]] stdmin1 oder stdmin1..stdmin2 stdmin1 = Stunde und Minute der ersten Abfahrt, stdmin2 = Stunde und Minute __vor__ der letzten Abfahrt ::: | ::: 
-| MULTI | Referenz Flag | Wird wird das Multiflag eingetragen welches in den durch diese Scriptzeile erzeugten Züge verwendet wird | Nein | +| [[#mehrfache_verknuepfungen_multi|MULTI]] | Referenz-Flag | Wird das Multiflag eingetragen welches in den durch diese Scriptzeile erzeugten Züge verwendet wird | Nein | Höchstens zweimal (1x für [[stellwerksim:erbauer:zugbau:flags:f-flag|F-Flag]], 1x für [[stellwerksim:erbauer:zugbau:flags:k-flag|K-Flag]] oder [[stellwerksim:erbauer:zugbau:flags:e-flag|E-Flag]]) | 
-NAME | [[stellwerksim:erbauer:zugbau:namensmuster|Namensmuster]] | Wird im Feld Namensmuster kein [[stellwerksim:erbauer:zugbau:namensmuster|Namensmuster]] eingebaut muss dieses hier angegeben werden. Die entsprechenden Regeln werden auf der [[stellwerksim:erbauer:zugbau:namensmuster|Namensmuster]]-Seite beschrieben | Nein |+| [[#themamarker_marker|MARKER]] | Ein Großbuchstabe | Nur Fahrplaneinträge mit diesem Themamarker werden für den Zug übernommen | Nein | Höchstens einmal | 
 +| [[#namensmuster_im_zugscript_name|NAME]] | [[stellwerksim:erbauer:zugbau:namensmuster|Namensmuster]] | Wenn vorhanden, muss der Parameter in jedem Zugscript vorhanden und das Namensmuster-Feld des Zugtemplates leer sein. | Nein | Höchstens einmal | 
 + 
 +<note warnung>Der im Zugscript angegebene Referenzbahnsteig darf nur einmal als Fahrplaneintrag enthalten sein!</note> 
 +<note hinweis>Das Zugscript darf nicht aus der Historie 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.</note> 
 + 
 +===== Referenzbahnsteig (ID und GLEIS) ===== 
 + 
 +Der Referenzbahnsteig wird genutzt, um die Fahrplanzeile festzulegen, auf die sich die STUNDE bzw. MILZEIT beziehen. Angegeben wird hier die Anlagen-ID (in ID) und der Name des Bahnsteig- bzw. Haltepunktelements. Die Schreibweise muss dabei genau so wie im Fahrplan sein. 
 + 
 +Der Referenzbahnsteig darf nicht mehrfach im Fahrplan vorkommen, außer an im jeweiligen Zugscript nicht genutzten MULTI-Zeilen. 
 + 
 +=== Beispiel === 
 +Zugscript: 
 +  takt(60,ID=123,GLEIS=A1,STUNDE=5,MULTI=E1); 
 +  takt(60,ID=123,GLEIS=A1,STUNDE=6,MULTI=E2); 
 + 
 +Fahrplan: 
 +^ an ^ ab ^ AID ^Gleis ^ Flag ^ 
 +| 05:00 | 05:00 | 123 | A1 | E1(1234) | 
 +| 05:00 | 05:00 | 123 | A1 | E2(4321) | 
 + 
 +Hier darf Gleis A1 als Referenzbahnsteig verwendet werden, weil es zusammen mit dem MULTI eindeutig ist (die andere Zeile wird entfernt). Das Gleis A1 darf dann aber außerhalb der MULTI-Verknüpfung nicht auftreten. 
 + 
 +Haben die MULTI-Verknüpfungen unterschiedliche Bahnsteige, muss natürlich der Referenzbahnsteig ebenfalls unterschiedlich sein. 
 + 
 +===== Abfahrtszeit (STUNDE und MILZEIT) ===== 
 + 
 +Mit den Parametern STUNDE und MILZEIT wird festgelegt, zu welche Uhrzeit die erzeugten Züge am Referenzbahnsteig **abfahren** sollen. Dabei haben sie folgendes Format (hh ist die Stunde, mm die Minute): 
 + 
 +  STUNDE=hh 
 +  MILZEIT=hhmm 
 + 
 +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. In solchen Fällen sollte das Referenzgleis verlegt werden. 
 + 
 +Folgendes sind also valide Beispiele: 
 +  takt(60,ID=123,GLEIS=A1,STUNDE=5); 
 +  takt(60,ID=123,GLEIS=A1,STUNDE=05); (führende 0 wird ignoriert) 
 +  takt(60,ID=123,GLEIS=A1,STUNDE=16); 
 +  takt(60,ID=123,GLEIS=A1,MILZEIT=500); 
 +  takt(60,ID=123,GLEIS=A1,MILZEIT=0500); (führende 0 wird ignoriert) 
 +  takt(60,ID=123,GLEIS=A1,MILZEIT=1659); 
 + 
 +Innerhalb eines takt()-Befehls dürfen mehrere STUNDE und MILZEIT vorkommen und auch gemischt werden: 
 +  takt(60,ID=123,GLEIS=A1,STUNDE=5,MILZEIT=1022,STUNDE=18); 
 +\\ 
 + 
 +==== Zeitbereiche ==== 
 + 
 +Es können mit einem STUNDE oder MILZEIT mehrere Züge im Takt erzeugt werden: 
 +  takt(60,ID=123,GLEIS=A1,STUNDE=6..12); 
 + 
 +Folgende Besonderheiten sind hier zu beachten: 
 + 
 +  * zwischen Start- und Endzeit sind genau 2 Punkte ''..'' 
 +  * Der letzte Zug fährt __vor__ der Endzeit 
 + 
 +Im obrigen Beispiel werden also folgende Züge erzeugt: 
 +  Zug 1 (06:25) 
 +  Zug 2 (07:25) 
 +  Zug 3 (08:25) 
 +  Zug 4 (09:25) 
 +  Zug 5 (10:25) 
 +  Zug 6 (11:25) 
 + 
 +In MILZEIT könnte das Ganze so aussehen: 
 +  takt(60,ID=123,GLEIS=A1,MILZEIT=625..1126); 
 +  takt(60,ID=123,GLEIS=A1,MILZEIT=625..1225); 
 +  takt(60,ID=123,GLEIS=A1,MILZEIT=625..1200); 
 + 
 +Alle Zugscripte erzeugen die oben genannten Züge. Zur besseren Übersicht sollte eine der beiden oberen Versionen (eine Minute später oder einen Takt später) verwendet werden. 
 + 
 +Bei Takten kleiner 60 Minuten spielt MILZEIT sein Können aus: 
 + 
 +  takt(20,ID=123,GLEIS=A1,MILZEIT=625..806); 
 + 
 +Erzeugt werden folgende Züge: 
 + 
 +  Zug 1 (06:25) 
 +  Zug 2 (06:45) 
 +  Zug 3 (07:05) 
 +  Zug 4 (07:25) 
 +  Zug 5 (07:45) 
 +  Zug 6 (08:05) 
 + 
 +STUNDE fängt in diesen Fällen mit der Minute des Referenzbahnsteigs im Fahrplan an (hier: 25) und hört mit der letzten Abfahrt vor der vollen Stunde auf. Folgende Zugscripte sind also äquivalent: 
 + 
 +  takt(20,ID=123,GLEIS=A1,STUNDE=6..8); 
 +  takt(20,ID=123,GLEIS=A1,MILZEIT=625..800); 
 + 
 +==== MILZEIT vs. STUNDE ==== 
 + 
 +Grundsätzlich ließen sich alle Züge mit MILZEIT bauen. Allerdings ergeben sich bei kleinen Zeit-Verschiebungen am Referenzbahnsteig schnell Fehler, weil der gesamte restliche Fahrplan verschoben wird. Deshalb soll nur in folgenden Fällen MILZEIT verwendet werden: 
 + 
 +  * Mehrere Zugfahrten sollen in einem Takt unter 60 Minuten erzeugt werden. 
 +    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 sollen zu wechselnden Ankunfts- oder Abfahrtzeiten in einem nicht synchronen Takt erzeugt werden 
 +    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); 
 + 
 +Trotzdem kann es zu diesen Verschiebungseffekten auch bei STUNDE kommen! 
 + 
 +=== Beispiel === 
 + 
 +Eine RB fährt wie folgt: 
 + 
 +^ an ^ ab ^ Gleis ^ 
 +| 09:30 | 09:30 | A-Dorf | 
 +| 09:40 | 09:40 | B-Stadt | 
 +| 09:50 | 09:50 | C-Heim | 
 +| 10:00 | 10:00 | D-Kirchen | 
 + 
 +Zugscript: 
 +  takt(60,ID=123,GLEIS=C,MILZEIT=0950); 
 + 
 +Wird jetzt der Zugtemplate-Fahrplan in C-Heim auf 09:52 geändert, fahren die erzeugten Züge nicht um 09:52 in C-Heim ab, sondern nach Zugscript um 09:50 - und dafür an allen anderen Halten 2 Minuten früher: 
 + 
 +^ an ^ ab ^ Gleis ^ 
 +| 09:28 | 09:28 | A-Dorf | 
 +| 09:38 | 09:38 | B-Stadt | 
 +| 09:50 | 09:50 | C-Heim | 
 +| 09:58 | 09:58 | D-Kirchen | 
 + 
 +Dadurch ergeben sich insbesondere Änderungen in anderen Stellwerken und Regionen. 
 + 
 +===== Mehrfache Verknüpfungen (MULTI) ===== 
 + 
 +Wenn in einem Zugtemplate mehrere Züge vorhanden sind, die auf unterschiedliche Nachfolger verknüpft werden sollen, kann pro Zugscript-Zeile festgelegt werden, welche Verknüpfung verwendet werden soll. Die Beschreibung und Regeln dafür finden sich beim [[stellwerksim:erbauer:zugbau:flags:multi|Multi-Flag]]. 
 + 
 +===== Themamarker (MARKER) ===== 
 + 
 +Ist ein MARKER gesetzt, werden für den Zug nur diejenigen Fahrplanhalte übernommen, die diesen Themamarker gesetzt haben. Damit kann für einzelne Züge ein abweichender Fahrplan definiert werden, ohne ein eigenes Zugtemplate verwenden zu müssen - auf Kosten der Lesbarkeit des Fahrplans. Dabei sind folgende Regeln zu beachten: 
 + 
 +  * Jeder Zug kann höchstens einen MARKER haben. 
 +  * Hat mindestens ein Zugscript einen MARKER gesetzt, muss jedes Zugscript in diesem Zugtemplate einen MARKER gesetzt haben. Es müssen also entweder alle Zugscripte oder kein Zugscript MARKER enthalten. 
 +  * Wird MARKER verwendet müssen alle Referenzgleise Themamarker A-Z gesetzt hat. 
 +  * Die Zug-QS stellt [[stellwerksim:erbauer:zug-qs:fuererbauer:templateregeln#verwendung_von_marker|konkretere Regeln für die Verwendung von MARKER]] auf 
 + 
 +Der Zugscriptlauf übernimmt dann pro Zug nur diejenigen Fahrplaneinträge, die den gewählten Marker gesetzt haben, und setzt im Zug den Themamarker A-Z.  
 + 
 +<note>Die Züge haben also andere Themamarker als das Zugtemplate. Damit ist das [[stellwerksim:erbauer:themascripte:sim_befehle|Setzen eines Themamarkers per ThemaScript (Befehl themamarker)]] ohne Auswirkung, weil der Fahrplan des Zuges für alle Themamarker gleich ist.</note> 
 + 
 +<note important>Die Regeln für Verknüpfungsbahnsteige gelten unabhängig von MARKER - Verknüpfungsbahnsteige müssen also auch im Zugtemplate immer Themamarker A-Z gesetzt haben. Das gilt insbesondere auch für Zielbahnsteige von E/F/K-Flags!</note>
  
-<note warnung>Unnötigerweise verwendete Milzeiten werden in der QS abgelehntEbenfalls sollten die Fahrplanzeiten mit mindestens einer Milzeit übereinstimmen.</note>+==== Beispiel ==== 
 +Ein Zug im Zugtemplate soll an einem Halt einen anderen Bahnsteig verwendenIm [[stellwerksim:erbauer:zugbau:fahrplan|Fahrplaneditor]] werden zwei Fahrplanhalte für diesen Bahnhof angelegt: 
 +  * Ein Fahrplanhalt mit dem Standard-Gleis mit Themamarker A und C-Z 
 +  * Ein Fahrplanhalt mit dem abweichenden Gleis mit Themamarker B
  
-Der im Zugscript angegebene Referenzbahnsteig darf nur einmal als Fahrplaneintrag enthalten sein!+Im Zugscript gibt es dann folgende Zeilen: 
 +  takt(60,ID=123,GLEIS=A1,STUNDE=6..8,MARKER=A); 
 +  takt(60,ID=123,GLEIS=A1,STUNDE=8,MARKER=B); 
 +  takt(60,ID=123,GLEIS=A1,STUNDE=9..20,MARKER=A);
  
-=== Loop ===+Damit hat der Zug zur Stunde 8 den abweichenden Bahnsteig, alle anderen den normalen Bahnsteig.
  
-<note verbot>Der Loop-Befehl ist Fehlerhaft. Es sollte der Taktbefehl verwendet werden.</note>+===== Namensmuster im Zugscript (NAME) =====
  
-Die Loops wurden nach folgendem Muster (Reihenfolge zwingend) angegeben: +Mit dem Parameter NAME kann das Namensmuster in die Zugscript-Zeile aufgenommen werden. Dadurch ist es möglichverschiedene Namen oder Lücken innerhalb eines Zugtemplates darzustellen.
-<code>loop(Bahnhof,Gleis,vonStd..bisStd,Schiebung[,Offset]); +
-loop(Bahnhof,Gleis,Std,Schiebung[,Offset]);</code>+
  
-Die Zahl bei der Schiebung gibt den Takt der Züge vor. Ist ein Offset angegeben worden, werden die Zeiten im Fahrplan um diese Zeit verschoben.+Die genaue Erklärung steht auf der Seite des [[stellwerksim:erbauer:zugbau:namensmuster|Namensmusters]].
  
 {{tag>Werte, Zugbau}} {{tag>Werte, Zugbau}}
stellwerksim/erbauer/zugbau/zugscript.1491237956.txt.gz · Zuletzt geändert: 2017/04/03 18:45 von DragonGuard