Řízení dopravny modelové železnice

Sem pište, hledáte-li někoho, kdo pro vás něco naprogramuje, či sestaví.
Ferda
Příspěvky: 4
Registrován: 22 črc 2019, 15:13
Reputation: 0

Řízení dopravny modelové železnice

Příspěvek od Ferda » 22 črc 2019, 15:45

Zdravím,
potřebuji spáchat software na ovládání dopravny. Vzhledem k počtu vstupů a výstupů bude možná potřeba silnější nástroj než jen ARDUINO, nicméně je zde možnost použít ARDU k multiplikaci I/O.
V podstatě by mělo jít o načtení dat v podobě odděleného textu ze souboru na SD kartě, následné vyhledání konkrétního řádku v tomto souboru a nastavení parametrů výstupů dle údajů v tomto řádku a vstupů z klávesnice.
Každá pomoc vítaná...

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Řízení dopravny modelové železnice

Příspěvek od pavel1tu » 22 črc 2019, 19:35

Bylo by dobré dát příklad textu + vysvětlivky, počet vstupů a výstupů, tak nějak celkově rozsah.

U nás na výstavě železnic jsem po tom pátral a malé kolejiště bylo na STM32 + rozšiřující desky, velké kolejiště s trafikonem dopravy na celý den bylo na ferovku na nějakém čínském RTU, bylo jich tam asi 6ks a mezi sebou MODBUS.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Ferda
Příspěvky: 4
Registrován: 22 črc 2019, 15:13
Reputation: 0

Re: Řízení dopravny modelové železnice

Příspěvek od Ferda » 23 črc 2019, 01:20

Příklad TXT souboru vypadá asi takto:

0;I1;I2;I3;I4;I5;I6;I7;I8;I9;O1;O2;O3;O4;O5;O6;O7;O8;O9;O10;O11;;;;;;;;
Cesta;VjezdL;Kolej1;Kolej2;Kolej3;Kolej4;VjezdP;DetL;DetP;Zámek;V1;V2;V3;V4;V5;V6;NavL;Nav1;Nav2;Nav3;Nav4;;;;;;;;
1;1;1;0;0;0;1;0;0;0;0;;;;;0;1;1;0;0;0;;;;;;;;
2;1;0;1;0;0;1;0;0;0;1;0;;;0;1;1;0;1;0;0;;;;;;;;
3;1;0;0;1;0;1;0;0;0;1;1;0;0;1;1;1;0;0;1;0;;;;;;;;
4;1;0;0;0;1;1;0;0;0;1;1;1;1;1;1;1;0;0;0;1;;;;;;;;

Když se to tvoří v excelové tabulce, tak je to o mnoho čitelnější...

V prvním řádku:
"0" = jen číslo řádku, I1-I9 = 9 vstupů, O1 -O11 = 11 výstupů
V ruhém řádku:
pro soft nepodstatné, jen popis jednotlivých vstupů a výstupů pro lepší orientaci při psaní tabulky a fyzickém připojování
V řádku 1-4:
Jednotlivé vlakové cesty

Dle vstupů I1-I6 se vyhledá příslušná vlaková cesta (čili správný řádek) a následně se dle něj nastaví výstupy O1-O11.
Když se na I7 (Detekce Levá) objeví "1", tak aktivovat Zámek na I9 a přestat sledovat vstupy I1-I6, aby nemohlo dojít k "podhození" výhybek pod vlakem. Ve chvíli, když se aktivuje Detekce Pravá na I8, tak uvolnit Zámek na I9 a opět začít sledovat Vstupy I1-I6 pro nový příkaz.

Je to jen základní schéma. Ten proces bude ještě o něco složitější. Ale v podstatě už přibude jen několik dalších "If-Then". Prostě jen klasický rozhodovací proces. Potřebuju napsat hlavně rutiny pro načtení souboru, obsluhu multiplikátorů, přiřazení I/O a vyhledání správného řádku. Rozhodovací smyčky si už v nejhorším dopíšu sám.
Ve skutečnosti těch řádků může být i několik set a i počty vstupů a výstupů mohou lehce překročit 100-vku. Proto jsem psal o multiplikaci, aby to bylo univerzálně použitelné. Podle velikosti dopravny se přidají multiplikátory a při startu se přiřadí jednotlivé I/O k fyzickým vstupům a výstupům. Jiný soubor.csv = jiná dopravna. Všechny I/O jen TTL signál. Výkonové členy si dodáme sami, tak jako sběrnici pod kolejištěm.

