Symulator/MaSzyna/EU07.EXE 424

Z Rainsted
Skocz do: nawigacji, wyszukiwania

Dziewiąty etap prac miał na celu uporządkowanie kodu po integracji trzech linii rozwojowych, a w części badawczej obejmował usprawnienie współpracy odbieraka z siecią trakcyjną. Opisane niżej zmiany zostały udostępnione publicznie w dniu 2014-02-04, jako wersja 14.2.929.424 EU07.EXE.

Integracja z Megapackiem

Zakończona została integracja z Megapackiem. Z powodu niedostatecznych testów podczas integrowania obu linii rozwojowych kodu mogły zostać zagubione niektóre funkcje Megapacka albo uszkodzone te, które wcześniej działały dobrze. Część zmian pozostała "do późniejszego rozpatrzenia", np. działanie wału kułakowego/grupowego.

Integracja z SPKS

Przeprowadzona została integracja kodu z SPKS. Ze względu na znaczące zmiany w obsłudze hamulców (przede wszystkim zmianę jednostek ciśnienia), mogły powstać nowe błędy, które nie występowały wcześniej w żadnej z linii rozwojowych. Zakończenie tej integracji otwiera możliwość dalszej pracy nad nowymi funkcjami, ale jednocześnie konieczne jest wykrycie i naprawienie powstałych błędów. Dokonana zmiana wiąże się również z definitywnym przejściem na pliki FIZ zamiast dotychczasowych CHK (pliki z rozszerzeniem CHK są traktowane jako pozostałości po naprawie struktury logicznej dysku i jako takie usuwane przez niektóre programy antywirusowe).

Wyświetlanie prędkości rozkładowej

Na podglądzie rozkładu jazdy [F3] została dodana informacja o prędkości rozkładowej pomiędzy poszczególnymi posterunkami.

Azymut

Do informacji o współrzędnych kamery [F2] został dodany kąt azymutu. Kąt ten rośnie od 0° przy patrzeniu na północ aż do 359° (wschód: 90°). Może być używany do ustalenia kąta obrotu obiektów wstawianych do scenerii.

Kurek trójdrogowy

Przed załączeniem sprężarki pantografów [V] należy odłączyć zbiornik pantografu od zbiornika głównego za pomocą kurka trójdrogowego [Ctrl]+[V], ponieważ sprężarka pantografów ma zbyt małą wydajność, aby napompować zbiornik główny. Po podniesieniu pantografów i włączeniu głównej sprężarki należy ponownie połączyć zbiornik pantografów ze zbiornikiem głównym [Ctrl]+[Shift]+[V], inaczej pantografy opadną po pewnym czasie z powodu nieszczelności instalacji pneumatycznej pantografów.

Kurek trójdrogowowy oraz sprężarka pantografów dostępne są tylko z przedziału maszynowego, a w przypadku EZT – z członu silnikowego. W informacjach o pojeździe [F2] wyświetlane jest ciśnienie w zbiorniku pantografów oraz stan kurka trójdrogowego jako =ZG (ZP połączony z ZG) albo |ZG (ZP odcięty od ZG, można pompować sprężarką pantografów).

Komórki pamięci dla odcinków izolowanych

Użycie nazwy odcinka izolowanego we wpisie toru będzie tworzyć automatycznie komórkę pamięci o tej samej nazwie. Jeśli jednak taka komórka zostanie zdefiniowania jawnie, będzie to uważane za ustalenie jej początkowych wartości (nie zaloguje się zdublowanie). Zwolnienie odcinka izolowanego będzie automatycznie zerować ostatnią liczbę w komórce pamięci, a zajęcie ustawi zerowy bit (zmieni liczbę na nieparzystą). Ostatnia liczba w komórce powinna być zmieniana na niezerową (ale parzystą) w momencie rezerwowania (utwierdzania) odcinka dla ustawianego przebiegu. Pozwoli to na uproszczenie testowania niezajętości odcinka przy pomocy warunku condition memcompare * * 0. W odróżnieniu od zwykłych komórek pamięci, komórki pamięci powiązane z odcinkami izolowanymi nie będą przyjmować wartości zmiennoprzecinkowych, jedynie całkowite (int32). Pozostałe dwie wartości komórki można wykorzystać do własnych celów (np. w Quarku jest to nazwa przebiegu oraz kierunek jazdy).

