qrailway 0.9

Kapitel 4.d. Bahnhöfe

Bahnhöfe haben eine Vorzugsrichtung, in der alle Regler, die zum Bahnhof gehören, ausgerichtet sind. Züge, die in Reglerrichtung 0 stehen, werden im Programm mit ">>" angezeigt. Züge, die in Reglerrichtung 1 stehen, werden mit "<<" angezeigt.

Das Programm unterscheidet sichtbare Bahnhöfe und Schattenbahnhöfe. Schattenbahnhöfe sind der Verwaltung innerhalb des Programms deutlich weniger komplex. Jeder Bahnhof hat einen aktuellen Status.

Status

Der Status eines Bahnhofs bestimmt dessen Verhalten bei Änderung des Status und bei eingehenden Anfragen von Zügen:

Schattenbahnhöfe

Die folgende Abbildung zeigt das Fenster zur Verwaltung von Schattenbahnhöfen.

cFensterSchattenbahnhof.png

Ausfahrenden Personenzügen kann ein anderer Befehlssatz zugeordnet werden als ausfahrenden Schnellzügen/Güterzügen. Die Funktionsweise von Schattenbahnhöfen ist klassisch darauf beschränkt, Züge in einer Fahrtrichtung zu beinhalten und nach Einfahrt eines Zugs einen neuen Zug auf die Reise zu schicken. In dem Projekt wurden Schattenbahnhöfe genutzt, bei denen ein Regler für alle Gleise zuständig war und der Strom über die Weichen geleitet wurde. In sichtbaren Bahnhöfen ist dieses Vorgehen nicht ratsam, da es hier reizvoll ist, Züge gleichzeitig ein- und ausfahren zu sehen. Hier sollte für jedes Gleis ein eigener Regler genutzt werden.

Einstellungen von Schattenbahnhöfen

In der Tabelle bahnhof der Datenbank lassen sich die interne Bahnhofsnummer (Feld bahnhofsnr), Bahnhofsbezeichnung (Feld bahnhofsname), die Befehlspräfixe je Gleis (Feld prefix?) und die Hauptgleise (Feld hauptgleise) festlegen. Die Felder gl? speichern, ob das Gleis aktiviert (0) oder nicht aktiviert ist. befehl0 beinhaltet den Befehlssatz, der Personenzügen zugewiesen wird, befehl1 den Befehlssatz für Schnell- und Güterzüge. schattenbahnhof ist auf 1 zu setzen. nebengleise ist leer zu lassen. hauptgleise ist eine Aufzählung der verfügbaren Gleise (bei 4 Gleisen also "1,2,3,4"). Die Präfixe werden bei Zulässigkeitsprüfungen vor den Befehlssatz gehängt, da hier erst die Weichenschaltung erfolgen kann, bevor der durch die Weichen aktivierte Zug ermittelt wird, der auf dem Regler steht. D.h. die im Präfix (z.B. für Gleis 1) abgelegten WWEICHE Befehle sorgen für das Schalten des für den Schattenbahnhof zuständigen Reglers auf das entsprechende Gleis (z.B. auf Gleis 1).

Die für den Schattenbahnhof mit der Nummer k zur Verfügung stehenden Befehlssätze müssen eine interne Nummer größer gleich 1000+100k und kleiner 1000+100(k+1) erhalten. Nur diese Befehlssätze werden in der Auswahlliste angezeigt.

Sichtbare Bahnhöfe

Die folgende Abbildung zeigt das Fenster zur Verwaltung von sichtbaren Bahnhöfen

cFensterBahnhof.png

Die Dropdown-Box ermöglicht die Auswahl des Befehls, der allen ausfahrenden Zügen des Hauptstrecke zugeordnet wird. Aktivierte Gleise können durch die Checkbox vor der Gleisnummer ausgewählt werden. Die Listbox hinter den Gleisen gibt den Besitzer des Gleises an. Züge auf Gleisen ohne Besitzer werden nicht automatisch ausfahren. Gleise mit Besitzer "Nebengleise" erhalten abhängig von der Richtung, in die der Zug zeigt, bei Ausfahrt einen Befehlssatz aus den Listboxen. Gleise für die Hauptstrecke erhalten den in der Listbox "Hauptgleis" angegebenen Befehl.

