Handbuch

STS Handbuch

Stellwerksim Handbuch

Webseiten-Werkzeuge


Seitenleiste



JavaScript ist deaktiviert!

stellwerksim:erbauer:themascripte:simparam

Simparam

Mit Simparams kann das Verhalten eines Zuges im Sim stark verändert werden.

Das Setzen eines Wertes ergänzt die bestehenden Werte. Das heißt, dass die Werte NICHT überschrieben werden. Betritt ein Zug ein neues Stellwerk ist der Befehl wieder leer.

Die Werte des Simparams sind jeweils von der Abfahrt am vorhergehenden Bahnsteig bis zur Abfahrt am angegebenen Bahnsteig wirksam. Handelt es sich beim angegebenen Bahnsteig um den ersten im Stellwerk gilt das simparam ab der Einfahrt. Wurde der letzte Bahnsteig im Stellwerk angegeben, so gilt das simparam von der Abfahrt am vorhergehenden Bahnsteig bis zur Ausfahrt.1)

Bei nur einem Bahnsteig im Fahrplan gilt der simparam von der Einfahrt bis zur Ausfahrt.

Dieser Befehl kann nur in der Klasse bahnhof verwendet werden.

Simparams sind wie folgt aufgebaut:
Blockkopf(Wert,Befehl,Fahrplanhalt,simparam);

Beispiel:

*:Bahnhof(20,minstop,any,simparam);
Angegebene Halte beziehen sich immer auf den Halt im Fahrplan. Wird etwa gleisbezogen eine höhere Mindeststandzeit festgelegt, so wirkt diese nicht, wenn ein Zug dieses Gleis nur als Alternative anfährt!

Gauß-Verteilung

Die meisten Zeiten haben einen festen Mittelwert - die Standzeit an einem Halt zum Beispiel dauert immer etwa 30 Sekunden. Damit es nicht langweilig wird (und weil die Fahrgäste auch manchmal etwas länger oder kürzer brauchen), schwankt der tatsächliche Wert immer etwas um diesen Mittelwert herum. Je näher die Zeit am Mittelwert ist, desto wahrscheinlicher wird sie auftreten - Züge werden also deutlich häufiger 29 Sekunden stehen als 20 Sekunden, weil das näher am Mittelwert von 30 Sekunden liegt.

Mathematisch wird das mit einer Normalverteilung oder Gauß-Verteilung abgebildet, die im STS immer 3 Werte hat: Minimum, Mittelwert und Maximum. Die erzeugten Zufallswerte schwanken immer um den Mittelwert, und mit Minimum und Maximum kann man beeinflussen, wie stark die Werte vom Mittelwert abweichen.

Für gleisfalsch (also die Standzeit, wenn ein Zug ohne Gleisänderung am falschen Bahnsteig steht) kann man alle 3 Werte konfigurieren. Bei Standardwerten schwankt der Wert um 300 Sekunden (das sind die bekannten 5 Minuten) mit einer Streuung von 90 bis 600 Sekunden. Das ist sehr breit und damit sind Werte von 260 oder 350 Sekunden durchaus häufig, Werte von 100 oder 540 jedoch nicht (weil sie weit vom Mittelwert weg liegen).

Erhöhen wir nun gleisfalschmax auf 900, wird die Abweichung nach oben auch wieder wahrscheinlicher - es ist dann also wahrscheinlicher, dass ein Zug länger als 400 Sekunden steht, als wenn gleisfalschmax auf 600 bleibt. Etwa die Hälfte der Züge werden aber trotzdem nur 300 Sekunden oder kürzer stehen, weil das unser Mittelwert ist. Erhöhen wir aber gleisfalschmitte auch noch auf 350, wird ein Wert von 400 Sekunden plötzlich sehr realistisch, weil es nah am Mittelwert und weit weg vom Maximum ist.

Für die Mathematiker: Der Sim verwendet eine beschnittene Gauß-Kurve, dadurch sind auch die Extremwerte deutlich wahrscheinlicher als 0.

Übersicht der Befehle