Szybkie wykonanie AddValues

Eventy nie podlegające skanowaniu są zapisywane do kolejki, z której są kolejno wykonywane. Powtórzone wywołanie eventu, który został dodany do kolejki, a jeszcze nie został wykonany, powoduje jego zignorowanie. Jeśli chcemy zliczać pojazdy przy pomocy eventu AddValues, może się zdarzyć, że któreś z wywołań zostanie pominięte. Aby tego uniknąć, eventy AddValues (z zerowym opóźnieniem) wykonywane są natychmiastowo, bez użycia kolejki.

Lokomotywa bez powietrza

Za pomocą wpisu .BQ, umieszczonego po masce sprzęgu, można wymusić brak powietrza we wstawianej do scenerii lokomotywie. Konieczne jest wtedy napompowanie zbiornika pantografów przy użyciu sprężarki pantografów, po odpowiednim ustawieniu kurka tródrogowego. Poprawkę przygotował @youBy.

AI używa małej sprężarki

Wirtualny maszynista został przyuczony do obsługi sprężarki pantografów. Również samodzielnie przestawia kurek trójdrogowy.

Pantografy połówkowe

Dla błędnych pantografów połówkowych, które miały tylko drugie ramię dolne, a nie miały pierwszego, nie była wyliczana wysokość pantografu ponad główką szyny (wersja 414 się wysypywała w takim przypadku). Zostało to awaryjnie poprawione w taki sposób, że wysokość może być również wyliczona z drugiego ramienia. Braki ramion są logowane. Docelowo dla ramion z każdej strony będą oddzielnie wyliczane kąty animacji.

Zmienione sterowanie EZT

Dotychczas każdy człon rozrządczy miał własny zestaw dwóch wirtualnych pantografów oraz przetwornicę, a wszystkie człony były ukrotnione niczym samodzielne pojazdy. Obecnie kabina członu rozrządczego jest wpięta bezpośrednio do członu silnikowego. Aby działało to prawidłowo, niezbędne są zmiany w plikach FIZ: AllowedFlag=-55 dla sprzęgów wewnętrznych, AllowedFlag=55 dla zewnętrznych, a także w członie ra trzeba uzupełnić linijkę Brake: o CompressorPower=Coupler2. Maski dla sprzęgów wpisuje się w linijkach zaczynających się od BuffCoupl1. i BuffCoupl2., albo BuffCoupl.

Światła obciążają baterię

Załączenie świateł czołowych rozładowuje baterię (powoduje spadek napięcia). Ponadto zapalenie świateł czołowych zostało uzależnione od załączenia baterii.

Kamera patrząca w bok

Aby szybko spojrzeć w lewą albo prawą stronę, należy przytrzymać [Ctrl] i [Shift] oraz przycisnąć strzałkę w lewo albo prawo.

Blokowanie łączenia sprzęgów

Z poziomu pliku FIZ można zablokować niepotrzebne łączenia sprzęgów. Np. wpisanie AllowedFlag=3 umożliwi łączenie jedynie sprzęgiem mechanicznym oraz przewodem hamulca. Dotychczas można było załączyć również ukrotnienie, co powodowało problemy.

Pomiar modelu pantografu

Dotychczas była wyliczana tylko wysokość podstawy pantografu, natomiast długości ramion i kąty początkowe były przyjęte jako stałe. Obecnie długości ramion i kąty pozycji spoczynkowej są odczytywane z modelu pojazdu. Z modelu wyznaczana jest też wysokość ślizgu ponad osią jego obrotu.

