Symulator EU07 (i nie tylko) > Na warsztacie
Sterowanie ruchem przez zewnętrzną aplikację
El Mecánico:
Jeśli taki SCS miałby możliwość odczytu i zapisu komórek pamięci, to zajętości można zostawić na eventach, tam gdzie są, zamieniając je tylko na ustawienie arbitralnej wartości dla true (tor wolny) lub false (tor zajęty), albowiem fachowo mówi się o niezajętości toru.
dymus:
--- Cytuj ---Jeśli taki SCS miałby możliwość odczytu i zapisu komórek pamięci, to zajętości można zostawić na eventach
--- Koniec cytatu ---
Hmm ale po co zostawaiać komórki pamięci, skoro SCS w samych swoim pulpicie pokazuje zajętości torów oraz blokuje już ustawiony przebieg, tak że już inne sprzeczny go nie ustawi?
Chyba że chodzi o rozwiązanie tymczasowe na istniejących sceneriach, ale tak czy tak w torach mają być odcinki izolowane zajętości dla SCS'a więc tak czy tak zajętośc pokaże, pomijając używanie komórek pamięci.
miko22:
--- Cytat: maciek001 w 01 Marca 2017, 19:12:02 ---@miko22: W SCS-ie trzeba od razu mieć wszystkie stacje?
--- Koniec cytatu ---
Jeśli uda się usunąć z odpowiednich plików eventy sterujące tylko jedną stacją, to pewnie można by sterować na początek tylko tą jedną stacją, a reszta mogłaby działać po staremu - tak myślę. Problemem może być właśnie usunięcie eventów tylko dla wybranej stacji. Do usuwania wszystkich z całej scenerii jest z MaSzyną dołączony program "EventoUsuwacz_v1.0" w folderze "programy_na_potrzeby_symulatora", a w przypadku pojedynczej stacji pewnie trzeba by to zrobić ręcznie. Nigdy się w to nie zagłębiałem, próbowałem tylko kiedyś sił z napisaniem scenariusza. A link do ISDR-a podałem głównie po to, żebyś sobie zobaczył, jak takie urządzenia (akurat w tym przypadku przekaźnikowe) działają w rzeczywistości - nastawianie przebiegów, ich utwierdzanie, realizacja, ręczne rozwiązywanie i wygaszanie sygnałów, czasami dodatkowe zależności dla sąsiednich rozjazdów, działanie i obsługa poszczególnych rodzajów blokad liniowych itd.
Paul:
--- Cytuj ---Czyli tak: ustawianie się semaforów powinno być w MaSzynie, przebiegi i uzależnienia też.
--- Koniec cytatu ---
Główną ideą SCS jest przeniesienie logiki sterowania na zewnątrz, z uwagi na to że implementacja przebiegów i uzależnień w eventach jest bardzo utrudniona - życzę powodzenia w odwzorowaniu sterowania dużą stacją zgodnie z tablicą zależności, z wszystkimi wykluczeniami i ciągłą kontrolą stanu elementów. To co było dotychczas na eventach to raczej prowizorka dla wybranych przebiegów, choć z punktu widzenia maszynisty działała - przynajmniej dopóki dwa pociągi nie trafiły z jakiegoś bzdurnego powodu na jeden tor, uniemożliwiając kontynuację scenariusza.
Oczywiście wszystko zależy od twórcy scenerii, SCS nie jest "jedynym słusznym" rozwiązaniem - można też zrobić tak, że eventy wykonawcze będą dostosowane do SCS, ale wariantowo można będzie włączyć scenerię z dołączonym plikiem eventów realizujących logikę, i w takim wariancie SCS nie będzie używany.
--- Cytuj ---Odcinki izolowane są obsługiwane i są wykorzystywane w SCS do sygnalizowania zajętości, a wygaszanie semaforów to klasyczy event _s1, mozna by albo zostawić klasyczy event albo wg zajętości toru za semaforem.
--- Koniec cytatu ---
Nie tylko do sygnalizowania zajętości, przy wyświetlaniu sygnału kontrolowana jest niezajętość całej drogi przebiegu, nie tylko odcinka za semaforem. Ponadto zajętość jest konieczna do śledzenia przemieszczania się pociągów (przesuwanie numerów), bez którego nie zadziała pełna automatyka. Event wygaszający może się przydać jako zabezpieczenie na wypadek niespodziewanego rozłączenia, kiedy SCS semafora nie wygasi (ale przy rozłączeniu już cała symulacja zacznie się sypać z powodu utraty części informacji).
--- Cytuj ---W sumie to na razie nie jest ważne czy będzie sterowaniem SCS czy pulpitem bo tak czy siak potrzebny jest jakiś interfejs do wymiany sensownych danych. Jeden interfejs można wykorzystać do komunikacji z każdym programem ;) Zrobić trzeba sprawną komunikację z SCS a w przyszłości może uda się podpiąć pulpit kostkowy do SCS-a albo bezpośrednio
--- Koniec cytatu ---
Interfejs wymiany danych używający WM_COPYDATA i eventów jest już opracowany i działa. Nie jest to interfejs specyficzny dla SCS, może być wykorzystany w innych aplikacjach sterujących, testowałem to wstępnie z urządzeniami E i pulpitem kostkowym, nie było problemów. Pytanie czy zostanie taki interfejs sterowania (przynajmniej "prowizorycznie"), czy zmienione zostanie medium transmisyjne (np. na TCP/IP, co było omawiane - można dostosować SCS), czy w ogóle wszystko zostanie zmienione, łącznie z zakresem i formatem przesyłanych danych (o ile ma to jakiś sens, skoro zostało już zrobione; jak na razie uwag do mojego rozwiązania nie ma). W roboczych exe++ zdaje się WM_COPYDATA aktualnie nie chodzi.
Pozostaje jeszcze kwestia interfejsu (głównie blokady liniowe) pomiędzy dwoma procesami SCS, lub ogólnie między aplikacjami sterującymi. Mam na to pewne pomysły, choć w Maszynie chyba nie będzie to w najbliższym czasie potrzebne.
--- Cytuj ---W SCS-ie trzeba od razu mieć wszystkie stacje?
--- Koniec cytatu ---
SCS będzie mógł obsługiwać wybrane stacje, reszta może działać po staremu na eventach lub może jej nie być - np. uruchamiamy scenerię w wariancie tylko z jednym odcinkiem, pomijając wczytywanie drugiego odcinka, który nie będzie potrzebny w danym scenariuszu. W przypadku sterowania częściowo z SCS i częściowo po staremu może być problem z powiązaniem i przekazywaniem informacji (np. numery pociągów, wykluczenia jazd na szlakach) między jednym i drugim rozwiązaniem - nie jest to jednak dużym problemem jeżeli podział jest tymczasowy, z uwagi na stopniowe dostosowywanie scenerii do sterowania z zewnątrz.
--- Cytuj ---Jeśli taki SCS miałby możliwość odczytu i zapisu komórek pamięci, to zajętości można zostawić na eventach, tam gdzie są, zamieniając je tylko na ustawienie arbitralnej wartości dla true (tor wolny) lub false (tor zajęty), albowiem fachowo mówi się o niezajętości toru.
--- Koniec cytatu ---
Chyba jednak prościej przypisać odcinki izolowane niż kombinować z eventami. Pierwsze prototypy SCS powstały przed wprowadzeniem odcinków izolowanych, wykrywały zajętości właśnie eventami torów, działało to kiepsko (niby działało, do czasu aż na torze nie znalazły się dwa pociągi, albo jakiś skład się nie rozłączył, po czym zostawiona część znikała z toru). Odcinki izolowane zostały wprowadzone dla eliminacji problemów z eventami torów.
tmj:
--- Cytat: Paul w 03 Marca 2017, 12:52:59 ---W roboczych exe++ zdaje się WM_COPYDATA aktualnie nie chodzi.
--- Koniec cytatu ---
W tym momencie chodzi teoretycznie, tzn jest w kodzie ale nie mam jak przetestowac funkcjonalnosci. Musialby to sprawdzic ktos inny. A docelowo i tak zapewne sugerowana przesiadka na tcp/ip bedzie sensowna, w ramach pracy na innych systemach niz windows itp.
edit: natomiast co do samych ewentualnych zmian w sterowaniu, zakladam ze jest to cos, co sobie opracuje Firleju w ramach ewentualnych zmian tego, jak zorganizowana jest symulacja itp (jako ze jest to dziedzina ktora sie zajmowal, wiec chyba najlepiej wie co tam bedzie sensowne)
Nawigacja
[#] Następna strona
Idź do wersji pełnej