Jak jde čas, objevují se problémy, přicházejí dotazy od dalších uživatelů tohoto vynikajícího programu RailCo TrainController v.5.8 (TC). Byla by asi škoda, kdybych s tím ostatní neseznámil. Některé věci jsou zcela konkrétní, vztahují se k článkům, které jsou napsané a tam tedy provádím průběžnou editaci, doplnění, upřesnění. Některá témata jsou však zcela mimo minulý obsah a psát ke každé prkotině článek je nesmysl. Tak jsem se rozhodl přidat tento elaborát a sem přijde všechna podobná problematika. Většinu programování TC jsem prováděl vždy pro nějakého kolegu. Soubory yrr jsem zkoušel někdy pouze v simulaci a slouží tedy především pro inspiraci.
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.
Všechny komponenty TC jsou vyjádřeny grafickými prvky. Koleje, tlačítka, přepínače, návěstidla... Jejich vzhled lze do jisté míry ovlivnit. Přesný popis bohužel nepodám, neboť informační zdroje jsou zde velmi skoupé, ale něco přece jen udělat jde a to si ukážeme na konkrétním příkladu.
Běžné je použití dvoustavového návěstidla. Dost často použitého pro posun, tedy s bílým a modrým světlem. TC však má k dispozici jen prvek se světlem zeleným a červeným. Přidat návěstidlo v provedení bílá - modrá je brnkačka.
Nejprve je nutno stáhnout soubor customimage.zip. Lze nalézt přes stránky pana Freiwalda, pro usnadnění jsem ho raději též umístil i sem (Ke stažení). Tento soubor obsahuje jednak návod (angl., něm.), a pak čtyři soubory *.bmp. Tyto 4 obrázkové soubory slouží jako vzor pro editaci. Aby začaly být aktivní, musíme je umístit do adresáře "Images", který vytvoříme jako podadresář tam, kde je nainstalováno RailCo. Např. tedy C:\Program Files\Railroad & Co.58 V tomto adresáři tedy vytvoříme podadresář "Images" a do něj nakopírujeme soubory StateLrg.bmp, StateSm.bmp, TrackLrg.bmp, TrackSm.bmp. Tyto soubory lze editovat nějakým bitmapovým editorem (např. MS Paint, tedy Malování). Návěstidla jsou v souborech State (jednou ve větším, jednou v menším formátu). Co vlastně budeme editovat? Buď přemalujeme existující návěstidlo červená-zelená na modrá-bílá. Pak ale už to původní nebude k dispozici. A nebo si vybereme nějaký typ, který nepoužíváme, třeba a nahradíme jej tím požadovaným, tedy třeba . Editaci musíme provést na všech potřebných místech, tedy pro návěst bílou i modrou, v obou souborech (StateLrg.bmp i StateSm.bmp - pro dvě velikosti zobrazení). Editace má určitá pravidla.
Při příštím otevření TC, bude vše fungovat. Pokud jsme jen ikonu "vyměnili", bude zobrazení už "nové", pokud jsme použili nějaký jiný, nepoužívaný symbol, musíme provést v Oknu vlastností návěstidla požadovaný výběr (Select Images). Chceme-li se vrátit k původnímu zobrazení, stačí smazat (nebo lépe jen přejmenovat) adresář Images.
Takhle jdou editovat všechny prvky, které jsou obsaženy v souborech *.bmp. Nějaký detailní průzkum by vyžadoval dalekosáhlý rozbor a mám pocit, že by to byla zbytečná ztráta času. Tady je ukázáno, že to jde. Když si někdo bude chtít udělat něco podle svého gusta (většinou do podoby ČSD/ČD), jistě si už poradí.
A takhle to pak může vypadat pro malé nebo velké zobrazení...
... světle modrá je použita pro lepší viditelnost, třeba se vám bude líbit tmavá.
Poznámka: Takto to jde pouze ve verzi 5.8, v nižších nevím. Naopak ve verzi 7 Bronze a Silver to nejde, v Goldu je pak editace přímo z okna vlastností příslušného prvku.
"Nevíš-li jak dál, přečti si návod." Tato Murphyho věta je perlou v každém směru. Nápověda, Help, Manuál jsou pojmy nejvyšší důležitosti. Uživatelé je v naprosté většině neberou na vědomí. Nechce se jim, neznají cizí jazyk, nerozumí tomu... To je ovšem velká chyba. V manuálu lze nalézt většinu řešení problémů. Neznalost jazyka dnes není podstatná. Překladače (třeba Google) jsou poměrně kvalitní a, i když překlad technických termínů je vždycky trochu problém, nakonec obvykle dostaneme spoustu užitečných informací. RailCo TC není jen tak nějaký jednoduchý prográmek, je to mocný nástroj s řadou parametrů, které je třeba správně nastavit. Nebudeme-li významu parametrů, přepínačů, vlastností důkladně rozumět, bude to dělat všechno možné, jen ne to, co požadujeme. Veškeré pokusy o intuitivní nastavení, "od oka", vedou ke špatným výsledkům. A k chybným závěrům. Mluvím z vlastní zkušenosti.
Nápověda TC je vypracována na velice slušné úrovni. K dispozici je nejen vlastní manuál, popisující přehledně základní činnost TC, ale také tzv. kontextová nápověda, online help, fungující i ve většině zcela jiných programů. Ke spuštění slouží klávesa F1, která vyvolá výpis informací aktuálního okna, pozice, nabídky atd. Stojíme-li např. v oknu vlastností bloku, na záložce Indicators, objeví se po stisku F1 informace právě jen o údajích této záložky. Zde nalezneme informace, které v manuálu většinou nenajdeme. Ale především, nemusíme je nijak pracně hledat.
Rozhodně doporučuji používat nejprve kontextovou nápovědu (F1), pak manuál a tyto stránky, a teprve pak dotazy na LokoPin.
Na žádost jednoho kolegy, který používá spřáhla MAGNE-MATIC® americké firmy Kadee® Quality Products Co., jsem se pustil trochu více do programování. Aspoň si ukážeme, co RailCo TC dovede. Vstupní požadavky byly zcela jasné. Lokomotiva musí na určeném místě zastavit s přesností cca 3 cm, o 1-2 cm couvnout a odjet. To je totiž postup, který spřáhla Kadee potřebují na rozpojení. Vše na bázi Plánu (Schedule), tedy automaticky provedené. Celkem jednoduché. Spřáhla Kadee k dispozici nemám. Ale tento popis slouží hlavně jako ukázka, co všechno lze v TC naprogramovat. Detaily si jistě každý doladí sám. Jen ještě připomenutí, že mluvíme o měřítku TT.
Vypadá to asi takto:
Loko jede z bloku B1, k rozpojení má dojít v bloku B4. Bloky B1 a B5 jsou startem a cílem, bloky B2 a B3 jsou vlastně jen pro výklad a znázornění rozjezdu a snížení rychlosti. Opravdu funkční je tedy pouze jeden blok, a to B4. Fyzické rozložení je na násl. obrázku.
Konkrétní rozměry se budou lišit u různých mašin, také podle toho, zda bude třeba používat oba směry atd. Pro vlastní funkci to však není podstatné. Pro oba směry bude blok B o něco delší, než dvojnásobek délky loko L, magnet M bude uprostřed, vzdálenost R, kde zastaví mašina, bude někde za polovinou bloku.
Jedním Plánem to TC rozhodně nesvede, takže činnost pěkně rozdělíme na 3 Plány.
Plán |
Činnost |
|
1. |
Rozpoj_zac |
Vjezd do bloku (B4), obsahujícího rozpojovací místo (permanentní magnet pod kolejemi). |
2. | Rozpoj_zpet | Jízda loko směrem zpět, po krátké době (cca 1-3 vteřiny) se Plán Rozpoj_zpet vypne. |
3. | Rozpoj_kon | Odjezd lokomotivy z rozpojovacího místa. |
První podmínkou je, aby loko zastavila s dostatečnou přesností. Pokud nepoužíváme jazýčkové kontakty (tady by to byla jedna z mála jejich výhod), potřebujeme zajistit dvě věci. Aby loko vjela do "rozpojovacího" bloku (B4) malou rychlostí a aby brzdná dráha (Ramp) byla poměrně krátká. Za těchto okolností zastaví zkalibrovaná mašina s přesností na 1 cm. Blok B4 nastavíme na záložce General Speed Maximum na 20 kmh, Ramp v požadovaném směru na 20 cm. Pokud nastavíme max. rychlost bloku B4 na 20 kmh, dojde v předchozím bloku (B3) k brzdění. Blok B3 musí mít tedy takovou délku, aby to každá mašina zvládla třeba i ze 160 kmh. V TT stačí tak 70 cm.
Plánem Rozpoj_zac to spustíme. Mašina přijede do bloku B3, začne brzdit na 20 kmh, touto rychlostí vjede do bloku B4 a po 20 cm 1) zastaví. Ukončení Plánu Rozpoj_zac spustí Plán Rozpoj_zpet. Ten obsahuje jízdu z bloku B4 zpět do bloku B3. Ovšem my nechceme jet tak daleko, chceme jen kousek couvnout, tak Plán Rozpoj_zpet ukončíme po čase 3 sekundy makrem (Makro_rozpoj). Makro je spuštěno v Operations Start Plánu Rozpoj_zpet. Makro pak spustí Plán Rozpoj_kon, který s mašinou odjede (do bloku B5) a celou akci ukončí.
1) Délka mašiny je vzdálenost prvního a posledního dvojkolí s odběrem proudu (na obrázku L). K tomu je třeba ještě zohlednit vzdálenost posledního dvojkolí s odběrem proudu od konce spřáhla (tedy S).
Layout (lokopin_rozp_*) je k dispozici, prohlídka asi pomůže podstatně víc, než porozumění tomuto krkolomnému popisu. Indikátory IB11 až IB15 jsou jen pomocné, k ovládání při simulaci.
Lokomotiva musí být zkalibrovaná a musí mít zadánu délku (General - Dimensions, Length). Brake indikátor bloku B4 (IB04) musí mít nastaveno zastavování na Tail of Train, tedy konec loko. Pokud k zastavení dojde jinde, doladí se to změnou délky Ramp. Zastavovací blok je dlouhý asi 40 cm (tak je možno využít bez problémů oba směry), magnet je uprostřed. Bloky nemusí fyzicky sousedit, být těsně na sobě. Pro vlastní provedení izolovaných úseků je to však pohodlnější.
Jistě nelze přehlédnout i některé negativní, "vedlejší účinky" této akce. Za hlavní považuji to, že blok B4 musí být nastaven na nízkou max. rychlost. Znamená to, že se nedá projet ani v ostatních Plánech rychlostí vyšší. Jak však uvidíme dále, i tato nepříjemnost lze odstranit (viz Fiktivní prvky nebo Rychlost).
Tento způsob naprogramování určitě není jediný. Obvykle lze program napsat i jiným stylem. Toto je hlavně ukázka různých možností ovládání, spouštění Plánu z předchozího Plánu, spouštění makra při startu Plánu, ovládání Plánů (spouštění, ukončení, prodleva) makrem atd. Zastavení a následné odjetí loko se dá použít i při rozpojování pomocí jiného systému, s klasickými spřáhly. Do makra se místo couvnutí vloží vteřinové sepnutí rozpojovacího elektromagnetu a je to. A nakonec i to couvnutí tam může zůstat, někdy je to vhodné.
Přesnost jsem ověřoval na třech diametrálně odlišných mašinách, Tillig V100, Rosnička a Roco Ragulin. Loko zkalibrované, lokodekodéry vše Lenz Gold mini. Poloha zadního spřáhla při zastavení byla v rozmezí 1 cm, couvnutí rovněž, tedy vše zcela vyhovující. Zkoušel jsem i couvnutí delší, až do předchozího bloku B3, abych simuloval třeba vagony, odebírající proud. Bez problémů. Zkoušel jsem dokonce i dvojici spřažených lokomotiv (vícenásobná trakce), i tady v poho.
S postupem doby jsem ovšem "objevil" i jiný způsob přesného, milimetrového zastavení, který by zde šel velmi výhodně aplikovat.
Následující chování TrainControlleru považuji za dosud největší "objev" v tomto grandiózním programu. Zajímalo by mě, zda o těchto vlastnostech ví i Herr Freiwald. Zatím jsem na nic podobného na webu nenarazil, ale to není nic divného, v němčině a angličtině je tam toho mraky a já si jen málokdy přeložím malý kousek. Každopádně věřím, že se tímto "objevem" proslavím aspoň na Písecku . O co vlastně jde?
Základní popis je naprosto jednoduchý. Některé prvky jdou v TC použít zcela fiktivně. Program s nimi počítá, ve skutečnosti neexistují. Použít jdou vícenásobně, s různými vlastnostmi, většinou se stejnou adresou. Třeba u výhybek je to zcela běžně používaná věc. Sice nesprávně, ale co bychom pro ušetření jednoho výstupu spínacího dekodéru neudělali. Naprostá bomba to však je při použití bloků. Tady bude opět příklad nade vše.
V minulém odstavci je layout, kde jsme prováděli zastavení a malé couvnutí loko v bloku B4, potřebné pro rozpojení spřáhel Kadee. Pokud budeme chtít jakýmkoli Plánem projet z B1 do B5, bude loko v bloku B3 brzdit na 20 kmh, protože blok B4 má takto nastavenou max. rychlost. Použijeme tedy layout následující ...
... přidáme blok B40 a Plán Prujezd 1-5 nastavíme tak, aby projel přes tento blok. B40 bude mít ovšem maximální rychlost zcela běžnou, třeba 160 kmh. Programu je zcela jedno, že ve skutečnosti tam nejsou dva bloky (B4 a B40), on si myslí, že tam jsou. Rovněž tam předpokládá i výhybky, které mají nastaveny neexistující adresy. Celý vtip je v tom, že oba bloky mají indikátor obsazení bloku se stejnou adresou. Dokonce ani není podstatné, zda tyto dva indikátory (IB14, IB44) mají stejný nebo různý název. Ve skutečnosti by tam byl jen jeden (neviditelný) indikátor, přiřazený k oběma blokům, se stejnou adresou (zde 66/2). Layout (lokopin_dupl_*) je rovněž k dispozici. Mimochodem, panu doktorovi Railroadovi se to nemůže líbit, stejnou adresu u více prvků vždy hlásí jako chybu. Ať si trhne...
Pochopili? Však vy na to přijdete. A tenhle trik lze použít i pro jiné prvky. Tak třeba klidně můžeme do místa, kde ve skutečnosti je jen širá trať, v TC definovat výhybku a jejím zablokováním do špatného směru neumožnit jízdu vlaku. Tyhle teoretické úvahy však nemám rád, až se bude řešit nějaký problém, jistě se tahle finta bude hodit.
V těchto fiktivních, duplicitních, paralelních blocích vidím velkou sílu. Lze tak totiž naprogramovat třeba možnost, aby každý vlak zastavil v nádraží na jiném místě. Použije se několik fiktivních bloků a každý bude mít prvky pro zastavení (Brake, Stop, Ramp) nastaveny jinak. Má to ale jeden háček, každý vlak = samostatný Plán + další (fiktivní) blok. Větší počet Plánů vadit nebude, větší počet bloků v layoutu ale už moc příjemný není. Vlaky se však dají seskupit do Skupin (Group), a pak už to není zase tak hrozné. Skupiny mohou být třeba jen "motoráky", "rychlíky", "náklady" nebo dokonce jen "dlouhé" a "krátké".
Jak plyne čas, objevují se však další poznatky. Jeden z hlavních je ten, že některé věci jdou naprogramovat různými způsoby. Třeba zrovna variabilní zastavování. Pomocí více "sad" indikátorů to lze udělat mnohem elegantněji. Rovněž změna rychlosti jde udělat bez fiktivního bloku, pouhým použitím příkazu "Speed". Nezbývá, než zkoumat, testovat.
Ale ještě jeden příklad. Pomocí tohoto triku lze naprogramovat i správné chování dekodéru ND4 pro návěstidla bez omezení počtu kolejí. Co se nevejde do ND4, naprogramujeme v TC.
V layoutu lokopin_nd4_* si můžeme prohlédnout složitější naprogramování Triggeru pro návěstidlo N8n. To vlastně zastřešuje všechna návěstidla N8 až N11 dohromady a je pak použito pro konfiguraci ND4. Na návěstidlu N8n se objeví stejná návěst, která je i na tom návěstidle, k němuž jsou nasměrovány výhybky V8 až V10. Programování návěstidel "mimo blok" je naopak zcela běžné a někdy se bez něj neobejdeme. Dalším příkladem je třeba autoblok.
Závěrem lze říct, že fyzické prvky kolejiště (koleje, výhybky, detektory obsazení ...) vůbec nemusí souhlasit s prvky layoutu na PC a této skutečnosti lze někdy výhodně využít.
Jedna věc je nadefinování bloku v programu, druhá věc je jeho fyzická poloha v kolejišti. Zde má blok svoje přesné umístění a je jedno, zda je dáno polohou jazýčkového kontaktu, optozávory nebo místem, kde je přerušena kolej. Na téma počet a délka bloků jsem na webu sice něco už viděl, ale asi neškodí trochu to shrnout.
Indikátory, které se používají pro bloky, jsou různé. Myslím, že zpočátku to byla hlavně jazýčková relé, ovládaná permanentními magnety na lokomotivách, případně různé optozávory. V současné době zjevně převládají detektory obsazení (DO), které reagují na proud, odebíraný v izolované části koleje. Na trhu se objevilo dokonce několik domácích výrobců a ceny jsou zde už prakticky srovnatelné. Každá metoda má svá pro a proti, ale u DO ta "pro", dle mého názoru, vítězí. Pro DO stačí přerušení jedné koleje, ale přerušením obou nic nezkazíme, dole to vždycky můžeme spojit.
V ČR a SR se používá čtyřznakový a trojznakový automatický blok, nazývaný autoblok Detaily i funkci možno prohlédnout na Wikipedii. TC tuto problematiku řeší "po svém". Vyhrazuje si při jízdě určitý počet bloků a současně ovládá i bloková návěstidla (to jsou ta, co jsou vidět přímo v blocích a jejich řízení má na starosti vnitřní automatika TC). A právě signalizace je odlišná od toho "našeho" autobloku.
Na prvním obrázku je ještě pro úplnost vyznačeno chování i při snížené rychlosti, která je nastavena v Bloku 4. Ale brzdění a zastavení je stejné, jako v "našem" autobloku. Je tedy třeba jen přidat požadované návěsti. Nastavování těchto "přidaných" návěstidel uděláme pak snadno pomocí Triggeru, kde jako zdroj pro logické operace poslouží indikátory obsazení. V příkladu je uvažován pouze jeden směr. Pro obousměrný provoz by se třeba do podmínek přes AND ještě přidaly jednotlivé Plány.
V sekci Ke stažení v balíku souborů *.yr? nalezneme soubor lokopin_autoblok, kde si můžeme naprogramování pro inspiraci prohlédnout. Otázkou ovšem zůstává, kde vlastně autoblok využít. Úseky, tady prezentované bloky, jsou v reálu dlouhé 1 km, což v měřítku TT představuje přes 8 m. I po určité délkové korekci to půjde použít nejspíš jen v nějaké modulovce.
Jednoduchý úkol. Vlak má projet z Bloku 1 postupně přes Bloky 2, 3, 4, 2, 5 opět do Bloku 1. Tedy vlastně po dráze ležaté "osmičky". To celé dvakrát.
Zdánlivě jednoduché. Ovšem jeden háček tu je. TC si určí sám, kam na výhybce V1 pojede. Zda do Bloku 3 nebo do Bloku 4. Pokud chceme, aby jel napřed do Bloku 3, musíme mu to nějak nařídit. Udělat to jde asi více způsoby. V souboru lokopin_osmicka je to uděláno pomocí Preferovaného bloku. Zapnutí a vypnutí Preference Bloku 3 zařídí vždy jedno makro, zapnuté na počátku a konci příslušného Plánu. Pro ty, co zapomněli, Preferovaný blok je takový, který si TC vybere v případě, když má více možností na výběr při stanovení cesty.
Do verze 7(8) lze Preferovaný blok z verze 5.8 natáhnout, dokonce to snad i funguje, ale nový už udělat nelze. Autoři to zrušili. Nevadí, stejně to chodilo nějak podivně. Přišel jsem na dvě možnosti, které to mohou nahradit. Buď se použije nastavení směru v bloku, to je však trvalé pro všechny Plány, AutoTrain i Interlocking nebo se prostě použijí dva následné Plány s Průběžnou návazností. V souboru lokopin_osmicka_7gf8 je to možno zkouknout.
Předem upozorňuji, že tento odstavec Rychlost se vztahuje pouze na verzi 5.8 !!! Ve verzi 7 je to uděláno odlišně, je to popsáno v orig. manuálu RailCo (Rozdíly...ChangeDescription). V podstatě je rozdíl v tom, kde nasazuje rychlost následujícího bloku. Ve verzi 5.8 je to během bloku předcházejícího, ve verzi 7 a ž po projetí Brake markeru bloku následujícího.
Rychlost vozidel v digitálu je závislá na mnoha faktorech. Necháme teď stranou ovládání manuální a budeme se věnovat pouze pokynům, které přicházejí z automatiky TC. Rozjezdové a brzdné akce ponecháme také stranou. Zajímavý už je ale základní systém řízení rychlosti, kterým je nastavení rychlosti v bloku. Zde je podstatné to, že mašina se na změnu rychlosti "připravuje" už blok předem. Je to vidět na následujícím obrázku. Pokud je v Bloku 3 nastavena max. rychlost na 90 kmh, už během jízdy v Bloku 2 je tato rychlost plynule nastavena. To "během" a "plynule" je dáno nastavením vlastností Acceleration a Deceleration v oknu vlastností mašiny, zál. Speed (násl. obrázek).
Rychlost lze ovšem také měnit kdykoli v průběhu jízdy. Horní hranice je dána maximální rychlostí mašiny a rychlostí v bloku. Dolní mez je dána rychlostí Prahovou. Nastavíme-li Speed na nižší rychlost, než Prahovou, mašina zastaví. Prvek, kterým je možno rychlost měnit, je virtuální kontakt (VK). Pokud je sepnut, dojde ke změně rychlosti, která je nastavena prvkem Speed v záložce Operations prvku VK. Hodnota rychlosti se zadá po stisknutí tlačítka Change.
Funguje to jednoduše. Jednotlivé bloky jsou dlouhé 100 cm (i Ramp), Blok 5 je dlouhý (400 cm). Tři jednotlivé virtuální kontakty (VK51, VK52, VK53) jsou umístěny v Bloku 5, ve vzdálenosti 100, 200 a 300 cm od indikátoru i5, kterým je DO Bloku 5. Jakmile mašina vjede do Bloku 5, po ujetí 100 cm se spustí VK51, na 200 cm VK52 a na 300 cm VK53. Jednotlivé VK mají přiřazeny rychlosti 100, 50 a 200 kmh. Jaká je reakce mašiny je vidět v následujícím obrázku. Lokomotiva tam vjede rychlostí 120 kmh. Po přejetí VK51 se rychlost sníží na 100 kmh, po přejetí VK52 se rychlost sníží na 50 kmh a po projetí VK53 se opět zvýší na maximum, omezené přiřazením rychlosti v tomto bloku, tedy na 120 kmh. Dobu přechodu, plynulost mezi jednotlivými rychlostmi je dána nastavením vlastností Acceleration a Deceleration v oknu vlastností mašiny, zál. Speed.
Příklad je v souboru lokopin_rychlost.yrr, který je opět v balíku lokopin_railco_58.zip . Virtuální kontakty VK51,2,3 mají v záložce podmínky (Condition) přepínač (Toggle Switch) P1, kterým lze funkce ovládání rychlosti zapnout (P1 vpravo) / vypnout (P1 vlevo). V simulaci jde vše krásně prohlédnout.
S řízením rychlosti můžeme laborovat při nejrůznějších příležitostech. Původně jsem se tím začal zabývat v souvislosti s Autoblokem, pak jsem však po konzultaci s odborníkem (výpravčí z Protivína) došel k názoru, že to není třeba.
Nesmíme ovšem zapomenout na to, že TC ovládá rychlost také sám, třeba na základě nastavení rychlostí v bloku nebo při rozjezdu a dojezdu a že tyto pokyny jsou těm našim nadřazené nebo se s nimi aspoň logicky sčítají. V praxi to vypadá následovně. TC posílá mašině pokyn ke změně rychlosti, kdykoli je to třeba. To nastane zejména:
Při rozjezdu a dojezdu. Tedy při rozjíždění, zastavování, ale také při ostatních změnách rychlosti. Pokyny jsou závislé na tom, jak je rozjezd (Acceleration) a dojezd (Deceleration) u té které mašiny nastaven. Pokud jsou obě hodnoty na nule, přijde asi jen jeden pokyn. Pokud jsou hodnoty různé od nuly, přijde těch pokynů několik. Aby mašina zpomalovala nebo zrychlovala plynule.
Vjede-li do bloku a následující blok má nastavenou jinou rychlost. I tady ovšem funguje vše dle bodu 1.
Přijde-li pokyn Speed, nastavený třeba ve VK, v záložce Operations. A tady také funguje vše dle bodu 1.
Všechny tyto pokyny jsou na sobě dost závislé a záleží také na tom, aby to mašina prostě stihla. Pokud má rozjezd a dojezd nastaven na nulu, stihne to zřejmě vždy, ale takhle to nikdy nenastavujeme, neboť změny rychlosti jsou potom velmi nerealistické. Vjedeme-li tedy do bloku o délce 100 cm rychlostí 200 kmh, nastavíme-li někde uprostřed pomocí VK rychlost na 50 kmh a máme-li deceleraci (dojezd) na určité hodnotě (třeba 6%), mašina prostě ze 200 kmh na 50 kmh v průběhu 50 cm prostě nestačí rychlost snížit. Přijde další blok a rychlost je dále upravována na rychlost bloku následujícího.
Uznávám, že je to celkem guláš, stálo mě to hodně času a ještě jsem třeba vše neobjevil. Vyzkoušejte, uvidíte.
Jestlipak to má Herr Freiwald takhle popsáno v manuálu? Raději jsem to ani nehledal...
Tento odstavec neobsahuje nějaký detailní, podrobný popis. Je to trochu soubor sebraných poznatků. A také ukázka toho, jak je tento software rozmanitý a jaké nepřeberné možnosti skýtá. Mnohé akce jdou zde provést více způsoby. Něco je pro určitý postup přímo určeno, něco zase chodí tak, že pochybuji, zda to vůbec autor tušil. A ještě to lze různě kombinovat, používat podmínky atd. Návaznost, sled Plánů patří ke stěžejním bodům automatiky a pro ukázku programovacích možností je jako dělaný.
Ale nejprve k samotnému Plánu.
Průběh Plánu
Časování celého průběhu Plánu je následující:
Doufám, že jsem časování zmapoval správně. Pokud naleznete odchylky, ozvěte se. Detailnější popis začátku průběhu je v článku TrainController - časování.
Návaznost Plánů
Návaznost Plánů (Schedulers) je činnost, kdy se Plán P2 (případně i více Plánů) spustí po skončení Plánu P1. Jde to udělat různě. Různé mohou být také požadavky na činnost právě mezi těmito dvěma Plány. Tou činností může být řada akcí, spouštěná třeba makrem, např. osvětlení, závory, rozpojovač nebo jen čekací doba.
Plán lze spustit mnoha způsoby. Přímo příkazem Start plánu/Schedule (je na více místech), tlačítkem (Push Button), pomocí časové tabulky (Timetable) nebo třeba makrem.
Pokud chceme spustit Plán P2 po skončení Plánu P1, máme asi dvě hlavní možnosti:
Spuštění umístěním Plánu P2 na záložku Successors Plánu P1.
Spuštění pomocí Operations Finish (zál. General) v Plánu P1. Tady musí být ovšem makro, které Plán P2 spustí. (V makru může být samozřejmě celá posloupnost nejrůznějších příkazů, zpoždění atd.)
Ad 1. Successors.
Spouštění dalších Plánů pomocí záložky Successors je právě tou, pro tuto činnost určenou, akcí. Na záložce Successors je totiž řada voleb, jejichž použití výrazně přidá prvek náhodnosti. Musíme si uvědomit, že každý Plán může mít na záložce Podmínky (Conditions) také svoji podmínku, takže se může, ale nemusí v určitém okamžiku spustit. Je-li tedy vybráno třeba By Order, spustí se ten první Plán, který spustit lze. Rovněž třeba Random vybere jeden Plán náhodně, ale zase jen z těch Plánů, které mají splněnou Podmínku. Právě tady jde tedy nastavit, že vlaky jezdí sice třeba podle harmonogramu, spouštěné časovou tabulkou, ale přesto zde funguje spousta náhodných prvků, které přispívají ke zcela reálnému obrazu provozu.
Když spouštíme Plány tímto způsobem (je to ten prvotní, správný způsob), máme ještě řadu možností, jak zabudovat do provozu spouštění dalších činností. Předně můžeme využít pole Operations na zál. General v Plánu. Tady můžeme v roletách Start a Finish vybrat akce mašin (třeba zvuk při startování) nebo makra, která mohou ovládat cokoliv (od osvětlení, až po třeba spuštění jiného Plánu po uplynutí určitého zpoždění atd.). Takže teď se ještě zastavíme u této, druhé možnosti.
Ad 2. Operations Finish
V makro RunWait2_sound_Wait5_P2 pak může být sled nejrůznějších příkazů, včetně čekacích dob.
Mezi oběma způsoby je jeden podstatný rozdíl. Pokud se spouští pomocí Successors, nemusí vlak v cílovém bloku vůbec brzdit, natož zastavit. Dojde k tzv. Průběžné návaznosti. Stane se tak v případě, že jsou splněny podmínky pro spuštění Plánu následného (P2) a směr se nezmění. Možná kostrbatá věta, ale znamená v podstatě jednoduchou věc.
Přidáme-li do Plánu P1 do Successors Plán P2, který bude nastaven na stejnou mašinu a opět ve směru do B02 (může to být prakticky kopie P1 nebo třeba jen Plán z B01 do B02), Brejlovec v bloku B01 nezastaví (pokud je v B01 nastaveno Wait = 0 ) a bude plynule pokračovat dále. Stav příslušných návěstidel bude rovněž odpovídající. TC prostě sám rozpozná, že následuje Plán, který vlastně stejnou mašinu posílá dál.
Další poznámka se týká čekací doby mezi dvěma navazujícími Plány. Stačí jen nastavit v druhém Plánu čekací dobu (Wait) do startovacího bloku. Každý spuštěný Plán totiž nejprve "odstojí" tuto čekací dobu, a pak se teprve mašina rozjede.
Ještě bych poznamenal, že pole Operations Start a Finish se používají především pro činnost funkcí mašin (Engine Operations), jako jsou zvuky, píšťaly a pod., případně pro spuštění nějakého makra, které může provádět celou posloupnost příkazů.
Snad jsem tuto problematiku trochu osvětlil a, jak je mým zvykem, třeba občas ještě něco doplním.
Jak už bylo řečeno, Plán lze spustit mnoha způsoby. Rovněž vozidlo, na které je Plán aplikován (tedy mašina/vlak), je možno vybrat určitým způsobem. Vyzkoušel jsem několik postupů a triků, které snad stojí za pozornost. Nejsem si jist, co byl záměr autora softwaru, co vyplynulo tak nějak samo o sobě a co je třeba spíše chybou v programování. Není to ani tak podstatné.
Aby se Plán spustil, musí být splněny určité podmínky. K těm základním patří, že:
Výběr mašiny
Při spuštění Plánu musí TC vědět, kterou mašinu má spustit. Ta ovšem musí být přiřazena v nějakém bloku, který do tohoto Plánu patří. (Nebo tam musí teprve přijet, viz dále.) Na výběr mašiny mají vliv dvě nastavení.
Obě nastavení na předchozích obrázcích lze různě kombinovat, takže Plán se pak vztahuje třeba na:
Lze nadefinovat i více vlaků, než jeden, které jsou nebo nejsou ve start bloku. Vždy je ovšem puštěna mašina jenom jedna. Podle jakého algoritmu se rozhodne, o kterou mašinu jde, to jsem nezjistil.
Plán je
svázán s jedinou mašinou (vlakem) po celou dobu svého spuštění.
Nové poznatky toto "pravidlo" ovšem popřely.
Výběr mašiny (vlaku) spuštěné plánem je určitým způsobem volitelný. Plán lze ovšem spustit opakovaně, na jinou mašinu, a tak na jediný plán vázat mašin více. S každým spuštěním plánu, se tento naváže vždy na jednu (další) mašinu (vlak).
Platí tedy vztah:
Plán : Loko = 1 : N |
Jednoduše řečeno, jedním plánem lze spustit více loko/vlaků. Ne ovšem najednou, ale postupně. Každý příkaz pro spuštění plánu je vyhodnocen, a pokud vyhovují podmínky pro spuštění, je plán spuštěn pro další (jinou) loko/vlak. Jeden plán tak může vést několik mašin. Jistě se najdou situace, kdy tento trik využijeme. V některých případech to může nahradit mnoho jednotlivých plánů. Kolikrát lze takto plán spustit, jsem nezjistil. Informaci o počtu spuštění získáme příkazy, které umístíme v oknu vlastností příslušného plánu, zál. General, pole Operations: Start: (+1) a Finish: (-1). Ve verzi 8G jednoduše pomocí Counter, v nižších verzích je nutno si pomoci třeba konstrukcí dvojkového čítače z Flagmanů.
Při programování těchto konstrukcí je třeba postupovat velmi opatrně.1) Povedlo se mi spustit mnohonásobně cyklický plán na tři mašiny. Mnohonásobné spouštění bylo generováno Timetable v krátkých intervalech. Kdoví kolikrát byl plán vlastně spuštěn. Jak známo, při cyklickém plánu jsou startovní a cílové bloky na stejném místě. Každá z mašin projela bez problémů asi tři kola. V okamžiku, kdy jedna z mašin vjížděla do start/cíl bloku a jiná byla připravena k rozjetí, se najednou nerozjela ta správná, ale naopak ta, co měla zastavit. Jakoby se utrhla z plánu a začala nekontrolovaně jet, ignorujíc veškeré rychlostní příkazy (bloky, výhybky, Action markery). V té chvíli jsem si vzpomněl, že podobnou situaci vyvolalo i několikanásobné spuštění Interlockingu (Spontaneous Run). Také několik mašin jezdilo chvíli dobře, než se to zbláznilo. Interlocking (ve verzi 8 Spontaneous Run) je také vlastně jediný plán, který lze spustit víckrát, na více mašin.
Už při spouštění Interlockingu mě mělo trknout, že to jeden plán vede více mašin. Netrklo, a tak jsem se pořád domníval, že jeden plán = jedna loko/vlak. Když něco nejde, dejte to někomu, kdo neví, že to nejde a on to udělá. Přesně to se stalo a kolega Michal Kloz takto několikanásobně spustil jediný plán, což bylo inspirací pro objevení mého chybného předpokladu a pro editaci tohoto článku. Díky, Michale.
1) Osobně nedoporučuji tyto konstrukce používat. Uvádím to zde pouze proto, že to TC umožňuje, že to to není nijak blokováno.
Na záložce Obecné (General), jsou ještě další zajímavé možnosti nastavení.
Bohužel zde autoři poněkud nezvládli obnovovací frekvenci zobrazování, a tak se v některých případech ukáže aktuální obraz ikon Plánu třeba až po klepnutí myší do oken Dispečera. Na funkci to však naštěstí nemá žádný negativní dopad.
A je zde ještě další možnost "odloženého" spuštění Plánu. V záložce Pravidla je zatržítko Start schedule even if the train cannot leave the current block, tedy Start Plánu i v případě, že vlak nemůže opustit blok. Třeba blok nebo cesta můžou být uzamčené, obsazené. Oproti předchozí "odložené" možnosti, tady však musí být vlak v bloku Plánu definován (ve startovacím nebo jiném, podle dalších voleb).
I ukončení Plánu je mnohočetné. Tím nejobvyklejším je, že se Plán ukončí sám. Provede, co má, tolikrát, kolikrát je nastaveno (Počet opakování) a šmytec. Je ukončen.
Plán je ovšem možno ukončit i "násilně", v libovolném stavu. Na záložce Operace (makro, tlačítko, flagman...) je totiž nabídka pro Plán, kde je možno zvolit nejen spuštění jedním či druhým směrem, ale také ukončení (neaktivní/stop).
Na konci Plánu však mohou být nastaveny další akce. Předně je možno spouštět další Plán. Jeden i více. Nebo také sám sebe. Také může být nastaven Počet opakování = > 0 u cyklického nebo kyvadlového Plánu. V každém případě je možné, že na konci jednoho Plánu dojde k pokusu o spuštění dalšího. Stejného nebo jiného. Pak záleží na tom, zda jsou splněny Podmínky a zda je nastaveno Zkusit znovu > 0. Příslušný Plán se buď spustí nebo nespustí nebo přejde do čekacího, testovacího stavu (šedé vybarvení).
Z předešlého plyne další zajímavost. Plán P1, nastaven Cyklicky, Počet opakování=0. Start-cíl v jednom bloku, tedy jezdí dokola. V Podmínce je třeba vypínač. Plán po dojetí do cíle spouští Nástupce P1, tedy sám sebe. Zapne se vypínač, spustí se Plán P1. Ten jezdí dokola tak dlouho, dokud se vypínač nevypne. Při následném pokusu o spuštění Nástupce P1 není podmínka splněna. Plán P1 se vypne, Nástupce P1 se nespustí. Takto jednoduše lze ukončit plán v nekonečném provozu pomocí libovolné podmínky, a to přesně v okamžiku, kdy je loko v cíli.
Všechno jsou tedy kombinace různých nastavení a nejlépe si to lze vyzkoušet třeba na simulaci v souboru lokopin_triky_plany, který je opět obsažen ve známém lokopin_railco_58.zip.
Tyto postupy je také možno bohatě využívat při automatickém provozu. Plány, spouštějící samy sebe, s nastaveným Počtem opakování=0, v Podmínkách přiřazené třeba vypínače atd. Tady je opravdu široké pole možností a každý si jistě vybere, co mu vyhovuje. Nastavení Plánů na Cyklické či Kyvadlové a Počet opakování ≠1 má však své "háčky". U Cyklického a Počtu opakování = 0 se musí dalším způsobem zajistit ukončení Plánu, u Kyvadlového mohou být zase potíže s různým nastavením Kritických sekcí pro oba směry.
Nejjednodušším a nejpřehlednějším způsobem automatického provozu je tedy používání Plánů typu Normal (příp. vhodně zvolené Zkusit znovu) a pro jejich opakované spouštění využít Jízdní řád (Timetable). Pro zvýšení neopakovatelnosti je možno některé Plány rozdělit na dvě i více sekvencí. Základní podmínkou bude však vždy nastavení nezávislého chodu jednotlivých Plánů.
Timetable (dále jen TT), Časová tabulka, Jízdní řád... Tento jednoduchý, ale velmi mohutný nástroj TrainControlleru, jde opět využít nejrůznějším způsobem. Účelem TT je spustit určitý Plán v určený čas. Tento čas řídí hodiny TC a lze jej nastavit tzv. redukovaným způsobem, poměrem mezi skutečným a modelovým časem. Většinou plyne modelový čas rychleji, defaultní nastavení je asi 10, tedy za jednu minutu skutečného času uběhne 10 minut času modelového. To abychom u kolejiště nečekali příliš dlouho a aby to prostě víc "frčelo".
Hlavním úkolem TT je vytvořit běžný harmonogram jízd vlaků, třeba na celý den, týden, rok atd. O tom už trochu řeč byla, tady uvedu spíše opak, tedy nastavení nepřetržité automatiky pomocí TT. Zase asi budou konkrétní údaje jasnější.
Dejme tomu, že existují dva Plány, P11+ a P11-. Jsou nastaveny tak, aby z bloku B1 (B2) objely jedno kolečko, Plán P11+ po směru hod. ručiček, P11- opačně. To je tedy výchozí stav a nyní chceme oba dva Plány spustit. Najednou, a tak, aby jezdily stále, nechaly se jednoduchý způsobem ukončit, a to tak, aby oba vlaky byly ve výchozích pozicích. Pomocí TT..."nič jednoduchšie".
Na spuštění více Plánů použijeme buď přímo samotné Plány (klidně ve stejném čase), ale makro je lepší nebo nejlépe spouštěcí, tzv. Výběrový plán (V1), který je vlastně udělán právě jen na spouštění jiných Plánů. Pak stačí do okna TT vložit jeden povel, nastavit četnost spouštění (třeba Opakovat každou 1 minutu) a je to. Pokud se spouští Plán, který ještě není ukončen (může být v provozu i v testovacím módu), nic se nestane. Po vypnutí Edit módu se časy "rozprostřou" v intervalu 1 minuty do celých 24 hodin. Na spuštění činnosti postačí aktivovat tlačítkem hodiny, pro ukončení se hodiny vypnou. Vlaky dojedou do cílových (výchozích) bloků a Plány se ukončí.
Poznámka: Výběrový plán má rovněž testovací dobu Zkusit znovu (Try again), kdy se pokouší spustit určené, vybrané Plány. Celkovou dobu však vždy tvoří maximální hodnota Výběrového plánu, včetně všech dob spouštěných Plánů. Je-li např. Výběrový plán nastaven na 60s, jeden ze spouštěných Plánů na 120s a druhý spouštěný Plán má Zkusit znovu=180s, pak se Výběrový plán bude pokoušet celé 3 minuty (tedy 180s) spouštět oba Plány. Výběrový plán je ukončen po uplynutí této celkové doby nebo ihned, jak se povede spustit všechny dané Plány. Nad logikou tohoto systému by šlo jistě polemizovat, ale zřejmě zbytečně. Bohužel, tady se autoři ani nenamáhali znázornit šedým zbarvením Plány v testovací době. V souboru lokopin_triky_plany (lokopin_railco_58.zip) lze opět v simulaci prozkoumat.
Shrnu-li tedy výhody Timetable pro automatický provoz, jsou zřejmé. Nadefinování je otázkou několika minut, a pak lze jediným tlačítkem, které je už v liště (Spustit/zastavit hodiny) zapnout a vypnout celý provoz. Po vypnutí dojedou mašiny do cílových stanic, což při správném použití jednotlivých Plánů mohou být i stanice výchozí.
Napsat program bez chyby je téměř nemožné. Vždy se něco najde. Před uvedením do provozu pak nastává činnost zvaná ladění, odstraňování chyb. Metody jsou různé, pro ty méně zasvěcené uvedu některé, které s úspěchem používám v programu RailCo TC.
Předně je třeba využívat možností, které program nabízí. Sem patří výpis zpráv (Messagess), Dr.Railroad, Nápověda (většinou stojí za to prohlédnout Manuál i Kontextový Help), kde lze získat základní informace. Jedním z nejdůležitějších nástrojů je New Explorer, který přehledně zobrazuje veškerá nastavení, ale hlavně i vztahy mezi jednotlivými prvky, kde jsou použity, čím jsou ovládány, za jakých podmínek atd. Pokud se "něco" chová jinak, než je třeba a nevíme proč, právě v Exploreru je vidět, kde je prvek použit a jak.
Program TC ovšem obsahuje sám některé chyby nebo nedostatky, neboť ho tvoří lidé. Někdy prostě nelze nějakou činnost identifikovat, srovnávání s obdobným, navenek stejným prvkem, nevede k výsledku, a pak existuje jedna velmi účinná metoda, známá pod mnoha jmény. Za všechny uvedu jen "Vystoupit a nastoupit", který má původ v základním programátorském vtipu. Praktické aplikování má podob více, ovšem jedna z nich funguje nejčastěji. Nefunguje-li něco správně, smažeme to a uděláme znovu. Stejně, ale pokud možno bez kopírování, opětovným vytvořením. Může to být jen výhybka, návěstidlo, ale i blok, celé zhlaví nebo někdy i celý layout.
Další, velmi používanou metodou je porovnání. Se stejným nebo hodně podobným prvkem. Lze to udělat stejně se softwarem, jako s hardwarem. V TC porovnáme třeba dva bloky (nejlépe v Exploreru) nebo prohodíme třeba dva stejné dekodéry nebo detektory obsazení nebo jen jejich vstupy či výstupy. Podle toho, jak se změní nebo nezmění chování, lze pak usoudit, v čem je chyba.
A ještě jedna metoda. Postupné odstraňování nesouvisejících prvků. Aplikuje se v softwaru i v hardwaru. Řekněme, že máme layout (program TC, plán, návrh kolejiště) s deseti bloky, s deseti návěstidly, s deseti výhybkami. Jedno návěstidlo nechodí správně, je třeba závislé na jiném. Layout si zkopírujeme do záložního souboru a postupně odstraňujeme všechny prvky, které s tím chybným návěstidlem nemají nic společného. Lze to dělat jak na layoutu, se softwarovými prvky, tak i s prvky hardwarovými. Postupně odpojujeme dekodéry, detektory, až třeba po výměnu ovladače nebo centrály. Někde prostě chyba být musí. Když chyba zmizí, je vadný naposled odstraněný prvek. Je to sice poměrně dost obtížná, agresivní metoda, ale někdy prostě nic jiného nezbývá.
Z mnoha příkladů uvedu jeden. Dělal jsem pár nových bloků, celkem osm. Zapojil, vyzkoušel, všechno OK, ale najednou problém. V jediném bloku. Mašina vjela dovnitř, kde měla zastavit, na rampě snižovala rychlost až na prahovou, ale pak nezastavila. Prahovou rychlostí v klidu pokračovala dále. Pořád. Ani jsem nezkoušel, jestli zastaví někde v dalším bloku nebo jak dlouho pojede. Porovnání s blokem, který fungoval dobře, nic neukázalo. Všechna nastavení v pořádku. Stačilo však blok smazat, vytvořit znovu a chyba zmizela. Jednoduché a účinné. V souvislosti s podobnými problémy zmíním jednu věc. Kopírování mnohdy usnadní práci, ale někdy právě to kopírování vede k podobným problémům. "Něco" se převede, ale ne vše je pak zobrazeno a tudíž nejde odstranit. Nedoporučuji prvky (zvláště bloky) kopírovat. Lépe je nové vytvořit.
Zde mohu jen napsat, že Závěr není závěr. Zatím přidávám, až se ze mne kouří.
LokoPin | 19.03.2009 | Editace grafických prvků |
26.03.2009 | Nápověda | |
28.03.2009 | Automatické rozpojování | |
28.03.2009 | Fiktivní prvky | |
01.04.2009 | Doplnění o ND4 | |
27.04.2009 | Bloky - umístění na kolejišti | |
16.03.2010 | Autoblok | |
16.03.2010 | Osmička | |
18.03.2010 | Rychlost | |
18.07.2010 | Fiktivní prvky - editace | |
13.09.2010 | Plán - průběh a návaznost | |
04.10.2010 | Chyby | |
05.10.2010 | Chyby - postupné odstraňování | |
23.03.2011 | Plán - spuštění, ukončení, Timetable | |
11.03.2012 | Rychlost - rozdíl mezi 5.8 a 7 | |
10.10.2012 | Akcelerace a decelerace při změně rychlosti | |
17.11.2012 | Vazba Plán - Loko | |
11.01.2013 | Izolované úseky - detekce obsazení doplnění odkazu | |
11.12.2013 | Vazba Plán - Loko | |
03.07.2014 | Osmička - verze 7 | |
29.04.2018 | (poslední editace) | |
Spolupracovali: | Igor Kmeť (Rychlost), Michal Kloz (Vazba Plán - Loko) |