V podstatě potřebujeme univerzálně použitelný mozek pro rozhodovací proces se schopností konfigurace dle příslušného csv souboru. Platforma není až tak důležitá. Může být ORANGE, RASPBERRY, nebo jiná. ARDU patrně nebude stačit, nebo se použije jen k multiplikaci.

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Řízení dopravny modelové železnice

Příspěvek od pavel1tu » 23 črc 2019, 05:59

Tak tohle Arduino nedá.
Co jsem viděl, tak to co požaduješ tam měli, na těch RTU a podle mne ty RTU řídilo RPi které tam bylo jako PC i se sledováním pozic vlaků.

Ale detaily nevím, jen že to komplet stavěl a vymýšlel několik let než byl spokojen.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Uživatelský avatar
gilhad
Příspěvky: 778
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Řízení dopravny modelové železnice

Příspěvek od gilhad » 23 črc 2019, 12:17

Takhle obecně je to v podstatě popis paměti adresované 9 linkama (512 stavů) ve které jsou uložené 11 bitové slova a reší to EEPROMKA (nebo se ta adresa převede na adresu buňky (byte,wordu, ...) na SD kartě) a výstupem je rovnou požadované binární slovo.
Pokud ty vstupy nejsou nezávislé a spousta z nich jsou stejný chybový stav, který "nemůže nastat" tak jde spíš o nějaký FPGA obvod, kam se nasype výstup zoptimalizovaný přez nějaké ty Karnaughovy mapy nebo podobné optimalizace.

A nebo je to velice řídká matice a pak jde o to ke vstupnímu řádku najít rádek výstupní a pak je vhodný nástroj buď databáze (a případně hashe), nebo analýza a zjednodušení zadání na bloky typu "pokud je vlak detekován v úseku vstupů i5-i8, tak se pošle signál, že "jede vlak tunelem zleva" a použije matice pro tunel (houkaní, svícení, cinkání..") bez ohledu na stav zbytku." a pokud je signál "jede vlak tunelem zleva" a zároveň "jede vlak tunelem zprava" tak se použije matice pro "hromadná havárie".

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Řízení dopravny modelové železnice

Příspěvek od pavel1tu » 23 črc 2019, 12:26

No,
ty data trafikonu, je jedna věc,
druhá věc je spousta vstupů a výstupů, snímače kde projel vlak, ovládání a stavy výhybek, semafory, závory , točna ....

Měl jsem TTčka kdysi doma - kolejiště 3x1,5m
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Ferda
Příspěvky: 4
Registrován: 22 črc 2019, 15:13
Reputation: 0

Re: Řízení dopravny modelové železnice

Příspěvek od Ferda » 23 črc 2019, 17:52

To gilhad:
Ta druhá popisovaná možnost je nejblíže požadovanému. Jen řádek je třeba vyhledat dle zadání z klávesnice (nebo ovládacího panelu). Stavy jede vlak a zároveň jede vlak by měly ošetřit zámky, jako v uvedeném příkladu. Řekl bych, že načtení do EPROM bude nutností, už jen z důvodu rychlosti vyhledávání.
Ještě pro doplnění. Není definován žáden základní stav. Jediné co se bude průběžně zjišťovat je stav detektorů a stisky tlačítek.

To pavel1tu:
Taky jsem psal, že ARDU na to určitě nestačí. ;-)

Uživatelský avatar
gilhad
Příspěvky: 778
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Řízení dopravny modelové železnice

Příspěvek od gilhad » 23 črc 2019, 19:24

Pokud jsou v systemu i prvky ovladatelne zvenci (pozice masinek - nekdo ji vezme a postavi jinam), je pravdepodobnost dosazeni "nemozneho stavu" prakticky rovna 100%. Pokud tam takove prvky nejsou vubec zadne, tak ta pravdepodobnost klesa az nekam k 99%.

Neni-li definovan zakladni stav po startu systemu (coz neni nic zvlastniho), klidne se muze stat, ze se to rovnou zapne do nektereho ze zakazanych (nekdo tam blbe rozestavil masinky a zadne SW zamky ho nemely jak zastavit a pak to zapnul)

Zamky, nezamky, je proste pocitat s tim, ze se system do "zakazanych/nemoznych" stavu dostane a mit pro ten pripad nejake reseni (v nejjednodussim pripade vypojeni vseho a rozblikani velke cervene kontrolky)

---

