WiniX,  PC-Software für Selectrix Modellbahnen

Anlass:

Eigentlich hatte ich nur vor, eine kleine Testanlage zu bauen um meine Module praxisnäher
testen zu können. Die Steuerung mit meinem Trix ControlHandy ist für einzelne Schalt-
und Fahrversuche ganz brauchbar, trotzdem oder deshalb habe ich mich mit dem Thema
PC-Softwaresteuerungen befasst.
 

"Meine" Funktions-Anforderungen:

Nach meiner Vorstellung sollte die Anlage symbolisch auf dem PC-Monitor dargestellt sein
und alle Informationen über den aktuellen Schaltzustand der Magnetartikel und die Belegung
der Gleise bieten.

Ein "Schalt- und Meldesystem", das die Bedienung übersichtlich und einfach ermöglicht.

Diese "bescheidene" Vorgabe beinhaltet aber nicht nur die Weichen, sondern auch die Position
und Fahrtrichtung der Lokomotiven oder Züge und die Darstellung der Fahrwege, die sich
aus den Weichenstellungen und der Gleisanordnung ergeben.

Ein Meldesystem hat aber auch den Sinn, den Betrieb einer Anlage, sicherer zu ermöglichen
und Fehlbedienung zu melden oder besser zu vermeiden.
Solange sich auf einer MoBa nichts bewegt, sprich keine Loks fahren, wird sicher kein
"Unfall" oder eine Beschädigung passieren.
Eine Lokfahrt die zu einer Kollision oder zur "Falschfahrt" auf einer Weiche führen kann
sollte aber verhindert und signalisiert werden.
Daraus folgt, Loks müssen vom System "bei Gefahr im Verzug" gestoppt werden,
das Umsteuern von Weichen in befahrenen oder besetzten Gleisabschnitten sollte
verhindert werden, unabhängig davon ob die Kommandos in der Software gegeben
werden oder direkt im Digitalsystem der Anlage, z.B. per Handgerät.

Schließlich darf die PC-Steuerung keine Voraussetzung zum "Spielbetrieb" sein,   
d.h. der uneingeschränkte Handbetrieb muss möglich sein.
Die Software muss zu jedem Zeitpunkt und Zustand der Anlage zu- und abschaltbar sein.

An dieser Anforderung scheiden sich wohl die Geister, weil sie nur bei entsprechender
Ausstattung der Anlage mit "sensorischen" und "aktiven" Geräten und Modulen denkbar
ist.
Nur wenn die Software in der Lage ist, zu jedem Zeitpunkt den Zustand der Anlage
zu erfassen, zu lernen "was momentan Sache ist", hat die Schalt- und Meldelogik
die notwendige Informations- und Datenbasis.

Dies erweist sich als "Killerkriterium", d.h. alle Hard- und Softwaresysteme, die das
nicht können, scheiden in der Auswahl der möglichen Systeme aus.

Die Rückmeldefähigkeit der Lok- und Weichen-Decoder ist (fast) zwingende
Voraussetzung.

Hardwareauswahl:

Unter den Lokdecodern der gängigen Digitalsysteme kenne ich derzeit nur die D&H
(Trix-Selectrix) Decoder, die sich ständig und unaufgefordert auf dem Gleis
"zurückmelden". Das bietet geeigneten Besetztmeldern die Chance, die Lokadresse
aus dem überwachten Gleisabschnitt als "Besetzer" zu melden.

In wieweit das Lenz/DCC RailCom System ähnliche Eigenschaften hat, kann ich
aus der, mir zur Verfügung stehenden, Dokumentation (Lenz und NMRA) nicht lernen.

Bei Weichendecodern, egal ob für Servos oder Magnetantriebe, ist die Rückmeldung
immer eine fragwürdige Information bezüglich der tatsächlichen mechanischen
Position der Weichenzungen. Damit muss und kann man sich aber zufrieden geben,
weil die Zuverlässigkeit gut genug ist, wenn Magnetantriebe mit Endabschaltung
und Rückmelde-Decoder verwendet werden. Bei Servodecodern ist das Speichern
der letzten Position inzwischen Standard.

