Autor Wątek: DevBlog: SPE - Blokady liniowe  (Przeczytany 6931 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline Ares28

  • Moderator
  • Weteran
  • Konstruktor
  • Wiadomości: 933
  • Siła reputacji: 728
  • Ares28 prezesAres28 prezesAres28 prezesAres28 prezesAres28 prezesAres28 prezesAres28 prezesAres28 prezesAres28 prezesAres28 prezesAres28 prezesAres28 prezes
  • Programista systemów SRK
DevBlog: SPE - Blokady liniowe
« dnia: 25 Kwietnia 2021, 20:32:57 »



Blokady liniowe

Jak mogliście przeczytać w ostatnim wpisie razem z SPE zostaną dodane nowe typy blokad liniowych których nie było do tej pory w symulatorze. Na dzień dzisiejszy planowane jest zaimplementowanie następujących typów blokad liniowych (pogrubiono nazwy typów, które już są zaimplementowane):

  • C
  • Eap94
  • Eap05
  • Eac
  • Eac95
  • SHL-12
  • CBL2010

Wszystkie z nich będą dostępne zarówno jako blokady wewnętrzne (między posterunkami sterowanymi z jednej instancji programu SPE) oraz jako blokady zewnętrzne.



Jak będą działały zewnętrzne blokady SBL?

Ze względu na ograniczenia systemu SWDR postanowiłem implementując blokady liniowe nie brać stanu blokady SWDRowej dosłownie, ale traktować ją jedynie jako nośnik informacji o tym jakie żądania wysyłane są pomiędzy stacjami. Ze stanu blokady Eap można bowiem wyciągnąć wszystkie informacje potrzebne do działania innych typów blokad. Poniżej przedstawiam przykład interpretacji żądania ustawienia kierunku przez zewnętrzną SBL typu SHL-12:

  • Jeśli blokada SBL jest w stanie neutralnym i są spełnione warunki do ustawienia kierunku - blokada zmienia stan na "żądanie ustawienia kierunku" a po jego ustawieniu wysyła do SWDRa polecenie o zaakceptowaniu blokady.
  • Jeśli blokada SBL jest w stanie ustawionym w kierunku wyjazd i są spełnione warunki do zmiany kierunku - blokada zmienia stan na "żądanie zmiany kierunku" a po jego ustawieniu wysyła do SWDRa polecenie o zaakceptowaniu blokady.
  • Jeśli blokada SBL jest w stanie ustawionym w kierunku przyjazd i pierwszy odstęp jest wolny - automatyczne wysłanie do SWDRa polecenia o zaakceptowaniu blokady.
  • Jeśli blokada SBL jest w stanie ustawionym w kierunku wyjazd i nie są spełnione warunki do zmiany kierunku, lub ustawiona w kierunku przyjazd i pierwszy odstęp nie jest wolny - automatyczne wysłanie do SWDRa polecenia o odrzuceniu blokady.

Oprócz tego dla blokad SHL12 grot strzałki bedzie informował nas o podaniu sygnału wyjazdowego na sąsiedniej scenerii.

Połączenie z blokadą samoczynną zostanie zwolnione automatycznie (niezależnie od zaznaczonej w ustawieniach SWDRa funkcji "automatycznie przyciskaj Ko") po zwolnieniu pierwszego odstępu od momentu wjazdu na scenerie. Funkcja ta będzie działać nawet jeśli w SWDR będzie wyświetlony błędny stan blokady.

W przypadku wyjazdu pociągu z naszej scenerii blokada również zwalnia się automatycznie po zwolnieniu pierwszego odstępu, aby umożliwić jej ponowne założenie i wyjazd innego pociągu do innej scenerii. Zrealizowano to dzięki dodaniu specjalnej komendy do SWDRa, która umożliwia jednostronne zerwanie blokady. Dzięki temu scenerie, które posiadają szlaki zewnętrzne wyposażone w SBL faktycznie przyczynią się do wzrostu przepustowości, gdyż możliwe będzie wysłanie kilku pociągów jeden po drugim (o ile każdy z nich zmierza na inny szlak docelowy).



A co gdy blokada w SWDR się zawiesi?

Logika działania blokad zewnętrznych przetwarzana jest w całości wewnątrz programu SPE - tak samo jak ma to miejsce w przypadku blokad wewnętrznych. Oznacza to, że SPE będzie odporny na występujące błędy w blokadach SWDR - np. program umożliwi zwolnienie blokady niezależnie od tego czy SWDR prawidłowo wykrył odblokowanie bloku Ko. Zaimplementowano także poprawę prostych błędów w stanie blokady Eap, np. wykrycie zajętości toru szlakowego spowoduje zmianę stanu blokady na "pociąg na szlaku" nawet jeśli SWDR nie wykrył prawidłowo wyjazdu pociągu. W najbardziej skrajnych wypadkach, gdy blokada SWDRa zawiesi się w stanie "ustawiony kierunek" albo "podano sygnał wyjazdowy" i zawiodą inne sposoby (z powodu braku odcinków toru szlakowego, które naprawiłyby stan blokady po wykryciu zajętości) to można także użyć polecenia dKo, które w przypadku blokad zewnętrznych wymusi także ustawienie stanu "pociąg na szlaku", umożliwiając tym samym zwolnienie blokady. Stan logiczny blokady w SPE ma więc większą wagę niż stan po stronie SWDRa.

Działa to jednak także w drugą stronę. Jeśli popełnimy błąd w obsłudze blokady np. zapomnimy użyć funkcji dKo podczas wjazdu pociągu na Sz lub rozkaz pisemny - blokada nie ulegnie zwolnieniu, nawet jeśli zerwiemy blokadę po stronie SWDR. Kolejny pociąg jaki do nas dotrze będzie musiał więc zostać wysłany bez blokady po uprzednio wprowadzonym TZP. Taka implementacja zwiększy realizm działania blokad i wymusi na dyżurnych większą troskę i ostrożność w ich obsłudze, a gdy coś zepsujemy to będziemy musieli liczyć się z konsekwencjami, gdyż nie da się jej ot tak zerwać. SPE ma w założeniu jak najwierniej symulować rzeczywistość. Tymczasem sens istnienia blokad liniowych polega właśnie na tym, by uniemożliwić jednej osobie takie beztroskie jej zwolnienie. Również w wypadku usterki blokada blokuje się w stanie uniemożliwiającym założenie i wyprawienie kolejnego pociągu.



Parę uwag od autora

Jak mogliście przeczytać dla innych typów blokad niż Eap dosyć częstym zjawiskiem będzie automatyczna odpowiedź o zaakceptowaniu lub odrzuceniu blokady. W tym miejscu przypominam, że zaakceptowanie blokady nie oznacza absolutnie zgody na przyjęcie pociągu! Żądanie założenia blokady dla pociągów mocno opóźnionych, oraz jadących przed planem musi zostać poprzedzone zapytaniem czy stacja docelowa taki pociąg przyjmie. W innym wypadku może to spowodować chaos w ruchu pociągów planowych.

To samo dotyczy przypadku, w którym stan blokady nie będzie pozwalał na jej założenie. Więc w wyniku błędów w obsłudze blokady, bądź usterki (nie tylko samej blokady, ale także odcinków niezajętości, których niezajętość jest wymagana dla wyprawienia pociągu) żądania założenia blokady będą automatycznie odrzucane.

Oczywiście wszystkie z takich automatycznych zdarzeń są w jasny sposób logowane, więc w razie sporów będzie mozna jasno dotrzeć do tego, czy polecenie zostało wydane automatycznie, czy ręcznie przez dyżurnego.



Obecnie SPE jest w fazie zamkniętych testów, do których mają dostęp członkowie zespołu. W momencie gdy zostaną zaprogramowane wszystkie kluczowe funkcjonalności to jeszcze przed wydaniem planuję zrobić kolejny otwarty test, w którym będą mogli wziąć udział wszyscy supporterzy.

Jeśli chcesz się dowiedzieć więcej o możliwościach i obsłudze programu to zachęcam do zapoznania się z tworzoną na bieżąco instrukcją programu.

Miejsce na pytania do autora.

Dyskusja na temat projektu.