Tutorial:Erstellen neuer Relaisgruppen - Verschlussregister: Unterschied zwischen den Versionen
BorisM (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
BorisM (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| Zeile 22: | Zeile 22: | ||
=Erstellen von Skripten= | =Erstellen von Skripten= | ||
Bei den Skripten gibt es zwei grundlegende Rollen, die über Objekte unterschiedlicher Klassen realisiert werden: VerschlussFahrstrasse und VerschlussElement | |||
==Klasse VerschlussFahrstrasse== | ==Klasse VerschlussFahrstrasse== | ||
Dem Objekt der Klasse VerschlussFahrstraße wird genau eine Fahrstraße fest zugeordnet. Diese Zuordnung bleibt immer bestehen. Gleichzeitig ist das VerschlussFahrstraße auch ein Element in anderen Fahrstraßen - so kann zum Beispiel ein Fahrstaßenhebel von einer anderen Fahrstraße in der Grundstellung verschlossen werden. | |||
==Klasse VerschlussElement== | ==Klasse VerschlussElement== | ||
=== | Beim VerschlussElement überwiegt die Rolle als Element einer Fahrstraße - es wird von der Fahrstraßenschubstange verschlossen, bzw. kann auch Bewegungen der Fahrstraßenschubstange verhindern. Ein VerschlussElement kann aber auch selbst Schubstangen antreiben, ein Beispiel dafür wären Hauptsignale, die Signalschubstangen bewegen. Die Verbindung auf diese Schubstangen ist allerdings fest - das Verschlusselement wird erst dann auf die Schubstange verbunden, wenn es über ein Verschlusslevel > 0 durch diese Fahrstraße verschlossen ist. | ||
==Methoden== | |||
===setLevelgrenzen=== | |||
void setLevelgrenzen(const string typ_fahrstrasse, const string stellung, const int minlevel, const int maxlevel) | |||
===verschliesse=== | |||
int verschliesse(const string typ_fahrstrasse, const int level) | int verschliesse(const string typ_fahrstrasse, const int level) | ||
===pruefe=== | |||
int pruefe(const string typ_fahrstrasse, const int level) | int pruefe(const string typ_fahrstrasse, const int level) | ||
===stelle=== | |||
void stelle(const string typ_fahrstrasse, const int level) | void stelle(const string typ_fahrstrasse, const int level) | ||
==Ereignisse== | |||
Version vom 17. Juni 2013, 19:32 Uhr
Beim mechanischen Stellwerk werden zum Beispiel über die Fahrstraßenhebel sogenannte Schubstangen bewegt, die über mechanische Verschlussstücke Weichenhebel verschließen und Signalhebel freigeben. Außerdem existieren noch Signalschubstangen, die durch die Signalhebel bewegt werden und Abhängigkeiten zu den Blockfeldern herstellen. Im Verschlussplan, und damit auch in StellSi, werden beide Arten zusammengefasst. Bei elektrischen Stellwerken wird das Verschlussregister entsprechend durch Relaisschaltungen oder in Software realisiert.
In StellSi wird das Verschlussregister abstrahiert und formalisiert modelliert.
Grundlagen
Schubstangen
Jede Fahrstraße kann eine beliebige Zahl Schubstangen haben. Diese Schubstangen sind nur bei der Programmierung relevant, der Benutzer, der Verschlußstücke im Relaisanlageneditor setzt, nutzt diese nicht. Dabei kann jede Schubstange nur von einem Element der Fahrstraße "bewegt" werden. Dies kann einerseits die Fahrtraßengruppe selbst sein, andererseits kann aber auch jedes andere Element der Fahrstraße, z.B. Signalgruppen, eine Schubstange bewegen. Jede Schubstange kann dabei innerhalb einer Fahrstraße nur einem Element zugeordnet sein - jede Fahrstraße kann so zum Beispiel nur eine Element besitzen, das die Signalschubstange bewegt.
Verschlusslevel
Kernstück des StellSi-Verschlussregisters sind die Verschlusslevel. Die Grundstellung einer virtuellen Schubstange entspricht dabei dem Verschlusslevel 0. Auf dem Weg zum Fahrt zeigenden Signal durchläuft die virtuelle Schubstange dabei mehrere Verschlusslevel, in Abhängigkeit der gewünschten Funktionen. Dabei ermöglicht das Konzept auch automatischen Weichenlauf und automatischen Signalhaltfall, wenn ein Element die überwachte Stellung verlässt.
Die Verschlusslevels können dabei theoretisch frei gewählt werden. Um eine Mischung verschiedener Stellwerksbauformen zu ermöglichen, wird allerdings ein Standard vorgegeben, der nach Möglichkeit eingehalten werden sollte. Zwischen den vorgegebenen Verschlußlevels können nach Bedarf weitere eigene Levels definiert werden.
Vorgaben
Beispiele
Mechanisches Stellwerk
Elektromechanisches Stellwerk
Relaisstellwerk mit Weichenselbstlauf
Erstellen von Skripten
Bei den Skripten gibt es zwei grundlegende Rollen, die über Objekte unterschiedlicher Klassen realisiert werden: VerschlussFahrstrasse und VerschlussElement
Klasse VerschlussFahrstrasse
Dem Objekt der Klasse VerschlussFahrstraße wird genau eine Fahrstraße fest zugeordnet. Diese Zuordnung bleibt immer bestehen. Gleichzeitig ist das VerschlussFahrstraße auch ein Element in anderen Fahrstraßen - so kann zum Beispiel ein Fahrstaßenhebel von einer anderen Fahrstraße in der Grundstellung verschlossen werden.
Klasse VerschlussElement
Beim VerschlussElement überwiegt die Rolle als Element einer Fahrstraße - es wird von der Fahrstraßenschubstange verschlossen, bzw. kann auch Bewegungen der Fahrstraßenschubstange verhindern. Ein VerschlussElement kann aber auch selbst Schubstangen antreiben, ein Beispiel dafür wären Hauptsignale, die Signalschubstangen bewegen. Die Verbindung auf diese Schubstangen ist allerdings fest - das Verschlusselement wird erst dann auf die Schubstange verbunden, wenn es über ein Verschlusslevel > 0 durch diese Fahrstraße verschlossen ist.
Methoden
setLevelgrenzen
void setLevelgrenzen(const string typ_fahrstrasse, const string stellung, const int minlevel, const int maxlevel)
verschliesse
int verschliesse(const string typ_fahrstrasse, const int level)
pruefe
int pruefe(const string typ_fahrstrasse, const int level)
stelle
void stelle(const string typ_fahrstrasse, const int level)