Timetable Jak na to a postřehy ostatních

  • Tvůrce vlákna Tvůrce vlákna Howky
  • Datum začátku Datum začátku
Čaute dělám si Timetable do OR a když jsem to zapnuWhatsApp Image 2022-06-26 at 22.27.06 (1).jpegWhatsApp Image 2022-06-26 at 22.27.06.jpegl tak mi to ukázalo tohle (1. screen) tak jsem zkusil vyměnit vlak místo najbrt 460 na 810 normálně se to zaplo tak mě napadlo jestli to není tím jak je ta Sestava: <chybí: protože to u 810 nemám to <chybí: nevíte co s tím ? Díky za odpověd.
 
Chybí ti souprava, zřejmě pod názvem "4620.015 + 2x063 + 460.con". Podívej se, zda ji nemáš pod mírně pozměněným názvem, ale jednodušší ji bude přesně pod tímto označením vytvořit znovu. I kdybys sis tam musel šoupnout mašinu jiného čísla, název souboru je nutné dodržet.
Pokud soupravu máš, zkontroluj si, zda v ní máš všechna vozidla a chybějící nahraď. Např. pomocí TSRE-5 Consist Editor.
 
Chlapci, jak provádíte křižování nákladních vlaků? Nákladní s osobním jde pěkně - osobní vlaky mají zřejmě prioritu, ale dva nákladní se mi nedaří ani pomocí $wait.
 
Majú vlaky nastavené trasy napevno, alebo využívaš aj alternatívne trasy definované cez "passing path"? Inak odchody a príkazy pre stanice v Timetable berie OR len pre koľaje s nástupišťom, ak vlak ide cez koľaje označené ako nákladné (sidings), treba ich do TT doplniť samostatne.
 
Zajímavost:
V Jihlavě je ve směru od Brna vlak často projíždí přes "1.nástupiště" (5a kolej) a zastavuje až na 2. nástupišti (7. a 9. kolej). V TT se mi ale nedařilo vlak donutit první nástupiště projet a zastavit až dále. Nakonec jsem si vygeneroval soubor "sidings" a z něho jsem ručně do TT vložil jak kolej u prvního nástupiště, tak i u druhého. Přes první nástupiště mám průjezd. Vlak potom krásně zastaví až na druhém.

Otázka:
Opět v Jihlavě - po odpojení soupravy vytvořím nový "vlak", který má cestu na zhlaví a objíždí do vyčkávací pozice na koleji 1a. Bohužel se ale lokomotiva nehne za odjezdové návěstidlo. V dispečerské aplikaci můžu ručně změnit signál a mašinka celou trasu projede. Automaticky ale nepomáhá ani $callon ani jiné příkazy. Tipuju, že je něco špatně v sigcfg (mám verzi souborů pro ORTS). Máte nějakou zkušenost?

Díky moc!
 
To zastavovanie na vzdialenejšom peróne sa mi podarilo ošetriť cez /setstop, kedy si vlak natiahne prvú zastávku z CP nadväzujúceho vlaku, ktroého trasa začína na vzdialenejšom peróne. Problémom tejto funkcie ale je, že potom je v CP vlaku iba tá jedna zastávka a preto je potrebné vlak na predošlej zastávke rozdeliť na dva.

Máš v sigcfg nadefinovanú funkciu TrainHasCallon ()?
 
Předem upozorňuji, že jsem nikdy do návěstidel v MSTS/OR "nedělal". Moje kroky jsou teď spíš pokus/omyl.

1) chvilku jsem se věnoval obsahu souborů sigcfg a sigsrc. Jejich obsah je poměrně srozumitelný, ale samozřejmě to záleží na tvůrci. Mám "na stole" trať BP, která není zas tak dobře čitelná, a snažím se to "ohýbat".

2) Předně - situace, kdy mi lokomotiva nechce odjet od soupravy, je o to jednodušší, že v tu chvíli jí cestu nikdo neblokuje - mám pouze 2 vlaky - jeden testovací a jeden "pozorovací", který nikam nejede. Podmínka BLOCK_CLEAR je jen pro otestování.

