13 Nulování

Někdy je potřeba zrušit již nastavenou jízdní cestu. K tomu slouží tlačítko TlacNulovani.

Skript Tlacitko_nulovani.py

TlacNulovani spouští z Logixu skript Tlacitko_nulovani.py.

Start skriptu

Při startu skript zkontroluje, zdali je tačítko ve stavu stisknuto – aktivní. Pokud ne, tak se skript ukončí.

Dále se kontroluje zdali není zapnutý režim Releovka nebo Manuál. Pokud ano, tak se skript ukončí. Pokud ne, tak byly splněny všechny podmínky a skript se spustí.

# Tlacitko_nulovani.py

# Petr Šídlo

import jarray

import jmri

if (sensors.provideSensor("TlacNulovani").getKnownState == INACTIVE) :

    # nic

    sensors.provideSensor("TlacNulovani").setKnownState(INACTIVE)

elif ((sensors.provideSensor("ZapReleovka").getKnownState() == ACTIVE) \

    or (sensors.provideSensor("ZapManual").getKnownState() == ACTIVE)) :

    # nejsou splněny podmínky pro nulování

    sensors.provideSensor("TlacNulovani").setKnownState(INACTIVE)

else :

    # tělo skriptu

Tlačítka NX

Tlačítka NX se používají pro stavění jízdní cesty. V panelu nejsou vidět. Pokud některé tlačítko nebo cesta zůstaly aktivní je třeba je vypnout.

# tlačítka NX

eep = jmri.InstanceManager.getDefault(jmri.jmrit.entryexit.EntryExitPairs)

seznam = eep.getNamedBeanSet()

# NX destination points

for nxdp in seznam :

    if (nxdp.isActive() == True) :

        idx_1 = nxdp.getUserName().find(" to ")

        t_start = sensors.provideSensor(nxdp.getUserName()[0:idx_1])

        t_end = sensors.provideSensor(nxdp.getUserName()[idx_1 + 4:len(nxdp.getUserName())])

        t_start.setKnownState(INACTIVE)

        t_end.setKnownState(INACTIVE)

Tlačítka releovka

Dále je třeba uvést všechny tlačítka pro stavění cesty releovky uvést do základní polohy.

# tlačítka releovka

TReMiZe = sensors.provideSensor("TReMiZe")

TReMiBi = sensors.provideSensor("TReMiBi")

TReMiK1Ze = sensors.provideSensor("TReMiK1Ze")

TReMiK1Bi = sensors.provideSensor("TReMiK1Bi")

TReMiK2Ze = sensors.provideSensor("TReMiK2Ze")

TReMiK2Bi = sensors.provideSensor("TReMiK2Bi")

TReMiK4Bi = sensors.provideSensor("TReMiK4Bi")

TReRuZe = sensors.provideSensor("TReRuZe")

TReRuBi = sensors.provideSensor("TReRuBi")

TReRuK1Ze = sensors.provideSensor("TReRuK1Ze")

TReRuK1Bi = sensors.provideSensor("TReRuK1Bi")

TReRuK2Ze = sensors.provideSensor("TReRuK2Ze")

TReRuK2Bi = sensors.provideSensor("TReRuK2Bi")

TReKLZe = sensors.provideSensor("TReKLZe")

TReKLBi = sensors.provideSensor("TReKLBi")

tlacitka_releovka = [TReMiZe, TReMiBi, TReMiK1Ze, TReMiK1Bi, TReMiK2Ze, \

    TReMiK2Bi, TReMiK4Bi, TReRuZe, TReRuBi, TReRuK1Ze, TReRuK1Bi, TReRuK2Ze, \

    TReRuK2Bi, TReKLZe, TReKLBi]

for tlacitko_Re in tlacitka_releovka :

    tlacitko_Re.setKnownState(INACTIVE)

Návěstidla

Také návěstidla je třeba uvést do výchozího stavu.

# návěstidla

L = masts.getSignalMast("L")

L1 = masts.getSignalMast("L1")

L2 = masts.getSignalMast("L2")

PrL = masts.getSignalMast("PřL".decode("UTF-8"))

S = masts.getSignalMast("S")

S1 = masts.getSignalMast("S1")

S2 = masts.getSignalMast("S2")

PrS = masts.getSignalMast("PřS".decode("UTF-8"))

SK = masts.getSignalMast("SK")

PrSK = masts.getSignalMast("PřSK".decode("UTF-8"))

Se1 = masts.getSignalMast("Se1")

Se2 = masts.getSignalMast("Se2")

Se3 = masts.getSignalMast("Se3")

Se4 = masts.getSignalMast("Se4")

STUJ                           = "Stůj".decode("UTF-8")

VOLNO                          = "Volno"

VYSTRAHA                       = "Výstraha".decode("UTF-8")

OCEKAVEJ_40                    = "Očekávej 40".decode("UTF-8")