Ja bych to spis nez jako jeden silene komplikovany system s milionem vstupu a jednou univerzalni tabulkou (ve ktere nesmi byt preklep ani logicka chyba a jejiz velikost roste exponencialne s poctem vstupu) resil jako distribuovany system (stejne jako se to dela v realite), kde je nejaka obecna osnova (jizdni rad) a podrizene jednotky (prednosta kazde stanice, masinfira kazde soustavy a kazdy hradlar po trati) si resi tu svoji, zvladatelne slozitou cast (hradlar: Ha, blizi se vlak, spustim zavory, zacnu blikat, prestanu az odjede a nikdo nebude v dohledu) (masinfira: mam zelenou - jedu - takze zatopim pod kotlem, vypustim dym, zaklapu motorem, rozsvitim svetla a zacnu tocit kolecky, vidim vlak jedouci naproti - brzdim, houkam, blikam a hlasim nahoru katastrofu)

Tim se obrovsky problem rozpadne na radu vyrazne mensich, u kterych je sance nejak domyslet dusledky a pripadne i delat zmeny na zaklade zkusenosti, aniz by se muselo predelat vse od zakladu. Navic srazka vlacku neni zdaleka tak fatalni, jako skutecna, tak se to da postupne strefovaci metodou poladit.

A hlavne spousta tech podsystemu bude identickych (typicky kazdy hradlar jde zkopirovat, masinfira taky, prednosta stanice se lisi jen tim, kolik ma koleji a ktere jsou slepe), takze misto matice 100x100 mas 5 identickych kopii matice 3x8, 10 kopii matice 5x4, 4 podobne matice 8x10 a jednu 5x20 a razem je to VYRAZNE resitelnejsi

Woyta
Příspěvky: 16
Registrován: 17 črc 2019, 17:04
Reputation: 0

Re: Řízení dopravny modelové železnice

Příspěvek od Woyta » 23 črc 2019, 19:58

Tak pocet digitalnich vystupu arduina neni konecny. Taky ted u meho projektu rozsiruju pocet pomoci MCP23017 modulu. 16pinu na modul a modulu muzes mit az 8.

Co si pamatuju nektera kolejiste v klubech tak tam se to resilo tak, ze masiny meli magnet na podvozku a v koleji na nadrazi bylo magneticke cidlo.
Koleje na nadrazi meli snizene napeti aby vlak jelo pomaleji a neprejel cidlo. Cidlo odpojovalo napajeni do koleji a na panelu indikovalo, ze tam je vlak. Vlak se dal poustel tlacitkem na panelu.

Tenkrat zadne pocitace nebyli a takhle nam to celkem fungovalo. Na smycku se vzdy poustel jen jeden vlak.

Takhle zjednodusene by ti to asi mohlo fungovat.

Automaticky management obsazenych koleji nadrazi. Smycku muzes teoreticky rozdelit do sektoru. Pokud se neobejvi signal z dalsijho segmentu, tak je kolej obsazena a vlak nemuze pokracovat.

Ferda
Příspěvky: 4
Registrován: 22 črc 2019, 15:13
Reputation: 0

Re: Řízení dopravny modelové železnice

Příspěvek od Ferda » 23 črc 2019, 23:12

Jen pro objasnění.
Nejde o řízení vlaků. Jde pouze o postavení vlakové cesty. Jezdíme na "modulovce", takže každý vlak má svého strojvůdce a ten je zodpovědný za svůj vlak. Zde se bavíme pouze o postavení vlakové cesty, nebo několika, v rámci jedné dopravny. Potřebuji po aktivaci několika tlačítek vybrat správný řádek z databáze a na základě tohoto řádku nejdříve zkontrolovat, zada je možno tuto (v řádku popsanopu cestu) postavit s ohledem na již případně postavené jiné cesty a v případě, že tomu nic nebrání, pak tuto cestu postavit. k tomu potřebuji znát jen obsazení jednotlivých kolejí (detektory) a zámky (čili kolizní body s jinými cestami - které jsou definovány v řádku).
Pokud moje požadovaná cesta nekoliduje s jinou, už postavenou, pak nic nebrání ji postavit. Neřeším zpětnou vazbu od výhybek.
Takže se jedná o ovládání jedné jediné dopravny bez ohledu na navazující dopravny a bez ohledu na pohyb vlaků.
Takže:
Chci postavit vlakovou cestu od někud někam. Zadám povel z ovládacího panelu sekvencí tlačítek. Typicky "odkud", "přes kterou kolej", "kam". Zkontroluji, že nejedu na obsazenou kolej (detekce) a nekoliduji s jinou už postavenou cestou (zámky). Takže ji postavím a povolím jízdu vlaku, tedy povolím jízdu návěstidlem na "zelenou". To je vše. Pokud vlak projede a detekce ohlásí průjezd, pak shodím návěst povolující jízdu na "červenou" a je hotovo.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 14 hostů