Zitat von mebo im Beitrag #5
Hallo,
So, jetzt zum großen aber:
StellSi ist primär eine Stellwerksimulation, keine Modellbahnsoftware. Ich werde mich mal erkundigen ob sich da schon jemand anderes Gedanken gemacht hat, und dann noch mal melden. Die Grundsatzfrage ist hier halt wie man die modellbahnspezifischen Besonderheiten umsetzen kann, und wie man den Aufgabenbereich abgrenzt, aber auch wie man mit den mit Sicherheit unterschiedlichen Protokollen der verschiedenen Modellbahnhersteller umgeht.
Wie sich bisweilen ja schon dem ein oder anderen offenbart hat, arbeite ich ja seit gefühlten Jahrzehnten an einer "realistischen" SpDrS60 Simulation. Und da hab ich alles vom "Rest" getrennt, was ich sonst noch so brauche. Kurz skizziert eribt sich dabei:
Stellwerkskern: Hier wird das eigentliche Stellwerk simuliert. Es kommen "Zustände" rein, also Tasten, Achszähler und wer will auch Zustände von Weichen ( Lageüberwachung ) oder gar Lampenüberwacher.
Bedienoberfläche: Diese erzeugt die "Zustände" der Tasten und empfängt die "Zustände" für alle Leuchtmelder und akustischen Ausgaben wie Wecker und Hupe usw. Dient derzeit auch dazu die Anlage zu projektieren, also alle Gruppeninformationen, Spurkabelverbindungen, freie Schaltung, Programmfälle usw. zu erzeugen. Die erzeugten Konfigurationsdateien werden dann im Stellwerkskern oder auch in der Aussenanlagensimulation verwendet.
Aussenanlagensimulation: Hier kann im Test- und Spielbetrieb die Aussenanlage simuliert werden. Dieses Programm erzeugt also die Abfolge von Achszählerimpulsen ( daraus abgeleitet auch direkt die Freimeldung ) und ggf. die Rückmeldungen von Weichen, Lampen usw. Es können entsprechend Rangier- und Zugbewegungen simuliert werden.
Moba-Anbindung: Dieses Programm ist die alternative zur Aussenanlagensimulation. In diesem Fall werden die Zustände nicht "simuliert" sondern von einer Moba empfangen. Das "Protokoll" ist dabei das selbe wie mit der Aussenanlagensimulation. Es ist völlig egal, was dahinter passiert. Und natürlich werden die Stellbefehle für Weichen und Signale an die Moba gesendet. Dabei werden nicht Signalbegriffe, sondern einzelne Lampen ( Haupt- und Nebenfaden getrennt ) gesendet. Ist ein schneller Bus in der Moba vorhanden, können die Zustände direkt auf dem jeweiligen Signal genutzt werden. Ist die Latenz des eingesetzten Bussystems konstant, ergeben sich absolut originalgetreue Signalbildübergänge.
Automatisches Fahren- und Bremsen: Dieses Programm "liest" die Stellung von Weichen und Signalen mit und errechnet sich den Zugstandort fortlaufend aus den Freimeldeinformationen. Daraus errechnet es dann die Aufträge für die Sollgeschwindigkeit und gibt diese dann entsprechend an die Moba aus.
Im Prinzip senden und empfangen alle im "System" beteiligten Programme einfach ihre jeweiligen Zustände an einen entsprechenden Verteiler. Es könnten aber auch mehrerer Verteiler sein und es gibt auch keine Einschränkung, ob es mehrere Rechner sind oder nicht. Das ganze ist schlicht ein TCP Protokoll welches kleine Textnachrichten schickt. Das Protokoll selbst kennt keine Inhalte. Nur zum Beispiel: Eine Lampeninformation kann so aussehen: "KR,P1.HSIG,L_ROT1:2", würde bedeuten Nebenfaden der Signallampe für Hauptrot vom SIgnal P1 und der Hauptsperrsignalgruppe "HSIG" eingeschaltet für die Betriebsstelle KR.( Krefeld ).
Somit hab ich keinerlei Notwendigkeit mich in der Bedienoberfläche mit der Moba oder im Stellwerkskern mit der Zugsimulation oder im Moba-Treiber mit dem Stelltisch auseinander zu setzen. Zudem bietet dieses Verfahren eine extrem gute Testbarkeit und auch die Möglichkeiten zum Debuggen sind perfekt. Auch hatten wir ja letztens noch die Frage nach Signalbildübergängen, auch da konnte die Simu per Knopfdruck entsprechende Infos liefern.
Ich kann daher nur aus meiner Erfahrung dringend empfehlen, die Software so komplett aufzuteilen. Das reduziert die Komplexität und vor allem kann jeder auf bestehende Schnittstellen aufsetzen und die Software kann auf verschiedene Rechner verteilt werden. Die GUIs könnten auf Raspies mit 4K Monitoren laufen, das Moba-Interface kann ein kleiner ARM-Controller sein ( oder mehrere ) usw. Zudem ist es dann egal, ob man per IP, USB oder serieller Schnittstelle arbeitet, daß Protokoll ist ja vom Bus unabhängig.
Das nur als Tip, weil es einfach bei mir sehr gut funktioniert. :-)
Und nein: Ich werde erst mal keine Simu für mechanische Stellwerke schreiben und nein, meine Software ist derzeit noch für niemanden zu haben, denn einem nicht LST-Menschen wird es vermutlich unmöglich sein auch nur eine einzige Weiche zu konfigurieren :-) Ob das später mal kommt... ich weiß es nicht. Ist derzeit "mein ganz privates Monsterprojekt" :-)
Gruß
Klaus