Tutorial:Erstellen neuer Relaisgruppen - Verschlussregister: Unterschied zwischen den Versionen
BorisM (Diskussion | Beiträge) |
|||
| Zeile 17: | Zeile 17: | ||
Die Berechnung des Levels einer Schubstange geschieht dabei folgendermaßen: | Die Berechnung des Levels einer Schubstange geschieht dabei folgendermaßen: | ||
Jedes Element gibt ein Minlevel und ein Maxlevel an. Der Antrieb der Schubstange gibt ein Wunschlevel an. Tatsächliches Level ist dabei das Level, das dem Wunschlevel der Fahrstraße am nächsten ist, aber von den angegebenen Minlevel und Maxlevel zulässig ist. Dabei können Elemente auch durch nachträgliches Setzen des Min- und Maxlevel das | Jedes Element gibt ein Minlevel und ein Maxlevel an. Der Antrieb der Schubstange gibt ein Wunschlevel an. Tatsächliches Level ist dabei das Level, das dem Wunschlevel der Fahrstraße am nächsten ist, aber von den angegebenen Minlevel und Maxlevel zulässig ist. Dabei können Elemente auch durch nachträgliches Setzen des Min- und Maxlevel das Level der Schubstange "gewaltsam" ändern. | ||
Sollte das Minlevel von Elementen höher sein als das niedrigste Maxlevel, setzt sich das Maxlevel durch. | Sollte das Minlevel von Elementen höher sein als das niedrigste Maxlevel, setzt sich das Maxlevel durch. | ||
Version vom 25. Juni 2013, 21:02 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.
Die Berechnung des Levels einer Schubstange geschieht dabei folgendermaßen:
Jedes Element gibt ein Minlevel und ein Maxlevel an. Der Antrieb der Schubstange gibt ein Wunschlevel an. Tatsächliches Level ist dabei das Level, das dem Wunschlevel der Fahrstraße am nächsten ist, aber von den angegebenen Minlevel und Maxlevel zulässig ist. Dabei können Elemente auch durch nachträgliches Setzen des Min- und Maxlevel das Level der Schubstange "gewaltsam" ändern.
Sollte das Minlevel von Elementen höher sein als das niedrigste Maxlevel, setzt sich das Maxlevel durch.
Vorgaben
Schubstange "fz"(Zugstraßenschubstange)/"fr"(Rangierstraßenschubstange)
| 1000 | Prüfung, ob festlegbar | Relevant insbesondere bei Relaisstellwerken mit automatischem Weichenlauf: Über Level 1000 kann geprüft werden an, ob die Weiche zwar momentan nicht festlegbar ist, nach einem Umlauf allerdings festlegbar wäre. So kann eine Zulassungsprüfung realisiert werden, ohne dass ein Weichenumlauf durchgeführt wird. |
| 2000 | Umlauf auslösen | Wird die Schubstange nach Level 2000 bewegt, ist dies ein Auftrag an alle Weichen umzulaufen, sofern sie noch nicht richtig liegen. |
| 3000 | Mechanisch festlegen | |
| 4000 | Elektrisch festlegen | |
| 5000 | Überwachung | Element ist bereit für Fahrstraße. Entfällt Überwachung, wird Level der Fahrstraße automatisch abgesenkt. Achtung: Wenn ein Element ein Minlevel >4000 besitzt, würde es zum Konflikt kommen, wenn ein anderes Element das Maxlevel absenkt -> nie ein Minlevel >4000 setzen! |
| 6000 | Auftrag Signalstellung |
Anmerkung: Unterscheidung zwischen Fahrwegweiche/Flankenschutzweiche Schubstange "s" (Signalschubstange)
| 1000 | Hebelsperre ausgelöst |
| 2000 | Hebel bedienbar |
| 3000 | Halt verlassen |
| 4000 | Fahrt erreicht |
| 5000 | Kuppelstrom |
Beispiele
Mechanisches Stellwerk
Maxlevel Weiche
Schubstange fz:
Weichenlage richtig, nicht festgelegt: 4000 oder 5000
Weichenlage falsch, umstellbar: 0
Weichenage falsch, nicht umstellbar: 0
Fahrstraßenfestlegung, Anfangsfeld o.ä.
Schubstange s:
Maxlelel 0, wenn rot, maximal wenn weiß
Befehls-/Zustimmungsempfang:
Bei Blockierung Fahrstraße: Schubstange fz Maxlevel 1000 wenn rot, sonst maximal
Bei Blockierung Signal: Schubstange s Maxlevel 1000 wenn rot, sonst maximal
Bahnübergang
Bei Blockierung Fahrstraßenfestlegung: Schubstange fz Maxlevel 3000
Bei Blockierung Signalhebel: Schubstange s Maxlevel 0
Bei Alarm: Maximales Maxlevel, aber bei offenen BÜ akustischer Alarm ab Level 4000.
Signalflügelkupplung
Auslösung Signalflügelkupplung durch Setzen Maxlevel 4000
Signal
Schubstange fz: Minlevel 3000, wenn Signal auf Fahrt
Grundsätzliche Regeln für Elemente der Signalschubstange
Minlevel darf maximal 4000 betragen - nur so ist möglich, dass andere Elemente durch setzen eines Maxlevel von 4000 die Signalflügelkupplung auslösen!
Elektromechanisches Stellwerk
Maxlevel Weiche
Weichenhebel in Endlage, Stellung richtig: 3000
Weiche in Endlage, Stellung richtig: 5000
Weiche festgelegt, aufgefahren: Weiche setzt 3000, Verschlussregister meldet 4000 zurück (Level Fahrstraße ist auf 4000!)
Weichenlage falsch, umstellbar: 0
Weichenage falsch, nicht umstellbar: 0
Weiche anderweitig nicht befahrbar (z.B. belegt): 0
Relaisstellwerk mit Weichenselbstlauf
Maxlevel Weiche
Weichenlage richtig, nicht festgelegt: 4000 oder 5000
Weichenlage richtig, festgelegt: 5000
Weichenlage falsch, umstellbar: 2000
Weichenage falsch, nicht umstellbar: 0
Weiche anderweitig nicht befahrbar (z.B. belegt): 0
Schaltablauf
if (fs.pruefe("fz",2000)==2000)//prüfe ob UMlauf möglich
{
fs.stelle("fz",5000); //Gebe Stell- und Verschlußauftrag, aktiviere Überwachung
}
void on_fs_fz_verschlussstangechanged(int level)
{
if (level>=4000)
{
aktiviere_Verschlussmelder();
}
if (level>=5000)
{
stelle_Signal_fahrt();
}
else
{
stelle_Signal_halt();
}
}
bei Weichen: Reaktion auf Ereignis on_OBJEKTNAME_SCHUBSTANGENNAME_STELLUNG_festlegungchanged(int level)
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 > KUPPELGRENZE durch diese Fahrstraße verschlossen ist. KUPPELGRENZE liegt vorerst fest bei 0, für später ist geplant diese variabel zu gestalten. Sollte diese variabel benötigt werden, bitte Nachricht an stellsi@stellsi.de.
Ein Element kann von mehreren Schubstangen (auch verschiedener Fahrstraßen) verschlossen sein. In diesem Fall wird dem Element immer das höchste Verschlußlevel mitgeteilt.
Methoden
setLevelgrenzen
void setLevelgrenzen(string typ_fahrstrasse, string stellung, int minlevel, int maxlevel)
Rolle als Element:
Teilt dem Verschlußregister mit, was das maximale und was das minimale Verschlusslevel ist, in denen das Element verschlossen werden kann. Minlevel kann z.B. von Hauptsignalen genutzt werden, um ein Zurücklegen des Fahrstraßenhebels zu verhindern. Maxlevel dagegen kann z.B. von Weichen genutzt werden, um ein Umlegen des Fahrstraßenhebels zu verhindern.
Wichtig: Ob eine Schubstange bewegt werden kann oder nicht, wird anhand der Levelgrenzen, die die Elemente dem Verschlußregister mitgeteilt haben, bestimmt. Eine weitere Abfrage vor Festlegung des Verschlußlevels einer Schubstange erfolgt nicht! Die Levelgrenzen müssen also immer aktuell gehalten werden!
pruefe
int pruefe(string typ_fahrstrasse, int level)
Rolle als Antrieb einer Schubstange:
Prüft, ob die Schubstange in ein bestimmtes Level bewegt werden kann. Liefert das Level zurück, das dem gewünschten Level am nächsten ist.
stelle
void stelle(string typ_fahrstrasse, int level)
Rolle als Antrieb einer Schubstange:
Gibt den Auftrag, die Schubstange in ein Level zu bewegen. Die Schubstange wird in das Level versetzt, das dem gewünschten Level am nächsten ist. Der Stellauftrag wird zwischengespeichert - sobald es möglich ist, wird die Schubstange weiter in das gewünschte Level bewegt. Dieser Vorgang kann abgebrochen werden, indem ein erneuter Aufruf mit anderem Level erfolgt. Dies kann bei elektrischen Stellwerken mit Weichenselbstlauf o.ä. sinnvoll sein.
Rückmeldung erfolgt über on_OBJEKTNAME_SCHUBSTANGENNAME_verschlussstangechanged(int level)
verschliesse
int verschliesse(string typ_fahrstrasse, int level)
Rolle als Antrieb einer Schubstange:
Setzt Verschlusslevel auf den gegebenen Wert, allerdings nur, wenn dieser möglich ist. Eine Speicherung erfolgt nicht. Rückgabe: level bei Erfolg, -1 bei Scheitern. Sinnvoll z.B. bei mechanischen Stellwerken.
Ereignisse
on_OBJEKTNAME_SCHUBSTANGENNAME_verschlussstangechanged(int level)
Rolle als Antrieb einer Schubstange:
Wird aufgerufen, wenn Auftrag zum Ändern des Verschlußlevels eine Änderung herbeigeführt hat.
on_OBJEKTNAME_SCHUBSTANGENNAME_STELLUNG_festlegungchanged(int level)
Rolle als Element:
Wird aufgerufen, wenn Element durch eine oder mehrere Schubstangen verschlossen wurde. Bei Verschluss durch mehrere Schubstangen wird maximaler Wert verwendet.