Tutorial:Erstellen neuer Relaisgruppen: Unterschied zwischen den Versionen
(Artikel ausgebaut) |
Keine Bearbeitungszusammenfassung |
||
| (3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 41: | Zeile 41: | ||
Ringleitungen sind ein Kommunikationsmechanismus, der alle Relaisgruppen betrifft, und der (zur Zeit) nicht über die Benutzeroberfläche konfiguriert wird (möglicherweise wird es zukünftig ein paar kleinere Konfigurationsmöglichkeiten geben, um verschiedene Gruppentastenbereiche zu ermöglichen). Sie dienen zur Kommunikation der zentralen Anschaltgruppe mit allen Elementen oder von allen Elementen untereinander. Exemplarisch für ihre Verwendung sind die Gruppentasten. Es besteht die Möglichkeit, Informationen Paralell einer beliebigen Gruppe an alle Gruppen zu senden, oder ausgehend von einer Anschaltgruppe Informationen Sequenziell von einer Gruppe zur nächsten zu übertragen und dabei ggf. zu bearbeiten. | Ringleitungen sind ein Kommunikationsmechanismus, der alle Relaisgruppen betrifft, und der (zur Zeit) nicht über die Benutzeroberfläche konfiguriert wird (möglicherweise wird es zukünftig ein paar kleinere Konfigurationsmöglichkeiten geben, um verschiedene Gruppentastenbereiche zu ermöglichen). Sie dienen zur Kommunikation der zentralen Anschaltgruppe mit allen Elementen oder von allen Elementen untereinander. Exemplarisch für ihre Verwendung sind die Gruppentasten. Es besteht die Möglichkeit, Informationen Paralell einer beliebigen Gruppe an alle Gruppen zu senden, oder ausgehend von einer Anschaltgruppe Informationen Sequenziell von einer Gruppe zur nächsten zu übertragen und dabei ggf. zu bearbeiten. | ||
Auch die Namen der Ringleitungen sollten genormt sein, um die Kompatiblität auch verschiedener Komponenten sicherzustellen. Für bereits verwendete Namen von Signalen siehe [[Tutorial:Namen von Ringleitungen|Tutorial: Namen von Ringleitungen]]. | |||
=== Verschlussregister === | === Verschlussregister === | ||
| Zeile 58: | Zeile 60: | ||
Details kommen desshalb später :-) | Details kommen desshalb später :-) | ||
== Freie Schaltung == | === Freie Schaltung === | ||
Hm... Ein sehr allgemeiner Begriff, da muss ich erst mal nachfragen, was damit gemeint ist. :-) | Hm... Ein sehr allgemeiner Begriff, da muss ich erst mal nachfragen, was damit gemeint ist. :-) | ||
== Ansteuerung von Außenanlagen-Komponenten == | |||
Die Komponenten in der Außenanlage sind in StellSi implentiert. Zur Ansteuerung siehe [[Tutorial:Ansteuerung von Außenanlagen-Komponenten]] | |||
[[Kategorie:Neue Bauform]] | |||
Aktuelle Version vom 17. Dezember 2016, 19:06 Uhr
Die Erstellung neuer Bauformen auf Ebene der Relaisanlage besteht in erster Linie in dem Erstellen von sogenannten Relaisgruppen. Eine Relaisgruppe ist dabei eine Funktionseinheit, die bestimmte Aufgaben übernimmt, und durch den Benutzer mit anderen Relaisgruppen zu einem vollständigen Stellwerk zusammengefügt werden kann. Näheres dazu siehe das Tutorial Stellwerkseditor.
Skripte
Um möglichst große Flexibilität zu bieten, bringt StellSi eine integrierte Skriptsprache mit. Hierbei handelt es sich um AngelScript, eine an C++ angelehnte Skriptsprache, die auch Vererbung unterstützt. Die Kommunikation erfolgt dabei über Klassen und Funktionen, die vom StellSi-Kernprogramm bereitgestellt werden.
Folgende Skriptsprachen stehen dabei zur Verfügung:
AngelScript (empfohlen)
Siehe Tutorial: Erstellen neuer Relaisgruppen - Skripte erstellen
Relaisgruppen in StellSi sollten wenn möglich in AngelScript geschreiben werden. Angelscript ist eine objektorientierte und typsichere Programmiersprache. Zur Zeit nehmen die Belange von AngelScript von allen Scriptsprachen den größten Teil an Aufmerksamkeit der Programmautoren von StellSi ein!
ECMA („Java-Script“)
ECMA-Script ist die älteste Programmiersprache in StellSi. Sie ist eher Prozedural und nicht Typsicher angelegt. Einige Features sind nicht auf dieses Sprache übertragen worden, sie ist eher als Auslaufmodell zu sehen.
HQ9+
HQ9+ ist mit Revision 1000 neu in StellSi mit aufgenommen wurden. Was man mit dieser Sprache alles machen kann, kann man auf der Wikipedia-Seite sehr gut erkennen.
Informationsaustausch zwischen Relaisgruppen
Schnittstellen
Das Konzept der Schnittstellen ist das einfachste Konzept zum Informationsaustausch zwischen Relaisgruppen. Es ist eine 1:n-Verbindung, jede Klasse kann dabei beliebig viele Verbindungsstellen und beliebig viele Empfangsstellen bereitstellen.
Die Schnittstelle wird mit folgenden Parametern konfiguriert:
- SchnittstellenID: Es stellt sozusagen die Steckdose für die Schnittstelle zur Verfügung, mit dem Unterschied, dass sich an dieser Steckdose beleibig viele Stecker einstecken können. Im Modell der 1:n-Verbindung repräsentiert sie also die 1. Man kann für eine Relaisgruppe eine beliebig große, aber feste Anzahl an SchnittstellenIDs erstellen. Jede SchnittstellenID benötigt einen Namen und eine Beschreibung, mit der man später ihren Zweck erkennen kann. Im Parametereditor in der Relaisanlage tauchen sie später nicht auf, müssen also nicht konfiguriert werden.
- Schnittstelle: Es stellt sozusagen den Stecker dar, im 1:n-Modell steht sie auf der Seite des n. Der Vergleich mit dem Stecker ist aber auch in sofern Zielführend, weil man sie im Parametereditor erst konfigurieren muss: Hier verbindet man die Schnittstelle mit einer SchnittstellenID (oder lässt die Verbindung leer). Sie eignen sich also auch besonders dort, wo man sich nur mit einer Gruppe verbinden will.
Im Script werden diese beiden Typen durch die Klasse Schnittstelle repräsentiert.
Über eine Schnittstelle können verschiedene Signale gesendet werden. Die Anzahl der Signale ist beliebig, aber fest, das heißt, zur Entwicklung muss bekannt sein, wie die Signale heißen, die über die Schnittstelle gesendet werden.
Über die freie Eingangslogik und die freie Ausgangslogik können auch einzelne Signale aus einer SchnittstellenID herausgepickt bzw. gesendet werden. Über diese freie Logik ist auch eine detailierte Konfiguration möglich, wie die Signale miteinander verschaltet werden. Das beste Beispiel, wo diese freie Logik Einsatz findet, sind die verstreuten Meldelampen eine SuH-Stellwerkes: Die Meldelampen sind zwar genormt, aber nicht einheitlich in einem fest organisierten Verbund angeordnet, in dem in jedem Stellwerk die Meldelampe an dem selben Platz sitzt. Signale, die über freie Logiken empfangen werden können bzw. die von einer freien Logik gesendet werden können, müssen im allgemeinen bei der SchnittstellenID gesondert gekennzeichnet werden.
Die Namen der Signale sollten genormt sein, um die Kompatiblität auch verschiedener Komponenten sicherzustellen. Für bereits verwendete Namen von Signalen siehe Tutorial: Namen von Signalen.
Ringleitungen
Ringleitungen sind ein Kommunikationsmechanismus, der alle Relaisgruppen betrifft, und der (zur Zeit) nicht über die Benutzeroberfläche konfiguriert wird (möglicherweise wird es zukünftig ein paar kleinere Konfigurationsmöglichkeiten geben, um verschiedene Gruppentastenbereiche zu ermöglichen). Sie dienen zur Kommunikation der zentralen Anschaltgruppe mit allen Elementen oder von allen Elementen untereinander. Exemplarisch für ihre Verwendung sind die Gruppentasten. Es besteht die Möglichkeit, Informationen Paralell einer beliebigen Gruppe an alle Gruppen zu senden, oder ausgehend von einer Anschaltgruppe Informationen Sequenziell von einer Gruppe zur nächsten zu übertragen und dabei ggf. zu bearbeiten.
Auch die Namen der Ringleitungen sollten genormt sein, um die Kompatiblität auch verschiedener Komponenten sicherzustellen. Für bereits verwendete Namen von Signalen siehe Tutorial: Namen von Ringleitungen.
Verschlussregister
Tutorial: Erstellen neuer Relaisgruppen - Verschlussregister
Das Verschlussregister ist eine Art n:m-Verbindung, bei der der Nutzer in Form einer Tablle Abhängigkeiten festlegt. Das Register selbst wird durch StellSi verwaltet. Exemplarisch für das Verschlussregister sind Stellwerksbauformen, deren Abhängigkeit (Weiche, Signal, Blockfeld etc.) in einem Verschlussplan festgelegt werden. Diese Elemente haben dann alle Einträge im Verschlussregister, während die Fahrstraßengruppe die Fahrstraßen einstellt.
Eine Objekt, dass an einem Verschlussregister beteiligt ist, kann verschiedene Optionen an einem Register freigeben oder sperren und auf das erreichen von Zuständen reagieren. Hingegen können Objekte, die das Register Steuern, bestimmte Zustände anfordern und wieder freigeben. Im Script erfolgt die Steuerung über die VerschlussFahrstrassen-Objekte und die passive Beteiligung durch die VerschlussElement-Klasse. Es ist auch hier möglich, verschiedene unabhängige Informationsklassen anzusprechen. Dies geschieht über verschiedene Schubstangen (die Konfiguration im Verschlussplan ist dabei für alle Schubstangen gleich, die Anforderung und die Reaktion hierauf kann jedoch varriieren). Die Namen dieser Schubstangen und die Verwendung der Werte sollten auch hier einheitlich sein, um auch unterschiedliche Bauformen problemarm miteinander kombinieren zu können, siehe dazu der oben verlinkte Hauptartikel.
Daneben ist es auch hier möglich, dass eine Relaisgruppe sich durch unterschiedliche VerschlussElemente an einer Fahrstraße beteiligt. Prinzipiell ist dadurch auch eine Verwendung als Fahrstraßenwahlgruppe im Spurplanstellwerk möglich, hier steht jedoch auch alternativ eine eigene Komponente im Raum.
Spurplanprinzip
Im Spurplanprinzipp wird ein graphischer Editor verwendet, um Schnittstellen in Planform miteinander zu verbinden und dadurch aus dem Schnittstellenprinzip eine 1:1-Verbindung zu machen. Exemplarisch für das Prinzip sind natürlich die Spurplanstellwere, die sich jedoch vor einer Grundlegenden Überarbeitung durch die Programmautoren befinden, die möglicherweise mit Änderungen am Programm einher gehen werden.
Details kommen desshalb später :-)
Freie Schaltung
Hm... Ein sehr allgemeiner Begriff, da muss ich erst mal nachfragen, was damit gemeint ist. :-)
Ansteuerung von Außenanlagen-Komponenten
Die Komponenten in der Außenanlage sind in StellSi implentiert. Zur Ansteuerung siehe Tutorial:Ansteuerung von Außenanlagen-Komponenten