RailCo - variabilní zastavování lokomotiv

  1. Úvod
  2. Požadavky
  3. Řešení
  4. Detailní popis
  5. Závěr

Úvod

Důrazně upozorňuji, že popisuji systém Lenz, a že jiné systémy mohou mít stejné nebo podobné jen dílčí části !!!  V článku Komponenty jsou detailnější informace o některých použitých prvcích.

    Popisovaný software je TrainController, verze 5.8, produktu Railroad & CO, fy Freiwald Software (dále jen TC). Řada věcí je shodná i s verzí 7 nebo 8. Kdo však má Gold (7 či 8), nemusí tohle číst. Tam to jde lépe a radostněji. Dokonce i v Silveru (7 či 8) to jde už o něco lépe, neboť lze vynechat nahazování vypínače makrem (jde to přímo). To už však předbíhám. V nižších verzích, jak mi bylo několikrát sděleno, to nejde. To ale výrobce nezná české programátory.

    Znalosti předchozího pojednání o tomto ovládacím softwaru se předpokládají. K dispozici je také popis všech komponent. Tento článek by měl být součástí čl. o Zastavování nebo Tipy a triky. Už jsem ale několikrát dostal vynadáno, že staré články upravuji a navíc, toto je perla mého programátorského snažení. Zaslouží si vlastní článek.

Na začátek článku

Požadavky

    Vlak vjede do stanice a zastaví. Ale kde? Nákladní vlaky a delší rychlíky obvykle musí až k odjezdovému návěstidlu. Aby se do bloku vešly. Jde o modelovou železnici, skutečné délky obvykle k dispozici nejsou. Ale když vjede do nádraží motoráček, je divné, když jede tak daleko. Třeba zcela za nástupiště. Takže je třeba ho zastavit dříve. Metod je na to několik. Dva i více bloků za sebou, přepínání na Posun, virtuální blok. Všechny tyto metody mají však některé, velmi nežádoucí vedlejší efekty. Nákladnost, pracnost, složitost a spoustu dalších.

    Metoda, popisovaná dále, nemá tyto nectnosti žádné. Využívá zcela standardních prvků tohoto programu. Možná je trochu rozvláčná, ale lepší řešení zatím nemám. Třeba se to ještě vylepší časem. V každém případě je výsledkem zastavení libovolné lokomotivy (vlaku), která jede podle libovolného Plánu, v libovolném bloku, na libovolném místě.

Na začátek článku

Řešení

    Takže, jak to vlastně funguje. Pro jednoduchost popíšu jen dvě rozdílná zastavení, třeba krátké a dlouhé.

    Každý blok, kde chceme zastavit na dvou místech, musí mít BRAKE a STOP indikátory (v "sedmičce" Markery) dvakrát. Na podmínce je stačí přepínat a je to. Jako BRAKE je nutno použít virtuální kontakt (Virtual Contact, dále VK), protože má Podmínku (Condition) a do té se jako přepínač použije (kupodivu) Přepínač (Toggle Switch) nebo Vypínač (On-Off Switch). Tohle bylo celkem jednoduché. Naprogramoval jsem a vyzkoušel. Přepínač se nastavil ručně jednou tak, podruhé opačně. Mašina zastavovala jednou na prvním STOPu, podruhé na tom druhém. Pohoda. Zbývalo docílit toho, aby Přepínač nastavovala mašina. Každá podle potřeby. Některá ano, jiná ne. 

Schéma celé operace.

    Celý princip je vidět na předchozím obrázku. Následně si to probereme hezky popořadě.

Na začátek článku

Detailní popis

 
V Plánu můžeme pro každý blok spustit řadu akcí. O tom již řeč byla v hlavním článku. Teď to lze krásně využít. V bloku, kde požadujeme variabilní zastavení, nastavíme na záložce Actions spuštění např. funkce User1. Ta se spustí při vjezdu mašiny (řízené tímto Plánem) do bloku (Entry).
 
Při vjezdu mašiny do bloku B01 se spustí (pro tento účel nově nadefinovaná) funkce mašiny User1. Sice předběhnu, ale všimněte si ještě spuštění makra na položce Release, tedy při uvolnění bloku. Zde je spuštěno makro, které nastaví zase počáteční stav.
 
