Stellwerk-Projekt

Hier geht es um die Entwicklung eines zukünftigen Stellwerks mit Zusi-Anschluss.
Nachricht
Autor
stuvar
Beiträge: 1409
Registriert: 22.07.2002 22:38:41
Wohnort: Leipzig

#61 Beitrag von stuvar »

Einfahrt in Stumpfgleise (Ost) - 40 km/h , (West) - 30 km/h

Fahrdienstleiter
Beiträge: 43
Registriert: 22.05.2005 15:15:58
Aktuelle Projekte: Stellwerksimulator
Wohnort: Weil am Rhein

#62 Beitrag von Fahrdienstleiter »

@all
Wir sind uns doch aber hoffentlich wenigstens darüber einig, dass beim Zusammenwirken von ZuSi und Stellwerk, es einen Mitspieler im Netzwerk gibt, der spielt das Stellwerk und der andere fährt einen Zug.
Das ist nämlich schon seit längerem mein Traum... Ideal wäre dann noch, wenn viele übers Internet mitspielen könnten, sodass es keine KI mehr geben müsste. Stellt euch vor, 10 Leute fahren 10 Züge, 3 bedienen 3 verschiedene Stellwerke in dem Bereich, in dem die Leute fahren! :tup

Jetzt sagt doch mal was dazu, mensch :rolleyes:

@Christopher Spies
Nun, Einfahrsignale können den Signalbegriff "Rangierfahrt" in der Regel nicht anzeigen. Insofern habe ich mir vorgestellt, dass die Signale so intelligent sind, dass wenn man ihnen die Geschwindigkeit "30km/h" gibt und es ist ein Ausfahrsignel (oder Signal im Bahnhöfli), dann zeigt es den Rangierbegriff an. Ist es ein Einfahrsignal, zeigt es "Einfahrt mit 30km/h" an...

Logisch :tup

Christopher Spies
Beiträge: 775
Registriert: 26.01.2005 16:10:18
Wohnort: Darmstadt

#63 Beitrag von Christopher Spies »

Fahrdienstleiter hat geschrieben:Wir sind uns doch aber hoffentlich wenigstens darüber einig, dass beim Zusammenwirken von ZuSi und Stellwerk, es einen Mitspieler im Netzwerk gibt, der spielt das Stellwerk und der andere fährt einen Zug.
Das ist nämlich schon seit längerem mein Traum... Ideal wäre dann noch, wenn viele übers Internet mitspielen könnten, sodass es keine KI mehr geben müsste. Stellt euch vor, 10 Leute fahren 10 Züge, 3 bedienen 3 verschiedene Stellwerke in dem Bereich, in dem die Leute fahren! :tup
Ich denke, der weitaus größte Teil der Community teilt diese Vision. :]

Es muss aber immer noch einen Single-Player-Mode geben, denn nicht jeder hat 'ne Flatrate.
Fahrdienstleiter hat geschrieben:@Christopher Spies
Nun, Einfahrsignale können den Signalbegriff "Rangierfahrt" in der Regel nicht anzeigen. Insofern habe ich mir vorgestellt, dass die Signale so intelligent sind, dass wenn man ihnen die Geschwindigkeit "30km/h" gibt und es ist ein Ausfahrsignel (oder Signal im Bahnhöfli), dann zeigt es den Rangierbegriff an. Ist es ein Einfahrsignal, zeigt es "Einfahrt mit 30km/h" an...

Logisch :tup
Und was ist mit Zwischensignalen? Diese könnten sowohl einen Rangierbegriff als auch "20km/h" oder "30km/h" anzeigen!

Ich weiss, ich suche ein Haar in der Suppe... :P

- Christopher

Benutzeravatar
Roland Ziegler
Beiträge: 5508
Registriert: 04.11.2001 22:09:26
Wohnort: 32U 0294406 5629020
Kontaktdaten:

#64 Beitrag von Roland Ziegler »

Fahrdienstleiter hat geschrieben:Jetzt sagt doch mal was dazu, mensch
Dazu haben in diesem Unterforum diverse Leute schon ziemlich viel gesagt, man müsste es nur mal lesen.

