CarOy TTs terepasztala (vezérlés)


A terepasztal vezérlését egy teljesen saját fejlesztésű rendszerrel oldottam meg. A rendszert fél-digitális rendszernek minősítem, mert a vonatok analóg üzemben mennek (a sínekre adott feszültség határozza meg a vonat sebességét), de az egyes szakaszok tápellátását számítógéppel vezérelem.

A vezérlő blokkábrája:

A PC-be egy egyedi input output kártyát készítettem, amin keresztül a vezérlő és az érzékelő kártyákat tudom megcímezni, és adatot tudok küldeni, illetve fogadni. A hardware eszközök tervezésében és gyártásában nagy segítségemre volt a DAS Kft. Mivel már sokszor dolgoztunk együtt, így zökkenőmentesen meg tudtuk oldani a hardware és a software illesztését.

A vezérlő szoftvert én írtam/írom... mert, amint azt minden szoftveres tudja, kész program nincs, csak átadott... Kezdetben egy viszonylag egyszerűbb vezérlő programra gondoltam, ami elméletileg úgy viselkedett volna, mint a hagyományos analóg üzem. Azaz, hogy ha a vonat egy "lassító" szakaszra ér, akkor alacsonyabb feszültséget kapcsol, majd amikor a "stop" szakaszra ér, akkor kikapcsolja a szakasz tápellátását.
Később, amikor láttam, hogy milyen sebességgel lehet az egyes szakaszok foglaltságát lekérdezni, és a vontok sebességét szabályozni, átalakítottam a rendszert olyanra, hogy a program folyamatosan számol, és közelítőleg meghatározza, hogy melyik vonat a pálya mely szakaszán mekkora távolságot tett meg. Így lehetővé vált, hogy a vonatoknak meghatározzam a sebességgörbéjét (tápfesz - sebesség), és gyorsulási - fékezési görbét számoljak. Ezekkel kibővítve már valós sebességet, sebességkorlátozásokat tudok megadni, hogy a terepasztalon a vonatok még élethűben közlekedjenek.
A vezérlési parancsokat a számítógép képernyőjén egérrel kattintva lehet kiadni, és a forgalmi helyzetet, foglaltságot, váltók-, jelzők állapotát is itt lehet ellenőrizni (persze azért a terepasztalra is rá lehet nézni, hiszen az a lényeg).

A program szabadon konfigurálható, így a forráskód módosítása nélkül tudom a vezérlésbe bevonni az újonnan elkészülő részeket.

A szoftver alapvető belső felépítése:
ˇ APPLI - Működtető szoftverrész
ˇ BASIC - Alapfunkciókat ellátó szoftverrész
ˇ CORE - Mag, alacsonyszintű vezérlő szoftverrész

A CORE rész a fizikai kimeneteket kezeli. Például egy adott tápszakaszra beállítja a megadott feszültség értéket, vagy valamelyik jelző fényét kivezérli.
A BASIC rész az azonos típusú ki- és bemeneteket foglalja egy egyszerűen kezelhető, általában táblázatos formába. (Például: egy 200 bitből álló mező, az összes jelző fényének vezérléséhez).
Az APPLI részben minden a terepasztalon fellelhető elemhez egy szoftveres object-et rendelek, ami az adott elem működését / működtetését ellenőrzi, végzi, illetve amely a képernyőn való helyes megjelenítésért felelős.

A program ciklikusan fut, jelenleg 10-15 ezredmásodperces időzítéssel. Minden ciklusban:
ˇ beolvassa a bemeneteket
ˇ kiszámolja az új állapotokat, vezérléseket, sebességeket
ˇ és végül beállítja a kimeneteket.

Foglaltság érzékelés:
A vonatok elhelyezkedését a pályán foglaltság érzékeléssel detektálom. A pályát szakaszokra bontottam, és minden szakasz külön-külön érzékelő bemenetre van kötve a DETR kártyán. A vonatokban általában csak a mozdonyt érzékelem, mert abban amúgy is ki van alakítva az áramfelvétel. Az analóg mozdonyokba csak egy kis kondenzátort kell beleépítenem. (A kondenzátor nem nagyobb, mint 1x2x3 mm, így minden mozdonyban elfér.) A vezérlőprogram viszont az egész vonat foglaltságát jelöli, tehát azoknak a kocsiknak is jelzi a foglaltságát, amelyikben nincs is kondenzátor, hogy valós foglaltságot adjon. Ezt úgy oldottam meg, hogy a vezérlő programban meg kell adni a vonatok hosszát (később majd a vonatba sorolt kocsikat) és azt, hogy a vonat elejétől milyen messze van az első, illetve a vonat végétől milyen messze van az utolsó valós foglaltságot adó tengely. Mivel a mozdony-karakterisztika felvétele után már ki tudom számolni, hogy hol van a mozdony (valós foglaltság), így ha ezt kiterjesztem előre, illetve hátrafele, akkor az egész vonat helyzetét is ki tudja számolni a program. Az így számított vonathossz alatti szakaszokat is foglaltnak jelölöm, ezek a virtuális foglaltságok.

A valós foglaltság érzékelés elve:
Hogy a vonatokat ne csak akkor tudjam érzékelni, amikor megy, és folyik rajta áram, a tápvezetéken mindig rajta van egy 2 voltos váltóáramú mérőjel, amit a KDA kártya állít elő. Ezt a mérőjelet viszi át a mozdonyokba szerelt kondenzátor, és detektálja a DETR kártya.

A pálya szakaszolása és bekötése:
A pályát alapvetően két ok miatt szakaszolom. Az egyik, hogy kialakítsam a különböző tápszakaszokat (ezeken a szakaszokon 1-1 vonat tartózkodhat egyszerre, és az adott szakasz tápellátását a PC-ről tudom megadni). A másik ok a vonatérzékelés. Vonatérzékelés céljából sűrűbb szakaszolást alkalmazok, mint a tápellátásnál. Átlagosan 3 érzékelt szakaszra bontok minden tápszakaszt.

A vonatok pontosabb megállása érdekében az állomásokon a jelzők előtt rövidebb, míg a nyílt vonalon, és az állomási vágányok középső szakaszán hosszabb szakaszokat alakítok ki.
A főállomás két végén lévő váltókörzetek szakaszolását és bekötését úgy alakítottam ki, hogy egyszerre 2 vonat is tudjon közlekedni rajta (persze, ha nem kell keresztezniük egymás útját).

Szerelvények meghatározása:
A szerelvényeket a mozdonyuk kijelölésével, és vonatba sorolt kocsik megadásával lehet meghatározni. A vezérlőprogram lehetőséget ad arra, hogy a mozdony elé, és/vagy mögé tegyük a vagonokat. A vezérlőprogram ezek után figyelembe veszi a vagonok gördülési ellenállását és súlyát, hogy az emelkedőkön és lejtőkön is jól tudja számolni a vonat sebességét.


Digitális vezérlés