ZBL Statussignal via WIO und Neopixel auf dem Stellpult.
Auf dem Stellpult befinden sich 44 RGB Leds, mit WS2811 und WS2812 Chips, hier die Übersicht.
Für die Anzeige auf dem Stellpult benötigen wir pro Block ein Statussignal und jeweils einen Ausgang für dieses.
co_ZBL_Blockstatus_bk1
co_ZBL_Blockstatus_bk2
co_ZBL_Blockstatus_bk3
Die Signale in den jeweiligen Block eintragen und den Router laufen lassen.
https://wiki.rocrail.net/doku.php?id=block-signals-de#status-signal
Auf meinem Stellpult wird der Status des Blocks in den LED‘s der Start/Zieltasten (3,21,26) angezeigt, also trage ich die Adressen dieser unter Schnittstelle des jeweiligen Ausgangs ein.
Natürlich kann auch eine separate LED für den Blockstatus verwendet werden.
Für die Anzeige benötigen wir ein XML Skript welches den Ausgang für die LED‘s je nach Status des Signals/Blocks ändert.
Alternativ müsste sonst pro Aspekt und Signal ein Ausgang (8Stück) erstellt werden, hier zeigt sich der Vorteil von XML es kann komplexe Vorgänge reduzieren.
Signalbedeutung
In dem Skript werden, je nach Begriff, die Farben des jeweiligen Ausgangs geändert und blinken aktiviert oder deaktiviert.
Für mich habe ich es wie folgt umgesetzt, dies darf sich natürlich jeder wie er möchte anpassen.
Zeichen, Farbe | Status | Begriff | LED-Stellpult |
---|---|---|---|
-, grau | Keine Information | 0 | aus |
X, grau | Stopp | 1 | weiß Dauer leuchtend |
A, grün | Automatk; fährt | 2 | grün Dauer leuchtend |
A, blau | Halbautomatik; fährt | 3 | blau Dauer leuchtend |
O, grau | Leerlauf | 4 | weiß blinkend |
W, grün | Automatik; warten | 5 | grün blinkend |
W, blau | Halbautomatik; warten | 6 | blau blinkend |
W, gelb | Kein Ziel gefunden; Für mehr Informationen Trace prüfen. | 7 | gelb blinkend |
<?xml version="1.0" encoding="UTF-8"?> <xmlscript trace="true"> <vr id="vr_SZTS_cobk_block" text="" value="" generated="true"/> <!--Blockkennung aus Signal --> <vr id="vr_SZTS_aspects_Statussignal" text="" value="" generated="true"/> <!--Aspekt des Statussignals --> <vr id="vr_SZTS_co_Statussignal" text="co_SZT_" value="" generated="true"/> <!--Anfang der ID des ZBL Ausgangs für das Statussignal --> <vr id="vr_SZTS_co_Statussignal" text="co_ZBL_Blockstatus_" value="" generated="true"/> <!--Anfang der ID des ZBL Ausgangs für das Statussignal --> <vr id="vr_SZTS_tx_Statussignal" text="tx_SZT_bss_" value="" generated="true"/> <!--Anfang der ID des Textfelds für den Blockstatus --> <vr id="vr_SZTS_tx_bss" text="" value="" generated="true"/> <!--Variable zum zusammensetzen der Kennung des Textfeld --> <query vr="vr_SZTS_cobk_block" table="sglist" id="%callerid%" get="blockid"/> <!-- Block ID des Signals ermitteln --> <query vr="vr_SZTS_aspects_Statussignal" table="sglist" id="%callerid%" get="aspect"/> <!--Aspekt des Statussignals ermitteln --> <if condition="@vr_SZTS_aspects_Statussignal = 0"> <then> <trace text="Der Staus von @vr_SZTS_cobk_block ist Aspekt 0."/> <vr id="vr_SZTS_co_ZBL_bss" text="@vr_SZTS_co_Statussignal @vr_SZTS_cobk_block" format="%s%s"/> <co id="@vr_SZTS_co_ZBL_bss" cmd ="on" value="50" blink="false"> <color red="0" green="0" blue="0"/> </co> </then> </if> <if condition="@vr_SZTS_aspects_Statussignal = 1"> <then> <trace text="Der Staus von @vr_SZTS_cobk_block ist Aspekt 1."/> <vr id="vr_SZTS_co_ZBL_bss" text="@vr_SZTS_co_Statussignal @vr_SZTS_cobk_block" format="%s%s"/> <co id="@vr_SZTS_co_ZBL_bss" cmd ="on" value="50" blink="false"> <color red="255" green="255" blue="255"/> </co> </then> </if> <if condition="@vr_SZTS_aspects_Statussignal = 2"> <then> <trace text="Der Staus von @vr_SZTS_cobk_block ist Aspekt 2."/> <vr id="vr_SZTS_co_ZBL_bss" text="@vr_SZTS_co_Statussignal @vr_SZTS_cobk_block" format="%s%s"/> <co id="@vr_SZTS_co_ZBL_bss" cmd ="on" value="50" blink="false"> <color red="0" green="255" blue="0"/> </co> </then> </if> <if condition="@vr_SZTS_aspects_Statussignal = 3"> <then> <trace text="Der Staus von @vr_SZTS_cobk_block ist Aspekt 3."/> <vr id="vr_SZTS_co_ZBL_bss" text="@vr_SZTS_co_Statussignal @vr_SZTS_cobk_block" format="%s%s"/> <co id="@vr_SZTS_co_ZBL_bss" cmd ="on" value="50" blink="false"> <color red="0" green="0" blue="255"/> </co> </then> </if> <if condition="@vr_SZTS_aspects_Statussignal = 4"> <then> <trace text="Der Staus von @vr_SZTS_cobk_block ist Aspekt 4."/> <vr id="vr_SZTS_co_ZBL_bss" text="@vr_SZTS_co_Statussignal @vr_SZTS_cobk_block" format="%s%s"/> <co id="@vr_SZTS_co_ZBL_bss" cmd ="on" value="50" blink="true"> <color red="255" green="255" blue="255"/> </co> </then> </if> <if condition="@vr_SZTS_aspects_Statussignal = 5"> <then> <trace text="Der Staus von @vr_SZTS_cobk_block ist Aspekt 5."/> <vr id="vr_SZTS_co_ZBL_bss" text="@vr_SZTS_co_Statussignal @vr_SZTS_cobk_block" format="%s%s"/> <co id="@vr_SZTS_co_ZBL_bss" cmd ="on" value="50" blink="true"> <color red="0" green="255" blue="0"/> </co> </then> </if> <if condition="@vr_SZTS_aspects_Statussignal = 6"> <then> <trace text="Der Staus von @vr_SZTS_cobk_block ist Aspekt 6."/> <vr id="vr_SZTS_co_ZBL_bss" text="@vr_SZTS_co_Statussignal @vr_SZTS_cobk_block" format="%s%s"/> <co id="@vr_SZTS_co_ZBL_bss" cmd ="on" value="50" blink="true"> <color red="0" green="0" blue="255"/> </co> </then> </if> <if condition="@vr_SZTS_aspects_Statussignal = 7"> <then> <trace text="Der Staus von @vr_SZTS_cobk_block ist Aspekt 7."/> <vr id="vr_SZTS_co_ZBL_bss" text="@vr_SZTS_co_Statussignal @vr_SZTS_cobk_block" format="%s%s"/> <co id="@vr_SZTS_co_ZBL_bss" cmd ="on" value="50" blink="true"> <color red="255" green="255" blue="0"/> </co> </then> </if> </xmlscript>
Das Skript wird unter den Aktionen als „SZT_Blockstatus_Signal.xml“ hinterlegen und in den Statussignalen bei den Aktionen eingetragen.
Das war es schon nun wird der Status des Blocks über die LED angezeigt.
Hier die gezipte Plandatei.
szt_skript_zbl_statussignal.zip
Erstellt mit den Versionen Rocrail 2.1.2261 und WIO 510