LanbahnPanel

Die Software liegt auf github, zur eigenen Verwendung des Source Codes im Androidstudio – oder auch als apk zum Download und zur Installation auf einem Tablet mit Android >=4.0. Siehe LanbahnPanel Seite bei github.

Diese „LanbahnPanel“ Android Software ist gedacht zur Verwendung mit SX3PC – die Daten werden dabei per „sxnet“ Protokoll ausgetauscht. „LanbahnPanel“ verwendet generische Adressen für Weichen und Signale (und Routen), nur SX3PC wandelt diese dann in SX-Bus Adressen und Bits um.

LanbahnPanel Bedienung

Das LanbahnPanel Programm ist ein erweitertes AndroPanel Programm, das um eine Fahrstraßen-Steuerung erweitert wurde (die Loksteuerung wurde entfernt). Es verwendet seit Mai 2017 das SXNet-Protokoll (TCP/IP auf Port 4104), die vorherigen Versionen verwenden Multicast-UDP (Lanbahn Protokoll).

Mithilfe des SX3PC Programms wird eine Selectrix Zentrale über USB oder Serielle Schnittstelle gesteuert. Die allgemeinen (=Lanbahn) Adressen können im SX3PC Programm über die im Config-File definierten „Mappings“ in SX-Adressen (1 .. 103, je 8 Bit) umgewandelt werden – sie werden dann an die Selectrix Zentrale geschickt.

Hier eine Beispiel für ein „sxmapping“ (wenn man noch zusätzlich die Zahl der Bits angibt – zB nbit=“2″ – so können auch mehrere Bits gemapped werden, zB für mehrbegriffige Signale)

<sxmapping adr="841" sxadr="76" sxbit="4" />

LanbahnPanel – Panel-Konfigurations-File

Das Config-File wird sowohl vom SX3PC Programm als auch vom LanbahnPanel-Programm verwendet – das SX3PC Programm verwendet allerdings nur den „sxmappings“ Teil, das LanbahnPanel Programm die anderen Teile.

Das Config-File:

  • beschreibt Gleise, Weichen und Signale – Format ist XML
  • Weichen werden automatisch berechnet, wenn sich Gleise kreuzen
  • Sensor = Besetztmelder, können punktförmig (=US) oder im Gleis (=DE, UK) dargestellt werden
  • alle aktiven Panelelemente haben eine (fiktive) Lanbahn-Adresse (Adr: 1… 9999)
  • mehrbegriffige Signale können Werte von zB 0 ..3 (dreibegriffig) annehmen, hier ist 0 immer Rot und 1 immer grün
  • Fahrstraßen werden durch Nacheinander-Auswählen von 2 „Route-Buttons“ gestellt (orientiert sich an UK Vorbild)
  • Fahrstraßen werden nach 30 Sekunden automatisch wieder aufgelöst (wir haben keine Rückmelder bei „Lonstoke West“)

Dabei werden die „Route-Buttons“ über eine Nummer (Adresse) definiert und ihre Position auf dem Stellpult:

<routebutton x="20" y="20" adr="1000" />

Fahrstrassen werden über „route“ Elemente beschrieben:

<route id="2201" btn1="1000" btn2="1002" route="843,0;841,0;2100,1;2101,0" sensors="2000,2001" offending="" />

Jede Route hat also eine ID und 2 Buttons. Die „Soll-Stellung“ der jeweiligen Signale, Weichen (oder anderen Routes) wird dann in „route=“ definiert.

Die „Routes“ werden (genau wie alle anderen „fiktiven“ Adressen) im SX3PC Programm verwaltet, so dass, wenn man 2 oder 3 „LanbahnPanel“ Programme laufen hat, auf allen die gleichen Weichen/Signal-Stellungen angezeigt werden – auch bei den „fiktiven“ Elementen (z.B. Signale im verdeckten Teil der Anlage).

