Handbuch

STS Handbuch

Stellwerksim Handbuch

Webseiten-Werkzeuge


stellwerksim:erbauer:tutorials:bauen:zuege:zugscript1

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
stellwerksim:erbauer:tutorials:bauen:zuege:zugscript1 [2016/03/13 11:58] – Externe Bearbeitung 127.0.0.1stellwerksim:erbauer:tutorials:bauen:zuege:zugscript1 [2020/05/19 17:56] (aktuell) fablu97
Zeile 1: Zeile 1:
-====== ZugScript (1) ======+====== Tutorial: Zugscript (1) ======
  
-Erbauer bearbeiten also Templates, aus denen dann Züge erzeugt werden. Aber wie funktioniert diese Erzeugung eigentlich?+Erbauer bearbeiten also Zugtemplates, aus denen dann Züge erzeugt werden. Aber wie funktioniert diese Erzeugung eigentlich?
  
-Dafür gibt es eine eigene Sprache, das ZugScript. Darüber teilt man dem Server mit, wie und welche Züge er erzeugen soll. Die Erzeugung findet dann im ZugScript-Lauf statt. Dort schaut sich der Server die ZugScripte von allen vorgemerkten Templates an und erzeugt anhand dessen Züge, die anschließend in den Stellwerken fahren können.+Dafür gibt es eine eigene Sprache, das Zugscript. Darüber teilt man dem Server mit, wie und welche Züge er erzeugen soll. Die Erzeugung findet dann im Zugscriptlauf statt. Dort schaut sich der Server die Zugscript von allen vorgemerkten Zugtemplates an und erzeugt anhand dessen Züge, die anschließend in den Stellwerken fahren können.
  
 Im Folgenden soll das anhand einer Strecke von A-Dorf nach B-Hausen erklärt werden. Im Folgenden soll das anhand einer Strecke von A-Dorf nach B-Hausen erklärt werden.
Zeile 18: Zeile 18:
   Fahre in A-Dorf zur Stunde 5 ab.   Fahre in A-Dorf zur Stunde 5 ab.
  
-Dies wollen wir nun möglichst direkt auch dem Server sagen. Das passende ZugScript sieht wie folgt aus:+Dies wollen wir nun möglichst direkt auch dem Server sagen. Das passende Zugscript sieht wie folgt aus:
  
   takt(60,ID=123,GLEIS=A-Dorf,STUNDE=5);   takt(60,ID=123,GLEIS=A-Dorf,STUNDE=5);
  
-GLEIS und STUNDE erkennt man relativ leicht wieder. Die ID bezeichnet die Anlage (das Stellwerk), in dem sich das Gleis A-Dorf befindet. Alle Anlagen haben eine eindeutige Anlagen-ID (AID). Als Beispiel wurde hier 123 genommen. Die Zahl hinter der öffnenden Klammer ist der einzige Wert im ZugScript ohne Name und gibt an, in welchem Takt das Template fährt (hier 60 Minute = alle Stunde). Dieser Wert muss immer ganz vorne stehen und immer angegeben werden, auch wenn wie hier nur ein Zug erzeugt werden soll. Bei Einzelzügen ist der Wert natürlich unwichtig und kann prinzipiell frei gewählt werden, typischerweise wird hier aber auf 60 Minuten zurückgegriffen.+GLEIS und STUNDE erkennt man relativ leicht wieder. Die ID bezeichnet die Anlage (das Stellwerk), in dem sich das Gleis A-Dorf befindet. Alle Anlagen haben eine eindeutige Anlagen-ID (AID). Als Beispiel wurde hier 123 genommen. Die Zahl hinter der öffnenden Klammer ist der einzige Wert im Zugscript ohne Name und gibt an, in welchem Takt das Zugtemplate fährt (hier 60 Minute = alle Stunde). Dieser Wert muss immer ganz vorne stehen und immer angegeben werden, auch wenn wie hier nur ein Zug erzeugt werden soll. Bei Einzelzügen ist der Wert natürlich unwichtig und kann prinzipiell frei gewählt werden, typischerweise wird hier aber auf 60 Minuten zurückgegriffen.
  
   takt(<Takt in Minuten>,ID=<AnlagenID>,GLEIS=<Gleisname>,STUNDE=<Abfahrtsstunde>);   takt(<Takt in Minuten>,ID=<AnlagenID>,GLEIS=<Gleisname>,STUNDE=<Abfahrtsstunde>);
  
-ID und GLEIS werden zusammen als **Referenzgleis** des ZugScripts bezeichnet.+ID und GLEIS werden zusammen als **Referenzgleis** des Zugscript bezeichnet.
  
