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

Aus StellSi-Hilfewiki
Zur Navigation springen Zur Suche springen
(→‎Vorgaben: Neu: zustm-Stange)
Zeile 92: Zeile 92:


Die Fahrstraßengruppe meldet über diese Schubstange die anzuzeigende Geschwindigkeit in km/h an die fahrstraßenabhänigen Vorsignale. Geschwindigkeit -1 bedeutet dunkel, also bitte die -1 vorsichitg verwenden. (Besonders vorläufiger Stand!)
Die Fahrstraßengruppe meldet über diese Schubstange die anzuzeigende Geschwindigkeit in km/h an die fahrstraßenabhänigen Vorsignale. Geschwindigkeit -1 bedeutet dunkel, also bitte die -1 vorsichitg verwenden. (Besonders vorläufiger Stand!)
'''Schubstange zustm (Zustimmungseingangsmeldestange)'''
Die Fahrstraßengruppe meldet im fstr-Stw vereinfacht über diese Schubstange, wenn alle Zustimmungen eingegangen sind. Wert: 0: Nicht alle Zustimmung eingegangen, 5000: Alle Zustimmungen eingegangen. Z.B. in Wärterstellwerken können daraufhin die Fahrwegelemente das blinken anfangen.


==Beispiele==
==Beispiele==

Version vom 21. April 2018, 14:07 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)

Prinzipien:

  • Die Schubstangen fz und fr werden ausschließlich von der Fahrstraßengruppe gesteuert. Eine Aufkopplung der Steuereinheiten anderer Elemente ist nicht notwendig.
  • fr ist momentan noch nicht implementiert. Womöglich besteht nur bei Relaisstellwerken eine Notwendigkeit dafür. Über die Verwendung bei anderen Bauformen ist noch nicht entschieden.
  • Alle Gruppen, die auf Basis der fz- oder fr-Schubstange arbeiten, wären i.d.R. Bauformübergreifend einsetzbar.
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. Anmerkung: Level steht zur Disposition, siehe Abschnitt der zu Diskutierenden Punkte unten. Ersatz: Level 2000
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, sofern die Freimeldung in die Fahrtüberwachung mit einfließt.

Schubstange "s" (Signalschubstange)

Prinzipien:

  • Bei Stellwerken mit seperatem Signalhebel wird mit der mechanischen Festlegung der Fahrstraße (fz oder fr) die Schubstange s aufgekoppelt. Die elektrische Festlegung blockiert die Schubstange s, bis die Fahrstraße elektrisch festgelegt wurde. Anschließend bewegt der Signalhebel die Schubstange s gemäß unten stehender Tabelle.
  • Bei Stellwerken mit kombiniertem Fahrstraßensignalhebel wird die Schubstange s direkt von der Fahrstraßenrelaisgruppe gestellt. Das Signal reagiert dann nur auf die Anfragen, die die Fahrstraßengruppe über die Schubstange s an das Signal sendet.
  • Signalgruppen nach 1) sind nicht mit Signalgruppen nach 2) Kompatibel.
  • Gruppen können die Fahrtstellung des Hauptsignals blockieren, indem sie auf die Schubstange s Verschlusstücke setzten. Diese Gruppen sind i.d.R. mit allen Bauformen, unabhängig ob Typ 1) oder 2) kompatibel.
1000 Handfalle durch Verschlußregister freigegeben
1500 Handfalle betätigt
2000 Hebelsperre ausgelöst
3000 Hebel Halt verlassen
4000 Hebel Fahrt erreicht
5000 Kuppelstrom (ggf. nicht bei allen Bauformen)
6000 Signal zeigt Fahrt

Schubstange "vm" (Geschwindigkeitsmeldestange)

Ein fremdes Hauptsignal setzt hier seine Höchstgeschwindigkeit in km/h, wenn es als Informationssendendes Haupsignal eingetragen ist. Die Fahrstraßengruppe frägt diesen Wert ab, und leitet ihn an das Vorsignal weiter. (Besonders vorläufiger Stand!)

