Selectrix

Die Selectrix Inhalte werden Schritt für Schritt auf die neue Webseite www.opensx.net umgestellt !

Ein weiteres Digitalsystem ist das Selectrix® System, auch kurz "SX" genannt. Es wird zwar nicht weiter von Trix® entwickelt, aber es gibt doch immer noch sehr viele Nutzer und vor allem auch viele kleinere Firmen, die Komponenten dafür bauen und es weiterentwickeln.

Das SX System (standardisiert in NEM 680 und NEM 681) ist eigentlich ziemlich einfach - und zunächst waren die entsprechenden Lokdekoder unschlagbar klein, entsprechend wurden sie auch oft in der Spur N und Z verwendet. Es gibt im SX System 112 Adressen für Loks und Dekoder/Encoder - was für die meisten Anlagen inkl mittelgrosser Club-Anlagen wohl ausreichen dürfte. (inzwischen gibt es auch Erweiterungen dazu, siehe z.b. von Rautenhaus). Daten und Rückmeldungen (z.B. auch von Tastern) werden über den gleichen Bus geleitet, dies macht es vergleichsweise einfach, Stellpulte zu bauen.

Ausserdem gibt es auch viele Selbstbauprojekte, z.B. beschreibt Herr Steinhart ( http://www.steinhartw.de/ ) einen Servo Weichendekoder, der nur Materialkosten von 2 Euro hat!

In einer Artikelserie in der Digitalen Modellbahn" habe ich den Selbstbau des Selectrix Weichendekoders beschrieben, hier zum Download (mit freundlicher Genehmigung der Dig.Moba.):

Teil1: Digitalsysteme

Teil2: Decodierung des SX Signals

Teil3: Selectrix Weichendekoder SX-WDEC1

Teil4: Software für den SX-WDEC1


mehr zur Dekodierung des Selectrix Signals

Wir benutzen SX auf 2 Anlagen (eine nach deutschem und eine nach amerikanischem Vorbild) in unserem lokalen Club ( http://www.ibmklub-bb.de/ ), das war für mich der Anlass, ein SX Java Programm zum "debuggen" der Anlage zu schreiben. hier geht es zum SX3 Programm.


unsere Bauprojekte:

Selectrix und Arduino

SX3 PC Software

Selectrix-Signal Dekodierung mit einem C-Programm

Selectrix Weichendekoder 1.0

Selectrix Lokdecoder - Version 0.1

Trix und Selectrix are registered trademarks of the Märklin, Göppingen, Germany

Andro Panel

Quick Start for Andro Panel Program for Android Tablets
AndroPanel communicates with the SX3 PC server via the sxnet protocol. It uses xml-based config files and displays the tracks and turnouts on an Android tablet. Tab on a turnout and it will change its state. One loco can be controlled additionally. If you enable "DEMO"-mode, then the SX3-PC program is simulated and the data are just echoed back. In this mode you can see the program working independently of any (Selectrix) model railroad hardware.

The panel is coded as xml in the file "panel-demo.xml". Only the tracks and sensors have to be coded, turnouts are calculated automatically the first time tracks are read. Use a raster of 20x20, see example file below.

The Locos are coded in the file "locos-demo.xml" (in directory /sdcard/andropanel/). Copy these file and edit them to match your layout, then select your newly edited files in the settings. The LOCO filenames must start with "loco", the PANEL filenames with "panel" to enable the settings program to find them.

... more to come ...

Example File "locos-demo.xml" - name, sx-address and mass (1...5) are the attributes for each loco.

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<loco-config >
  <locolist name="ibm1" >
    <loco adr="22" name="Lok22" mass="2"/>
    <loco adr="97" name="SchönBB" mass="2"/>
  </locolist> 
</loco-config>

Example File "panel-demo.xml", define tracks and sensors, the program will calculate the turnouts from the intersections of the track.

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<layout-config>
  <panel name="ibm1">
    <track x="0" y="60" x2="300" y2="60" />
    <track x="20" y="60" x2="60" y2="100" />
    <track x="20" y="100" x2="240" y2="100" />
    <track x="40" y="60" x2="80" y2="20" />
    <track x="60" y="40" x2="240" y2="40" />
    <track x="200" y="100" x2="240" y2="60" />
    <track x="80" y="20" x2="260" y2="20" />
    <track x="240" y="40" x2="260" y2="60" />
    <sensor name="CS24" x="140" y="60" sxadr="102" sxbit="4" />
    <sensor name="CS26" x="140" y="100" sxadr="102" sxbit="5" />
    <sensor name="CS22" x="100" y="40" x2="180" y2="40" sxadr="102" sxbit="3" />
  </panel> 
</layout-config>

After the program has done its turnout calculation and after you have set the sx-addresses (in the EDIT mode), you get a result similar to this example file:

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<layout-config>
  <panel name="ibm1">
    <track x="0" y="60" x2="300" y2="60" />
    <track x="20" y="60" x2="60" y2="100" />
    <track x="20" y="100" x2="240" y2="100" />
    <track x="40" y="60" x2="80" y2="20" />
    <track x="60" y="40" x2="240" y2="40" />
    <track x="200" y="100" x2="240" y2="60" />
    <track x="80" y="20" x2="260" y2="20" />
    <track x="240" y="40" x2="260" y2="60" />
    <turnout x="20" y="60" x2="34" y2="60" xt="30" yt="70" sxadr="80" sxbit="4" />
    <turnout x="40" y="60" x2="54" y2="60" xt="50" yt="50" sxadr="12" sxbit="5" />
    <turnout x="240" y="60" x2="226" y2="60" xt="230" yt="70" sxadr="6" sxbit="3" />
    <turnout x="60" y="100" x2="46" y2="100" xt="50" yt="90" sxadr="5" sxbit="1" />
    <turnout x="200" y="100" x2="214" y2="100" xt="210" yt="90" sxadr="6" sxbit="3" />
    <turnout x="60" y="40" x2="70" y2="30" xt="74" yt="40" sxadr="5" sxbit="2" />
    <turnout x="260" y="60" x2="246" y2="60" xt="250" yt="50" sxadr="13" sxbit="4" />
    <sensor name="CS24" x="140" y="60" sxadr="102" sxbit="4" />
    <sensor name="CS26" x="140" y="100" sxadr="102" sxbit="5" />
    <sensor name="CS22" x="100" y="40" x2="180" y2="40" sxadr="102" sxbit="3" />
  </panel> 
</layout-config>

SX Weichen- und Signaldekoder

Aufbau mit einem ATtiny2313 - speziell für Weichenmotoren (z.B. die US Tortoise ®, die wir meist verwenden - prinzipiell müsste die Schaltung nach Anpassung des Power Supply Teils auch mit denen von Hoffmann / Conrad funktionieren) und für Signale.

hier ein Foto:

Besprochen ist der Dekoder in einer Artikelserie in der "Digitalen Modellbahn".

hier zum Download (mit freundlicher Genehmigung der Dig.Moba.):

Teil1: Digitalsysteme

Teil2: Decodierung des SX Signals

Teil3: Selectrix Weichendekoder SX-WDEC1

Teil4: Software für den SX-WDEC1


Der Link zum Sourcecode (GPL) (sxread.c ist der "spezifische" Teil, sxtiny.c die SX-Bibliothek mit der Interrupt Verarbeitung)

Der Link zum wdec1.hex File (zum Programmieren des ATtiny2313 - Fuses beim Attiny2313 auf E4 99 FF (interner Osz.8Mhz, kein CKDIV, BOD=100))

SX3 - PC Software

Die Selectrix Inhalte werden Schritt für Schritt auf die neue Webseite opensx.net umgestellt !

ausführliche Anleitung zum Programm (Dank an Kai G. Schneider für diese Anleitung und fürs Testen des Programms!)

Das System:
Selectrix™ ist ein relativ einfaches Digitalsystem (in der ursprünglichen Version) – es gibt 112 Adressen (auch „Kanäle“ genannt) mit jeweils 8 Bit Daten, die regelmäßig wiederholt werden. Daher kann man den Gesamtzustand des Systems jeweils gut auf einem Bildschirm darstellen, es gibt bereits einige sogenannte „SX Monitor“ Programme. Jede diese 112 Adressen kann entweder zur Loksteuerung, Weichen- oder Signalsteuerung oder für Rückmeldezwecke (Belegtmelder/Sensoren) verwendet werden - es gibt also keinen separaten Rückmeldebus. DAS IST ALLES! Einfach und zweckmäßig.
Das SX3 Programm: ( zum Download und zur SX3 Installation )
Das Programm entstand aus dem Wunsch heraus, einen Selectrix-"Monitor" auch unter Linux verwenden zu können. Wie bei allen ähnlichen Programmen gibt es die Gesamtübersicht, den „SX Monitor“ - mit der Besonderheit, dass alle Kanäle, die von „0“ verschiedene Daten haben, gelb hinterlegt sind - und wenn sich gegenüber der letzten Sekunde die Daten geändert haben, werden sie Orange hinterlegt. (diese SX Monitor Fenster gibt es nur, wenn das Interface ein Rautenhaus 825SLX ist, nicht beim alten Trix™ Interface). Hierbei wird die übliche SX-Darstellung gewählt mit Bit 1 bis Bit 8, wobei das niederwertige zuerst gezeigt wird.

Daneben gibt es bei „SX3“, die Möglichkeit, weitere Fenster zu öffnen, um gezielt Loks zu steuern und auch Weichen und Signale zu beinflussen.
mit einem anderen Fenster können Belegtmelderausgelesen werden (der Adressbereich geht bei allen Fenstern IMMER von 0 bis 111, Sie können also auch Belegtmelder simulieren, indem Sie auf der gleichen Adresse ein Weichenfenster aufrufen und die entsprechenden Bits aktivieren) Hier das "Main" Window, in dem mit dem Interface verbunden wird, die Gleisspannung kontrolliert wird und mit dem die zusätzlichen Fenster geöffnet werden können.

Settings/Einstellungen
Es werden derzeit nur die Interfaces von Trix, Rautenhaus SLX825 SLX852 und Stärz ZS1 unterstützt.
Es ist ein Simulations Modus vorhanden, in dem nur intern die SX Bus Daten gespeichert werden, dies eignet sich zB zum Testen von anderer SW und funktioniert auch, wenn kein Selectrix Interface angeschlossen ist.

Die Adresse der Weichen/Signale setzt sich zusammen aus SX-Adresse und SX-Bit (also Weiche 883 heisst: Weichenadresse 88, angeschlossen an Bit 3) steuern) – er arbeitet ziemlich fehlertolerant, um mit möglichst vieler Client-SW (zB mit der Android SW) zu arbeiten (so ist es zB egal, welches „Format“ und wieviele SpeedSteps vorgegeben werden – es wird auf jedenfall „Selectrix“ verwendet mit 31 Fahrstufen).

SXnet Server - Port 4104

Die AndroPanel SW verwendet nicht mehr das SRCP Protokoll, sondern das einfachere SXnet Protokoll auf dem Port 4104, es öffnet sich ein Fenster, das die entsprechenden Client anzeigt.

SRCP Server - Port 4303

Er ist noch nicht voll implementiert (im Moment kann er Loks, Weichen/Signale, Sensoren/Rückmelder und Power on/off). In den Settings muss eine Liste mit Sensoren angegeben werden, damit die Rückmeldung dafür automatisch erfolgen kann.

Lanbahn Server/Client

Im Moment (SX3, rev 1.1) werden nur die "LOCO" commands interpretiert und an Selectrix weitergereicht. Link zur Lanbahn Seite

zum Download und zur SX3 Installation

SX3 RaspberryPI

Das Programm SX3 läuft auch auf dem RaspberryPI, vorausgesetzt:

1. Sie haben JAVA installiert, siehe
Raspberry PI - Oracle JDK

2. Sie habe die rxtx-lib installiert:

sudo apt-get install librxtx-java

mehr zum rxtx-setup in Ubuntu

3a. Sie verwenden einen USB-to-Serial Adapter (oder ihre Selectrix-Zentrale ist sowieso über USB verbunden), der wird dann meist als /dev/ttyUSB0 angelegt.

ODER

3.b. Sie verwenden die serielle Schnittstelle beim GPIO-Anschluss mit einem entsprechenden Adapter auf die RS232 Pegel (wie zum Beispiel http://www.microbot.it/documents/mr002-001_datasheet.pdf). Diese Schnittstelle wird nicht von rxtx-lib gefunden, so dass sie einen symbolic link anlegen müssen auf ein Device, das rxtx kennt, dann gehts:

sudo ln -s /dev/ttyAMA0 /dev/ttyS0

dann wird /dev/ttyS0 gefunden und kann benutzt werden.

4. Download von SX3....zip und unzip dieses Files. Dann in das Verzeichnis wechseln, in dem SX3.jar liegt.

5. Beim Aufruf von SX3 müssen Sie den Java-Library-Path angeben, sonst wird die rxtx-lib nicht gefunden, also zum Beispiel

cd /home/pi/sx3/dist
java -Djava.library.path=/usr/lib/jni -jar SX3.jar

Screenshots:

SX Lokdecoder 0.1

Bisher existiert nur ein "Breadboard", natürlich wieder mit dem Arduino Mini - für Spur Null würde es schon funktionieren, aber der Dekoder muss wohl noch ein bisschen schrumpfen, bis es in eine H0 Lok passt... Immerhin schon mit NEM Normstecker!

Ein Layout könnte dann etwa so aussehen:

bisher allerdings nur rein virtuell...

Zur Dekodierung des Selectrix Gleissignals ("PX") wird fast die gleiche SW verwendet wie beim SX Dekoder, nur dass die beiden Gleissignale über je einen 47k Widerstand an zwei Eingänge des Arduino gelegt und 2 verschiedene Interrupts ausgelöst werden (jeweils auf "RISING" getriggert). Der eine bedeutet dann "logisch 1" (_bit=1 in der SX-Lib) und der andere "logisch 0" (_bit=0). Dann ist die weitere Verarbeitung absolut identisch.

... das Schaltbild folgt noch ...

Selectrix (SX) Dekodierung

Die Dekodierung ist ausführlich beschrieben in

Teil2 der Artikelreihe aus der Dig-Moba: Decodierung des SX Signals.

Mehr zu Selectrix jetzt auf opensx.net.