-Die Stunde könnte übrigens auch mit führener 0 geschrieben werden - das macht keinen Unterschied.+Die Stunde könnte übrigens auch mit früher 0 geschrieben werden - das macht keinen Unterschied.
  
   takt(60,ID=123,GLEIS=A-Dorf,STUNDE=05);   takt(60,ID=123,GLEIS=A-Dorf,STUNDE=05);
  
-Das ZugScript kann natürlich noch viel mehr, für diese Beispiele soll es aber erstmal reichen.+Das Zugscript kann natürlich noch viel mehr, für diese Beispiele soll es aber erstmal reichen.
  
-==== ZugScript-Lauf ====+==== Zugscriptlauf ====
  
-Im ZugScript-Lauf legt der Server nun Fahrplan und ZugScript nebeneinander und sucht das Gleis, das im ZugScript steht, im Fahrplan. Anschließend vergleicht er die Zeiten: 5:30 Uhr im Fahrplan und 5:xx Uhr im ZugScript (die Minuten sind ja unerheblich). Da die Zeiten übereinstimmen, braucht er nicht mehr zu machen, als einen Zug mit den Fahrplan des Templates zu erzeugen.+Im Zugscriptlauf legt der Server nun Fahrplan und Zugscript nebeneinander und sucht das Gleis, das im Zugscript steht, im Fahrplan. Anschließend vergleicht er die Zeiten: 5:30 Uhr im Fahrplan und 5:xx Uhr im Zugscript (die Minuten sind ja unerheblich). Da die Zeiten übereinstimmen, braucht er nicht mehr zu machen, als einen Zug mit den Fahrplan des Zugtemplates zu erzeugen.
  
 ===== Ein zweiter Zug ===== ===== Ein zweiter Zug =====
Zeile 44: Zeile 44:
   Fahre in A-Dorf zur Stunde 6 ab.   Fahre in A-Dorf zur Stunde 6 ab.
  
-unser ZugScript passen wir entsprechend an:+unser Zugscript passen wir entsprechend an:
  
   takt(60,ID=123,GLEIS=A-Dorf,STUNDE=6);   takt(60,ID=123,GLEIS=A-Dorf,STUNDE=6);
  
-Wir haben also nur das ZugScript angepasst, nicht den Fahrplan des Templates.+Wir haben also nur das Zugscript angepasst, nicht den Fahrplan des Zugtemplates.
  
-Im ZugScript-Lauf vergleicht der Server wieder die Zeiten im Fahrplan (5:30) und im ZugScript (6:xx) und bemerkt eine Differenz von 1 Stunde (+1:00, da er ja nur auf die Stunde schaut und die Minuten ignoriert). Daher rechnet er diese Stunde beim Erstellen des Zuges auf den Template-Fahrplan auf:+Im Zugscriptlauf vergleicht der Server wieder die Zeiten im Fahrplan (5:30) und im Zugscript (6:xx) und bemerkt eine Differenz von 1 Stunde (+1:00, da er ja nur auf die Stunde schaut und die Minuten ignoriert). Daher rechnet er diese Stunde beim Erstellen des Zuges auf den Zugtemplate-Fahrplan auf:
  
   5:30 + 1:00 = 6:30 A-Dorf   5:30 + 1:00 = 6:30 A-Dorf
   6:00 + 1:00 = 7:00 B-Hausen   6:00 + 1:00 = 7:00 B-Hausen
  
-Damit fährt der Zug um eine Stunde versetzt zum ersten Zug, aber unabhängig von dessen ZugScript. Außerdem ist es __für die erzeugten Züge egal, wann der Template-Fahrplan liegt - entscheidend ist das ZugScript!__ Wenn der Template-Fahrplan mit einem der erzeugten Zug-Fahrpläne übereinstimmt, ist das aber überichtlicher und vermeidet Fehler.+Damit fährt der Zug um eine Stunde versetzt zum ersten Zug, aber unabhängig von dessen Zugscript. Außerdem ist es __für die erzeugten Züge egal, wann der Zugtemplate-Fahrplan liegt - entscheidend ist das Zugscript!__ Wenn der Zugtemplate-Fahrplan mit einem der erzeugten Zug-Fahrpläne übereinstimmt, ist das aber überichtlicher und vermeidet Fehler.
  
 ===== Weitere Züge ===== ===== Weitere Züge =====
  