Schubstange "vsigv" (Vorsignalgeschwindigkeitsstange)

Die Fahrstraßengruppe meldet über diese Schubstange die anzuzeigende Geschwindigkeit in km/h an die fahrstraßenabhänigen Vorsignale. Geschwindigkeit -1 bedeutet dunkel, also bitte die -1 vorsichitg verwenden. (Besonders vorläufiger Stand!)

Schubstange zustm (Zustimmungseingangsmeldestange)

Die Fahrstraßengruppe meldet im fstr-Stw vereinfacht über diese Schubstange, wenn alle Zustimmungen eingegangen sind. Wert: 0: Nicht alle Zustimmung eingegangen, 5000: Alle Zustimmungen eingegangen. Z.B. in Wärterstellwerken können daraufhin die Fahrwegelemente das blinken anfangen.

Beispiele

Mechanisches Stellwerk

Weiche

  • Hat ein Verschlusstück in der Schubstange fz:
    • Weichenlage richtig, nicht festgelegt: maxlevel 4000 oder 5000 Hinweis: Bisher haben alle Level max, unabhängig davon ob Festgelegt oder nicht
    • Weichenlage falsch, umstellbar: maxlevel 0
    • Weichenage falsch, nicht umstellbar: maxlevel 0

Fahrstraßenfestlegung, Anfangsfeld o.ä.

  • Haben ein Verschlusstück in der Schubstange s:
    • Feld ist rot: maxlevel 0
    • Feld ist weiß: maxlevel maximal

Befehls-/Zustimmungsempfang:

Bei Blockierung Fahrstraße:

  • Hat ein Verschlusstück in der Schubstange fz
    • Feld ist rot: maxlevel 1000 Hinweis: Bisher haben alle Level 0, da Umstellprüfung keinen Sinn macht.
    • Feld ist weiß: maxlevel maximal

Bei Blockierung Signal:

  • Hat ein Verschlusstück in der Schubstange s
    • Feld ist rot: maxlevel 1000 (Handfalle Freigegeben)
    • Feld ist weiß: maxlevel maximal

Bahnübergang

Bei Blockierung Fahrstraßenfestlegung:

  • Hat ein Verschlusstück in der Schubstange fz
    • BÜ geöffnet: maxlevel 3000
    • BÜ geschlossen: maxlevel maximal

Bei Blockierung Signalhebel:

  • Hat ein Verschlusstück in der Schubstange s
    • BÜ geöffnet: maxlevel 0
    • BÜ geschlossen: maxlevel maximal

Bei Alarm:

  • Hat ein Verschlusstück in der Schubstange ??
    • Blockiert die Fahrstraße nicht (maxlevel immer maximal), aber
    • Kontrolliert, das aktuelle Level der Schubstange
      • 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

Weiche

  • Hat ein Verschlusstück in der Schubstange fz:
    • Weiche in Endlage, Stellung richtig: maxlevel 5000 Hinweis: Bisher haben alle Level max
    • Weiche nicht in Endlage: maxlevel 3000
      • Wird die Weiche einer eingestellten Fahrstraße aufgefahren, bleibt das Level auf 4000, weil die Fahrstraße nur auf 4000 zurückfällt.
    • Weichenage falsch, umstellbar: maxlevel 0
    • Weichenage falsch, nicht umstellbar: maxlevel 0
    • Weiche anderweitig nicht befahrbar (z.B. belegt): maxlevel 0 Hinweis: Noch mal absprechen, ich würde von Maxlevel 3000 (elektrische Freiprüfung) ausgehen

Relaisstellwerk mit Weichenselbstlauf

Maxlevel Weiche

  • Hat ein Verschlusstück in der Schubstange fz:
    • Weichenlage richtig, nicht festgelegt: maxlevel 4000 oder 5000 Hinweis: Bisher haben alle Level max, unabhängig davon ob Festgelegt oder nicht
    • Weichenlage richtig, festgelegt: maxlevel 5000 Hinweis: Bisher haben alle Level max, unabhängig davon ob Festgelegt oder nicht
    • Weichenlage falsch, umstellbar: maxlevel 2000
    • Weichenage falsch, nicht umstellbar: maxlevel 0
    • Weiche anderweitig nicht befahrbar (z.B. belegt): maxlevel 0 Hinweis: Noch mal absprechen, ich würde von Maxlevel 3000 (elektrische Freiprüfung) ausgehen

