[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[DDL-ML] Digitale Modellbahnsteuerung mit Java



Liebe DDL-Fangemeinde,
 
seit geraumer Zeit bin ich nun schon stiller, aber begeisterter Beobachter dieses
Forums und schätze das hohe Niveau der Ideen und Konzepte die hier
ausgetauscht werden. Nicht nur diese Mailingliste, sondern auch die DDL-Homepage
waren bis dato Quelle zahlreicher Anregungen für meine eigenen Projekte.
 
An dieser Stelle daher mal ein dickes Lob ... !!!!
 

Auslöser dieser Mail ist eigentlich ein Posting bezüglich des Rüdesheimer Treffens,
in dem ein Referenz-Server in Java erwähnt wird...
 
Aber zuersteinmal zu meiner Person:
 
 - mein Name ist Sebastian Lang (23)
 - ich studiere seit Herbst 1998 Angewandte Informatik an der FH-Trier
 - bin derzeit im 7. Semester und werde nächstes Jahr meinen Abschluss
      als Dipl. Informatiker (FH) machen
 - habe mich im 6. Semester im Rahmen eines Softwareengineering-Projektes
    mit der Implementierung einer Digitalen Modellbahnsteuerung in Java
   beschäftigt
 
Da auch ich seit jungen Jahren ein begeisterter Modellbahner (Fleischmann HO) bin, aber seit
Studienbeginn keinen Platz mehr für meine große (analoge) Anlage habe, beschäftige ich
mich zunehmend mit Konzepten rund um die digitale, softwaregestütze Modellbahnsteuerung.
 
Die Freude an dem Modellbahnhobby war daher auch die treibende Kraft in besagtem
Sofwareengineering Projekt und als nach zahllosen Tagen und Nächten (Programmierung, Testen,
Dokumentieren,...) endlich alles funktionierte war bei der Präsentation nicht nur ich
begeistert, sondern auch zahllose Kollegen und Professoren.
 
Diesem Umstand ist es nun zu verdanken, dass im laufenden 7. Semester
inzwischen 3 Studenten (evtl. demnächst 5) + 1 Professor aktiv an der Weiterentwicklung
der erstellten "Beta-Demo-Modellbahn-Java-Software" arbeiten, wobei ich quasi als "Projektleiter"
agiere.
 
Aber warum erzähl ich das alles ..?
 
Wärend die erste Beta-Version noch ein eigenes Protokoll (angelehnt an SRCP 0.7 aber
nicht kompatibel) implementierte, ist in dem laufenden Projekt eine Anbindung bzw.
Implementierung von SRCP (0.8 ???) angedacht...
 
Auch auf die Gefahr hin, dass diese Mail etwas länger wird, möchte ich das aktuelle Projekt
kurz vorstellen:
 
 
Projekt-Struktur: (falls nicht erkennbar, bitte bescheid sagen ...)
 
 
 

         1               1+-----------------+n          1+----------------+   
  Booster--------RS232----| BOOSTER-Server  |---TCP/IP---|                |            +--------+
                          +-----------------+            |  LOGIK-Server  |1          n|        |
                                                         |       +        |---TCP/IP---| Client |
             1           1+-----------------+n          1|  Datenhaltung  |            |        |
  S88-HSI-LDT----RS232----| Feedback-Server |---TCP/IP---|                |            +--------+
                          +-----------------+            +----------------+
                                                           |1          |1
                                                           |           |
                                                        geplant     geplant
                                                           |           |
                                                           |           |
                                                         TCP/IP     TCP/IP
                                                         (SRCP)     (SRCP)
                          +----------------+n              |           |
                          |   SRCP-Server  |-------------- +           |
                          +----------------+                           |n
                                                                +----------------+
                                                                |  SRCP-Clients  |
                                                                |    (JMan,..)   |
                                                                +----------------+

         
 
Beschreibung(größtenteils Planung, vieles aber schon implementiert):
 
 BOOSTER-Server
  - Implementiert in C/C++
  - MM und NRMA-DCC Protokoll  [Booster-Seite]
  - eigenes Protokoll   [TCP/IP -Seite]
  - führt "stur" alle Befehle aus, die der Logik-Server schickt
  - steuert den Booster (generiert Befehle)
  - managed Refresh-Zyklen
  - etc..
 
 Feedback-Server
  - Implementiert in Java
  - steuert HighSpeedInterface von LDT über serielle Schnittstelle
  - kommuniziert über zwei Kanäle mit dem Logikserver
  - Command-Port: Kommunikation Logik-Server <=> Feedback-Server
  - Feedback(Poll)Port: ähnlich dem Infoport bei SRCP
  - etc..
 
 Logik-Server
  - in Java implementiert
  - Steuerzentrale für alles
  - kann mehrere Booster- und Feedback-Server ansteuern (->Großanlage)
  - kann mehrere Clients bedienen
  - hier werden Loks, Dekoder, Module( Weichen, Signale, etc..), Gleispläne definiert
  - zentrale Datenhaltung (Gleispläne, Decoderinfos, u.v.m)
  - geplanter Funktionsumfang:
       - Gleispläne   anzeigen/editieren/löschen
       - Fahrstrassen  anzeigen/editieren/löschen
       - Zugverfolgung  
       - Loks und Decoder(weichen, Signale, etc..) steuern via Gleisplan
       - Verwaltung von Video-Streams (Funk-Kameras in Loks, Webcam über der Anlage,..)
       - verwaltet Clients (Passwortzugang, Rechte, etc..)
       - hat Funktionalität von Chat-Server
       - Programmierung von Dekodern
       - informiert Clients ständig über das Geschehen auf der Anlage
       - u.v.m.
 
 Clients
  - in Java implementiert
  - greifen auf Resourcen des Logik-Servers zu
  - laden sich vom Server: Gleispläne, verfügbare Loks, Module(Weichen, Signale, etc...) etc..
  - können Loks, Weichen, Signale. etc. steuern
    entweder über graphische Schaltelemente oder direkt im Gleisplan
  - können mit anderen Usern chatten
  - sehen (falls vorhanden) Video-Streams der Loks, Anlage
  - etc..
 
 
 
Nun kommt SRCP und DDL ins Spiel ... , jedenfalls ist das angedacht. D.h. als Ersatz für den eigenen
Booster-Server und Feedback-Server kann auch ein (mehrere) SRCP-Server(erddcd) genutz werden.
Weiterhin ist geplant, dass sich der Logik-Server selbst wiederum zusätzlich wie ein SRCP-Server
verhält, um bestehende SRCP Clients zu bedienen. D.h. der Logik-Server kann sich quasi zwischen
SRCP-Server und SRCP-Clients schalten. Grund: wir/ich halten die DDL-Software und SRCP für so gut,
dass sie/es einfach weitere Verbreitung finden sollte, zumal es schon einige sehr gute Clients gibt
(J-Man, SpDrS60, ...) und "ihr" wohl schon etwas mehr Erfahrung mit "effiziente Protokollgenerierung"
habt. Diese guten Eigenschaften sollen auf diesem Weg kombiniert werden mit einer zentralen Logik.
 

So, ich weiss das war ziemlich viel fürs erste, aber vielleicht interessiert dieses Thema ja den ein
oder anderen. Sinn dieser ganzen Aktion soll eben auch die Loslösung von einer bestimmten Betriebsystem-
Plattform (wie Linux, Windows, etc..)sein, daher auch Java als Programmiersprache. Ausserdem haben wir uns
zum Ziel gesetzt,alles möglichts einfach zu halten (einfach zu bedienen, einfach zu installieren)
um auch den Laien dafür zu begeistern. Anmerkung: Auch eine Web-Client-Implementierung auf Java-Basis ist
angedacht. D.h. man braucht nur noch einen Browser um auf einer Modellbahnanlage zu spielen ...
 

Im ersten Projekt hat sich jedoch gezeigt, dass für die "Echtzeitgenerierung" von Decoderprotokollen
Java einfach noch zu lahm ist (auch wenn ich einen funktionierenden Java-Server hinbekommen habe).
==> der Booster-Server in diesem Projekt wird daher wieder in C/C++ implementiert ... ;-)
 
Falls jemand mehr Infos zu diesem Projekt haben möchte (Dokumentationen, Screenshots, etc..) kann er
sich gerne an mich wenden (es existiert leider noch keine Internetseite. Diese ist allerdings auf
unserem FH-Server geplant -> dort soll sich dann auch die erste Eisenbahn via Web-Browser steuern und
hoffentlich auch sehen lassen (via Video-Stream)).
 

So, das wars... (und so eine lange Mail werd ich auch bestimmt nicht mehr schreiben, versprochen...)
 

MFG
 
Sebastian