Tutorial:Erstellen neuer Relaisgruppen - Verschlussregister: Unterschied zwischen den Versionen

Aus StellSi-Hilfewiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
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==
Die Klasse VerschlussFahrstrasse erbt von VerschlussElement, da eine Fahrstraße gleichzeitig Element in weiteren Fahrstraßen sein kann. Damit sind auch alle Methoden und Ereignisse des VerschlussElement verfügbar.
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.  
===Methoden===
 
===Ereignisse===
==Klasse VerschlussElement==
==Klasse VerschlussElement==
===Methoden===
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.
====verschliesse====
==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===
==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)

Ereignisse