Jeśli jednak model ma skalowanie pantografu (za pomocą macierzy transform), to będzie logowane jako błąd, a parametry dotyczące pantografu będą pobierane z MMD. W takim przypadku w pliku MMD należy wpisać wysokość ślizgu ponad osią jego obrotu względem ramienia jako czwarty parametr w pantfactors:, zwykle jest to kilka centymetrów. Ewentualnie, jeśli trzeci parametr będzie miał wartość mniejszą od 0.5, to będzie ona dotyczyła pierwszego pantografu, a czwarty parametr – drugiego.

Minimalna prędkość dla czuwaka

Dotychczas czuwak aktywny załączał się po przekroczeniu prędkości równej 10% Vmax. Obecnie można dodatkowo określić inną prędkość, za pomocą parametru AwareMinSpeed= w linijce Security: pliku FIZ.

Jazda testowa bez zasilania

Dla twórców scenerii został uruchomiony specjalny tryb funkcjonowania sieci trakcyjnej. Po użyciu parametru livetraction no pojazdy zasilające się z sieci trakcyjnej będą również miały "niewidzialne zasilanie" gdy wyjadą poza zasięg drutu, o ile tylko jeden z pantografów będzie podniesiony. Pozwoli to testować ruch na sceneriach, na których rozwieszanie sieci trakcyjnej nie zostało jeszcze ukończone. W miejscach bez drutu jest przyjmowane napięcie równe 95% napięcia maksymalnego (zapisanego w pliku FIZ), a pantografy podnoszone są na stałą wysokość. Uwaga! działa to zupełnie inaczej niż we wcześniejszych wersjach!

Sprzęg wysokiego napięcia

Aby lokomotywy dwuczłonowe ze sprzęgiem wysokiego napięcia działały prawidłowo w kolejnych wersjach, niezbędne jest dodanie maski sprzęgów AllowedFlag=-63 do sprzęgu międzyczłonowego w pliku FIZ. Jeśli między członami jest również przewód ogrzewania, należy wpisać AllowedFlag=-127. Analogicznie liczby te należy umieszczać we wpisach do scenerii (63 – połączenie sprzęgiem wysokiego napięcia, 127 – sprzęg WN oraz ogrzewania; jeśli sprzęg będzie ze znakiem minus, to człony będą traktowane jako jeden pojazd i nie zostaną rozłączone podczas manewrów). Dotychczas w takich przypadkach była używana maska sprzęgu 55, która nie zawiera sprzęgu WN ani ogrzewania. Człon podłączony sprzęgiem WN do innego członu, który ma zasilanie, nie musi mieć podniesionego pantografu.

AI nie opuszcza jedynego pantografu

W pliku FIZ można umieścić liczbę pantografów (obecnie wszystkie pojazdy mają wpisane 2). Jeśli zostanie wpisany 1 pantograf (np. jak EM10), to nie zostanie on opuszczony (jak w przypadku jazdy na tylnym). Również w przypadku połamania tylnego pantografu jazda będzie kontynuowana na przednim.

Kody komend zamiast napisów

Komendy wpisane do komórek pamięci i eventów PutValues są jednorazowo zamieniane na kod binarny. Powinno to nieznacznie poprawić wydajność, gdyż nie będą już porównywane teksty, przynajmniej w zakresie skanowania sygnałów na trajektorii ruchu.

OutsideStation jako skanowany

Dotychczas wskaźnik W5 (granica przetaczania) miał wpisaną komendę OutsideStation, która dla pojazdu w trybie manewrowym działała jak Change_direction, a w trybie pociągowym była ignorowana. Zmiana kierunku odbywała się przez najechanie na tor z przypisanym wskaźnikiem i dalej kolejkę eventów, przez co miejsce zatrzymania pojazdu było przypadkowe, często też mijał on wskaźnik W5. Obecnie AI stanie przed W5, jak przed tarczą manewrową. A jeśli podczas jazdy w kierunku W5 zjedzie z ostatniego rozjazdu, to będzie gotowe zmienić kierunek jazdy, jeśli tylko dostanie sygnał manewrowy z tyłu. W innych przypadkach zmiana kierunku jazdy sygnałem wymaga zatrzymania się.

