qrailway 0.9
|
Der Gleisplan setzt sich aus sogenannten Sektionen zusammen, die durch sogenannte Konnektoren verknüpft werden. In der folgenden Darstellung sind die Konnektoren mit 1 bis 9 durchnummeriert, die Sektionen mit 31 bis 38.
Jede der Sektionen verbindet zwei Konnektoren. Diese Konnektoren (bzw. die numerischen Identifier) werden für jede Sektion in den Feldern conleft
und conright
abgelegt. Welcher der beiden Konnektoren conleft
und welcher conright
ist, ergibt sich durch den Stromanschluss. Grundsätzlich gilt: Wenn die Reglerrichtung 0 angelegt ist (z.B. nachprüfbar über die Reglerkarte), dann fährt der Zug von Konnektor conleft
in Richtung Konnektor conright
. Sektionen werden in der Tabelle sections
angelegt.
Es gibt unterschiedliche Typen von Konnektoren:
Ein Konnektor ist mit einer (Endpunkte), zwei (Hilfskonnektoren, Stromtrenner und Reedkontakte), drei (Weiche) oder vier (Doppelkreuzungsweichen, Dreiwege-Weiche) verbunden. Die Nummern der Identifier dieser Sektion sind für jeden Konnektor in den Feldern secL
, secR
, secM
und secX
abgelegt. Konnektoren werden in der Tabelle connectors
angelegt.
Die Nummernkreise von Konnektoren (sogenannte conid
) und Sektionen (secid
) sind voneinander unabhängig, so dass man aufpassen muss, ob es sich gerade um einen Konnektor/eine Sektion handelt. Da es zwecks eines einfacheren Überblicks hilfreich ist, die Konnektoren-IDs gleichartiger Konnektoren beisammen zu halten, wurden für das Projekt Weichen mit der Konnektor-ID 400+x und Reedkontakte mit der Konnektor-ID 100+x versehen.
Der Konnektor 1 (rot dargestellt) ist ein Endpunkt (z.B. ein Prellbock etc.). Von ihm aus geht nur ein Gleis (Sektion 31) zu einem anderen Konnektor (Konnektor 2). Die Sektion (hier Nr. 31) wird dazu im Feld secl
eingetragen. Endpunkte haben die interne Kennung (contype
"E").
Konnektor 2 ist ein Reedkontakt. Reedkontakte spielen eine essentielle Rolle für das Programm. Grundsätzlich befindet sich jede Lok auf einem Reedkontakt, da nur dort Beobachtungen (Überfahrten des Reedkontakts) möglich sind. Der Zug kann entweder in Reglerrichtung stehen (d.h. wenn der Regler in Richtung 0 Strom erhält, fährt die Lok vorwärts; in diesem Fall ist die Zugrichtung - auch trainrichtung
im Programm genannt - 0) oder umgekehrt (trainrichtung
1). Reedkontakte werden über qrailway scharf geschaltet, warten damit auf eine Überfahrt und liefern den Status bei regelmäßigen Statusabfragen an qrailway zurück. Ein Reedkontakt ist mit zwei Gleisen verbunden, die in secL
und secR
abgelegt sind. In welcher Reihenfolge die beiden Gleise (hier 31 und 32) diesen beiden Feldern zugeordnet werden ist dabei unerheblich. Reedkontakte haben die interne Kennung (contype
"R"). Die Verbindung von Reedkontakten im Gleisplan mit der Hardware erfolgt über die Tabelle hardware
.
Konnektor 3 ist ein Hilfskonnektor. Hilfskonnektoren helfen lediglich der Darstellung des Gleisplans und haben keine weitere Funktion. Hilfskonnektoren haben die interne Kennung (contype
"H").
Konnektor 4 ist ein Stromtrenner. Innerhalb eines Stromkreises muss ein- und dieselbe Reglerrichtung zur selben Fahrtrichtung führen muss (bei Strom in Reglerrichtung 0 fährt eine Lok von 1 zu 2, von 2 zu 3 und von 3 zu 4), d.h. conleft
/conright
bei Sektion 31 ist 1/2, bei Sektion 32 ist 2/3 und bei Sektion 33 ist 3/4. Sobald ein neuer Regler beginnt (hier im Beispiel für die Sektionen 34 bis 38), kann die Reglerrichtung zu einer anderen Fahrtrichtung führen. Das heißt, dass conleft
/conright
für Sektion 34 auch 5/4, für Sektion 35 auch 8/5 usw. seien dürfte. Hauptsache ist, innerhalb eines Reglers ist die Richtung einheitlich. Der "Stromanschluss" von Reglern im Gleisplan erfolgt über die Tabelle hardwarepower
. Stromtrenner haben die interne Kennung (contype
"C").
Konnektor 5 ist eine Weiche. Hier wird die mittlere Sektion (hier Sektion 34) im Feld secM
abgelegt. Die Abzweige nach links in secL
(hier Sektion 35) und nach rechts in secR
(hier Sektion 36). Weichen haben die interne Kennung (contype
"W"). Die Verbindung von Weichen im Gleisplan mit der Hardware erfolgt über die Tabelle hardware
. Innerhalb des Programms sind alle Weichen so ausgeführt, dass Strom nur bei entsprechender Weichenstellung durchgeleitet wird. Sollte es sich um eine Stop-Weiche handeln, ist im Gleisplan ein Stromkreistrenner zu nutzen. Leitet die Weiche unerheblich von der Weichenstellung ist ein weiterer Stromanschluss in hardwarepower
aufzunehmen.
Neben Weichen gibt es auch Doppelkreuzungsweichen (contype
"D") und Dreiwegeweichen (contype
"3"), welche die zusätzliche Sektion in secX
ablegen. Ist eine Doppelkreuzungsweiche auf links/across geschaltet, so fährt der Zug von secL
nach secM
, bzw. bei rechts/bend von secL
nach secX
(die andere Sektionen sind entsprechend verbunden). Bei einer Dreiwegeweiche gibt es eine weitere Richtung (Mitte), die von secM
nach secX
führt.
Zur Veranschaulichung zeigt das folgende Bild den Hauptbahnhofsbereich des Projekts.
Damit die Weichen besser erkennbar sind, wurde das Bild gemacht, als die Anlage ausgeschaltet war, d.h. alle Weichen werden mit Fehler dargestellt (rot). Stromkreistrenner sind als kleine schwarze Punkte dargestellt, Reedkontakte als große graue Punkte und Endpunkte als große schwarze Punkte. Sektionen, die Strom haben sind dunkelgrau/hellgrau/dunkelgrau dargestellt, Sektionen ohne Strom nur dunkelgrau (Abstellgleise). Die Abstellgleise erhalten erst Strom bei entsprechender Weichenstellung.
Jeder Konnektor verfügt über Einstellungen und Status, die in der Datenbank, Tabelle connectors
gespeichert sind. Die Einstellungen umfassen die Felder
context
: einen Hinweistext, der als Lokaufenthaltsort angezeigt wird, z.B. "Hauptbahnhof, Gleis 5, ganz rechts" oder "Einfahrt Schattenbahnhof 2" etc.,x
: x-Koordinate des Konnektors für die Anzeige (die x-Koordinate wird für die Anzeige noch verschoben und skaliert),y
: y-Koordinate des Konnektors für die Anzeige (die x-Koordinate wird für die Anzeige noch verschoben und skaliert),parameter
: Die Parameter können Geschwindigkeitsbegrenzungen (m0, m1) und -erhöhungen (s0, s1) enthalten (vgl. Kapitel 4.f. Geschwindigkeitseinstellung), Informationen über Messpunkte (measureStart, measureStop, measure1, measure2) und Zugehörigkeiten zu Bahnhöfen (vgl. Kapitel 4.d. Bahnhöfe).Zusätzlich werden folgende Status gespeichert:
status
: letzte Weichenstellung für Weichen (beim Ausschalten)countLokStehengeblieben
: Fehlerzähler für Loks, die in der Nähe dieses Reedkontakts stehengeblieben sindcountReedkontaktAktiviert
: Zähler für Aktivierungen dieses ReedkontaktscountReedkontaktUeberfahren
: Zähler für das Überfahren dieses Reedkontakts (Zählung nur, falls der Reedkontakt vorher aktiviert wurde)countWeicheFehler
: Fehlerzähler für Weichen, die nicht geschaltet habencountWeicheGeschaltet
: Zähler, für Schaltvorgänge von WeichencountReedkontaktFehler
: Fehlerzähler, falls ein Reedkontakt fehlerhaft übefahren wurdecountLokKurzschluss
: Fehlerzähler für Loks, die in der Nähe dieses Reedkontakts einen Kurzschluss ausgelöst haben.Jede Sektion verfügt über Einstellungen, die in der Datenbank, Tabelle sections
gespeichert sind. Die Einstellungen umfassen die Felder
sectext
: Beschreibung des Gleisabschnittes (gegenwärtig nicht weiter genutzt),driver
: virtueller Fahrregler, dem diese Sektion zugeordnet ist,length
: Länge der Sektion in cm (wichtig, um zu bestimmen, wieviel Platz ein Zug einnimmt),parameter
: Darstellungsparameter, akzeptiert gegenwärtig nur "hidden" für den Fall, dass die Sektion nicht gezeigt werden soll.Es ist empfehlenswert, Blockstrecken zumindest am Anfang, am Ende und in der Mitte mit einem Reedkontakt zu versehen. Zwischen diesem Reedkontakt und dem nächsten Reedkontakt bzw. dem nächsten Stromtrenner sollte jeweils ein Hilfskonnektor gesetzt werden. Die Strecken sollten sorgfältig gemessen werden, damit Züge nicht unnötig in Weichen stehend angezeigt werden und damit das Schalten dieser Weichen verhindert wird.
Um Loks besser auf der Anlage wiederzufinden, hilft es, die Reedkontakte mit Beschriftungen (context
) zu versehen.
Innerhalb des Programms wird angenommen, dass der Neodym-Magnet eines jeden Zugs in Fahrtrichtung vorne ist. Sobald ein Reedkontakt überfahren wird, wird somit ein kurzes Stück vor dem Reedkontakt und die Zuglänge hinter (in Fahrtrichtung) dem überfahrenen Reedkontakt durch den Zug belegt.
Achtung: Dadurch, dass für jede Sektion die angrenzenden Konnektoren und für jeden Konnektor die angeschlossenen Sektionen gespeichert werden, ergibt sich eine redundante Datenhaltung, die eine große Sorgfalt erfordert, damit sich ein konsistentes, fehlerfreies Gleisbild ergibt.
Für die Erstellung eines solchen Gleisbilds empfiehlt es sich, mit einem sehr einfachen Gleisplan zu beginnen (z.B. einem Kreis) und diesen mit Hilfe des Edit-Modus zu erweitern. Für das Einfügen von Weichen sowie das Setzen von Reedkontakten und Stromtrennern etc. ist ein direkter Zugriff auf die Datenbank notwendig. Der Edit-Modus hilft bei der Positionierung von Konnektoren (also dem Layout) sowie dem Teilen von Strecken. qrailway startet im Edit-Modus durch einen Aufruf von qrailway --edit
Im Edit-Modus können Konnektoren mit der linken Maustaste verschoben werden. Durch Rechts-Klick auf eine Sektion kann die Stromrichtung der Sektion, Länge und Beschreibung geändert werden. Durch Rechts-Klick auf einen Konnektor kann dieser enfernt werden. Durch Auswählen des Buttons "Einfuegen/Loeschen von Konnektoren" wird die Rechts-Klick-Funktion auf eine Sektion geändert: statt der Änderung von Einstellungen kann nun ein neuer Konnektor in diese Sektion eingefügt werden.