Besetztmelder mit Rückmeldung der Selectrix-Adresse sind rare Ware, weil es
diese Module, nur bei MÜT und MTTM gibt und nur in Verbindung mit den geeigneten
Zentralen und Handgeräten funktionieren.
Die notwendigen Informationen zur Verwendung mit "Fremd-Systemen" sind für mich
nicht zugänglich und werden als "Betriebsgeheimnis" behandelt.

Mein BM2i Eigenbau
Dieser Minidecoder meldet den Besetztzustand und die Lokadresse auf einer
fixen Adresse. Bit 7 meldet in Verbindung mit einer Adresse ungleich "00" die
Position auf dem Gleis. Ohne Adresse ist Bit 7 = 1 wenn ein "adressloser"
Besetzer erkannt wurde, z.B. eine Widerstandsachse.

Die Digital-Zentrale muss zum Datenaustausch mit dem PC-Programm geeignet sein
oder zumindest das verwendete Interface. Die Geschwindigkeit des Lesevorgangs
ist dabei besonders wichtig, weil zyklisch der komplette Bus gelesen werden muss
um den Ist-Datenbestand zu aktualisieren.
Die günstigste Technik hierfür ist der Blocktransfer, d.h. nach Abruf mit einem Befehl
werden alle Datenbytes mit hoher Baudrate ( min. 115,2 kBd) zum PC gesendet.

Diese Funktion hat meine SX1-Mini-Zentrale und nach meiner Kenntnis nur die
Multiprotokoll-ZentraleFCC von Fa. MTTM.
 

Das Softwarekonzept WiniX SuM (Schalten und Melden)

Für die Erfassung der Anlage habe ich den "Gleisbild-Editor" programmiert.



Mit den 10 Gleisbild-Symbolen und den "Rot 90" und "Flip-X" Buttons wird das Gleisbild gezeichnet.
Die dazugehörigen Digitalinformationen, Adresse und ggf. Bitnummer, werden nacheditiert.

Die Rastergröße ist in dieser Testversion nur 10 Zeilen mit 20 Spalten und veränderbar.

Die untere Symbolzeile besteht  z.Zt. nur aus 2 Block- bzw. BMi Symbolen. In beiden Symbolen
ist die Gleispolarität " Rot und Blau" bei der Platzierung zu beachten, d.h. mit "Rot 90" muss
die Lage entsprechend geändert werden. Dies ist zwingend notwendig, weil sonst die
Aufstellrichtung der Lok nicht korrekt bestimmt werden kann. Das ist aber Voraussetzung
für die Ermittlung der tatsächlichen Fahrtrichtung auf dem Gleis.

Das gelbe Symbol wird für einen Halteblock verwendet der entweder durch Trenngleise oder
Weichen begrenzt wird.
Das blaue Symbol stellt einen Streckenblock dar, der auch Weichen beinhalten darf. Ein
Streckenblock wird begrenzt durch Trenngleise oder den Abzweiganschluss einer Weiche.

In beiden Symbolen wird die Adresse eingetragen die dem BMi zugeordnet ist.
Weichensymbole OHNE Adresse sind farblich mit Magenta gezeichnet.
Die Weichenlage kann mit Status "0" oder "1" geändert werden.

Der Gleisbild Datensatz:

Abgespeichert wird eine Datei, in der für jedes Rasterfeld der Symboltyp, die Dreh- und Flip-Lage
und die Digitalinformationen samt Status enthalten sind. Insgesamt habe ich bisher für jedes
Rasterfeld 16 Werte vorgesehen.
Programmtechisch ist das Datenfeld ein 3-dimensionales (ushort) Array mit der
Größe [Max-Zeilen, Max-Spalten,16], das als binary Stream abgelegt wird.
Die Werte-Indizes beschreibe ich an anderer Stelle der Dokumentation.

