Tutorial:Ansteuerung von Außenanlagen-Komponenten: Unterschied zwischen den Versionen

Aus StellSi-Hilfewiki
Zur Navigation springen Zur Suche springen
K (Kategorie hinzugefügt)
 
(18 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Gleisfreimeldung ==
* frei (ausgehend, Wert) Egal ob Az oder Gleisstromkeis
** Wenn ein transparenter Achszähler installiert werden soll
** az_kapazitaet (int, eingehend, Wert) (größer 0 => Achszähler)
** Ereignisse (sendSignal) eingehend
*** az_azb (bringt den Az in einen Zustand, in dem er nicht mehr zählt. Bei Bedarf nach einem Unter- oder Überlauf aufrufen.)
*** az_azg(bool auszahlpruefung)
** Ereignisse ausgehend
*** az_unterlauf
*** az_ueberlauf
*** az_auszaehlfail (wenn ein Azg-Kommando wegen Auszählsperre fehlschlägt)
== Signale ==
== Signale ==
Je nach Definition in der Bibliothek: (Derzeit konkurieren setWert und Ereignisse, das könnte sich aber ändern.)
Je nach Definition in der Bibliothek: (Derzeit konkurieren setWert und Ereignisse, das könnte sich aber ändern.)
Zeile 28: Zeile 40:


== Zugnummernmeldeanlage ==
== Zugnummernmeldeanlage ==
Ist noch komplett im Bau! Folgendes kann daher womöglich auch ein Provisorium sein:
Siehe [[Tutorial:Namen von Klassen#Zn-Anlage]]
 
* Alles im Streckenanschluss
* znanlage_leaving_vorhanden (W->0/1)
* znanlage_entering_vorhanden (W->0/1)
* znanlage_leaving_vormelden (E->int zugnummer)
* znanlage_leaving_vormeldung_ruecknehmen (E->int zugnummer)
* znanlage_entering_vormelden (<-E int zugnummer)


== Streckenblock ==
== Streckenblock ==
Das ist noch komplett provisorisch, und läuft auf Gefahr, jederzeit zu fliegen:
Das ist inzwischen für endgültig erklärt, aber derzeit noch schlecht dokumentiert:


* Ereignisse vom Script an den Streckenanschluss
=== Felderblock und Erlaubnis ===
** Das hier weist den Anschluss an, den Versuch durchzuführen, entsprechende Abgaben zu tätigen.
* Felderblock und Erlaubnis arbeiten nach dem Prinzip, dass StellSi das "Zentrale Relais" oder das Blockfeld verwaltet. StellSi kann (insb. im Netzwerkspiel) auch "plötzlich" das Blockfeld ändern, die Scripte müssen damit umgehen können und eine Anfrage zum Ändern des Zentralen Relais kann auch abgelehnt werden!
** Das Script darf sich nicht darauf verlassen, es kann (z.B. bei Netzwerkverbidnungsaufbau) auch unerwartet passieren oder ignoriert werden.
* Zentrale Relais: Werte vom Streckenanschluss an das Script:
** streckenblock_erlaubnisempfang
*** 0, wenn Erlaubnisfeld im eigenen Bf rot wird, 1, wenn Erlaubnisfeld weiß wird
** streckenblock_vorblockempfang
*** 1, wenn Anfangsfeld im eigenen Bf rot wird, 0, wenn Anfangsfeld weiß wird
** streckenblock_vorblockabgabe
*** 1, wenn Endfeld im eigenen Bf rot wird, 0, wenn Endfeld weiß wird
* Unverbindliche Anfragen das Zentrale Relais zu ändern: Ereignisse vom Script an den Streckenanschluss
** streckenblock_erlaubnisabgabe
** streckenblock_erlaubnisabgabe
** streckenblock_erlaubnisholen
** streckenblock_vorblock
** streckenblock_vorblock
** streckenblock_rueckblock
** streckenblock_rueckblock
=== Ausfahrsperrmelder / Selbstblock ===
* Der Nachbar ermittelt anhand der Gleisfreimeldung und der Haltmeldung des folgenden Signals, ob er einen Zug schicken darf
* Die KI-Gesteuerte Erlaubnisabgabe wird gesperrt, wenn zwar der nachfolgende Block frei ist, aber nicht die komplette Strecke zum Nachbarn.
* Werte vom Script an den Streckenanschluss
* Werte vom Script an den Streckenanschluss
** streckenblock_aspm_gleis_frei
** streckenblock_aspm_gleis_frei
** streckenblock_aspm_signal_halt
** streckenblock_aspm_signal_halt
* Werte vom Streckenanschluss an das Script
** streckenblock_aspm_gleis_erlaubnisfrei
** Die Werte können sich auch unerwartet ändern (z.B. bei Netzwerkverbidnungsaufbau). Diese Werte sollten maßgeblich sein, nicht die Bedienungen der Anlage!
* Wert vom Streckenanschluss an das Script
** streckenblock_erlaubnisempfang
*** 0, wenn Erlaubnisfeld im eigenen Bf rot wird, 1, wenn Erlaubnisfeld weiß wird
** streckenblock_vorblockempfang
*** 1, wenn Anfangsfeld im eigenen Bf rot wird, 0, wenn Anfangsfeld weiß wird
** streckenblock_vorblockabgabe
*** 1, wenn Endfeld im eigenen Bf rot wird, 0, wenn Endfeld weiß wird
** streckenblock_aspmempfang (Sollte i.A. nicht zu gebrauchen sein, da AspM des NachbarStw im eigenen Stw eh nicht angezeigt werden, und Netzwerkmäßig auch das passende Gegensignal fehlt. Aber zu Debugging-Zwecken habe ich es mal gelassen.)
** streckenblock_aspmempfang (Sollte i.A. nicht zu gebrauchen sein, da AspM des NachbarStw im eigenen Stw eh nicht angezeigt werden, und Netzwerkmäßig auch das passende Gegensignal fehlt. Aber zu Debugging-Zwecken habe ich es mal gelassen.)
=== Ausfahrmeldung ===
* Der Nachbar meldet, ob seine Ausfahrt steht. Keine weiteren Effekte.
* Wert vom Streckenanschluss an das Script
** streckenblock_ausfahrmeldung
* Wert vom Script an den Streckenanschluss
** streckenblock_ausfahrmeldung
=== Blockmodule mit Teilfahrstraßencharakter ===
Für die unterschiedlichen Zwecke gibt es unterschiedliche Präfixe für die Signale, die weiter unten aufgeführt sind:
{|class="wikitable"
! Präfix !! Verwendung !! Interaktion per Telefon !! Bemerkungen
|-
| streckenblock_teil_zstr ||
Zugfahrten von/zum Nachbar mit:
* Teilfahrstraßen (Bahnhofsblock)
* vmtl. Felderblock A
| möglich ||
|-
| streckenblock_teil_zfnb, _zfst, _zfbf
| Zugfahren von/zum Nachbar mit Zielfestlegemelder
| nein || Die Zuständigkeitsgrenze der Stellwerke liegt in der Regel nicht an einem Streckenanschluss. Daher werden drei Präfixe eingesetzt:
* _zfnb für die Schnittstelle an der Außenanlagengrenze
* _zfst für die Schnittstelle an der Stellwerksgrenze, auf der Seite des Nachbarbahnhofs
* _zfbf für die Schnittstelle an der Stellwerksgrenze, auf der Seite des eigenen Bahnhofs
Ist kein Nachbar verbunden, werden die Signale von StellSi zwischen _zfst und _zfbf durchgeleitet. Die eigene Relaisanlage muss sich dann selbst mit um die folgenden (eigentlich fremden) Blockfahrstraßen kümmern und kommuniziert mit dem Präfix _zfnb mit der Außenanlagengrenze.
Ist ein Nachbar verbunden, werden die Signale von StellSi von _zfbf zum Nachbarn durchgeleitet und kommen dort ebenfalls als _zfbf an.
|-
| streckenblock_teil_rstr || Rangierfahrten von/zum Nachbar || möglich || Vorrüstung
|-
| streckenblock_teil_flan || Fahrten, die NICHT von/zum Nachbarn führen (i. d. R. Flankenschutz)
| möglich ||
|}
Es gibt folgende Signale, die jeweils den oben genannten Präfix je nach Einsatzfall erhalten:
{|class="wikitable"
! Signal !! Typ !! Senderichtung !! Bedeutung !! Bemerkungen KI Reaktion, HI Senden !! Bemerkungen KI Sendet, HI Reaktion
|-
| _anforderung || Wert || Fahrtrichtung || Fordert die Einstellung des hinteren Fahrstraßenteils an.
| Die KI stellt beim Empfangen des Signals mit Wert 1 eine Fahrstraße ein und sendet _vorbereitung und _ueberwachung.
| Die KI sendet diesen Wert wenn ein Zug kommt.
|-
| _vorbereitung || Wert || Gegenrichtung || Meldet, dass der hintere Fahrstraßenteil bereit zum Festlegen ist.
| Muss für Fahrten aus Richtung Streckenanschluss stets mit auf 1 gesetzt werden, damit die KI einen Zug schicken kann.
| Die KI sendet _vorbereitung und _ueberwachung als Reaktion auf _anforderung oder _erwartet.
Das Rücksetzen auf Wert 0 löst bei elektromechanischen Stellwerken die Rückstellung der Bf Wsp aus.
|-
| _erwartet || Wert || Fahrtrichtung || Fordert die Festlegung des hinteren Fahrstraßenteils an.
| Die KI reagiert auf dieses Signal wie auf _anforderung.
| Die KI sendet diesen Wert wenn _vorbereitung anliegt und ein Zug kommt.
|-
| _ueberwachung || Wert || Gegenrichtung || Meldet, dass der hintere Fahrstraßenteil überwacht ist.
| Muss für Fahrten aus Richtung Streckenanschluss stets auf 1 gesetzt werden, damit die KI einen Zug schicken kann.
| Die KI sendet _vorbereitung und _ueberwachung als Reaktion auf _anforderung oder _erwartet.
Ein Rücksetzen auf 0 muss ggf. zum Haltfall des Signals führen!
|-
| _aufloesung || Ereignis || Gegenrichtung || Meldet, dass der vordere Fahrstraßenteil auflösen kann.
| Muss für Fahrten aus Richtung Streckenanschluss gesendet werden, nachdem der Zug eingefahren ist.
| Die KI sendet als Reaktion auf dieses Ereignis _rueckgabe.
|-
| _rueckgabe || Ereignis || Fahrtrichtung || Meldet, dass der hintere Fahrstraßenteil auflösen kann.
| Die KI sendet dieses Ereignis als Reaktion auf _aufloesung.
Muss für Fahrten in Richtung Streckenanschluss gesendet werden, nachdem der Zug ausgefahren und der vordere Fahrstraßenteil aufgelöst ist.
| Für die Auflösung des hinteren Fahrstraßenteils können im anderen Stellwerk natürlich noch weitere Bedingungen erforderlich sein.
|}
Nicht benötigte eingehende Signale können ignoriert werden, sofern sie nicht für irgendetwas nötig sind.
Außerdem gibt es den Wert snt: Während sich snt auf 1 befindet, wird das Schicken von Zügen bei allen Blockmodulen verhindert. Die KI sendet das Signal nie, es wird aber über das Netzwerk übertragen. Entsprechend sollte beim Empfangen von snt mit Wert 1 das Signal auf Halt fallen. (Es ist zu klären, ob snt wirklich notwendig ist, oder ob ein Einbrechen von _ueberwachung ausreichend ist.)


== Erweitertes Streckenfernmeldekabel für Fernsteuerung ==
== Erweitertes Streckenfernmeldekabel für Fernsteuerung ==
* meta_connections: Wert, ausgende: Anzahl an Busankoppelnden Stellen. Muss nicht zwingend sein, dass auch alle Daten senden.
* meta_connections: Wert, ausgehend: Anzahl an Busankoppelnden Stellen. Muss nicht zwingend sein, dass auch alle Daten senden.
* fsdata_*: Ereignis, ein- und ausgehend: Wird als Ereignis an die Gegenstelle gesendet. Dabei werden alle
* fsdata_*: Ereignis, ein- und ausgehend: Wird als Ereignis an die Gegenstelle gesendet. Dabei werden alle
* backinfo_*: Wert, ein- und ausgehend: so gesetzt, wie sie beim Sender des Ereignisses sind. Die Backinfos sollten nicht über die on_-Methoden abgefragt werden, weil sie sich wirklich nur ändern, wenn ein fsdata_ gesendet wird. Vielmehr sollten sie über getRecent-Methoden abgefragt werden, wenn ein fsdata_ ankommt. backinfo_ sind dazu gedacht, wenn ein Paket übertragen wird, das aus mehr als als einem Symbol besteht. Alle weiteren Symbole können über backinfos gesetzt werden. Bitte beachtet beim fs-Kabel auch immer, das es mehr als 2 Ankoppler geben kann. In der Praxis sind Fernsteuerkabel häufiger mal mit mehreren Endstellen belegt. Es ist garanitert, dass die Backinfos zum aktuellen fsdata passen, aber es ist nicht garantiert, dass zwei hintereinander gesendete fsdata zum selben sender gehören. Dies muss durch geeignete Techniken detektiert werden.
* backinfo_*: Wert, ein- und ausgehend: so gesetzt, wie sie beim Sender des Ereignisses sind. Die Backinfos sollten nicht über die on_-Methoden abgefragt werden, weil sie sich wirklich nur ändern, wenn ein fsdata_ gesendet wird. Vielmehr sollten sie über getRecent-Methoden abgefragt werden, wenn ein fsdata_ ankommt. backinfo_ sind dazu gedacht, wenn ein Paket übertragen wird, das aus mehr als als einem Symbol besteht. Alle weiteren Symbole können über backinfos gesetzt werden. Bitte beachtet beim fs-Kabel auch immer, das es mehr als 2 Ankoppler geben kann. In der Praxis sind Fernsteuerkabel häufiger mal mit mehreren Endstellen belegt. Es ist garanitert, dass die Backinfos zum aktuellen fsdata passen, aber es ist nicht garantiert, dass zwei hintereinander gesendete fsdata zum selben sender gehören. Dies muss durch geeignete Techniken detektiert werden.
* Es wird vermutlich mittelfristig noch weitere Techniken geben, mit denen man mit diese Kollisionen umgehen kann. Ggf. mit mir absprechen, was es da für sinnvolle alternativen geben könnte.
* token_*: Technik zum vermeiden von Datenkollisionen: Das angegebene Token wird Kabelweit exklusiv für sich reserviert. Mit setWert 1 wird die Reservierung angefordert, durch Rückgabe von Wert 1 der Erfolg der Reservierung bestätigt und mit 0 wieder gelöscht. Die anderen Anschlüsse des Kabels wirken bei dieser Funktionalität zwar mit, jedoch nur Programmintern und angeschlossene Scripte bekommen nur vom eventuellen eigenen Reservierungsversuch etwas mit.
* Falls es Bedarf gibt kann ich noch weitere Techniken implementieren, mit denen man mit Kollisionen verhindern kann. Ggf. mit mir absprechen, welche Möglichkeiten noch sinnvoll sind.
* Es ist geplant, dass die fs Zugnummernmeldeanlagen und Telefonie weiterleiten können wird.
* Es ist geplant, dass die fs Zugnummernmeldeanlagen und Telefonie weiterleiten können wird.


[[Kategorie:Entwicklernotizen]]
== Exkurs: Ansteuern der Eingabezeile des Stelltisches (Tec-Demo) ==
(Exkurs deshalb, weil das eigentlich einen eigenen Artikel für "Stelltisch" benötigt.)
 
* Bei Signalnamen "Blub":
* Signal Blub_request als Ereignis von der Eingabezeile an die Relaisanlage: Nutzer hat den Text des Parameters eingegeben. Es wird kein Blub angenommen, bis ein _confirm kommt.
* Signal Blub_confirm als Ereignis von der Relaisanlage an die Eingabezeile: Bestätigt den Empfang des eingegebenen Textes.
* Wert Blub von der Relaisanlage an die Eingabezeile: Setzt den angegebenen Wert, sofern kein confirm aussteht.
 
== Exkurs: Ansteuern der Wecker des Stelltisches ==
 
* Wert an den Wecker: Bei Wert > 1: Schaltet den Wecker dauerhaft (also geloopt) an, bei Wert 0: Schaltet den Wecker sofort aus.
* Ereignis an den Wecker mit Zahl größer 0: Spielt den Sound n mal ab. Wenn parallel ein weiteres Ereignis kommt, wird es ignoriert.
* Ereignis an den Wecker mit Zahl kleiner 0: Spielt den Sound n mal ab. Wenn parallel ein weiteres Ereignis kommt, wird der Ton parallel abgespielt.
* Hinweis: Später soll die Wiederholungszahl hochgesetzt werden können.
 
 
[[Kategorie:Neue Bauform]]

Aktuelle Version vom 7. Juni 2024, 18:34 Uhr

Gleisfreimeldung

  • frei (ausgehend, Wert) Egal ob Az oder Gleisstromkeis
    • Wenn ein transparenter Achszähler installiert werden soll
    • az_kapazitaet (int, eingehend, Wert) (größer 0 => Achszähler)
    • Ereignisse (sendSignal) eingehend
      • az_azb (bringt den Az in einen Zustand, in dem er nicht mehr zählt. Bei Bedarf nach einem Unter- oder Überlauf aufrufen.)
      • az_azg(bool auszahlpruefung)
    • Ereignisse ausgehend
      • az_unterlauf
      • az_ueberlauf
      • az_auszaehlfail (wenn ein Azg-Kommando wegen Auszählsperre fehlschlägt)

Signale

Je nach Definition in der Bibliothek: (Derzeit konkurieren setWert und Ereignisse, das könnte sich aber ändern.)

  • ...

Spezialwerte: (setWert, Ansteuerung über Ereignisse erzeugt eine Fehlermeldung.)

  • net_signalhalt an einen beliebigen Signalschirm eines Signals
    • Es wird ermittelt, welcher Schirm von allen Signalen mit dem selben Netzwerknamen den größten Betrag von net_signalhalt hat.
    • Ist dieser Wert positiv, wird an das Nachbarstellwerk gemeldet, dass das Signal sicher in Haltstellung ist.
    • Ist er negativ, 0 oder gibt es wiedersprüchliche Informationen mit dem selben Gewicht wird das Signal als nicht sicher in der Haltstellung gemeldet. (z.B. weil es Fahrt zeigt)
  • net_signalhalt von einem beliebigen Signalschim eines Signals oder vom Streckenanschluss an das Script
    • 0: Es ist kein Nachbar verbunden, in denen dieses Signal als SlavePrefered markiert ist.
    • -1: Ein Nachbar beansprucht die Befehlsgewalt über dieses Signal und hat dieses Signal nicht sicher in Haltstellung. (z.B. weil es Fahrt zeigt)
    • 1: Ein Nachbar beansprucht die Befehlsgewalt über dieses Signal und hat es sicher in Haltstellung.

Weichen und Riegel

Weichen werden über setWert angesteuert. (Ansteuerung über Ereignisse erzeugt eine Fehlermeldung.)

  • Die Werte setMove und setLock von der Relaisanlage an den Antrieb/Riegel steuern, ob sich der Antrieb bzw. der Riegel in die angegebene Richtung bewegen soll
    • Gültige Richtungsangaben: WEICHEN_DIRECTION_LEFT (Weiche wird nach Links umgestellt), WEICHEN_DIRECTION_RIGHT, WEICHEN_DIRECTION_IDLE (Stellstrom wird abgeschalten), RIEGEL_STATE_UNLOCKED, RIEGEL_STATE_LOCKED, RIEGEL_STATE_IDLE
  • Der Antrieb gibt folgenden Fehlercode als Ereignis zurück, wenn das Umstellen z.B. aufgrund von Riegelung fehlschlägt: moveFailed
  • Der Riegel gibt folgenden Fehlercode als Ereignis zurück, wenn er am Riegelungspunkt feststellt, dass die Weiche falsch steht: lockFailed
  • Antrieb und Riegel geben über folgenden setWert an die Relaisanlage zurück, in welche Position sich die Zunge bzw. der Riegel befinden: directionChanged und lockChanged.
    • Gültige Rückgabewerte siehe setMove
    • Außerdem kann WEICHEN_DIRECTION_NOTRESPONDING bzw. RIEGEL_STATE_NOTRESPONDING zurückgegeben werden (Sonderzustand „Keine Rückmeldung“ je nach Antriebskonfiguration)
    • Für das Verhalten bei Stellstromabschaltung und Antriebstrennung siehe die zugehörigen Konfigurationsmöglichkeiten in der stwb.
    • Beispiel: Wenn man von der Weiche directionChanged WEICHEN_DIRECTION_LEFT bekommt ist sie in linker Endlage, wenn man WEICHEN_DIRECTION_RIGHT bekommt in rechter Endlage und in allen anderen Fällen ist die Weiche nicht in Endlage, kein Antrieb angebunden (je nach Konfiguration) oder der Antrieb kann aus sonstigen Gründen nicht von einer Endlage ausgehen. Ein Auswertung von moveFailed ist nur erforderlich, wenn eine direkte Rückmeldung vom Antrieb erfolgt, etwa bei mechanischen Weichenantrieben. Bei elektrischen Weichenatrieben reicht es, directionChanged auszuwerten. Beachten Sie, dass selbst bei mechanischen Stellwerken in der Außenanlage die Zeit angehalten seien kann. Wenn während dieser Pause der Nutzer erneut einen Umstellbefehl gibt, sollte das Verhalten trotzdem irgendwie definiert sein.
  • Der Antrieb und der Riegel können die Pluslage (o.Ä.) durch eine Beschriftung markieren. Dazu stehen die setWerte (string) setLeftDesc, setRightDesc (Antrieb) bzw. setMyDirectionDesc und setOtherDirectionDesc (Riegel) zur Verfügung.

Zugnummernmeldeanlage

Siehe Tutorial:Namen von Klassen#Zn-Anlage

Streckenblock

Das ist inzwischen für endgültig erklärt, aber derzeit noch schlecht dokumentiert:

Felderblock und Erlaubnis

  • Felderblock und Erlaubnis arbeiten nach dem Prinzip, dass StellSi das "Zentrale Relais" oder das Blockfeld verwaltet. StellSi kann (insb. im Netzwerkspiel) auch "plötzlich" das Blockfeld ändern, die Scripte müssen damit umgehen können und eine Anfrage zum Ändern des Zentralen Relais kann auch abgelehnt werden!
  • Zentrale Relais: Werte vom Streckenanschluss an das Script:
    • streckenblock_erlaubnisempfang
      • 0, wenn Erlaubnisfeld im eigenen Bf rot wird, 1, wenn Erlaubnisfeld weiß wird
    • streckenblock_vorblockempfang
      • 1, wenn Anfangsfeld im eigenen Bf rot wird, 0, wenn Anfangsfeld weiß wird
    • streckenblock_vorblockabgabe
      • 1, wenn Endfeld im eigenen Bf rot wird, 0, wenn Endfeld weiß wird
  • Unverbindliche Anfragen das Zentrale Relais zu ändern: Ereignisse vom Script an den Streckenanschluss
    • streckenblock_erlaubnisabgabe
    • streckenblock_erlaubnisholen
    • streckenblock_vorblock
    • streckenblock_rueckblock

Ausfahrsperrmelder / Selbstblock

  • Der Nachbar ermittelt anhand der Gleisfreimeldung und der Haltmeldung des folgenden Signals, ob er einen Zug schicken darf
  • Die KI-Gesteuerte Erlaubnisabgabe wird gesperrt, wenn zwar der nachfolgende Block frei ist, aber nicht die komplette Strecke zum Nachbarn.
  • Werte vom Script an den Streckenanschluss
    • streckenblock_aspm_gleis_frei
    • streckenblock_aspm_signal_halt
    • streckenblock_aspm_gleis_erlaubnisfrei
  • Wert vom Streckenanschluss an das Script
    • streckenblock_aspmempfang (Sollte i.A. nicht zu gebrauchen sein, da AspM des NachbarStw im eigenen Stw eh nicht angezeigt werden, und Netzwerkmäßig auch das passende Gegensignal fehlt. Aber zu Debugging-Zwecken habe ich es mal gelassen.)

Ausfahrmeldung

  • Der Nachbar meldet, ob seine Ausfahrt steht. Keine weiteren Effekte.
  • Wert vom Streckenanschluss an das Script
    • streckenblock_ausfahrmeldung
  • Wert vom Script an den Streckenanschluss
    • streckenblock_ausfahrmeldung

Blockmodule mit Teilfahrstraßencharakter

Für die unterschiedlichen Zwecke gibt es unterschiedliche Präfixe für die Signale, die weiter unten aufgeführt sind:

Präfix Verwendung Interaktion per Telefon Bemerkungen
streckenblock_teil_zstr

Zugfahrten von/zum Nachbar mit:

  • Teilfahrstraßen (Bahnhofsblock)
  • vmtl. Felderblock A
möglich
streckenblock_teil_zfnb, _zfst, _zfbf Zugfahren von/zum Nachbar mit Zielfestlegemelder nein Die Zuständigkeitsgrenze der Stellwerke liegt in der Regel nicht an einem Streckenanschluss. Daher werden drei Präfixe eingesetzt:
  • _zfnb für die Schnittstelle an der Außenanlagengrenze
  • _zfst für die Schnittstelle an der Stellwerksgrenze, auf der Seite des Nachbarbahnhofs
  • _zfbf für die Schnittstelle an der Stellwerksgrenze, auf der Seite des eigenen Bahnhofs

Ist kein Nachbar verbunden, werden die Signale von StellSi zwischen _zfst und _zfbf durchgeleitet. Die eigene Relaisanlage muss sich dann selbst mit um die folgenden (eigentlich fremden) Blockfahrstraßen kümmern und kommuniziert mit dem Präfix _zfnb mit der Außenanlagengrenze.

Ist ein Nachbar verbunden, werden die Signale von StellSi von _zfbf zum Nachbarn durchgeleitet und kommen dort ebenfalls als _zfbf an.

streckenblock_teil_rstr Rangierfahrten von/zum Nachbar möglich Vorrüstung
streckenblock_teil_flan Fahrten, die NICHT von/zum Nachbarn führen (i. d. R. Flankenschutz) möglich

Es gibt folgende Signale, die jeweils den oben genannten Präfix je nach Einsatzfall erhalten:

Signal Typ Senderichtung Bedeutung Bemerkungen KI Reaktion, HI Senden Bemerkungen KI Sendet, HI Reaktion
_anforderung Wert Fahrtrichtung Fordert die Einstellung des hinteren Fahrstraßenteils an. Die KI stellt beim Empfangen des Signals mit Wert 1 eine Fahrstraße ein und sendet _vorbereitung und _ueberwachung. Die KI sendet diesen Wert wenn ein Zug kommt.
_vorbereitung Wert Gegenrichtung Meldet, dass der hintere Fahrstraßenteil bereit zum Festlegen ist. Muss für Fahrten aus Richtung Streckenanschluss stets mit auf 1 gesetzt werden, damit die KI einen Zug schicken kann. Die KI sendet _vorbereitung und _ueberwachung als Reaktion auf _anforderung oder _erwartet.

Das Rücksetzen auf Wert 0 löst bei elektromechanischen Stellwerken die Rückstellung der Bf Wsp aus.

_erwartet Wert Fahrtrichtung Fordert die Festlegung des hinteren Fahrstraßenteils an. Die KI reagiert auf dieses Signal wie auf _anforderung. Die KI sendet diesen Wert wenn _vorbereitung anliegt und ein Zug kommt.
_ueberwachung Wert Gegenrichtung Meldet, dass der hintere Fahrstraßenteil überwacht ist. Muss für Fahrten aus Richtung Streckenanschluss stets auf 1 gesetzt werden, damit die KI einen Zug schicken kann. Die KI sendet _vorbereitung und _ueberwachung als Reaktion auf _anforderung oder _erwartet.

Ein Rücksetzen auf 0 muss ggf. zum Haltfall des Signals führen!

_aufloesung Ereignis Gegenrichtung Meldet, dass der vordere Fahrstraßenteil auflösen kann. Muss für Fahrten aus Richtung Streckenanschluss gesendet werden, nachdem der Zug eingefahren ist. Die KI sendet als Reaktion auf dieses Ereignis _rueckgabe.
_rueckgabe Ereignis Fahrtrichtung Meldet, dass der hintere Fahrstraßenteil auflösen kann. Die KI sendet dieses Ereignis als Reaktion auf _aufloesung.

Muss für Fahrten in Richtung Streckenanschluss gesendet werden, nachdem der Zug ausgefahren und der vordere Fahrstraßenteil aufgelöst ist.

Für die Auflösung des hinteren Fahrstraßenteils können im anderen Stellwerk natürlich noch weitere Bedingungen erforderlich sein.

Nicht benötigte eingehende Signale können ignoriert werden, sofern sie nicht für irgendetwas nötig sind.

Außerdem gibt es den Wert snt: Während sich snt auf 1 befindet, wird das Schicken von Zügen bei allen Blockmodulen verhindert. Die KI sendet das Signal nie, es wird aber über das Netzwerk übertragen. Entsprechend sollte beim Empfangen von snt mit Wert 1 das Signal auf Halt fallen. (Es ist zu klären, ob snt wirklich notwendig ist, oder ob ein Einbrechen von _ueberwachung ausreichend ist.)

Erweitertes Streckenfernmeldekabel für Fernsteuerung

  • meta_connections: Wert, ausgehend: Anzahl an Busankoppelnden Stellen. Muss nicht zwingend sein, dass auch alle Daten senden.
  • fsdata_*: Ereignis, ein- und ausgehend: Wird als Ereignis an die Gegenstelle gesendet. Dabei werden alle
  • backinfo_*: Wert, ein- und ausgehend: so gesetzt, wie sie beim Sender des Ereignisses sind. Die Backinfos sollten nicht über die on_-Methoden abgefragt werden, weil sie sich wirklich nur ändern, wenn ein fsdata_ gesendet wird. Vielmehr sollten sie über getRecent-Methoden abgefragt werden, wenn ein fsdata_ ankommt. backinfo_ sind dazu gedacht, wenn ein Paket übertragen wird, das aus mehr als als einem Symbol besteht. Alle weiteren Symbole können über backinfos gesetzt werden. Bitte beachtet beim fs-Kabel auch immer, das es mehr als 2 Ankoppler geben kann. In der Praxis sind Fernsteuerkabel häufiger mal mit mehreren Endstellen belegt. Es ist garanitert, dass die Backinfos zum aktuellen fsdata passen, aber es ist nicht garantiert, dass zwei hintereinander gesendete fsdata zum selben sender gehören. Dies muss durch geeignete Techniken detektiert werden.
  • token_*: Technik zum vermeiden von Datenkollisionen: Das angegebene Token wird Kabelweit exklusiv für sich reserviert. Mit setWert 1 wird die Reservierung angefordert, durch Rückgabe von Wert 1 der Erfolg der Reservierung bestätigt und mit 0 wieder gelöscht. Die anderen Anschlüsse des Kabels wirken bei dieser Funktionalität zwar mit, jedoch nur Programmintern und angeschlossene Scripte bekommen nur vom eventuellen eigenen Reservierungsversuch etwas mit.
  • Falls es Bedarf gibt kann ich noch weitere Techniken implementieren, mit denen man mit Kollisionen verhindern kann. Ggf. mit mir absprechen, welche Möglichkeiten noch sinnvoll sind.
  • Es ist geplant, dass die fs Zugnummernmeldeanlagen und Telefonie weiterleiten können wird.

Exkurs: Ansteuern der Eingabezeile des Stelltisches (Tec-Demo)

(Exkurs deshalb, weil das eigentlich einen eigenen Artikel für "Stelltisch" benötigt.)

  • Bei Signalnamen "Blub":
  • Signal Blub_request als Ereignis von der Eingabezeile an die Relaisanlage: Nutzer hat den Text des Parameters eingegeben. Es wird kein Blub angenommen, bis ein _confirm kommt.
  • Signal Blub_confirm als Ereignis von der Relaisanlage an die Eingabezeile: Bestätigt den Empfang des eingegebenen Textes.
  • Wert Blub von der Relaisanlage an die Eingabezeile: Setzt den angegebenen Wert, sofern kein confirm aussteht.

Exkurs: Ansteuern der Wecker des Stelltisches

  • Wert an den Wecker: Bei Wert > 1: Schaltet den Wecker dauerhaft (also geloopt) an, bei Wert 0: Schaltet den Wecker sofort aus.
  • Ereignis an den Wecker mit Zahl größer 0: Spielt den Sound n mal ab. Wenn parallel ein weiteres Ereignis kommt, wird es ignoriert.
  • Ereignis an den Wecker mit Zahl kleiner 0: Spielt den Sound n mal ab. Wenn parallel ein weiteres Ereignis kommt, wird der Ton parallel abgespielt.
  • Hinweis: Später soll die Wiederholungszahl hochgesetzt werden können.