Die Teilung des Gleises 4 in 4a und 4b ist bedingt durch die Weiche, die in diesem Gleis angebracht ist. Die Gleise 4a und 4b haben unterschiedliche Regler, so dass auf jedem der Gleisteile unterschiedliche Züge stehen können. Daher werden die beiden Gleisabschnitte als unterschiedliche Gleise im Programm behandelt.

Einstellungen von sichtbaren Bahnhöfen

In der Tabelle bahnhof der Datenbank lassen sich die interne Bahnhofsnummer (Feld bahnhofsnr), Bahnhofsbezeichnung (Feld bahnhofsname), die Befehlspräfixe je Gleis (Feld prefix?), die Hauptgleise (Feld hauptgleise) und Nebengleise (Feld nebengleise) festlegen. Die Felder gl? speichern den Besitzer des Gleises. befehl0 beinhaltet den Befehlssatz, der allen ausfahrenden Zügen der Hauptstrecke zugewiesen wird, befehl1 und befehl2 werden nicht genutzt. schattenbahnhof ist auf 2 zu setzen. nebengleise ist eine Aufzählung der Gleise, die für die Nebenstrecke genutzt werden dürfen. hauptgleise ist eine Aufzählung der für die Hauptstrecke verfügbaren Gleise. Die Präfixe sind nicht erforderlich, sofern für jedes Gleis ein eigener Regler genutzt wird.

Anders als Züge der Hauptstrecke, die darauf vertrauen, dass kein Gegenverkehr herrscht und im nächsten Bahnhof ein Gleis frei sein oder werden wird, können Nebenstrecken in beide Richtungen genutzt werden. Daher muss vor Abfahrt eines Zugs sichergestellt werden, dass die Strecke frei ist und dass im Zielbahnhof ein Gleis zur Verfügung steht. Dieses Gleis wird bei Abfahrt sofort reserviert, damit keine Doppelbelegung erfolgt. Die von einem Bahnhof erreichbaren Bahnhöfe sind in den beiden Listboxen "Nebengleis >>" (erreichbare Bahnhöfe bei Abfahrt in Reglerrichtung 0) und "Nebengleis <<" (erreichbare Bahnhöfe bei Abfahrt in Reglerrichtung 1) dargestellt. Die zugehörigen Befehle werden dem Config-File entnommen. Dazu werden für jeden Zielbahnhof im Abschnitt [bahnhof] drei Zeilen in der folgenden Art eingefügt:

Die Zeilen sind wie folgt zu interpretieren: Bei Ausfahrt eines Zugs der Nebenstrecke aus Bahnhof 6 (b6) in Reglerrichtung 0 (r0) und Verwendung des Befehlssatzes 1617 wird der Zielbahnhof 7 in Fahrtrichtung 13 (Reglerichtung 1) erreicht. Mit p? lassen sich die möglichen Befehle für die Ausfahrt aus Bahnhof 6 in Reglerrichtung 0 durchnummerieren. Im oben dargestellten Beispiel läuft dies von b6r0p0 bis b6r0p2. Der Befehl für Ausfahrt in Reglerrichtung 1 ist unter b6r1p0 abgelegt.

Zufällige Zeitsteuerung

Die Variablen für die Zeitsteuerung sind im Config-File in der Sektion [intelligenz] abgelegt. Als Countdown-Zeit wird timekonst? zuzüglich einer zufälligen Zeit zwischen 0 und timevar? genutzt. "?" kann dabei dei Werte 1 (Schnellzug), 2 (Güterzug) und 3 (Personenzug) annehmen.

Die Klasse cBahnhof

Die Bahnhofsverwaltung, d.h. die Zuordnung von eintreffenden Zügen zu Gleisen und die Steuerung der Ausfahrten bei den unterschiedlichen Status erfolgt in der Klasse cBahnhof. Die Klasse ist individuell hart für das Projekt programmiert und muss umprogrammiert werden, wenn die Bahnhöfe anders aussehen. Hart codiert sind z.B. die Gleispräferenzen von Zügen.