Das Betriebsprogramm WiniX SuM:

Dieses ist eine eigenständige Anwendung die ich ebenfalls mit MS C# für .NET 3.5 codiert habe.



Als Datenbasis dient die Datei aus dem Gleisbildeditor.

Der Screenshot zeigt die Darstellung nach dem Aufstarten bei eingeschalteter Minizentrale.
Als Anschluß wurde COM3 gewählt, die Baudrate ist fix vorgegeben 115,2 KB.
Mit Click auf "Verb.Zentr." wurde die akt. Gleisbilddatei geöffnet, der Bus gelesen und die Software hat sich mit
den Busdaten synchronisiert. Das Datenfeld wird ab sofort zyklisch aktualisiert und ausgewertet.

Nach der statischen Synchronisation arbeitet das Programm ereignisgesteuert. Änderungen in den
Meldeadressen der BMi's,  in den Adressen der Weichendecoder und in den Fahrbytes der Loks
werden logisch weiterverarbeitet.

Die Buttons in der Gruppe "Gleisdatei" werden im Normalbetrieb nicht benötigt, weil die zuletzt verwendete
Datei geöffnet wird.

Alle Weichen sind entsprechend den Busdaten in der Anzeige gestellt, und können geschaltet werden.

Das Programm hat im Block 37 die Lok 16 gefunden, deren Fahrstufe NICHT "0" ist.
Deshalb wurde sofort in der Fahrtrichtung ( das magenta Quadrat ist im Symbol rechts ) der Folgeblock
gesucht und weil er frei war, sofort für die Weiterfahrt reserviert. Die Lok fährt weiter. Wäre Block 47
besetzt gewesen oder die Weiche vor dem Blocksymbol auf Abzweig gestanden, so wäre Lok 16
gestoppt worden.

Freie Blöcke mit adressiertem BMi haben grüne Gleissymbole, bei besetzten Blöcken sind sie rot, im Status
reserviert gelb. Nicht überwachte Anlagenteile sind schwarz/weiß gezeichnet.
Weichen innerhalb besetzter oder reservierter Blöcke können weder vom Bus noch vom Softwarebenutzer
geschaltet werden, um Falschfahrten zu verhindern.
Gestoppte Loks können auch mit dem Bus-Handgerät nicht weiter in Richtung "Gefahr" bewegt werden.
In freier, sicherer Richtung funktioniert das natürlich.

Die MessageBox "Symbolinfo" ist mit Click Rechts auf das Symbol im besetzten Block abgerufen und
zeigt 7 der 16 Symbolwerte an. Der Wert "Folgeblock" ist akt. 47, der auch als reserviert gezeichnet ist.

Mit der Anwahl wurden auch die Angaben in der Gruppe "Fahrweganzeige" aktualisiert. Startblock ist "37",
der Folgeblock "47", der  in der akt. Fahrtrichtung gefunden wurde.

Damit ist auch die Fahrwegsanzeige möglich, deren Start und Richtung per Button gewählt wird.

Der Fahrweg wird mit blauen Gleissymbolen dargestellt und bei Änderung einer Weiche sofort komplett
aktualisiert. Fahrwege enden immer an einem Halteblock oder an einer nicht befahrbaren Weiche.
Auswahl des Startblockes mit Click ins Blocksymbol.

Wenn der Statustest eingeschaltet ist, wird bei der Fahrweganzeige besetzt und reserviert beachtet.

Fazit:

Ob sich meine WiniX-Software in der Praxis bewährt wird sich zeigen, wenn sich mal Leute finden,
die Lust zum Probieren haben. Hocherfreut wäre ich über Kontakte zu "Mit-Weiter-Entwicklern" oder
Testwilligen denen ich auch gerne die Quellprogramme für Hobbyzwecke überlasse.
(C# Express Edition)

Jonathan Bohmer, im Juli 2010