Java on TracksDie Kind-im-Manne-Session
Dirk Weil | GEDOPLAN
Dirk Weil• GEDOPLAN GmbH, Bielefeld• Java EE seit 1998• Konzeption und
Realisierung• Vorträge• Seminare• Veröffentlichungen
2 Java on Tracks – die Kind-im-Manne-Session
V5T11• Visual Train Control
• VT 11.5
http://commons.wikimedia.org/wiki/File:601_Verkehrsmuseum_Nuernberg_11092010_complete_train.JPG
4 Java on Tracks – die Kind-im-Manne-Session
Aufgaben von V5T11• Visualisierung des Gleisplans.• Anzeige von Gleisbelegungen.• Reservieren und Freigeben von Fahrstraßen
inklusive der dazu nötigen Weichen- und Signalstellungen.
• Keine Automatisierung des Fahrbetriebs!
5 Java on Tracks – die Kind-im-Manne-Session
Mehrzugsteuerung Selectrix• Keine getrennten Stromkreise• Loks enthalten
Decoder• erhalten Befehle
über die Gleisspannung– Geschwindigkeit, Richtung– Licht– Horn– …
6 Java on Tracks – die Kind-im-Manne-Session
Mehrzugsteuerung Selectrix• Zentrale
– Gleisspannung– SX-Bus
• Funktionsdecoder– Steuerung von Weichen, Signalen
• Besetztmelder– Überwachung von Gleisen
• Interface– Konverter SX-Bus � serielle Schnittstelle
7 Java on Tracks – die Kind-im-Manne-Session
Wer hat's erfunden?
GEDOPLAN Code Camp 2012
9 Java on Tracks – die Kind-im-Manne-Session
Selectrix Connector• Anbindung des Selectrix-Systems• Bidirektionaler Connector nach JCA 1.6• Outbound: Setzen und Abfragen von einzelnen
Adressen– setValue(12, 0b01001110)
Geschwindigkeitsstufe 14vorwärtsLicht anHorn aus
10 Java on Tracks – die Kind-im-Manne-Session
Selectrix Connector• Inbound: Melden von Zustandsänderungen
– SelectrixMessage(90, 0b00100000)
Gleis 11Gleis 12Gleis 1…
…
11 Java on Tracks – die Kind-im-Manne-Session
Selectrix Connector• Zugriff auf serielle und parallele Schnittstellen
– commapi 2.0: uralt, stagniert– rxtx: GNU-Implementierung, derzeit auf rxtx.qbang.org zu finden
– Java Communications 3.0: Oracle hat den Faden wieder aufgenommen; derzeit keine Windows-Implementierung
12 Java on Tracks – die Kind-im-Manne-Session
Betriebssteuerung• Geschäftslogik
– Objektrepräsentation der Modellbahn (Loks, Weichen, Signale, Gleisabschnitte)
– Objektrepräsentation der MZS (Zentrale, Funktionsdecoder, Besetztmelder)
– Bidirektionale Synchronisation mit der MZS– Initialisierung aus XML-Konfig.-Datei– geplant: Speicherung des Systemzustandes in einer
DB
13 Java on Tracks – die Kind-im-Manne-Session
Betriebssteuerung
Steuerung
LokLok
Funktions-decoder
Besetzt-melder
Weiche
Signal
SelectrixConnector
Mes
sagi
ng/E
vent
s
AP
I (setValue
)
Gleis
14 Java on Tracks – die Kind-im-Manne-Session
Betriebssteuerung• Systemzustand: @ApplicationScoped CDI Bean
@ApplicationScoped
public class SteuerungProducer
{
@Produces @ApplicationScoped
private Steuerung steuerung;
@PostConstruct
private void init()
{
this.steuerung = XmlConverter.fromXml(Steuerung.class, …);
…
}
15 Java on Tracks – die Kind-im-Manne-Session
Betriebssteuerung• Fahrstraßensteuerung
– Reservieren von Fahrstraßen= Stellen benötigter Weichen und Signale
– Kollisionskontrolle
16 Java on Tracks – die Kind-im-Manne-Session
Betriebssteuerung• Serviceangebot für Clients
Steuerung
LokLok
Besetzt-melder
Funktions-decoder
Weiche
Signal
Gleis
Model (JSF)
EJB
(R
emot
e) RE
ST
WS
17 Java on Tracks – die Kind-im-Manne-Session
Stellwerk• Visualisierung des Gleisplans• Stellen von Weichen und Signalen• Reservieren von Fahrstraßen• Anzeige von Gleisbelegungen
18 Java on Tracks – die Kind-im-Manne-Session
Stellwerk• Ansatz im Code Camp
– Gleisplan als SVG– Darstellung der Zustände per Transformation des
Objektmodells hinter der Grafik– Listener-Registrierung auf Grafikelementen für User-
Aktionen
• Vielversprechend• Aus Zeitgründen nicht realisiert
20 Java on Tracks – die Kind-im-Manne-Session
Remote Control• Mobile Variante eines
"Walk Around Controllers"– Auswahl einer Lok– Steuerung von
Geschwindigkeit, Licht etc.
21 Java on Tracks – die Kind-im-Manne-Session
… und aus dem "echten Leben"• Steuerung eines
fahrerlosenTransportsystems(FTS)
Java on Tracks – die Kind-im-Manne-Session24