Beispiel-File für die Anlage „Lonstoke West“:

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<layout-config>
<panel name="Lonstoke West">
<mode sx="on" />
<sxmapping adr="843" sxadr="76" sxbit="1" />
<sxmapping adr="841" sxadr="76" sxbit="4" />
<sxmapping adr="842" sxadr="76" sxbit="3" />
<sxmapping adr="720" sxadr="74" sxbit="1" />
<sxmapping adr="721" sxadr="74" sxbit="2" />
<sxmapping adr="722" sxadr="72" sxbit="2" />
<sxmapping adr="760" sxadr="74" sxbit="7" nbit="2" />
<sxmapping adr="770" sxadr="72" sxbit="5" nbit="2" />
<sxmapping adr="750" sxadr="74" sxbit="5" />
<sxmapping adr="751" sxadr="72" sxbit="7" />
<sxmapping adr="780" sxadr="70" sxbit="7" nbit="2" />
<sxmapping adr="812" sxadr="70" sxbit="3" />
<sxmapping adr="810" sxadr="70" sxbit="1" />
<sxmapping adr="811" sxadr="70" sxbit="2" />
<sxmapping adr="501" sxadr="88" sxbit="1" nbit="2" />
<sxmapping adr="503" sxadr="88" sxbit="3" nbit="2" />
<sxmapping adr="506" sxadr="88" sxbit="6" nbit="3" />
<track x="3" y="20" x2="320" y2="20" />
<track x="3" y="40" x2="320" y2="40" />
<track x="40" y="70" x2="200" y2="70" />
<track x="10" y="90" x2="200" y2="90" />
<track x="260" y="90" x2="320" y2="90" />
<track x="210" y="40" x2="260" y2="90" />
<track x="210" y="20" x2="280" y2="90" />
<track x="40" y="90" x2="60" y2="70" />
<track x="80" y="20" x2="100" y2="40" />
<track x="101" y="40" x2="131" y2="70" />
<track x="132" y="70" x2="152" y2="90" />
<turnout x="210" y="20" x2="224" y2="20" xt="220" yt="30" adr="811" />
<turnout x="80" y="20" x2="94" y2="20" xt="90" yt="30" adr="843" />
<turnout x="210" y="40" x2="224" y2="40" xt="220" yt="50" adr="810" />
<turnout x="100" y="40" x2="86" y2="40" xt="90" yt="30" adr="841" />
<turnout x="101" y="40" x2="115" y2="40" xt="111" yt="50" adr="842" />
<turnout x="131" y="70" x2="117" y2="70" xt="121" yt="60" adr="720" />
<turnout x="132" y="70" x2="146" y2="70" xt="142" yt="80" adr="721" />
<turnout x="40" y="90" x2="54" y2="90" xt="50" yt="80" />
<turnout x="60" y="70" x2="54" y2="70" xt="50" yt="80" />
<turnout x="60" y="70" x2="46" y2="70" xt="50" yt="80" />
<turnout x="152" y="90" x2="138" y2="90" xt="142" yt="80" adr="722" />
<turnout x="280" y="90" x2="266" y2="90" xt="270" yt="80" adr="812" />
<signal x="130" y="50" x2="138" y2="50" adr="760" />
<signal x="148" y="10" x2="140" y2="10" adr="770" />
<signal x="38" y="10" x2="30" y2="10" adr="2100" />
<signal x="10" y="50" x2="18" y2="50" adr="2101" />
<signal x="308" y="10" x2="300" y2="10" adr="2102" />
<signal x="290" y="50" x2="298" y2="50" adr="2103" />
<signal x="170" y="100" x2="178" y2="100" adr="750" />
<signal x="170" y="80" x2="178" y2="80" adr="751" />
<signal x="290" y="100" x2="298" y2="100" adr="780" />
<routebutton x="20" y="20" adr="1000" />
<routebutton x="20" y="40" adr="1001" />
<routebutton x="140" y="20" adr="1002" />
<routebutton x="140" y="40" adr="1003" />
<routebutton x="300" y="90" adr="1004" />
<routebutton x="300" y="20" adr="1005" />
<routebutton x="300" y="40" adr="1006" />
<routebutton x="180" y="70" adr="1007" />
<routebutton x="180" y="90" adr="1008" />
<routebutton x="80" y="70" adr="1009" />
<routebutton x="80" y="90" adr="1010" />
<sensor x="30" y="20" x2="78" y2="20" adr="2000" />
<sensor x="105" y="20" x2="130" y2="20" adr="2001" />
<sensor x="150" y="20" x2="200" y2="20" adr="2002" />
<sensor x="224" y="20" x2="295" y2="20" adr="2003" />
<sensor x="30" y="40" x2="80" y2="40" adr="2004" />
<sensor x="114" y="40" x2="130" y2="40" adr="2005" />
<sensor x="150" y="40" x2="200" y2="40" adr="2006" />
<sensor x="240" y="40" x2="290" y2="40" adr="2007" />
<sensor x="220" y="50" x2="260" y2="90" adr="2009" />
<sensor x="240" y="50" x2="270" y2="80" adr="2008" />
<sensor x="284" y="90" x2="292" y2="90" adr="2010" />
<sensor x="113" y="52" x2="123" y2="62" adr="2011" />
<sensor x="150" y="70" x2="175" y2="70" adr="2012" />
<sensor x="152" y="90" x2="175" y2="90" adr="2013" />
<sensor x="90" y="70" x2="120" y2="70" adr="2014" />
<sensor x="90" y="90" x2="129" y2="90" adr="2015" />
<route id="2201" btn1="1000" btn2="1002" route="843,0;841,0;2100,1;2101,0" sensors="2000,2001" offending="" />
<route id="2202" btn1="1003" btn2="1001" route="843,0;841,0;842,0;760,2;2101,0" sensors="2005,2004" offending="" />
<route id="2242" btn1="1003" btn2="1000" route="843,1;841,1;842,0;760,3;2101,0" sensors="2005,2000" offending="" />
<route id="2243" btn1="1000" btn2="1003" route="843,1;841,1;842,0;760,0;2100,1;2101,0" sensors="2005,2000" offending="" />
<route id="2203" btn1="1007" btn2="1001" route="721,0;720,1;842,1;841,0;843,0;751,1" sensors="2004,2011,2012" offending="" />
<route id="2204" btn1="1008" btn2="1001" route="722,1;721,1;720,1;842,1;841,0;843,0;750,1" sensors="2004,2011,2013" offending=""/>
<route id="2205" btn1="1002" btn2="1005" route="770,2;811,0;2102,0" sensors="2002,2003" offending="" />
<route id="2206" btn1="1002" btn2="1004" route="770,3;811,1;812,1;780,0" sensors="2002,2008,2010" offending="2207,2209"/>
<route id="2207" btn1="1006" btn2="1003" route="2103,1;811,0;810,0;780,0" sensors="2007,2006" offending="2206,2209" />
<route id="2208" btn1="1004" btn2="1003" route="810,1;812,0;780,1,760" sensors="2010,2009,2006" offending="" />
<route id="2209" btn1="1004" btn2="1002" route="810,1;811,1;812,1;780,2" sensors="2010,2008,2002" offending="2207,2206" />
<route id="2210" btn1="1002" btn2="1000" route="843,0;841,0;770,0" sensors="2000,2001" offending="" />
<route id="2223" btn1="1001" btn2="1007" route="721,0;720,1;842,1;841,0;843,0;751,0" sensors="2004,2011,2012" offending="" />
<route id="2224" btn1="1001" btn2="1008" route="722,1;721,1;720,1;842,1;841,0;843,0;750,0" sensors="2004,2011,2013" offending="" />
<route id="2222" btn1="1001" btn2="1003" route="843,0;841,0;842,0;760,0" sensors="2005,2004" offending="" />
<route id="2211" btn1="1007" btn2="1009" route="842,0;721,0;720,0;722,0;751,1" sensors="2012,2014" offending="" />
<route id="2212" btn1="1008" btn2="1010" route="721,0;722,0;750,1" sensors="2013,2015" offending="" />
<route id="2213" btn1="1008" btn2="1009" route="720,0;721,1;722,1;750,1;751,0" sensors="2013,2014" offending="" />
<route id="2231" btn1="1009" btn2="1007" route="842,0;721,0;720,0;722,0;751,0" sensors="2012,2014" offending="" />
<route id="2232" btn1="1010" btn2="1008" route="721,0;722,0;750,0" sensors="2013,2015" offending="" />
<route id="2232" btn1="1009" btn2="1008" route="720,0;721,1;722,1;750,0;751,0" sensors="2013,2014" offending="" />
<route id="2240" btn1="1000" btn2="1007" route ="2100,2;843,1;841,1;842,1;720,1;721,0;751,0;722,0" sensors="2000,2011,2012" />
<route id="2241" btn1="1000" btn2="1008"  route ="2100,2;843,1;841,1;842,1;720,1;721,1;750,0;722,1" sensors="2000,2011,2013" />
<route id="2242" btn1="1007" btn2="1000" route ="2100,0;843,1;841,1;842,1;720,1;721,0;751,1;722,0" sensors="2000,2011,2012" />
<route id="2243" btn1="1008" btn2="1000"  route ="2100,0;843,1;841,1;842,1;720,1;721,1;750,1;722,1" sensors="2000,2011,2013" />
<comproute id="2300" btn1="1000" btn2="1005" routes="2201,2205" />
<comproute id="2301" btn1="1006" btn2="1001" routes="2207,2202" />
<comproute id="2302" btn1="1004" btn2="1001" routes="2208,2202" />
<comproute id="2303" btn1="1004" btn2="1000" routes="2209,2210" />
<comproute id="2304" btn1="1000" btn2="1004" routes="2201,2206" />
<lampgroup pos="3" adr="503" val="3" />
<lampgroup pos="2" adr="501" val="3"/>
<lampgroup pos="1" adr="506" val="7"/>
</panel>
</layout-config>