Fahrdienstleiter
Beiträge: 43
Registriert: 22.05.2005 15:15:58
Aktuelle Projekte: Stellwerksimulator
Wohnort: Weil am Rhein

#65 Beitrag von Fahrdienstleiter »

Christopher Spies hat geschrieben: Ich denke, der weitaus größte Teil der Community teilt diese Vision. :]

Es muss aber immer noch einen Single-Player-Mode geben, denn nicht jeder hat 'ne Flatrate.
Yup... Aber auf einer LAN-Party könnte ich mir soetwas auch vorstellen ;D

Ich hab jetzt nur gedacht, dass man nur ein Stellwerk für den ZuSi will, aber nicht, dass es einen Spieler gibt, der fährt und den anderen, der die Signale stellt...
Christopher Spies hat geschrieben: Und was ist mit Zwischensignalen? Diese könnten sowohl einen Rangierbegriff als auch "20km/h" oder "30km/h" anzeigen!

Ich weiss, ich suche ein Haar in der Suppe... :P
Allerdings... wo kommen denn solcherlei Zwischensignale denn vor? ?(

Benutzeravatar
Daniel Rüscher aka Merlin
Beiträge: 2294
Registriert: 23.01.2003 02:25:50
Aktuelle Projekte: Aktuell keine
Wohnort: Traunreut
Kontaktdaten:

#66 Beitrag von Daniel Rüscher aka Merlin »

So zwischensignale kommen auf beinahe jedem größeren Bahnhof, der Zwischensignale hat vor.

Mit dem Stellwerk sollen ja mehrere möglichkeiten abgedeckt werden. Angefangen vom Nachstellen bestimmter Betrieblicher Situationen (beim Fahrplanbau zum beispiel) bis hin zu großen Multiplayersitzungen auf den diversen Events wie z.B. dem Zusitreffen in Braunschweig, wo dann halt ein Ganzes Streckennetz von mehreren Fdls gesteuert wird, und viele User dadauf fahren.

@ Roland: Hat sich eigentlich bei der Machbarkeitsstudie bezüglich Remoting schon was ergeben?

Gruß Daniel
How to waste bits in a My SQL Database?

Like this.....

Benutzeravatar
Roland Ziegler
Beiträge: 5508
Registriert: 04.11.2001 22:09:26
Wohnort: 32U 0294406 5629020
Kontaktdaten:

#67 Beitrag von Roland Ziegler »

Daniel Rüscher aka Merlin hat geschrieben: @ Roland: Hat sich eigentlich bei der Machbarkeitsstudie bezüglich Remoting schon was ergeben?
Musste es zunächst wegen anderer höher priorisierter Aufgaben unterbrechen.

Die bisher untersuchten Teile waren aber bereits erfolgreich.

Ein Aspekt hierbei ist Event-Handling. Aus der Sicht von Remote Objects sind Events Callbacks, was zur einer Umkehr von Client- und Server-Rolle führt. Dies ist auch mit .Net Remoting möglich, und auch ohne dass der hauptamtliche Server tiefere Kenntnisse über den Client hat (Entkopplung). .Net benutzt ja keine IDL, sondern Meta-Daten, und auch damit geht solches, bei Beachtung von ein paar grundsätzlichen Design-Richtlinien.

Ein anderer Aspekt ist Objekt-Einbettung auf Server-Seite und Security. Da weicht unsere Aufgabe vom Default in .Net ab, ist aber dank der durchdachten Framework-Architektur ohne großen Aufwand umsetzbar.

Mehr, wenn ich wieder da dran sitze.

stuvar
Beiträge: 1409
Registriert: 22.07.2002 22:38:41
Wohnort: Leipzig

#68 Beitrag von stuvar »

Eine Geschwindigkeit, sei es 30 km/h oder eine andere durch 10 teilbare Zahl, als Anzeiger für eine Rangierfahrt zu nutzen ist sehr schlecht.
Nimm folgendes Beispiel: ein Gleis besitzt ein Deckungssignal in der Mitte (im konkreten Fall vor es ein vollwertiges Zwischensignal). Was soll das Signal anzeigen wenn man eine Fahrstraße von dem Signal bis zum Ausfahrsignal des gleichen Gleises einstellen will? Hier mußte ein 2. Zielfeld für die Rangierfahrstraße her. (Möglich waren Rangierfahrstraße - im Falle des Zusammenkuppelns zweier Züge, oder Kennlicht für die Einfahrt bis Gleisende)
Ich bin dafür, daß man für Rangierfahrstraßen entweder Geschindigkeit 25 km/h vorgibt, oder eine Spezielles Feld deklariert der dann eine Rangierfahrt anzeigt.

Fahrdienstleiter
Beiträge: 43
Registriert: 22.05.2005 15:15:58
Aktuelle Projekte: Stellwerksimulator
Wohnort: Weil am Rhein

#69 Beitrag von Fahrdienstleiter »

Roland Ziegler hat geschrieben:Musste es zunächst wegen anderer höher priorisierter Aufgaben unterbrechen.

Die bisher untersuchten Teile waren aber bereits erfolgreich.

Ein Aspekt hierbei ist Event-Handling. Aus der Sicht von Remote Objects sind Events Callbacks, was zur einer Umkehr von Client- und Server-Rolle führt. Dies ist auch mit .Net Remoting möglich, und auch ohne dass der hauptamtliche Server tiefere Kenntnisse über den Client hat (Entkopplung). .Net benutzt ja keine IDL, sondern Meta-Daten, und auch damit geht solches, bei Beachtung von ein paar grundsätzlichen Design-Richtlinien.

Ein anderer Aspekt ist Objekt-Einbettung auf Server-Seite und Security. Da weicht unsere Aufgabe vom Default in .Net ab, ist aber dank der durchdachten Framework-Architektur ohne großen Aufwand umsetzbar.

Mehr, wenn ich wieder da dran sitze.
Wenn ich ehrlich bin, versteh ich nur Bahnhof. Ich bin mit der .NET -Architektur nicht vertraut, dachte eher wir machen so ein Kommunikationsprotokoll a la TCP/IP, das man wunderbar via WinSock realisieren kann ?(

Fahrdienstleiter
Beiträge: 43
Registriert: 22.05.2005 15:15:58
Aktuelle Projekte: Stellwerksimulator
Wohnort: Weil am Rhein

#70 Beitrag von Fahrdienstleiter »

stuvar hat geschrieben:Eine Geschwindigkeit, sei es 30 km/h oder eine andere durch 10 teilbare Zahl, als Anzeiger für eine Rangierfahrt zu nutzen ist sehr schlecht.
Nimm folgendes Beispiel: ein Gleis besitzt ein Deckungssignal in der Mitte (im konkreten Fall vor es ein vollwertiges Zwischensignal). Was soll das Signal anzeigen wenn man eine Fahrstraße von dem Signal bis zum Ausfahrsignal des gleichen Gleises einstellen will? Hier mußte ein 2. Zielfeld für die Rangierfahrstraße her. (Möglich waren Rangierfahrstraße - im Falle des Zusammenkuppelns zweier Züge, oder Kennlicht für die Einfahrt bis Gleisende)
Ich bin dafür, daß man für Rangierfahrstraßen entweder Geschindigkeit 25 km/h vorgibt, oder eine Spezielles Feld deklariert der dann eine Rangierfahrt anzeigt.
Mal ne andere Frage:
Wie stellt ein Fdl eigentlich ganz genau eine Fahrstraße zum Rangieren ein? Ich hab das im Moment so eingerichtet, dass wenn der Pathfinder sieht, dass die Fahrstraße an einem Gleissperrsignal endet (bei Stumpfgleisen benötigt er am "Prellbock" ein unsichtbares Gleissperrsignal), diese als Rangierfahrt oder Einfahrt mit 30km/h gilt...
Letztenendes wird einfach unterschieden, welche Zieltaste er betätigt... Ist das in "echt" so ähnlich?

Benutzeravatar
Roland Ziegler
Beiträge: 5508
Registriert: 04.11.2001 22:09:26
Wohnort: 32U 0294406 5629020
Kontaktdaten:

#71 Beitrag von Roland Ziegler »

Fahrdienstleiter hat geschrieben:Wenn ich ehrlich bin, versteh ich nur Bahnhof. Ich bin mit der .NET -Architektur nicht vertraut, dachte eher wir machen so ein Kommunikationsprotokoll a la TCP/IP, das man wunderbar via WinSock realisieren kann ?(
Der Sinn von Remote Objects ist eine dramatische Vereinfachung für den Anwender, d.h. Entwickler sowohl von Server- und auch von Client-Anwendungen. Dass ein Objekt nicht lokal, sondern irgendwo anders existiert, bleibt auf Client-Seite weitgehend transparent.

Eigene Protokolle selbst auf Sockets aufzusetzen ist wesentlich zeitaufwändiger und fehleranfälliger. Einigermaßen wasserdichte Protokollimplementationen auf Socketebene sind ziemlich komplex - ich habe etliche davon selbst realisiert, und die sehen anders aus, als die mal eben dem Ärmel geschüttelten Tutorial-Beispiele.

Weil das halt für grüßere Anwendungsfelder komplex ist, gibt es gut seit 20 Jahren Weiterentwicklungen des ursprünglichen Socketmechanismus, eben oben drauf. Hat angefangen mit RPC, später DCE, beides noch prozedural. Später COM und CORBA, heute auch .Net Remoting und EJB.

Code: Alles auswählen

//Sample Code for a .Net Remoting Client

// Create a proxy to the remote object.
AussenanlageWeiche weiche = new AussenanlageWeiche (id1);
// use proxy
bool aktuellerZustand = weiche.Zustand; // property, remote access
// ...
weiche.stellen(true); // synchronous remote call

// Create a proxy to the remote object.
AussenanlageSignal signal = new AussenanlageSignal (id2);
// use proxy
signal.stellen(signalbild); // synchronous remote call, automatic marshaling of parameters

Fahrdienstleiter
Beiträge: 43
Registriert: 22.05.2005 15:15:58
Aktuelle Projekte: Stellwerksimulator
Wohnort: Weil am Rhein

#72 Beitrag von Fahrdienstleiter »

Ich habe selbst einen Webserver mit Sockets realisiert :tup

Aber mit sowas habe ich noch nie gearbeitet...
Ich habe VB5, womit ich auch das Stellwerk mache. Was muss ich tun um mit sowas arbeiten zu können? ?(

Benutzeravatar
Daniel Rüscher aka Merlin
Beiträge: 2294
Registriert: 23.01.2003 02:25:50
Aktuelle Projekte: Aktuell keine
Wohnort: Traunreut
Kontaktdaten:

#73 Beitrag von Daniel Rüscher aka Merlin »

Öh Webserver kann man nur über Sockets realisieren, das aber auch recht einfach.

Um mit Sockets zu Arbeiten brauchst du das .net Framework und das dazugehörige SDK. Beide wenn beide installiert sind kannst du eigentlich schon anfangen das zu nutzen.
Es sei wohl noch zu einem guten .net Buch geraten, denn ,net ist wesentlich aufwändiger und eigentlich ganz anders als VB5 und 6.

Gruß Daniel
How to waste bits in a My SQL Database?

Like this.....

Fahrdienstleiter
Beiträge: 43
Registriert: 22.05.2005 15:15:58
Aktuelle Projekte: Stellwerksimulator
Wohnort: Weil am Rhein

#74 Beitrag von Fahrdienstleiter »

Du glaubst doch nicht, dass ich VB.NET installiere und damit alle Klassen und Module umschreibe ?(

Oder ist das nur ein Aufsatz, den ich irgendwie implementieren muss und kann dann schon loslegen?

Ansich ist das ja eine hervorragende Idee, wenn ich einfach auf Objekte zugreifen könnte, die auf einem anderen Rechner im Netz liegen :tup

Benutzeravatar
Daniel Rüscher aka Merlin
Beiträge: 2294
Registriert: 23.01.2003 02:25:50
Aktuelle Projekte: Aktuell keine
Wohnort: Traunreut
Kontaktdaten:

#75 Beitrag von Daniel Rüscher aka Merlin »

Fahrdienstleiter hat geschrieben:Du glaubst doch nicht, dass ich VB.NET installiere und damit alle Klassen und Module umschreibe ?(
Öh da wirst du nich drum rumkommen. Das einzigste was du versuchen könntest ist, das ganze per VS.net Assistenten zu konvertieren, wobei ich nich weiß ob das erfolgversprechend ist, da VB5 ja doch schon etwas älter ist.
Du kannst mir zwecks Machbarkeitsanalyse mal die Sources zukommen lassen, dann siehst du da klarer.
Oder ist das nur ein Aufsatz, den ich irgendwie implementieren muss und kann dann schon loslegen?
Das wäre inetwa das selbe wei der Versuch einen 423er und einen 628.4 in Doppeltraktion laufen zu lassen.
Ansich ist das ja eine hervorragende Idee, wenn ich einfach auf Objekte zugreifen könnte, die auf einem anderen Rechner im Netz liegen :tup
Sicherlich eine sehr feine Idee, drum ja dieser Lösungsweg. Wobei ja da die endgültige Machbarkeit noch offen ist, es aber laut Roland ganz gut aussieht.

Vorallem wäre es ein wenig Unklug 2 .net Programme (Zusi3 und das Stellwerk selbst) über selbst implementierte Protokolle komunizieren zu lassen, wenn es dafür schon eine fertige Lösung von der Stange gibt; alein schon wegen der Fehleranfälligkeit, vom Aufwand ganz zu schweigen.

Gruß Daniel,

VirtuFdl Maf, aber doch für A-Dorf irgendwie nur fdl-helfer ?(
How to waste bits in a My SQL Database?

Like this.....

Benutzeravatar
Roland Ziegler
Beiträge: 5508
Registriert: 04.11.2001 22:09:26
Wohnort: 32U 0294406 5629020
Kontaktdaten:

#76 Beitrag von Roland Ziegler »

VB 5/6 sind ja eigentlich Geschichte, auch wenn zumindest VB6 noch sehr verbreitet im Einsatz ist. Es ist auch sicher zunächst frustrierend zu erleben, dass VB und auch Delphi einen solch harten Schnitt gemacht haben und definiert nicht kompatibel zwischen .Net und Win32 sind. Microsoft C++ ist eine Ausnahme, und eine durchaus willkommene. Aber - da wollen wir uns nichts vormachen - C++ ist eine verdammt anspruchsvolle Sprache.

Was bietet nun .Net in dieser Sprachvielfalt? Es bietet eine gemeinsame Plattform, von jeder .Net-Sprache aus zu nutzen. Es ist also unter .Net technisch gesehen ziemlich egal, unter welcher Sprache man entwickelt, eine Assembly passt zur anderen, die Klassen verhalten sich gleich, unabhängig von der Sprache. Das gilt selbstverständlich auch für eigene Klassen. Dass ich selbst für Neuanwendungen C# bevorzuge und empfehle, liegt schlicht an der Sauberheit dieser modernen OO-Sprache, die keinen Vergleich zu Java zu scheuen braucht.

Innerhalb der .Net-Welt ist dann auch das Remoting eine denkbar einfache Angelegenheit mit einer Architektur, die durchaus Begeisterung auslösen kann.

Was aber, wenn wir es mit Win32 zu tun haben? Wie kommt Win32 an .Net ran? Auch das wird gehen. Es gibt dazu mehrere Möglichkeiten, alle im .Net Framework enthalten. Ich werde untersuchen, ob sich meine Vorstellungen hier umsetzen lassen. Ganz so simpel wie innerhalb der .Net-Welt wird es nicht, aber sicher deutlich einfacher, als eigene Protokolle selbst auf Sockets aufzusetzen.

@Daniel: .Net ist nicht aufwändiger als Win32, im Gegenteil, .Net ist deutlich einfacher, zumindest wenn man als Entwickler schon in OO denkt.
Es ist auch transparenter. Der Aufwand, der z.B. in VB vor .Net getrieben wurde, um all den Overhead zu kapseln, den man dem Entwickler nicht zumuten wollte, konnte gestrichen werden. Man nannte das dann "Rapid Development", für mich ein Synonym mit maximaler Intransparenz. :)

Benutzeravatar
Daniel Rüscher aka Merlin
Beiträge: 2294
Registriert: 23.01.2003 02:25:50
Aktuelle Projekte: Aktuell keine
Wohnort: Traunreut
Kontaktdaten:

#77 Beitrag von Daniel Rüscher aka Merlin »

Das eine schließt ja das andere nicht aus Roland. .net ist aufwändiger aber auch einfacher als .net. Während man sich Anwendungen in VB6 teilweise sogar einfach zusammenklicken kann, oder per OCX einfach reinzieht, muss man bei .net auch durchaus an kleine Sachen denken.
Mehr meinte ich nicht.
How to waste bits in a My SQL Database?

Like this.....

Fahrdienstleiter
Beiträge: 43
Registriert: 22.05.2005 15:15:58
Aktuelle Projekte: Stellwerksimulator
Wohnort: Weil am Rhein

#78 Beitrag von Fahrdienstleiter »

.NET hat aber auch einige Nachteile... Größere Installationsdatei beispielsweise oder man kann den Source-Code zurück kompilieren... Also dass man aus der Binary dann den Quelltext heraus bekommt...

Meinen Source-Code brauche ich auch nicht schicken. Ich weiß selbst, dass es zu komplex ist für eine "automatische Konvertierung". Da ist alles in Klassen unterteilt und "statische Prozeduren" für die Klassen musste ich in Module stecken weil sowas unter VB5 noch gar nicht anders möglich ist.

Ich hoffe es gibt trotz allem noch irgendeine Möglichkeit, dass ich irgendeine DLL implementieren muss und dann über diese bestimmte Funktionen laufen lasse.

Eine Möglichkeit wäre, dass in .NET eine DLL geschrieben wird, auf die ich von VB aus zugreifen könnte. Wäre zwar eine Art "Aufsatz" aber so könnte es funktionieren...

Benutzeravatar
Daniel Rüscher aka Merlin
Beiträge: 2294
Registriert: 23.01.2003 02:25:50
Aktuelle Projekte: Aktuell keine
Wohnort: Traunreut
Kontaktdaten:

#79 Beitrag von Daniel Rüscher aka Merlin »

Fahrdienstleiter hat geschrieben:.NET hat aber auch einige Nachteile... Größere Installationsdatei beispielsweise oder man kann den Source-Code zurück kompilieren... Also dass man aus der Binary dann den Quelltext heraus bekommt...
Größere Installationsdatei? Wie kommstn da drauf? Reverseengineering: Nur Theoretisch, Praktisch gehts eher schlecht. Ansonsten gibts Tools die das Verhindern. Und auch VB Code kann man dekompilieren, wenn man es denn überhaupt will.
Meinen Source-Code brauche ich auch nicht schicken. Ich weiß selbst, dass es zu komplex ist für eine "automatische Konvertierung". Da ist alles in Klassen unterteilt und "statische Prozeduren" für die Klassen musste ich in Module stecken weil sowas unter VB5 noch gar nicht anders möglich ist.
Würd ich garnichmal sagen. Gehn tuts, Struktur is ja eher egal, als Beispiel is da sogar n einigermaßen großes Projekt dabei das umgewandelt wird. Wenn es modular is, dann isses um so besser. Es käme da wirklich auf nen Versuch an.
Ich hoffe es gibt trotz allem noch irgendeine Möglichkeit, dass ich irgendeine DLL implementieren muss und dann über diese bestimmte Funktionen laufen lasse.
Leider nein, außer du bastelst dir eine Zwischenstation, die die Umsetzung .net <-> Sockets macht.
Eine Möglichkeit wäre, dass in .NET eine DLL geschrieben wird, auf die ich von VB aus zugreifen könnte. Wäre zwar eine Art "Aufsatz" aber so könnte es funktionieren...
For sure.... Brauchst nur n gutes Buch und Hintergrundwissen. Achja und Kreativität.

Gruß Daniel
How to waste bits in a My SQL Database?

Like this.....

Fahrdienstleiter
Beiträge: 43
Registriert: 22.05.2005 15:15:58
Aktuelle Projekte: Stellwerksimulator
Wohnort: Weil am Rhein

#80 Beitrag von Fahrdienstleiter »

Ein eigenes Socket-Protokoll wäre vermutlich "schneller" weil da nicht so viel Müll über die Leitung geschickt wird :]

Wieso ein gutes Buch? Wie man eine DLL in VB einbindet, damit habe ich keine Probleme ?(

Antworten