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!
2. 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 dirk.weil@gedoplan.de
3. Die Ausgangslage
Job
Keller
3 Java on Tracks – die Kind-im-Manne-Session dirk.weil@gedoplan.de
4. 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 dirk.weil@gedoplan.de
5. 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 dirk.weil@gedoplan.de
6. 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 dirk.weil@gedoplan.de
7. 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 dirk.weil@gedoplan.de
8. Systemaufbau
8 Java on Tracks – die Kind-im-Manne-Session dirk.weil@gedoplan.de
9. Wer hat's erfunden?
GEDOPLAN Code Camp 2012
9 Java on Tracks – die Kind-im-Manne-Session dirk.weil@gedoplan.de
10. Selectrix Connector
• Anbindung des Selectrix-Systems
• Bidirektionaler Connector nach JCA 1.6
• Outbound: Setzen und Abfragen von einzelnen
Adressen
– setValue(12, 0b01001110)
Geschwindigkeitsstufe 14
vorwärts
Licht an
Horn aus
10 Java on Tracks – die Kind-im-Manne-Session dirk.weil@gedoplan.de
11. Selectrix Connector
• Inbound: Melden von Zustandsänderungen
– SelectrixMessage(90, 0b00100000)
…
Gleis 11
Gleis 12
Gleis 1
…
11 Java on Tracks – die Kind-im-Manne-Session dirk.weil@gedoplan.de
12. 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 dirk.weil@gedoplan.de
13. 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 dirk.weil@gedoplan.de
14. Betriebssteuerung
Selectrix
Connector
Steuerung
Messaging/Events
API (setValue)
Funktions- Besetzt-
Lok
Lok decoder melder
Weiche Gleis
Signal
14 Java on Tracks – die Kind-im-Manne-Session dirk.weil@gedoplan.de
15. 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 dirk.weil@gedoplan.de
16. Betriebssteuerung
• Fahrstraßensteuerung
– Reservieren von Fahrstraßen
= Stellen benötigter Weichen und Signale
– Kollisionskontrolle
16 Java on Tracks – die Kind-im-Manne-Session dirk.weil@gedoplan.de
17. Betriebssteuerung
• Serviceangebot für Clients
Model (JSF)
EJB (Remote)
REST WS
Steuerung
Besetzt- Funktions-
Lok
Lok melder decoder
Weiche Gleis
Signal
17 Java on Tracks – die Kind-im-Manne-Session dirk.weil@gedoplan.de
18. 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 dirk.weil@gedoplan.de
19. Stellwerk
19 Java on Tracks – die Kind-im-Manne-Session dirk.weil@gedoplan.de
20. 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 dirk.weil@gedoplan.de
21. 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 dirk.weil@gedoplan.de
22. Demo
22 Java on Tracks – die Kind-im-Manne-Session dirk.weil@gedoplan.de
23. Impressionen aus dem Keller …
23 Java on Tracks – die Kind-im-Manne-Session dirk.weil@gedoplan.de
24. … und aus dem "echten Leben"
• Steuerung eines
fahrerlosen
Transportsystems
(FTS)
24 Java on Tracks – die Kind-im-Manne-Session dirk.weil@gedoplan.de