Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:traffic:timetable:impulses

Impulse

Impulse machen in $SCENEs die Beeinflussung der Wartezeiten in den $PATHs untereinander möglich. Bewegungen können einerseits Impulse senden und andererseits auf Impulse warten.

Impulsbefehle werden innerhalb der Wartezeiten in eckige Klammern gesetzt.

Der Befehl zum Senden eines Impuls ist:

[SI:]

Der Befehl zum Warten auf einen Impuls ist:

[WI:]

Funktionsweise

Grundsätzlich sind Impulse Zähler, die mit dem Sendebefehl auf- und mit dem Wartebefehl abgezählt werden.

Der Wartebefehl hält die Wartezeit so lange an, bis der Impuls, auf den gewartet wird, einen Mindestwert (standardmäßig 1) angenommen hat. Wenn der Mindestwert erreicht wird, zählt der Wartebefehl den Impuls um diesen Mindestwert herab und endet, und die Wartezeit kann zu Ende ablaufen.

Der Wartebefehl kann einen Startwert annehmen, damit nicht alle $PATHs in einer $SCENE in Wartezeiten steckenbleiben, weil der Impuls, auf den gewartet wird, bei 0 steht, und alle Bewegungen, die ihn hochzählen könnten, darauf warten, daß er hochgezählt wird.

Der Sendebefehl wiederum zählt den Impuls um einen angegebenen Wert hoch.

Parameter

Folgende Parameter gibt es für Impulse:

Parameter Verwendung (SI/WI) Funktion
N= beide (Pflicht) Name des Impulses
C= SI (optional) Wert, um den der Impuls hochgezählt wird (Standard: 1)
WI (optional) Mindestwert, auf den gewartet wird, und Wert, um den der Impuls wieder herabgezählt wird (Standard: 1)
B= WI (optional) Startwert, der beim Erzeugen des $PATH gesetzt wird, um die Wartezeit ohne das Warten auf einen Impuls sofort weiterlaufen zu lassen

Die Parameter enden jeweils mit einem Semikolon.

Beispielanwendung

Eine typische Anwendung für Impulse ist eine $SCENE mit zwei $PATHs, wo aber immer nur auf einem $PATH zur Zeit ein Zug fahren soll. Hierfür wird ein Impuls namens Einzelzug verwendet.

Ein $PATH bekommt folgende Startwartezeit:

TB=[WI:N=Einzelzug;B=1;]

Hier wird also vor jeder Bewegung auf den Impuls namens Einzelzug gewartet. Damit ganz am Anfang nicht gewartet werden muß, wird mittels B=1 dem Impuls ein Startwert gegeben.

Der andere $PATH bekommt folgende Startwartezeit:

TB=[WI:N=Einzelzug;]

Auch hier wird vor jeder Bewegung auf den Impuls namens Einzelzug gewartet. Es gibt aber keinen Startwert, damit nicht beide $PATHs sofort loslaufen, und einer der $PATHs hat ja schon einen Startwert. Die erste Bewegung in diesem $PATH wird also warten, bis die erste Bewegung im ersten $PATH durchgelaufen ist.

Beide $PATHs bekommen außerdem folgende Endwartezeit:

TE=[SI:N=Einzelzug;]

Am Ende jeder Bewegung wird der Impuls namens Einzelzug gesendet und damit die nächste Bewegung ausgelöst, die gerade auf den Impuls Einzelzug wartet.

Damit wird bewirkt, daß immer nur in einem $PATH ein Zug fährt. Wenn in einem $PATH ein Zug fährt, wartet der Zug im anderen $PATH in seiner Startwartezeit auf das Auslösen des Impulses. Wenn dann der fahrende Zug den $PATH verläßt, löst er den Impuls aus, und der Zug im anderen $PATH kann fahren.

Natürlich läßt sich dieses Beispiel noch weiter verbessern. So, wie es jetzt ist, fahren die Züge in den $PATHs unmittelbar nacheinander. Mit Zeitangaben in den Wartezeiten lassen sich Pausen zwischen den Zügen einbauen. Den ständigen Wechselbetrieb zwischen den zwei $PATHs kann man wiederum auflockern, indem in den $PATHs auch Bewegungen mit M=NULL stattfinden können, in denen überhaupt nichts passiert, die aber trotzdem auf Impulse warten und Impulse auslösen können.

Wenn die $SCENE einen zweigleisigen Bahnhof darstellt, könnte man sie auf zwei Impulse erweitern, einen für die linke und einen für die rechte Ausfahrt, wo dann auch Impulsbefehle in die Wartezeiten im Bahnhof eingebaut werden (z. B. T=[SI:N=Links;],1,OPEN,W,5-10,[WI:N=Rechts;],2,CLOSE,W,1).

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden.
Weitere Information
de/traffic/timetable/impulses.txt · Zuletzt geändert: 2019/01/27 19:46 von marting