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