Die aufgeführten Standard-Werte sind für jeden Zug „ab Werk“ voreingestellt. Mit simparam können einzelne und alle Werte überschrieben werden.
Befehl Standardwert Einheit Kurzbeschreibung (ausführlicher weiter unten)
maxrandom 4 Minuten Obergrenze der zufälligen Wartezeit
randomdevisor 2 Mittelwert zur Kürzung der Haltezeit bei Verspätung
minstop 0 Sekunden Minimale Haltezeit
minstopR 30 Sekunden Minimale Haltezeit bei Richtungswechsel (muss grösser 30 sein)2)
maxstop 5 Minuten Maximale Haltezeit (sofern Abfahrtszeit überschritten)
soll_tempo Tempo des Zuges (mit diesem Befehl kann auch die v-max überschritten werden
anrufwartezeit 3 Minuten Wartezeit bis zum Anruf bei Halt an einem roten Signal
gleisänderung 1 Legt fest ob Gleisänderungen erlaubt sind. 1 steht für „ja“ 0 steht für „nein“
gleisfalschmin 90 Sekunden Minimale Haltezeit bei unangekündigter Gleisänderung
gleisfalschmitte 300 Sekunden Mittlere Haltezeit bei unangekündigter Gleisänderung
gleisfalschmax 600 Sekunden Maximale Haltezeit bei unangekündigter Gleisänderung
Soll ein Wert für alle Bahnsteige gelten, muss als Wert für den Bahnsteig any eingeben werden.

Anwendung und Auswirkung der Befehle

maxrandom

Funktion maxrandom ist Teil einer zufälligen Wartezeit-Berechnung nach dem Gauß-Verfahren. Die Einheit Minuten wird vom System auf Sekunden umgerechnet.
Standardwert Die mittlere zufällige Wartezeit beträgt um die 30 Sekunden. Die Extremwerte sind auf 10 Sek. nach unten und 4 Min. (= 240 Sek.) nach oben festgelegt.
Einstellmöglichkeiten maxrandom ermöglicht das Einstellen eines abweichenden Extremwertes nach oben. Kleinster einstellbarer oberer Extremwert ist 1 und ergibt damit 60 Sekunden.
Auswirkungen Es kann erreicht werden, dass der Zufall auch sehr lange zufällige Wartezeiten ergibt.
Anwendungsbeispiel

Angenommen in der fiktiven Anlage Kleinstadt (AID 987) verkehrt das Template 23456, welches einen Zug mit Fahrradwagen darstellt. Möchte man im Sommer einen großen Andrang simulieren an allen Halten in der Anlage könnte man diese Zeile z.B. in den Regionshook schreiben:

sommer:bahnhof:987:23456(5,maxrandom,any,simparam);

Das würde dazu führen, dass der Zug zwar im Schnitt weiterhin um die 30 Sekunden zufälliger Wartezeit bekommt an den Halten, es aber auch mal bis zu 5 Minuten werden können und die Wahrscheinlichkeit dafür auch größer wird.

randomdevisor

Funktion randomdevisor ist Teil der Wartezeit-Berechnung auf Basis der im Fahrplan hinterlegten Standzeit.
Standardwert 2. Da es nur ein Devisor für eine mathematische Rechnung ist, gibt es keine Einheit.
Einstellmöglichkeiten randomdevisor ermöglicht die Einkürzung der Haltezeit. Der Wert bildet die Mitte einer Zufallsberechnung (Gauß lässt grüßen) zwischen den Extremwerten 2 und 5 ab. Daher können auch nur die Werte 2, 3, 4 oder 5 eingestellt werden.
Auswirkungen Je höher der Zufallsdevisor gesetzt wird, desto kürzer wird die Wartezeit auf Basis der Standzeit laut Fahrplan, da eine Standzeit von 10 Min / 5 = 2 min wesentlich kleiner ist als 10 Min / 2 = 5 Min.
Anwendungsbeispiel

Angenommen in der fiktiven Anlage Kleinstadt (AID 987) sollen alle Templates der Region ABC am Bahnsteig Innenreinigung 1 nur eine ganz schnelle Reinigung bekommen und die betrieblich notwendige Standzeit kann deswegen auch deutlich eingekürzt werden. Dann könnte man im Zughook der Region ABC schreiben:

*:bahnhof:987(4,randomdevisor,Innenreinigung 1,simparam);

Das würde dazu führen, dass z.B. ein Zug mit geplanten 40 Minuten Standzeit dort durchschnittlich bei Verspätung etwa 40 / 4 = 10 Minuten steht. Der Standardwert würde hier mehrheitlich 40 / 2 = 20 Minuten ergeben.

minstop

Funktion minstop ist Teil der allgemeinen Wartezeit-Berechnung und stellt das absolute Minimum dar.
Standardwert 0 Sekunden
Einstellmöglichkeiten minstop ermöglicht das Einstellen einer absoluten Mindesthaltezeit. Dabei muss die Angabe immer in Sekunden angegeben werden.
Auswirkungen Wenn alle anderen Berechnungen zur Wartezeit eines Zuges bereits die Abfahrt erlauben würden, kann dieser Wert sie noch verzögern.
Anwendungsbeispiel

Angenommen für eine besondere Zuggattung gibt es ein extra ThemaScript. Um die notwendige Standzeit bei einem Personalwechsel zu simulieren, der immer auf Gleis 5 in Anlage 987 stattfindet, könnte im ThemaScript stehen:

*:bahnhof:987(90,150,rnd,minstop,5,simparam);

Das würde dazu führen, dass alle Züge, denen das ThemaScript zugewiesen ist, in der Anlage 987 auf Gleis 5 stets eine absolute Mindeststandzeit haben. In diesem Beispiel wurde sogar noch eine Zufallsberechnung (ohne Gauß, d.h. für alle Halte in der Anlage gleich) eingebaut, die einen Wert zwischen 90 und 150 Sekunden ausgibt, im Mittel also 120 Sekunden. Schließlich gibt es flotte und gemütliche Lokführer.

minstop ist wirkungslos, wenn am Fahrplanhalt ein A-Flag gesetzt ist! minstopR funktioniert hingegen.
Soll ein Wert größer 300 gesetzt werden, muss auch maxstop überschrieben werden!

minstopR

Funktion minstopR ist Teil der allgemeinen Wartezeit-Berechnung und stellt das absolute Minimum dar an Bahnsteigen mit gesetztem R-Flag.
Standardwert 30 Sekunden
Einstellmöglichkeiten minstopR ermöglicht das Einstellen einer absoluten Mindestwendezeit. Dabei muss die Angabe immer in Sekunden angegeben werden und mindestens 30 betragen.
Auswirkungen Dieser Wert verzögert die Ausführung des R-Flags. Andere Flags können, wenn vorhanden, zusätzlich Zeit brauchen - etwa E-Flags.
Anwendungsbeispiel

Angenommen für ein S-Bahn-Netz gibt es ein extra ThemaScript. Um die notwendige Wendezeit bei einem Richtungswechsel zu simulieren, der immer mindestens etwa 2 Minuten dauert, könnte im ThemaScript stehen:

*:bahnhof(100,160,rnd,minstopR,any,simparam);

Das würde dazu führen, dass alle Züge, denen das ThemaScript zugewiesen ist und an allen Bahnsteien, wo ein R-Flag gesetzt ist, dort eine Mindestwendezeit zwischen 100 und 160 Sekunden bekommen.

minstopR wirkt auch, wenn am Fahrplanhalt ein A-Flag gesetzt ist!
Soll ein Wert größer 300 gesetzt werden, muss auch maxstop überschrieben werden!

maxstop

Funktion maxstop ist Teil der allgemeinen Wartezeit-Berechnung und stellt das absolute Maximum dar.
Standardwert 5 Minuten
Einstellmöglichkeiten maxstop ermöglicht das Einstellen einer absoluten Höchstwartezeit an einem Halt, sofern die Abfahrtszeit bereits erreicht ist. Dabei muss die Angabe immer in Minuten angegeben werden.
Auswirkungen Es kann erreicht werden, dass der Zug bereit ist zur Abfahrt, wenn alle anderen Berechnungen, es noch nicht erlauben würden. maxstop begrenzt alle anderen Wartezeitberechnungen nach oben.
Anwendungsbeispiel

Angenommen in einer Anlage wird eine Baustelle simuliert und dieser Bauzug (Template 12345) fährt immer wieder ein Stück weiter, soll aber auch bei Verspätung nicht immer sofort wieder abfahren, damit etwa das Abladen von Material simuliert werden kann. Um nicht für alle Halte Bauzughalt 1 bis Bauzughalt 6 Scriptzeilen schreiben zu müssen und weil eine pauschale Angabe dazu führt, dass die Ankunft am Halt der Zuführung zur Baustelle (AB 21) auch verlängert würde, kann man es andersrum angehen und in den Regionshook etwa schreiben:

*:bahnhof:*:12345(500,700,rnd,minstop,any,simparam);
*:bahnhof:*:12345(2,maxstop,AB 21,simparam);

Das würde dazu führen, dass alle Züge des Templates 12345 in jeder Anlage an jedem Halt 500-700 Sekunden Mindeststandzeit haben, am Halt AB 21 aber maximal 2 Minuten.

soll_tempo

Funktion soll_tempo setzt eine manuelle, absolute Geschwindigkeit eines Zuges.
Standardwert -
Einstellmöglichkeiten soll_tempo ermöglicht das Einstellen eines Geschwindigkeitswertes für Züge. Keine Einheit, Werte analog zu allen anderen Tempo-Angaben.
Auswirkungen Es kann erreicht werden, dass ein Zug in seiner Geschwindigkeit begrenzt oder sogar beschleunigt wird. Der Wert greift dann, wenn der angegebene Bahnsteig im Fahrplan des Spielers (also der nächste abzuarbeitende Eintrag) ganz oben steht. Wird any verwendet gilt das angegebene Tempo von der Einfahrt des Zuges bis zu seiner Ausfahrt.
soll_tempo überschreibt Geschwindigkeitsvorgaben. Abweichende Tempo-Werte aus dem Template, tempo eines ThemaScripts oder der Anlagen-Vmax werden ignoriert!
Anwendungsbeispiel 1: relative Verringerung

Angenommen wir wollen im schweren Winter in der Anlage 987 alle Züge etwas langsamer fahren lassen, dann könnte im Regionshook stehen:

schwerer_winter:bahnhof:987($tempo,1,-,soll_tempo,any,simparam);

Das würde dazu führen, dass alle Züge in der Anlage 987 im schweren Winter eine Stufe langsamer fahren als es ihr eigentliches Tempo vorsieht. Die Änderung per soll_tempo gilt höchstens bis zur Ausfahrt des Stellwerks.

Anwendungsbeispiel 2: relative Erhöhung

Angenommen es gibt Züge, die mit GNT ausgestattet (Templates 12345 und 23456) sind und diese sollen in diversen Anlagen (987, 876 und 765) schneller fahren, als die übrigen Züge. So könnte man im Regionshook schreiben:

*:bahnhof:987,876,765:12345,23456($tempo,1,+,soll_tempo,any,simparam);

Das würde dazu führen, dass alle Züge dieser Templates in den genannten Anlagen eine Stufe schneller fahren als es ihr eigentliches Tempo vorsieht. Die Änderung per soll_tempo gilt höchstens bis zur Ausfahrt des Stellwerks.

Anwendungsbeispiel 3: absolute Begrenzung zwischen zwei Betriebsstellen

Voraussetzung: alle Templates haben in dem Stellwerk für alle Bahnhöfe Durchfahrtszeiten eingetragen. Die Bahnhöfe haben nur durchgehende Gleise und alle Templates haben das selbe Gleis im Fahrplan je Richtung. Fiktiv angenommen jeweils Gleise 1 oder 2 pro Richtung.

Angenommen in der Anlage 987 wird bei Thema baustelle (Bauarbeiten in einigen Regionen) zwischen den Bahnhöfen EFG und KLM ein Streckengleis gesperrt anlagenseitig. Zum Schutz der Arbeiten auf der Baustelle wird dann auf dem anderen Gleis langsamer gefahren, weil dort eine fiktive Langsamfahrstelle eingerichtet ist. So könnte es im Regionshook lauten:

baustelle:bahnhof:987($tempo,4,>,(4,soll_tempo,EFG 1,simparam),(nop),if);
baustelle:bahnhof:987($tempo,4,>,(4,soll_tempo,KLM 2,simparam),(nop),if);

Das führt dann dazu, dass wenn der Zug bei Durchfahrt des ersten Bahnhofs vor der Sperrung ein Tempo über 4 hat dieses bis zum nächsten Bahnhof auf 4 begrenzt wird und im Anschluss der Zug wieder normal weiter fährt.

anrufwartezeit

Funktion anrufwartezeit ist die Zeit, die ein Zug abwartet, bis er sich beim Spieler über eine fehlende Zustimmung zur Fahrt beschwert.
Standardwert 3 Minuten
Einstellmöglichkeiten anrufwartezeit ermöglicht das händische Einstellen der Wartezeit, bis sich der Zug bei einem Spieler beschwert über den außerplanmäßigen Halt oder die fehlende Zustimmung zur Abfahrt.
Auswirkungen Es kann erreicht werden, dass der Zug erst nach langer Zeit meckert oder sehr schnell.
Anwendungsbeispiel

Tf von Güterzügen sind es oft gewohnt, dass sie oft nicht informiert werden über einen außerplanmäßigen Halt. Darum kann man z.B. in einem Güterzug-ThemaScript schreiben, dass auch die Meldung für den Spieler erst verspätet kommen soll:

*:bahnhof(5,anrufwartezeit,any,simparam);

gleisänderung

Funktion gleisänderung ermöglicht die Ankündigung an den Zug über ein anderes Gleis durch den Spieler.
Standardwert 1, keine Einheit
Einstellmöglichkeiten gleisänderung kann mit 0 deaktiviert werden bzw. mit 1 aktiviert werden.
Auswirkungen Wird gleisänderung auf 0 gesetzt, so können die Spielenden keine Gleisänderung mehr im Funkmenü vornehmen. Es erscheint lediglich der Hinweis lt. Fahrplan, keine Gleisänderung möglich.
Wird ein Zug trotz deaktivertem gleisänderung auf einen Alternativbahnsteig geleitet, so wird der Halt dort erkannt, aber er wird wie ein unangekündigter Gleiswechsel behandelt und bekommt dementsprechend ggf. lange Standzeiten.
Auf Halte mit D-Flag hat gleisänderung keine Auswirkung!
Anwendungsbeispiel

Angenommen in einer Anlage 987 gibt es zwei Bahnsteige Ladestraße 1 und Ladestraße 2. Es soll verboten sein, die Ladestraßen zu wechseln. So könnte im Regionshook stehen:

*:bahnhof:987(0,gleisänderung,Ladestraße 1,simparam);
*:bahnhof:987(0,gleisänderung,Ladestraße 2,simparam);

Das würde dazu führen, dass an den beiden Bahnsteigen keine Gleisänderung erlaubt ist, obwohl beide Gleise anlagentechnisch Alternativen zueinander sind. Für alle anderen Halte sind dann Wechsel noch zulässig.

gleisfalschmin, gleisfalschmitte & gleisfalschmax

Funktion Die drei Werte erlauben die „Strafzeit“ zu bestimmen, wenn ein Zug unangekündigt auf ein falsches Gleis geleitet wird.
Standardwerte gleisfalschmin: 90 Sekunden
gleisfalschmitte: 300 Sekunden
gleisfalschmax: 600 Sekunden.
Einstellmöglichkeiten Alle drei Werte für Berechnung nach dem Gauß-Verfahren
Auswirkungen Mit diesen Werten wird die Strafzeit berechnet bei unangekündigten Gleiswechseln. Mit gleisfalschmin und gleisfalschmax werden dabei die Extremwerte nach unten und oben gesetzt. Mit gleisfalschmitte wird angegeben, welchen Tendenzwert die Zufallsberechnung haben soll. (Gauß-Verfahren)
Wenn Werte über 300 gesetzt sind, empfiehlt es sich auch maxstop zu setzen, da maxstop immer Vorrang hat.
Anwendungsbeispiel

Angenommen für ein S-Bahn-Netz existiert ein eigenes ThemaScript. Es soll darin festgelegt werden, dass S-Bahnen nie lange warten, auch wenn der Wechsel unangekündigt war. So könnte es darin heißen:

*:bahnhof(60,gleisfalschmin,any,simparam);
*:bahnhof(90,gleisfalschmitte,any,simparam);
*:bahnhof(180,gleisfalschmax,any,simparam);

Das würde dazu führen, dass Züge bei unangekündigten Gleiswechseln meistens um die 90 Sekunden Standzeit bekommen, mindestens jedoch 60, höchstens aber 180 Sekunden.

So werden simparam berechnet

Abfahren wenn

(minStopTime() UND minStopANAB() UND minStopRandom()) ODER maxStop()

maxStop()

(aktzeit - warankunft) > maxstop(zielgleis)

minStopRandom()

aktzeit - warankunft > gauss(-10 sec, 30 sec, maxrandom(zielgleis))

minStopANAB()

(aktzeit - warankunft) > (ab - an) / gauss(2, randomdevisor(zielgleis), 5)

minStopTime()

Wenn Halt am richtigen Bahnsteig (bzw. mit Ankündigung)

(aktzeit - warankunft) > minstop(zielgleis)

Sonst

(aktzeit - warankunft) > gauss(gleisfalschmin, gleisfalschmitte, gleisfalschmax)

Legende

Variable Erklärung
aktzeit aktuelle Spielzeit
warankunft tatsächliche Ankunftszeit
an Ankunft laut Fahrplan
ab Abfahrt laut Fahrplan
gauss(a,b,c) Zufallszahl zwischen a und c, wobei b die Mitte darstellt
1)
Case 2293
2)
Case 2281
stellwerksim/erbauer/themascripte/simparam.txt · Zuletzt geändert: 2023/08/08 15:12 von DevonFrosch