Java on Tracks – die Kind-im-Manne-Session

25
Java on Tracks Die Kind-im-Manne-Session Dirk Weil | GEDOPLAN

description

Präsentation zum Vortrag von Dirk Weil (GEDOPLAN, http://www.gedoplan.de) auf der W-JAX 2012: Was macht ein Java-Nerd mit der Modellbahn im Keller? Richtig: Züge, Weichen, Signale werden von einem Java-EE-Server gesteuert, das Stellwerk ist eine JavaFX-Applikation und die Walk-Around-Controls sind per WLAN angebundene Android-Apps. Lassen Sie sich in dieser Session mit Spiel(be)trieb von den Herausforderungen dieser etwas außergewöhnlichen Java-Anwendung berichten - mit Livedemo on Stage!

Transcript of Java on Tracks – die Kind-im-Manne-Session

Page 1: Java on Tracks – die Kind-im-Manne-Session

Java on TracksDie Kind-im-Manne-Session

Dirk Weil | GEDOPLAN

Page 2: Java on Tracks – die Kind-im-Manne-Session

[email protected]

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

Page 3: Java on Tracks – die Kind-im-Manne-Session

[email protected]

Die Ausgangslage

Job

Keller

3 Java on Tracks – die Kind-im-Manne-Session

Page 4: Java on Tracks – die Kind-im-Manne-Session

[email protected]

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

Page 5: Java on Tracks – die Kind-im-Manne-Session

[email protected]

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

Page 6: Java on Tracks – die Kind-im-Manne-Session

[email protected]

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

Page 7: Java on Tracks – die Kind-im-Manne-Session

[email protected]

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

Page 8: Java on Tracks – die Kind-im-Manne-Session

[email protected]

Systemaufbau

8 Java on Tracks – die Kind-im-Manne-Session

Page 9: Java on Tracks – die Kind-im-Manne-Session

[email protected]

Wer hat's erfunden?

GEDOPLAN Code Camp 2012

9 Java on Tracks – die Kind-im-Manne-Session

Page 10: Java on Tracks – die Kind-im-Manne-Session

[email protected]

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

Page 11: Java on Tracks – die Kind-im-Manne-Session

[email protected]

Selectrix Connector• Inbound: Melden von Zustandsänderungen

– SelectrixMessage(90, 0b00100000)

Gleis 11Gleis 12Gleis 1…

11 Java on Tracks – die Kind-im-Manne-Session

Page 12: Java on Tracks – die Kind-im-Manne-Session

[email protected]

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

Page 13: Java on Tracks – die Kind-im-Manne-Session

[email protected]

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

Page 14: Java on Tracks – die Kind-im-Manne-Session

[email protected]

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

Page 15: Java on Tracks – die Kind-im-Manne-Session

[email protected]

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

Page 16: Java on Tracks – die Kind-im-Manne-Session

[email protected]

Betriebssteuerung• Fahrstraßensteuerung

– Reservieren von Fahrstraßen= Stellen benötigter Weichen und Signale

– Kollisionskontrolle

16 Java on Tracks – die Kind-im-Manne-Session

Page 17: Java on Tracks – die Kind-im-Manne-Session

[email protected]

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

Page 18: Java on Tracks – die Kind-im-Manne-Session

[email protected]

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

Page 19: Java on Tracks – die Kind-im-Manne-Session

[email protected]

Stellwerk

19 Java on Tracks – die Kind-im-Manne-Session

Page 20: Java on Tracks – die Kind-im-Manne-Session

[email protected]

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

Page 21: Java on Tracks – die Kind-im-Manne-Session

[email protected]

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

Page 22: Java on Tracks – die Kind-im-Manne-Session

[email protected]

Demo

22 Java on Tracks – die Kind-im-Manne-Session

Page 23: Java on Tracks – die Kind-im-Manne-Session

[email protected]

Impressionen aus dem Keller …

23 Java on Tracks – die Kind-im-Manne-Session

Page 24: Java on Tracks – die Kind-im-Manne-Session

[email protected]

… und aus dem "echten Leben"• Steuerung eines

fahrerlosenTransportsystems(FTS)

Java on Tracks – die Kind-im-Manne-Session24

Page 25: Java on Tracks – die Kind-im-Manne-Session

Schön, dass Sie da waren!

[email protected]