Obsługa zwolnienia klawisza

Dotychczas była tylko obsługa naciśnięcia klawisza na klawiaturze, przez co wykrycie zwolnienia go musiało być robione przez ciągłe sprawdzanie i zostało zrealizowane tylko dla niektórych przycisków. Obecnie została dodana również obsługa zwolnienia klawisza i zastosowana do podniesienia przycisku rozłączenia styczników liniowych [L].

Informacja o zakończeniu animacji

Po zakończeniu animacji i zatrzymaniu modelu wykonywany jest event o nazwie nazwa_modelu.nazwa_submodelu:done, gdzie nazwa_modelu wskazuje obiekt, a nazwa_submodelu jego animowaną część. Jest to przydatne np. do podania zezwolenia na jazdę po obrotnicy, której czas ruchu zależy od początkowego i końcowego położenia.

Wyciszenie dźwięków przed przeniesieniem kamery

Dotychczas zmiana kamery powodowała "zabranie" dźwięków w nowe miejsce. Obecnie dźwięki możliwe do wyciszenia są wyciszane. Działa to zarówno przy zmianie kamery klawiszami cyfrowymi, jak i przy powrocie do prowadzonego pojazdu poprzez [F4], czy użyciu prawego przycisku myszy.

Rozdzielenie typów pauzowania

Dotychczas była jedna flaga pauzowania, obecnie każda przyczyna zapauzowania jest obsługiwana niezależnie:

  • pauza po wczytaniu, wyłączana pierwszym użyciem klawisza [Pause] lub [Esc]
  • pauza w tle, symulacja kontynuowana po przełączeniu w pierwszy plan
  • pauza wywołana klawiszem [Pause] albo [Esc], wyłączana po ponownym użyciu klawisza
  • pauza spowodowana utratą komunikacji z PoKeys, wyłączana po ponownym wykryciu urządzenia

Poprawione skanowanie

Podczas testów scenerii Quark zdarzało się, że EN57 w Mydelniczce wjeżdżał na jeden tor, a semafor widział z sąsiedniego. Było to prawdopodobnie spowodowane szybkim przestawieniem rozjazdu zaraz po zjechaniu z niego. W przypadku zmiany stanu rozjazdu, skanowanie jest wykonywane ponownie dla nowego położenia. Obecnie stan rozjazdów miniętych przez czoło pociągu jest ignorowany, a wspomniany błąd się nie powtórzył.

Dodatkowo, można obejrzeć tabelkę skanowania pojazdu poprzez dwukrotne przyciśnięcie [F2].

Osobny katalog do logowania parametrów fizycznych

Pliki DAT zapisywane są w podkatalogu physicslog. Dotychczas były zapisywane w głównym katalogu, co nie wyglądało dobrze.

Ukrywanie załączonych świateł

Dotychczas dodanie w modelu pojazdu dodatkowych lampek, z myślą o przyszłym wykorzystaniu, powodowało jednoczesne wyświetlenie stanu zapalonego i zgaszonego. Aby można było dodawać w modelach nieobsługiwane jeszcze lampki, obecnie submodele o nazwach kończących się na _on zostają domyślnie wyłączone. Należy przy tym unikać używania takich nazw w innych modelach, np. latarnie posiadają submodel smuga_on, który jednak nie jest przeznaczony do indywidualnego przełączania, co może sprawiać problemy w przyszłych wersjach.

Uproszczony odczyt komórki pamięci