V oknu vlastností lokomotivy (Engine) lze každé mašině nadefinovat určitou funkci. Nejpoužívanější jsou tam už předdefinované, např. ovládání světel, píšťaly, zapnutí posunu atd. Přes tlačítko Knihovna (Library...) jdou nejen editovat (ikona, název...), ale jdou přidávat i další. Do jakého počtu, však výrobce neuvádí. Tyto funkce mohou ovládat tři skupiny příkazů (Type). Funkce lokodekodéru (Type=Decoder), zvukové soubory z PC (Type=Sound File) nebo makra (Type=Macro). A právě ta poslední možnost, tedy makro, je klíčová v daném případě.
 
V makru M01 je totiž přestaven prvek (přepínač, vypínač, zde tedy P01),...
 
...jehož stav je pak vyhodnocen v podmínce Brake a Stop indikátorů, použitých pro zastavení.
 
Makro, které při uvolnění bloku nastaví P01 do výchozího stavu.

    No, a to je vše. Celá činnost pak vypadá následovně.

  1. Mašina vjede do bloku. Pokud má definovanou funkci User1, tato funkce se aktivuje.
  2. Aktivní User1 spustí makro M01.
  3. Makro M01 přepne přepínač P01.
  4. Přepínač P01 vlastně filtruje požadovaný pár Brake a Stop indikátorů a podle nich mašina zastaví.
  5. Při uvolnění bloku se aktivuje makro M01off, které přepínač P01 nastaví do výchozí polohy.

    Teď ještě upřesňující informace.

    Každý blok, kde chceme variabilní zastavení aplikovat, musí mít (pro oba směry):

  • Jedno makro (zde M01) pro každou sadu indikátorů Brake a Stop.
  • Jedno "vypínací" makro (zde M01off), které nastaví přepínací prvek (zde P01) do výchozí polohy.
  • Přepínací prvek (zde P01). Lze použít jak přepínač (Toggle Switch), tak vypínač (On-Off Switch). Pokud požadujeme více, než dvě různá zastavení, jsou vypínače nutné. V činnosti není buď žádný (funguje pak "základní" sada Brake a Stop) nebo vždy jen jeden.
  •     Každá mašina, kterou chceme zastavit jinde, než na základní sadě Brake a Stop, musí mít definovanou funkci, která aktivuje makro pro příslušný blok. Pokud chceme tedy "odlišně" zastavovat v deseti blocích, musí mít mašina deset funkcí, které budou aktivovat makra, vždy pro příslušný blok. Např. User1 bude aktivovat M01, User2 bude aktivovat M02...User10 bude aktivovat M10. Bez aktivace makra pro příslušný blok budou ve funkci "základní" indikátory.

        Počet možných míst zastavení v jednom bloku může být klidně mnohem vyšší. V jediném bloku je možno nadefinovat tři, čtyři, pět... různých zastavovacích míst. Tolik také potom musí být i sad (párů) indikátorů Brake a Stop. Pro každý směr. Použití virtuálních kontaktů, které jsou na tyto indikátory použity, lze samozřejmě různě kombinovat. Stop indikátor pro jeden směr může fungovat jako Brake indikátor pro směr opačný atd. Přiměřeně se rovněž zvýší počet přepínacích prvků. Při dvou zastavovacích místech je třeba jednoho přepínače nebo vypínače, při n-místech je potřeba n-1 vypínačů. Tyto přepínací prvky a také makra jsou už pro oba směry společné.

        Variabilní zastavení funguje pochopitelně pouze při jízdě podle nějakého Plánu. Použijeme-li pro pohyb mašiny třeba AutoTrain D&D, zastaví mašina podle základních indikátorů.

        Příklad programu je v layoutu lokopin_varstop*, který naleznete ve známém balíku lokopin_railco_58.zip. V bloku B01 je použit ten nejjednodušší systém zastavení. Tedy jeden Brake a Stop indikátor, odvozený od jednoho virtuálního kontaktu BM01P. Vzdálenost Stop indikátoru je tvořena Rampou. VK BM01P má v podmínce přepínač P01 v levé, tedy základní poloze. Sada Brake a Stop pro druhé, kratší zastavení, je odvozena od druhého virtuálního kontaktu BM11P. Vzdálenost Stop indikátoru je opět tvořena Rampou, tentokrát však kratší, než v prvním případě. VK BM11P má v podmínce přepínač P01 v pravé, tedy opačné poloze.

        V layoutu lokopin_varstop* jsou dva plány. Jeden spouští jednu mašinu z bloku B01, druhý jinou mašinu z bloku B02. Obě jezdí ve směru hodinových ručiček, každá zastavuje v těchto dvou blocích jinak. Podle funkcí, přidělených mašinám a použitých pak v blocích v obou Plánech. Pochopitelně nepředpokládám, že by to někdo stavěl, ale lze to aplikovat i na zcela jiném kolejišti nebo to spouštet jen v simulaci. Především tento layout slouží k prohlédnutí a k inspiraci.

        V bloku B02 je to naprogramováno daleko "komfortněji" (viz násl. obrázek). Jsou zde celkem 4 sady Brake a Stop indikátorů, pro jeden směr. Můžeme zde tedy zastavovat na čtyřech různých místech. A taky na čtyřech různých místech začít brzdit. Sada B2 a S2 je základní a je funkční, není-li nastaven žádný z vypínačů V021, V022 a V023. Další sady fungují obdobně. Při aktivním V021 jsou to B21-S21, při aktivním V022 jsou to B22-S22 a  při aktivním V023 jsou to B23-S23. Vypínače V021, V022 a V023 se vzájemně vybavují, zapnutý může být pouze jeden nebo žádný. Je to však víceméně zbytečné, neboť v Plánu pak stejně aktivujeme pouze jedno makro pro tento blok. Ale při ručním ovládání a testování (tyto ovládací prvky jdou normálně za provozu přepínat myší) je to nutné.

        A nakonec...

  • Virtuální kontakty musí mít minimální vzdálenost spouštění 1 cm (zál. Reference, Distance 1). Při nule to zřejmě jaksi TC nestihne a nefunguje to.
  • Zkoušel jsem to v simulaci i v "sedmičce". Varianta Silver. Bronze vůbec neznám, v Goldu už to je zakomponované. V pohodě. Verze 7 má však právě nastavování Brake a Stop indikátorů poněkud odlišné od verze 5.8. Podle výrobce "uživatelsky příjemnější a snadnější". Tyto indikátory, v sedmičce nazývané Brake a Stop Markery, jsou vlastně neviditelné virtuální kontakty. Přístup na jejich vlastnosti je až přes blok, i např. v New Exploreru. Ze sekce indikátorů jsou vyjmuty. Za šťastné řešení to nepovažuji, ale dejme tomu. Při "natahování" layoutu lokopin_varstop* z verze 5.8 se vše přeneslo celkem dobře. Nové Markery se vytvořily podle starých VK, nepřenesly se však do nich podmínky a rovněž Distance 1 cm zmizela. To je třeba napravit a staré VK smazat, jsou tam pak zbytečně. Nebo naopak smazat nové Markery a místo nich použít ty staré VK. Lze oboje, první způsob je asi elegantnější. Tady se mi tedy systém kompatibility, směrem od starší verze, moc nelíbí.
  • Na začátek článku

    Závěr

        Zdá se to dosti kostrbaté, ale funguje to. Navíc, jako už obvykle, je trochu těžké tomu porozumět, ještě těžší je napsat to srozumitelně, ale naprogramuje se to razdva. Komu se to zdá obtížné, musí využít jednodušších možností, které jsou popsány v článku RailCo - kalibrace a zastavování lokomotiv.

        Na celé "akci" je mi nejvíce divné, že mi zatím všichni tvrdili, že to nejde. Nebo už je to dávno někde prezentované a já zase "vymyslel Ameriku" (pomalu se tato fráze stává mým mottem). Německá fóra totiž čtu minimálně (bez znalosti němčiny to jde špatně) a v Česku jsem na nic nenarazil. Nebo si to někdo nechává pro sebe. Neměl bych si to nechat patentovat?

    Na začátek článku
    Menu

    06.04.2010

     
      13.05.2015 (poslední editace))
         
    Spolupracovali: Martin Šimek, Igor Kmeť