3) Podle instrukcí jsem zkusil použít $callon v TT, jak v hlavičce, tak i v časovém údaji (pro jistotu). Nicméně chybělo mi použití TrainHasCallOn() ve skriptu návěstidla. Oficiální info se dá najít na Elvasu: http://www.elvastower.com/forums/index.php?/topic/24391-new-signalling-functions/

4) Našel jsem si v TSRE5 návěstidlo, resp. jeho typ, od kterého se nemůže mašinka pohnout. K němu jsem si našel definice v sigcfg a sigsrc. BTW, pokud v dispečerské aplikaci navolím "Proceed" nebo "Approach", mašinka se rozjede. Do skriptu jsem doplnil podle instrukcí:
C++:
SCRIPT NAV7A

    extern float    this_sig_lr ();
    extern float    sig_feature ();
    extern float    state;
    extern float    draw_state;

    extern float block_state();
    extern float route_set();
    extern float def_draw_state();
    extern float sig_feature();
    extern float enabled;
    extern float TrainHasCallOn();

    float            this_nor;
    float            this_rep;
    float            this_dis;
    this_nor = this_sig_lr (SIGFN_NORMAL);
    this_rep = this_sig_lr (SIGFN_REPEATER);
    this_dis = this_sig_lr (SIGFN_DISTANCE);

    state = this_nor;
   
    if (((block_state () == #BLOCK_OCCUPIED)||(block_state () == #BLOCK_CLEAR)) && TrainHasCallOn())
    {
        state = SIGASP_STOP_AND_PROCEED;
        draw_state = 3;
    }
    else if ( this_nor ==# 0 )
    {
        ...
Asi byste se divili, proč tam kombinuju podmínky BLOCK_OCCUPIED a BLOCK_CLEAR, když běžně se uvažuje s BLOCK_OCCUPIED. Problém je, že trať za návěstidlem obsazená není, takže nastavení CallOn by bylo zbytečné. Podmínka BLOCK_CLEAR je jen pro otestování.

Ale možná je to zkrátka jen špatně nalinkované návěstidlo a já se teď s tím trápím úplně marně...

5) Výsledek je zatím ten, že mašinka se odpojí, vytvoří nový "vlak" a vydá se nazdařbůh k návěstidlu. Návěstidlo vlak rozpozná (svítí bílé světlo - skript vběhne do nové podmínky), ale v dispečerské aplikaci se tváří jako "STOP". Vlaková cesta se po dobu jízdy k tomuto návěstidlu postaví, ale po zastavení mašinky se rozpadne. Kliknutí na "Enable Call On" na daném návěstidle v dispečerské aplikaci nic nedělá. Ruční přestavení návěstidla opět povolí jízdu dál.

Budu rád za postřehy.
Máš v sigcfg nadefinovanú funkciu TrainHasCallon ()?
...a k tomuto: nenašel jsem v dokumentaci, jak funkci "definovat" v souboru sigcfg. Našel jsem jen způsob, jak funkci volat v sigscr.
 

Přílohy

  • screen.jpg
    screen.jpg
    229.5 KB · Zobrazeno: 2
Nalezen workaround - pokud postavím cestu pro runround do šturcu (ne na trať, jak se to běžně dělalo), tak se cesta postaví dokonce na bílou a mašinka vyrazí. Pro čistý oběh soupravy je potom lepší mít pouze dva vlaky - končící a začínající. Příkaz runround je potom parametrem $forms u končícího vlaku a uvede se cesta runround pro lokomotivu. Kdo věděl, ok. Kdo nevěděl, teď už ví.

Postupně si stavím provoz Jihlava - Havlíčkův Brod podle GVD 2005/6 (na internetu jsou k dispozici sešiťáky). Kdyby byl zájem, třeba bych i nasdílel.
 
Ještě doporučím příkaz $forcereversal v rádce #note. Díky němu posun nejede až za vjezdové návěstidlo, ale hezky zastaví tam kde určíš.
 
Máš pravdu, funkcia TrainHasCallon () sa definuje v sigscr, nie v sigcfg, nejak sa mi to poplietlo.

Ja príkaz runround nepoužívam, pretože sa pri hustejšej doprave sa nedá celkom predpokladať sled ostastných vlakov. Obeh súpravy robím radšej ako ďalší vlak, kde viem aj zadať aj obmedzenie rýchlosti na 30 km/h zadaním príkazu $max=30 v riadku #speedkph.

Inak $forcereversal nezastaví vlak tam, kde umiestniš reverzný bod, ale zastaví vlak za výhybkou, ktorá sa cestou späť bude prestavovať. Bez použitia $forcereversal vlak zastaví na určenom reverznom bode, resp. pred nasledujúcou výhybkou za reverzným bodom.
 
Pokud by se vám někdy stalo, že vám program v TT spadne a v logu nevidíte nic než LOADER Difference = -xyz (záporné číslo), tak je to s největší pravděpodobností chyba syntaxe v TT. V kódu zpracovávajícím TT totiž není téměř žádné logování.
Zatím mám zkušenost s:
$waitany (bez uvedení cesty, na kterou se má čekat)
$waitany=abc (cestu uvedete, ale cesty nemají společný segment)
#consist=cd_242+4Bdtmee (název consistu je cd_242+4Bdtmee, program hledá dva consisty kvůli "+", má být <cd_242+4Bdtmee>)

atd.
 
Kdyby se někdo nudil, dávám k dispozici svůj repozitář s TT primárně určený pro trať Jihlava - Havlíčkův Brod. Asi se v budoucnu rozšíří o směr Brno, ale zatím mám nachystaný GVD jen okolo Jihlavy. Zpracováno je zatím 9 vlaků a 5 pomocných posunů.
Problematické jsou stále úvratě rychlíků 66x - nastupující lokomotiva ne a ne projet za návěstidlo z koleje 5a (označená ve hře jako 13a). Podporu pro callon jsem tam, věřím, doplnil, ale ani tak se nechce hnout. Pokud s tím máte nějaké zkušenosti, sem s nimi. Pevně věřím, že čím víc se navzájem naučíme, tím víc bude projektů k ježdění.
Trať je to BP před aktualizací 96 (ačkoliv nepředpokládám výrazné změny). Používám i BP Trainset + ORCZSK.
V repozitáři jsou i cesty a consisty. Jsou tam i mírně upravené sigxxx.dat soubory.
Ve složce GVD jsou potom sešiťáky a soubor grafikonu pro program GVD dostupného zde:
https://github.com/jub77/grafikon.
Podle mnou vymyšlených obratů lokomotiv mi to vychází na cca 50 různých lokomotiv za den. K dispozici mám jen GVD2005/6, chybí mi technologické postupy jak v Jihlavě, tak i v HB. Hodně čerpám z paměti, pár info je na https://spz.logout.cz/provoz/jihlava/jihlava2005.html. Nemám ambice vytvořit model 1:1, spíš mít možnost projet se podle reálného GVD. Samozřejmě nelze opomenout anachronizmus současné podoby BP (zvýšená traťová rychlost, autoblok) a tehdejšího stavu tratě. Tehdejší provoz v Jihlavě mi ale přišel hodně zajímavý - ještě jezdilo několik párů uhelných vlaků směr Linz, jezdil páteční/nedělní rychlík Znojmo-Praha, rakve jezdily relace Jihlava - Pardubice - Hradec Králové, atd. Mezi Brodem a Jihlavou pendlovaly laminátky s patrama a svět byl ještě bezstarostný.
Co mě čeká:
- vyzkoušet "pool" pro lokomotivy na obrat ve stanici HB (náklady směr Žďár) a Jihlava (hlavně R66x)
- dořešit úvratě R66x
- upravit trainset tak, aby použité skiny měly funkční cab
- vyladit hratelnost jednotlivých vlaků
 
Ja príkaz runround nepoužívam, pretože sa pri hustejšej doprave sa nedá celkom predpokladať sled ostastných vlakov. Obeh súpravy robím radšej ako ďalší vlak, kde viem aj zadať aj obmedzenie rýchlosti na 30 km/h zadaním príkazu $max=30 v riadku #speedkph.

Inak $forcereversal nezastaví vlak tam, kde umiestniš reverzný bod, ale zastaví vlak za výhybkou, ktorá sa cestou späť bude prestavovať. Bez použitia $forcereversal vlak zastaví na určenom reverznom bode, resp. pred nasledujúcou výhybkou za reverzným bodom.
Zajímavé je, že cesta runround u mě nerespektuje reverzní bod a chová se, jako bych měl forcereversal nastavený. Tím lokomotiva objede soupravu, aniž by potřebovala projet návěstidlo směrem na soupravu. Tím vlastně odpadá potřeba callon.
Nicméně při obratu na osobáku v Havlíčkově Brodu mám obrat přes odstavnou kolej a tam mašinka ochotně reverzuje za návěstidlem a bez problémů na soupravu najede.

Zatím jsem teda nepřišel na to, jak udělat úvrať v Jihlavě - odstupující plecháč se odpojí a čeká u návěstidla na volnou cestu. Mezitím se má připojit z druhé strany brejlovec a hurá na brno. Brejlovec ale stále stojí u posledního návěstidla směr souprava a ne a ne se pohnout. Mám u něj aktivní callon, v kódu k signálu to rozsvítí bílou (takže callon podmínka je splněná), ale mašinka se hne, až když v dispatcher okně signál ručně změním na APPROACH nebo PROCEED. Pokud to nevyřeším, tak to budu muset nějak obejít.... Pokud máte někdo s tímto zkušenosti, rád si nechám poradit.

Díky
 
@paashi Mě to píše, že chybí cony cd_230035solo.con, cd_242259solo.con, 230.091 + 20x Falls prazdny, cd_242259+4Bdmtee.con, cd_731006solo.con, cd_210027solo.con, cd_242259solo.con, cd_721097+10nakl.con, cd_714208_solo.con. Sólo lokomotivy pro mne není problém si udělat sám, ale nevím co dát za vozy do cd_721097+10nakl.con. Jinak je dobré si con soubory pojmenovat tak, aby náhodou nepřepisovaly jiné. Třeba přidat do názvu mp nebo něco. Nebo naopak jiné nepřepsal tvoje.
 
@paashi Mě to píše, že chybí cony cd_230035solo.con, cd_242259solo.con, 230.091 + 20x Falls prazdny, cd_242259+4Bdmtee.con, cd_731006solo.con, cd_210027solo.con, cd_242259solo.con, cd_721097+10nakl.con, cd_714208_solo.con. Sólo lokomotivy pro mne není problém si udělat sám, ale nevím co dát za vozy do cd_721097+10nakl.con. Jinak je dobré si con soubory pojmenovat tak, aby náhodou nepřepisovaly jiné. Třeba přidat do názvu mp nebo něco. Nebo naopak jiné nepřepsal tvoje.
Pojmenování provedu.
Nové consisty jsem, pravda, zapomněl přidat. Člověk chce udělat "rychlou zálohu" a zapomene. Baví mě využívat "multi-consist", spousta vlaků jsou prakticky stejné soupravy, jen mašina se mění. Rozhodně to ale není uzavřený TT - Zatím mám v GVD 131 vlaků a to tam není provoz v HavlBrodu. V TT je zatím jen vlaků 9...
 
Vypadá to, že úvrať R66x v Jihlavě bude vyřešena. Každé "návěstidlo" může obsahovat více skriptů (což jsem nevěděl) a v každém důležitém je potřeba upravit skript pro respektování TrainHasCallOn(). Netroufám si tady definovat, jak je to správně, ale můžu aspoň ukázat skript, který mi zafungoval. Jinak v BP je těch skriptů návěstidel nějak hodně. Každá stanice má svoje specifikum.

V Jihlavě návěstidlo na koleji 5a směr 2. nástupiště má BP minimálně dvě hlavy (které jsou vidět v dispečerské aplikaci nebo v editoru tratě). Jedno je "NAV7A" a druhé je "N50BI". To první jsem identifikoval rychle - z editoru tratě lze návěstidlo označit a zjistit název.
Doplnil jsem kód, který by měl rozsvítit bílé světlo. Vlak musí mít nastaven "callon". Bohužel ale toto nestačí - vlak zůstane blokovaný.
C-like:
SCRIPT NAV7A

    extern float    this_sig_lr ();
    extern float    sig_feature ();
    extern float    state;
    extern float    draw_state;

    extern float block_state();
    extern float route_set();
    extern float def_draw_state();
    extern float sig_feature();
    extern float enabled;
    extern float TrainHasCallOn();

    float            this_nor;
    float            this_rep;
    float            this_dis;
    this_nor = this_sig_lr (SIGFN_NORMAL);
    this_rep = this_sig_lr (SIGFN_REPEATER);
    this_dis = this_sig_lr (SIGFN_DISTANCE);

    state = this_nor;
    
    if ((block_state () == #BLOCK_OCCUPIED) && TrainHasCallOn())
    {
        signal = SIGASP_STOP_AND_PROCEED;
        draw_state = 3;
    }
    else if ( this_nor ==# 0 )
    {
        if ( this_rep ==# -1 )
        draw_state = 0;
        else draw_state = 1;
    }
    else if ( this_nor ==# 1 )
    {
        if ( !sig_feature (SIGFEAT_USER4) )
        {
            if ( this_rep ==# -1 )
            draw_state = 2;
            else draw_state = 3;
        }
        else
        {
            if ( this_rep ==# -1 )
            draw_state = 4;
            else draw_state = 5;
        }
    }
    else if ( this_nor ==# 2 )
    {
        draw_state = 15;
    }
    else if ( this_nor ==# 3 )
    {
        if ( this_dis !=# -1 )
        draw_state = 6;
        else draw_state = 7;
    }
    else if ( this_nor ==# 4 )
    {
        if ( this_dis !=# -1 )
        draw_state = 8;
        else draw_state = 9;
    }
    else if ( this_nor ==# 5 )
    {
        if ( this_dis !=# -1 )
        draw_state = 10;
        else draw_state = 11;
    }
    else if ( this_nor ==# 6 )
    {
        if ( this_dis !=# -1 )
        draw_state = 12;
        else draw_state = 13;
    }
    else if ( this_nor ==# 7 )
    {
        if ( this_dis ==# -1 )
        draw_state = 14;
        else draw_state = 15;
    }
    else
    {
        state = 8;
        draw_state = 15;
    }

V dispečerské aplikaci jsem si našel název pravděpodobného viníka: N50BI, jehož skript jsem rozšířil opět o TrainHasCallOn():
C-like:
SCRIPT N50BI

    extern float    enabled;
    extern float    route_set ();
    extern float    next_sig_lr ();
    extern float    block_state ();
    extern float    sig_feature ();
    extern float    state;
    extern float    draw_state;
    extern float    def_draw_state ();

    extern float TrainHasCallOn();

    float            next_nor;
    next_nor = next_sig_lr (SIGFN_NORMAL);

    if ((block_state () == #BLOCK_OCCUPIED) && TrainHasCallOn())
    {
        state = 3;
    }
    else
    {   
        if ( !enabled || !route_set () ||
            block_state () !=# 0 ||
            ( sig_feature (SIGFEAT_GRADIENT_PLATE) && next_nor ==# 0 ) )
            state = 0;
        else if ( sig_feature (SIGFEAT_USER1) && next_nor ==# 1 )
            state = 1;
        else state = 3;


    }
    draw_state = def_draw_state (state);

V tuto chvíli mi už mašinka na vlak nastoupí, bohužel ale musím přijmout fakt, že na návěstidle se zobrazí místo posunu opakovaná výstraha. Pokud byste měli nápad, jak to udělat čistě s posunem, dejte vědět.
 
Back
Nahoře