-Nach diesem Muster könnten wir nun weitermachen, bis wir für jeden Zug ein ZugScript erstellt haben. Allerdings wäre das ein großer Aufwand und ist sehr unübersichtlich. Kein Mensch würde alle Züge eines Tages aufzählen, wenn sie alle Stunde fahren.+Nach diesem Muster könnten wir nun weitermachen, bis wir für jeden Zug ein Zugscript erstellt haben. Allerdings wäre das ein großer Aufwand und ist sehr unübersichtlich. Kein Mensch würde alle Züge eines Tages aufzählen, wenn sie alle Stunde fahren.
  
   Fahre in A-Dorf zwischen 5 und 21 Uhr alle 60 Minuten ab.   Fahre in A-Dorf zwischen 5 und 21 Uhr alle 60 Minuten ab.
  
-Daher gibt es auch im ZugScript eine zusammenfassende Schreibweise, um in einem Zeitraum Züge zu erzeugen:+Daher gibt es auch im Zugscript eine zusammenfassende Schreibweise, um in einem Zeitraum Züge zu erzeugen:
  
   takt(60,ID=123,GLEIS=A-Dorf,STUNDE=5..21);   takt(60,ID=123,GLEIS=A-Dorf,STUNDE=5..21);
Zeile 77: Zeile 77:
 Im Zweifelsfall ist es immer sinnvoll, die erzeugten Züge nachzuzählen. Im Zweifelsfall ist es immer sinnvoll, die erzeugten Züge nachzuzählen.
  
-Folgende ZugScripte würden also nur einen Zug erzeugen:+Folgende Zugscripte würden also nur einen Zug erzeugen:
  
   takt(60,ID=123,GLEIS=A-Dorf,STUNDE=5..6);   takt(60,ID=123,GLEIS=A-Dorf,STUNDE=5..6);
Zeile 84: Zeile 84:
 ===== Einen Zug ausfallen lassen ===== ===== Einen Zug ausfallen lassen =====
  
-Nun soll zur Mittagszeit ein Zug weniger fahren, weil die erforderliche Nachfrage nicht vorhanden ist. Die können wir einfach mit zwei ZugScripten abbilden:+Nun soll zur Mittagszeit ein Zug weniger fahren, weil die erforderliche Nachfrage nicht vorhanden ist. Die können wir einfach mit zwei Zugscripten abbilden:
  
   takt(60,ID=123,GLEIS=A-Dorf,STUNDE=5..12);   takt(60,ID=123,GLEIS=A-Dorf,STUNDE=5..12);
   takt(60,ID=123,GLEIS=A-Dorf,STUNDE=13..21);   takt(60,ID=123,GLEIS=A-Dorf,STUNDE=13..21);
  
-Einfacher ist es aber, diese beiden Zeiträume in einem ZugScript darzustellen:+Einfacher ist es aber, diese beiden Zeiträume in einem Zugscript darzustellen:
  
   takt(60,ID=123,GLEIS=A-Dorf,STUNDE=5..12,STUNDE=13..21);   takt(60,ID=123,GLEIS=A-Dorf,STUNDE=5..12,STUNDE=13..21);
  
-In einem ZugScript dürfen beliebig viele STUNDE-Parameter in beliebiger Reihenfolge vorkommen. Apropos Reihenfolge: Auch die anderen Parameter mit Ausnahme des Taktes können nach Wunsch vertauscht werden. ID und GLEIS müssen aber auf jeden Fall vorhanden sein.+In einem Zugscript dürfen beliebig viele STUNDE-Parameter in beliebiger Reihenfolge vorkommen. Apropos Reihenfolge: Auch die anderen Parameter mit Ausnahme des Taktes können nach Wunsch vertauscht werden. ID und GLEIS müssen aber auf jeden Fall vorhanden sein.
  
   takt(60,STUNDE=13..21,GLEIS=A-Dorf,STUNDE=5..12,ID=123);   takt(60,STUNDE=13..21,GLEIS=A-Dorf,STUNDE=5..12,ID=123);
Zeile 101: Zeile 101:
 ===== Und im nächsten Tutorial... ===== ===== Und im nächsten Tutorial... =====
  
-... geht es mit weiteren Parametern für das ZugScript weiter.+... geht es mit weiteren Parametern für das Zugscript weiter.
  
-| [[.:templates|Zurück: Templates]] | [[..:zuege|Nach oben: Züge]] | [[.:zugscript2|Weiter: ZugScript (2)]] |+| [[.:templates|Zurück: Zugtemplate]] | [[..:zuege|Nach oben: Züge]] | [[.:zugscript2|Weiter: Zugscript (2)]] |
stellwerksim/erbauer/tutorials/bauen/zuege/zugscript1.1457866715.txt.gz · Zuletzt geändert: 2016/03/13 11:58 von 127.0.0.1