Aby przypisać komórkę pamięci do toru, należało użyć eventu GetValues, którego jedyną zawartością była nazwa komórki (czas był ignorowany). Obecnie można to osiągnąć bez jawnego definiowania eventu, poprzez użycie we wpisie toru nazwa_komórki:scan, gdzie nazwa_komórki wskazuje komórkę pamięci. Ze względu na pomiar odległości podczas skanowania wskazane jest, aby współrzędne komórki umieszczały ją w bezpośredniej bliskości odcinka toru.

Submodele mechanika

W pliku MMD można było podać nazwę submodelu mechanika, jednak był on jeden dla całego pojazdu. Jeśli taki submodel będzie znaleziony i będzie miał włączoną animację (Anim: true), to będzie obracany o 180° w osi pionowej w przypadku jazdy do tyłu. Można też w modelu umieścić dwa submodele, z dodanymi cyframi 1 oraz 2, w takim przypadku będzie pokazywany jeden z nich, zależnie od kierunku jazdy. Submodel mechanika jest szczególnie przydatny w przypadku lokomotyw z widocznym wnętrzem.

Odczytywanie napięcia z zasilacza

Przęsła sieci trakcyjnej powinny mieć wpisaną nazwę zasilacza (TractionPowerSource) istniejącego w scenerii, w przeciwnym przypadku zostanie to zalogowane jako błąd. Napięcie na przęśle podłączonym do zasilacza będzie pobierane z zasilacza, a nie z wpisu przęsła. Tymczasowo nie jest liczony spadek napięcia związany z obciążeniem zasilacza przez kilka pojazdów, jak również z odległością pomiędzy lokomotywą a zasilaczem. Napięcie zasilacza można zmieniać eventem Voltage o podobnej budowie, jak TrackVel (zamiast nazwy toru podaje się nazwę zasilacza, a zamiast prędkości – napięcie.

include pkp/odsekc20.inc pwr01 20 0 0 0 pkp/odsekc20 3400 0.01 4500 end
event keyctrl05 voltage 0 pwr01 2400 endevent
event keyctrl06 voltage 0 pwr01 3000 endevent
event keyctrl07 voltage 0 pwr01 3400 endevent
Zastosowany model symulacji zasilania sieci trakcyjnej nie jest zgodny z rzeczywistością i musi być zmieniony. W kolejnych wersjach mogą zmienić się również wytyczne co do wpisu zasilania w przęśle sieci i obecne wpisy logowane jako błędne mogą docelowo zostać uznane za poprawne.

Modyfikacja efektu Dopplera

W trybie swobodnego latania wyłączony jest efekt Dopplera związany z ruchem kamery. Efekt ten powodował bardzo nienaturalne modyfikacje dźwięków przy szybkim ruchu kamery.

Ponieważ po wprowadzeniu tej zmiany okazało się, że nie daje ona zadowalających rezultatów, w kolejnej wersji został przywrócony poprzedni stan.

Sygnał odjazdu od kierownika

Dodany dźwięk kierownika podającego odjazd. Dźwięk należy zapisać w tym samym miejscu i z tą samą nazwą, co rozkład, tylko zamiast rozszerzenia TXT należy użyć WAV. Ewentualnie można przed kropką rozszerzenia umieścić tekst radio, który zmodyfikuje parametry odtwarzania dźwięku odjazdu (będzie go słychać w kabinach lokomotyw w promieniu 2km). Oczywiście plik TXT rozkładu musi być napisany poprawnie, a sceneria musi mieć prawidłowe i aktywne wskaźniki W4.


MaSzyna - wersje
Wersje 2005-2009 699kB • Mega Pack (KURS90, 717kB) • Dizelpack (735kB)
Wersje z 2011 71113120145162 (PC2010)212231291
Wersje z 2012 325 (PC2011)355372390SPKS@390
Wersje z 2013 394 (01.13)Kurs 2013408SPKS@408 (08.13)414
Wersje z 2014 424435441450457
Wersje z 2015 464 (15.02)469 (15.04)
Wersje robocze SPKSwarsztat