RYCHLOST_40_A_VOLNO            = "Rychlost 40 a volno"

RYCHLOST_40_A_VYSTRAHA         = "Rychlost 40 a výstraha".decode("UTF-8")

RYCHLOST_40_A_OCEKAVEJ_40      = "Rychlost 40 a očekávej 40".decode("UTF-8")

POSUN_ZAKAZAN                  = "Posun zakázán".decode("UTF-8")

POSUN_DOVOLEN                  = "Posun dovolen"

OPATRNE_NA_PRIVOLAVACI_NAVEST  = "Opatrně na přivolávací návěst".decode("UTF-8")

L.setAspect(STUJ)

L1.setAspect(STUJ)

L2.setAspect(STUJ)

PrL.setAspect(VYSTRAHA)

S.setAspect(STUJ)

S1.setAspect(STUJ)

S2.setAspect(STUJ)

PrS.setAspect(VYSTRAHA)

SK.setAspect(STUJ)

PrSK.setAspect(VYSTRAHA)

Se1.setAspect(POSUN_ZAKAZAN)

Se2.setAspect(POSUN_ZAKAZAN)

Se3.setAspect(POSUN_ZAKAZAN)

Se4.setAspect(POSUN_ZAKAZAN)

Snímače obsazení

Někdy se může stát, že některý blok zůstane viset ve stavu postavená jízdní cesta. To se opraví tím, že všechny snímače neobsazených bloků se obsadí a následně uvolní.

# snímače obsazení

SO_SK1 = sensors.provideSensor("SK1")

SO_SK2 = sensors.provideSensor("SK2")

SO_SK4 = sensors.provideSensor("SK4")

SO_SKr1 = sensors.provideSensor("SKr1")

SO_SKr2 = sensors.provideSensor("SKr2")

SO_SMi1 = sensors.provideSensor("SMi1")

SO_SMi2 = sensors.provideSensor("SMi2")

SO_SRu1 = sensors.provideSensor("SRu1")

SO_SRu2 = sensors.provideSensor("SRu2")

SO_SV1 = sensors.provideSensor("SV1")

SO_SV2 = sensors.provideSensor("SV2")

SO_SV3 = sensors.provideSensor("SV3")

SO_SV4 = sensors.provideSensor("SV4")

if (SO_SK1.getKnownState() == INACTIVE) :

    SO_SK1.setKnownState(ACTIVE)

    SO_SK1.setKnownState(INACTIVE)

if (SO_SK2.getKnownState() == INACTIVE) :

    SO_SK2.setKnownState(ACTIVE)

    SO_SK2.setKnownState(INACTIVE)

if (SO_SK4.getKnownState() == INACTIVE) :

    SO_SK4.setKnownState(ACTIVE)

    SO_SK4.setKnownState(INACTIVE)

if (SO_SKr1.getKnownState() == INACTIVE) :

    SO_SKr1.setKnownState(ACTIVE)

    SO_SKr1.setKnownState(INACTIVE)

if (SO_SKr2.getKnownState() == INACTIVE) :

    SO_SKr2.setKnownState(ACTIVE)

    SO_SKr2.setKnownState(INACTIVE)

if (SO_SMi1.getKnownState() == INACTIVE) :

    SO_SMi1.setKnownState(ACTIVE)

    SO_SMi1.setKnownState(INACTIVE)

if (SO_SMi2.getKnownState() == INACTIVE) :

    SO_SMi2.setKnownState(ACTIVE)

    SO_SMi2.setKnownState(INACTIVE)

if (SO_SRu1.getKnownState() == INACTIVE) :

    SO_SRu1.setKnownState(ACTIVE)

    SO_SRu1.setKnownState(INACTIVE)

if (SO_SRu2.getKnownState() == INACTIVE) :

    SO_SRu2.setKnownState(ACTIVE)

    SO_SRu2.setKnownState(INACTIVE)

if (SO_SV1.getKnownState() == INACTIVE) :

    SO_SV1.setKnownState(ACTIVE)

    SO_SV1.setKnownState(INACTIVE)

if (SO_SV2.getKnownState() == INACTIVE) :

    SO_SV2.setKnownState(ACTIVE)

    SO_SV2.setKnownState(INACTIVE)

if (SO_SV3.getKnownState() == INACTIVE) :

    SO_SV3.setKnownState(ACTIVE)

    SO_SV3.setKnownState(INACTIVE)

if (SO_SV4.getKnownState() == INACTIVE) :

    SO_SV4.setKnownState(ACTIVE)

    SO_SV4.setKnownState(INACTIVE)

Konec skriptu

Na závěr skriptu se uvede tlačítko Nulování do výchozího nestisknutého stavu.

# hotovo

sensors.provideSensor("TlacNulovani").setKnownState(INACTIVE)

vytvořeno 23. 10. 2019