Noch zu überprüfende Punkte

  • Entfernung des fz-Levels 1000 aus der Spezifikation (kann stattdessen darüber abgefragt werden, ob Level 2000 erreichbar ist, ohne Level 2000 einzustellen)
  • Auslagerung des Weichenumlaufes in zwei seperate Schubstangen:
    • Ein Verschlussregister Weichenlevel ohne Berücksichtigung eines potentiellen Umstells, das wenn möglich per Default das selbe Level hat wie das fz-Register
    • Ein Verschlussregister Weichenumlauf wird angemeldet und beim nächsten Laufkettenanstoß abgearbeitet.
    • fz-Level 2000 dementsprechend aus der Spezifikation entfernen.
  • Prüfung, ob tatsächlich eine beliebige Schubstange einen Wert > 0 hat, damit ALLE Schubstangen aufgekoppelt werden, oder ob dies nur für eine Schubstange gilt.
  • Prüfung, ob das implizite Aufkuppeln (KUPPELGRENZE) entfernt, und stattdessen die Fahrstraßengruppe/VerschlussFahrstraße/Schubstangenantrieb das auf- und abkoppeln explizit und pro Schubstange durchführen sollte.
  • Umgang mit der bisher nicht verwendetn fr-Schubstange. Evtl. eine Funktion einbauen, die die fz- und fr-Verschlussstücke automatisch auf die selben Werte setzt.
  • API: Womöglich ein Objekt pro Schubstange sinnvoll? => Gemeinsam mit API-Änderung Schnittstelle betrachten.

Schaltablauf

if (fs.pruefe("fz",2000)==2000)//prüfe ob UMlauf möglich
{
  fs.stelle("fz",5000,4000); //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.

Achtung: Um Fahrstraßenausschluss zu ermöglichen, muss die Fahrstraßenklasse entsprechend über setLevelgrenzen des Objekts VerschlussFahrstraße einen Sperrwert setzen! z.B. in Form von:

if (hebelstellung>0)
  fs.setLevelgrenzen("fz","Grundstellung",0,0);
else
  fs.setLevelgrenzen("fz","Grundstellung",0,VERSCHLUSSLEVEL_MAX);

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, string msgMinlevel, string msgMaxlevel)

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.

msgMinlevel und msgMaxlevel sind optional, und können genutzt werden, um Nachrichten an den Benutzer zu hinterlegen, die angezeigt werden, wenn ein prüfe an einem Element scheitert. Hier können z.B. Hilfetexte darüber informieren, welches Element die Bewegung eines Hebels verhindert.

Das Level wird abhängig von der Stellung, in der das Element verschlossen werden soll gesetzt. Somit kann Beispielsweise eine Weiche für die Abzweigende Stellung andere Werte haben als für die gerade Stellung.

Wichtig: Ob eine Schubstange bewegt werden kann oder nicht, wird anhand der Levelgrenzen, die die Elemente dem Verschlußregister mitgeteilt haben, bestimmt (im Falle von zurückdrücken spielen auch levelmin und das aktuelle Level einer Fahrstraße eine Rolle). 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, string& fehlernachricht)

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.

fehlernachricht ist optional und enthält eine Fehlermeldung, die dem Benutzer angezeigt werden kann. Um die Nachricht anzuzeigen, ist diese an eine Schnittstelle eines Tischfeldes zu senden: tischfeld.sendSignal("infotext",fehlernachricht);

stelle

void stelle(string typ_fahrstrasse, int levelsoll, int levelmin)

Rolle als Antrieb einer Schubstange:

Gibt den Auftrag, die Schubstange in ein Level zu bewegen. Der Verschluß der einzelnen Elemente erfolgt sofort bis zu dem jeweils nächst möglichen Level. Der Stellauftrag wird in den einzelnen Elementen zwischengespeichert und später automatisch ausgeführt, sobald die Ausführung in dem jeweiligen Element (z.B. durch Wegfall eines anderen Verschlusses) möglich ist. Dieser Vorgang kann abgebrochen werden, indem ein erneuter Aufruf mit anderem Level erfolgt.

Bei allen Elementen wird jeweils on_OBJEKTNAME_SCHUBSTANGENNAME_STELLUNG_festlegungchanged ausgeführt. Dabei wird nicht das levelsoll übergeben, sondern das Level, das bei dem konkreten Element dem levelsoll am nächsten kommt. Diese Funktion ist also mit Bedacht einzusetzen, und nicht geeignet, um Elemente über den tatsächlichen Schubstangenzustand zu informieren - den tatsächlichen Zustand erfährt nur die Fahrstraße!

Dies kann bei elektrischen Stellwerken mit Weichenselbstlauf o.ä. sinnvoll sein.

levelmin gibt dabei ein Level vor, unter das die Elemente die Schubstange nicht mehr zurückdrücken können. Mit Vorgabe levelsoll=6000 und levelmin=4000 passiert folgendes: Reduziert eine Gruppe ihr maxlevel von 6000 auf 3000 (z.B. aufgefahrene Weiche), wird die Schubstange nur nach 4000 zurückgedrückt. levelmin greift nur bei Reduzierungen des Levels! Bei fz-Schubstangen ist in der Regel maximal 4000 sinnvoll, dabei wird Programmseitig dafür gesorgt dass levelmin <= levelsoll.

Rückmeldung erfolgt über on_OBJEKTNAME_SCHUBSTANGENNAME_verschlussstangechanged(int level)

verschliesse

int verschliesse(string typ_fahrstrasse, int levelsoll, int levelmin, string& fehlernachricht)

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.

fehlernachricht ist optional und enthält eine Fehlermeldung, die dem Benutzer angezeigt werden kann. Um die Nachricht anzuzeigen, ist diese an eine Schnittstelle eines Tischfeldes zu senden: tischfeld.sendSignal("infotext",fehlernachricht);

levelmin gibt dabei ein Level vor, unter das die Elemente die Schubstange nicht mehr zurückdrücken können. Mit Vorgabe levelsoll=6000 und levelmin=4000 passiert folgendes: Reduziert eine Gruppe ihr maxlevel von 6000 auf 3000 (z.B. aufgefahrene Weiche), wird die Schubstange nur nach 4000 zurückgedrückt. levelmin greift nur bei Reduzierungen des Levels!

Ereignisse

verschlussstangechanged

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.

festlegungchanged

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.

Konstanten

VERSCHLUSSLEVEL_MAX

const int VERSCHLUSSLEVEL_MAX

Maximal möglicher Verschlusslevelwert - wenn als maxlevel gesetzt: Keine Beschränkung.

Beispiele

Weichenauffahrung

Hier muss beachtet werden, dass das Zusammenspiel aus Weichengruppe und Fahrstraßengruppe ein stimmiges Gesamtkonzept ergeben.

Elektromechanisches Stellwerk: Die Weichengruppe darf beim Auffahrvorgang das Gesamtlevel der Fahrstraße maximal auf 4000 senken, da sonst die elektrische Festlegung von per Tastenpult eingebundener anderer Weichen aufgehoben werden könnte (Mischform von Bauformen, z.B. mit DrS2 oder GSIIDR). Daher muss bei stelle das levelmin entsprechend auf 4000 gesetzt werden.

Mechanisches Stellwerk: Hier senkt ein Auffahrvorgang das maxlevel der Weiche erst, wenn diese nicht mehr festgelegt ist, da der Verschlussbalken der Weiche durch die Fahrstraßenschubstange festgelegt ist, und dieser daher erst bei Zurücklegen des Fahrstraßenhebels bewegt werden kann!