Sceneria/Quark/Ruch 2016

Z Rainsted
Skocz do: nawigacji, wyszukiwania

Opis sterowania ruchem na scenerii Quark wg stanu na 2016 rok (z grubsza niezmienione od 2013). Dla większego porządku użyte jest nazewnictwo wprowadzone już w 2017 roku (zmiany nazewnictwa, mimo iż nie wpływają na funkcjonowanie scenerii, wprowadzane są pod kątem wypracowania automatycznego generowania skryptów sterujących stacjami). W związku z rozwojem edytora Rainsted, który może znacznie ułatwić realizację ewentualnych planów przebudowy scenerii, sterowanie ruchem pod koniec 2017 roku może wyglądać inaczej (np. zapętlenie jazd, łącznica z Dejaw do Koniewic). Ta strona pozostanie wtedy jako archiwalna i będzie zawierać opis wczesnej wersji sterowania ruchem.

Przedstawiona jest zawartość pliku events-ra.ctr, który odpowiada za ruch na scenerii. Sterowanie ruchem dla całej scenerii można zmienić modyfikując tylko ten plik. Pliki sterujące ruchem dla stacji mają charakter uniwersalny i nie ma potrzeby w nie ingerować, chyba że potrzebne są dodatkowe operacje, które nie zostały dotychczas uwzględnione (np. odczepianie lokomotyw na innych stacjach i torach, niż to ma miejsce obecnie).

Ustawienie czasu symulacji

time 4:45 6:37 16:17 endtime

Jednym z pierwszych elementów sterowania ruchem jest ustawienie czasu. Wpisane zostały godziny wschodu i zachodu Słońca (informacyjnie, gdyż nie są używane) na dzień 31 października 2007. Rok 2007 jest ze względu na na wydzielenie z PKP spółki Przewozy Regionalne, które miało miejsce w 2008 roku i przełożyło się na zmiany w pociągach pośpiesznych. Ustalenie godziny początkowej miało na celu demonstrację rozwidniania się podczas symulacji.

Włączenie łączenia eventów

config joinduplicatedevents yes endconfig

Wpis powyższy powoduje, że eventy o tych samych nazwach wykonywane są jednocześnie (w kolejności podanej w pliku). Eventy o identycznych nazwach przed tym wpisem (np. dotyczące semaforów czy rozjazdów) są traktowane jako błędne. Można by sobie poradzić bez łączenia eventów o tych samych nazwach, jednak wymagałoby to dodania bardzo wielu eventów typu Mutiple, których działanie byłoby analogiczne do łączenia.

Dołączenie sterowania ruchem na stacjach

include quark\skwarki.ctr end
include quark\zatyle.ctr end
include quark\mydelniczka.ctr end
include quark\wielki_kac.ctr end
include quark\wielki_kac_dolny.ctr end
include quark\szopa.ctr end
include quark\dejawy.ctr end
include quark\bruchniewo.ctr end
include quark\koniewice.ctr end

Dla każdej stacji jest osobny plik sterowania ruchem (ze względu na ich rozmiary). Umieszczenie wszystkiego w jednym zmniejszyłoby przejrzystość. Również w przypadku pocięcia scenerii Quark na komórki i wykorzystania tylko niektórych nie będzie potrzeby dołączania wszystkich plików.

W przypadku scenerii realistycznych mogą funkcjonować różne wersje stacji, odzwierciedlające stan z różnych lat i dlatego pliki sterujące ruchem na stacji powinny zawierać rok w nazwie. Jednak w przypadku scenerii fikcyjnych różne wersje stacji nie mają uzasadnienia praktycznego i dodawanie roku do nazwy pliku nie jest konieczne.

Dołączenie blokad liniowych

include quark\quark.ctr end

Plik zawiera komórki pamięci dla pierwotnej konfiguracji scenerii Quark wraz dodanym Tarniowem. O ile nadmiarowe (nieużywane) blokady liniowe bardzo przeszkadzać nie będą, to łącząc scenerie należy uważać, aby blokady nie powtarzały się w różnych plikach.

Stacja Koniewice

Stacja końcowa dla linii dwutorowej oraz jednotorowej. Wyprawia i przyjmuje cyklicznie pociągi osobowe (EZT), pozwala na wyjazd towarowego, dla pośpiesznego zapewnia odstawienie wagonów na tory postojowe i zabranie innych. Ma troszkę niefunkcjonalny układ torowy (jedna krawędź peronowa dla linii jednotorowej, brak możliwości bezpośredniego zjazdu na tory postojowe).

Stacja Dejawy

Stacja na linii dwutorowej z SBL obsługuje przeloty pociągów osobowych (zatrzymanie przy peronie jest uzyskiwane informacją w rozkładzie), przeloty pociągów towarowych z Koniewic do Wielkiego Kaca oraz przyjmuje pociąg towarowe z Wielkiego Kaca na tor 3 (póki co tylko jeden). Dla tego ostatniego przewidziane jest odczepienie lokomotywy od składu i zabranie pełnych wagonów w stronę Wiekiego Kaca.

Przeloty z Koniewic

event Dej_Kon2_whois         whois 0 Dej_Dej2-Kon2 1 endevent
event Dej_Kon2_whois  updatevalues 0 Dej_Dej2-Kon2 * 2 * endevent
event Dej_Kon2_whois      multiple 0 none Dej_Kon2_whois_o2 endevent
event Dej_Kon2_whois_o2   multiple 5 Dej_It2
  Dej_It2<Kon2 Dej_It2_loop Dej_It2>WKG2_next //przelot torem 2
else
  Dej_Kon2_whois_o2
condition memcompare * * 0 endevent

Rozpoznanie pociągu jadącego od Koniewic torem szlakowym 2 — wpisuje nazwę jego rozkładu (whois) oraz kierunek (updatevalues) do komórki blokady liniowej. Jazdy torem szlakowym 1 (lewym) nie są przewidziane do obsługi. Testowana jest zajętość toru stacyjnego 2 (odcinek izolowany Dej_It2) i jeśli jest wolny, zostanie ustawiony na nim przelot. Gdyby jednak tor 2 nie był wolny, zapętlenie będzie oczekiwać na jego zwolnienie. Oczywiście przelot będzie sprawdzać stan blokady liniowej na wyjeździe i poda wyjazd ze stacji dopiero, gdy będzie to możliwe.

event Dej_Kon2_whois_t4   multiple 5 Dej_It4
  Dej_It4<Kon2 Dej_It4_loop Dej_It4>WKG2_next //przelot torem 4
endevent

Alternatywnym rozwiązaniem (obecnie nieużywanym) był przelot po torze 4 (niezależnie od jego zajętości, co w ogólnym przypadku jest błędem, jednak przy zakładanym na scenerii ruchu nie powinien się zdarzyć wjazd na tor 4). W łatwy sposób można by rozpoznać pociągi towarowe i kierować je na tor 4, gdyby tor 2 był zajęty.

Rozróżnianie pociągów z Wielkiego Kaca

Z Wielkiego Kaca mogą jechać dwa pociągi na raz (po SBL) i aby móc podać wjazd odpowiednio wcześniej, potrzebna jest dodatkowa komórka dla drugiego pociągu. Teoretycznie powinno być coś takiego przygotowane dla każdej stacji i każdego toru, ale przy zakładanym ruchu jest potrzebne tylko tutaj.

node -1 0 Dej_WKG1-Dej1. memcell 0 0 0 0 1 0 none endmemcell
event Dej_WKG1_whois          whois 0 Dej_WKG1-Dej1. 1 endevent
event Dej_WKG1_whois   updatevalues 0 Dej_WKG1-Dej1. * 1 * endevent
event Dej_WKG1_whois       multiple 0 Dej_WKG1-Dej1. Dej_WKG1_czekaj endevent
event Dej_WKG1_czekaj      multiple 5 Dej_WKG1-Dej1
  Dej_WKG1_ustaw
else
  Dej_WKG1_czekaj 
condition memcompare * * 0 endevent

Rozpoznawanie rozkładu z wpisaniem do komórki pomocniczej (z kropką w nazwie). Następnie testowana jest właściwa komórka obsługująca skład i jeśli nie jest wolna (zero jako trzecia wartość), event jest zapętlony w oczekiwaniu na jej zwolnienie.

event Dej_WKG1_ustaw     copyvalues 0 Dej_WKG1-Dej1 Dej_WKG1-Dej1. endevent
event Dej_WKG1_ustaw       multiple 0 Dej_WKG1-Dej1
  Dej_WKG1_tow.puste
else
  Dej_WKG1_przelot
condition memcompare T* * * endevent

Para eventów kopiuje nazwę składu z komórki pomocniczej do właściwej i zależnie od rozpoznanego rozkładu będzie kierować pociągi towarowe na tor 3, a pozostałym da przelot po torze 1.

Pociągi osobowe z Wielkiego Kaca

event Dej_WKG1_przelot multiple 10 Dej_ItA
  Dej_It1<WKG1 Dej_It1_loop Dej_It1>Kon1_next
else
  Dej_WKG1_przelot
condition memcompare * * 0 endevent

Przelot po torze 1 jest jeszcze uzależniony od zajętości toru za semaforem A, gdzie może znajdować się lokomotywa podczepiająca się do innego składu. W pierwszej kolejności ona musi zwolnić tor (docelowo manewry powinny przebiegać bez zajmowania szlaku — trzeba by przebudować układ torów).

Pociąg towarowy z Wielkiego Kaca

node 1000 0 radio27_wav sound -2244 2 8616 radio27.wav endsound
event Dej_WKG1_tow.puste   multiple 3 none Dej_It3<WKG1 Dej_It3_loop Dej_It3|It31_next endevent
event Dej_L_sem_mem:sent sound 1.0 radio27_wav 1 endevent
event Dej_It31:busy multiple 0 none Dej_It5<It31 Dej_It5_loop Dej_It5>ItA_next endevent

Pierwsze dwa eventy załatwiają odpinanie lokomotywy po zatrzymaniu na torze 3 oraz jej wyjazd na tor 31. Trzeci event reaguje na zajęcie toru 31 podaniem wjazdu na tor 5 oraz wyjazdu do W5 w stronę semafora wjazdowego A.

event Dej_It5:free multiple 0 none Dej_It5_free endevent
event Dej_It5_free updatevalues 30 Dej_Tm6_sem_mem Shunt -2 -3 endevent
event Dej_Tm6_sem_mem:sent multiple 0 none Dej_It7<ItA Dej_It7_loop Dej_It7_wyjazd endevent
event Dej_It7_wyjazd multiple 300 Dej_It7
  Dej_It7>WKG2 Dej_It7_loop
else
  Dej_It7_wyjazd
condition memcompare * * 2 endevent

Gdy lokomotywa przejedzie torem 5 na drugą stronę stacji, do tarczy manewrowej zostanie wpisana komenda podpinania (mogło by to przeniesione do skryptu sterującego stacją). Odebranie komendy podpinania z Tm uruchomi wjazd na tor 7. Ponieważ na tym torze stoją już wagony, użycie Dej_It7>WKG2_next nie zadziała. Dlatego podawanie wyjazdu z toru 7 do Wielkiego Kaca jest robione ostatnim z eventów — warunek na liczbę 2 w trzeciej wartości komórki jest oczekiwaniem na zakończenie programowania wjazdu lokomotywy na ten tor.

Kopalnia w Dejawach

Stacja Wielki Kac

Lokomotywownia Wielki Kac (szopa)

Stacja Wielki Kac Dolny

Stacja Skwarki

Stacja końcowa, z której na północ wychodzi linia dwutorowa z SBL oraz jednotorowa. Z południowej strony są tory postojowe. W planach jest przebudowa stacji na przelotową, z przesunięciem torów postojowych. Do przebudowy jest również wyjazd na linię jednotorową, który niepotrzebnie koliduje z linią dwutorową (trzeba by dodać dwa rozjazdy).

Mijanka Zatyle

Stacja Mydelniczka

Po przebudowie stacja węzłowa, łączy trzy linie jednotorowe. Sterowanie ruchem jest umiarkowanie skomplikowane. Co prawda nie dorównuje operacjom wykonywanym w Koniewicach oraz Skwarkach, ale losowany jest jeden z trzech wariantów jazdy pociągu roboczego, w tym jeden wariant wiąże się z oblotem składu.

Pociąg roboczy

event tar_onstart multiple 0 Myd_t101 tar_jedzie condition trackoccupied endevent
event tar_jedzie updatevalues 0 Tar-Myd towarowy 1 1 endevent //zajęcie blokady

Eventy te ustawiają zajętość blokady liniowej, jeśli w scenerii wstawiony jest pociąg towarowy. Dzięki temu sceneria będzie działać prawidłowo również wtedy, gdy pociąg ten zostanie z niej usunięty. Rozwiązanie to było używane podczas testów, dla szybszego wczytania scenerii z mniejszą liczbą składów.

event Mydelniczka_SM42_onstart multiple 1.5 Myd_It2
else
  Mydelniczka_SM42_start
condition memcompare * * 0 endevent
event Mydelniczka_SM42_start multiple 1.5 none
  Mydelniczka_ST44_WKD Myd_It2>Tar Myd_It2_loop
else
  Mydelniczka_SM42_Zatyle
condition propability 0.3333 endevent
event Mydelniczka_SM42_Zatyle multiple 0.5 none
  Mydelniczka_ST44_WKD Myd_It2>Zat Myd_It2_loop
else
  Mydelniczka_SM42_WKD
condition propability 0.5 endevent

Eventy losują jeden z trzech wariantów jazdy pociągu roboczego. Pierwotnie ten pociąg stał w Wielkim Kacu Dolnym i wjeżdżał na górę — teraz jest to jeden z wariantów (opisany poniżej). Obsługa pociągu roboczego jest również uzależniona od jego obecności podczas uruchomienia scenerii — pierwszy event testuje zajętość toru 2 (odcinek izolowany Myd_It2 powinien mieć niezerową trzecią wartość). Jeśli tor jest zajęty, z prawdopodobieństwem 1/3 zostanie wykonany przelot pociągu towarowego od Tarniowa (Mydelniczka_ST44_WKD) i wyjazd pociągu roboczego w stronę Tarniowa (przebieg z pętlą Myd_It2>Tar Myd_It2_loop będzie oczekiwać na zwolnienie blokady liniowej przez pociąg towarowy), albo z prawdopodobieństwem 2/3 wykona się drugie losowanie w trzecim evencie. Pociąg roboczy może być też wysłany przez Zatyle do Skwarek (Myd_It2>Zat Myd_It2_loop), a także może wykonać oblot (Mydelniczka_SM42_WKD).

event Mydelniczka_SM42_WKD multiple 0 none
  Myd_It2|ItA>It1 Myd_It2_loop
endevent
event Myd_It1:busy multiple 0 Myd_Ig11
  Myd_It1>ItK&It2 Myd_It1_loop Myd_It2>WKD_next
condition memcompare It1-ItA * * endevent

Eventy te obsługują oblot składu. Pierwszy powoduje odczepienie lokomotywy na torze 2, wyjazd w stronę semafora A oraz wjazd na tor 1. Cała operacja jest w pliku sterowania stacją i może być wywołana jako Myd_It2|ItA>It1 Myd_It2_loop. Drugi event aktywuje się w momencie, gdy lokomotywa pojawi się na torze 1 (Myd_It1:busy). Ponieważ tor ten może być używany przez inne pociągi, badana jest również nazwa przebiegu w głowicy (It1-ItA, czyli ruch pomiędzy torem 1 a wyjazdem w kierunku semafora A). Lepiej by było badać nazwę rozkładu pociągu, ale póki co pociągi towarowe jeżdżą bez rozkładów. Następną operacją jest wyjazd składu w stronę Wielkiego Kaca Dolnego (Myd_It2>WKD_next). Wariant ten nie przewiduje akcji dotyczącej pociągu towarowego czekającego na wjazd od strony Tarniowa. Kreską pionową } jest oznaczana operacja odłączania lokomotywy, natomiast ampresandem & łączenie jej ze składem.

Pociąg towarowy

event Mydelniczka_ST44_WKD multiple 12 none
  Myd_It1<Tar Myd_It1_loop Myd_It1>WKD_next
endevent

Ustawienie wjazdu od Tarniowa na tor 1 (Myd_It1<Tar Myd_It1_loop) i następnie wyjazdu do Wielkiego Kaca Dolnego (Myd_It1>WKD_next). Opóźnienie eventu służy do tego, żeby pociąg roboczy z SM42 odjechał pierwszy.

Mijanie pociągów osobowych

Zgodnie z założeniami ruchu, do stacji Mydelniczka dojeżdżają tylko pociągi osobowe (od Zatyla oraz od Wielkiego Kaca Dolnego). Funkcjonuje ona dla nich jako mijanka. Gdyby stacja miała obsługiwać inne pociągi w inny sposób, należałoby uzależnić obsługę od rozpoznanego rozkładu. Przygotowaniem do tego są eventy whois, które odczytują nazwę rozkładu do komórki pamięci blokady liniowej. Jednak potem nic z tą nazwą nie jest robione.

event Myd_Ig12_whois    whois 0 Zat1-Myd2 1 endevent
event Myd_Ig12_whois multiple 0 Myd1-WKD1 Myd_Ig12_prze condition memcompare * 0 * endevent
event Myd_Ig12_whois multiple 0 Myd1-WKD1 Myd_Ig12_tor2 condition memcompare * 1 * endevent
event Myd_Ig12_whois multiple 0 Myd1-WKD1 Myd_Ig12_tor2 condition memcompare * 2 * endevent
event Myd_Ig12_prze  multiple 0 Myd_It2
  Myd_Zat>WKD_przelot Myd_It2_loop
else
  Myd_Ig12_tor4
condition memcompare * * 0 endevent
event Myd_Ig12_tor4  multiple 5 Myd_It4
  Myd_It4<Zat Myd_It4_loop Myd_It4>WKD_next
else
  Myd_Ig13_tor2
condition memcompare * * 0 endevent
event Myd_Ig12_tor2  multiple 5 Myd_It2
  Myd_It2<Zat Myd_It2_loop Myd_It2>WKD_next
else
  Myd_Ig12_tor4
condition memcompare * * 0 endevent
event Myd_Ig21_whois    whois 0 Myd1-WKD1 1 endevent
event Myd_Ig21_whois multiple 0 Zat1-Myd2 Myd_Ig21_prze condition memcompare * 0 * endevent
event Myd_Ig21_whois multiple 0 Zat1-Myd2 Myd_Ig21_tor2 condition memcompare * 1 * endevent
event Myd_Ig21_whois multiple 0 Zat1-Myd2 Myd_Ig21_tor4 condition memcompare * 2 * endevent
event Myd_Ig21_prze  multiple 0 Myd_It2
  Myd_WKD>Zat_przelot Myd_It2_loop
else
  Myd_Ig21_tor4
condition memcompare * * 0 endevent
event Myd_Ig21_tor2  multiple 5 Myd_It2
  Myd_It2<WKD Myd_It2_loop Myd_It2>Zat_next
else
  Myd_Ig21_tor4
condition memcompare * * 0 endevent
event Myd_Ig21_tor4  multiple 5 Myd_It4
  Myd_It4<WKD Myd_It4_loop Myd_It4>Zat_next
else
  Myd_Ig21_tor2
condition memcompare * * 0 endevent

Obsługa obu kierunków jest niemal symetryczna. Eventy Myd_Ig12_whois oraz Myd_Ig21_whois reagują na nadjeżdżające pociągi nieco przed tarczą ostrzegawczą semaforów wjazdowych i następnie testują stan blokady liniowej po przeciwnej stronie. Jeśli blokada nie ma ustawionego kierunku (druga wartość w komórce to 0), ustawiony będzie przelot torem 2, o ile ten jest wolny (testowanie odcinka izolowanego Myd_It2; przelot oczywiście będzie również testował blokadę liniową przed podaniem wyjazdu, gdyż jej stan się może zmienić). Jeśli jednak tor 2 będzie zajęty, wykonywana będzie próba zorganizowania wjazdu na tor 4 z wyjazdem w następnym kroku. Jeśli przeciwległa blokada liniowa ma ustawiony kierunek, uruchamiany jest wjazd na tor 2 albo na tor 4, z wyjazdem w następnym kroku.

Jeśli zarówno tor 2, jak i tor 4 byłyby zajęte, eventy będą się wykonywać cyklicznie co 5 sekund, aż do zwolnienia któregoś. Jest to wystarczające do realizacji zaplanowanego ruchu.

Mijanka Bruchniewo

Kiedyś przystanek osobowy z torem do ładowni, po przeorganizowaniu ruchu pojawiła się potrzeba uruchomienia mijanki.

event Bru_Ig11_whois    whois 0 WKD1-Bru1 1 endevent
event Bru_Ig11_whois multiple 0 Bru1-Kon5 Bru_Ig11_prze condition memcompare * 0 * endevent //wolna
event Bru_Ig11_whois multiple 0 Bru1-Kon5 Bru_Ig11_tor1 condition memcompare * 1 * endevent //w tę samą
event Bru_Ig11_whois multiple 0 Bru1-Kon5 Bru_Ig11_tor2 condition memcompare * 2 * endevent //w przeciwną
event Bru_Ig11_prze  multiple 0 Bru_It1
  Bru_It1=WKD Bru_It1_loop
else
  Bru_Ig11_tor2
condition memcompare * * 0 endevent
event Bru_Ig11_tor1  multiple 5 Bru_It1
  Bru_It1<WKD Bru_It1_loop Bru_It1>Kon_next
else
  Bru_Ig11_tor2
condition memcompare * * 0 endevent
event Bru_Ig11_tor2  multiple 5 Bru_It2
  Bru_It2<WKD Bru_It2_loop Bru_It2>Kon_next
else
  Bru_Ig11_tor1
condition memcompare * * 0 endevent
event Bru_Ig21_whois    whois 0 Bru1-Kon5 1 endevent
event Bru_Ig21_whois multiple 0 WKD1-Bru1 Bru_Ig21_prze condition memcompare * 0 * endevent //wolna
event Bru_Ig21_whois multiple 0 WKD1-Bru1 Bru_Ig21_tor1 condition memcompare * 2 * endevent //w tę samą
event Bru_Ig21_whois multiple 0 WKD1-Bru1 Bru_Ig21_tor2 condition memcompare * 1 * endevent //w przeciwną
event Bru_Ig21_prze  multiple 0 Bru_It1
  Bru_It1=Kon Bru_It1_loop
else
  Bru_Ig21_tor2
condition memcompare * * 0 endevent
event Bru_Ig21_tor1  multiple 5 Bru_It1
  Bru_It1<Kon Bru_It1_loop Bru_It1>WKD_next
else
  Bru_Ig21_tor2
condition memcompare * * 0 endevent
event Bru_Ig21_tor2  multiple 5 Bru_It2
  Bru_It2<Kon Bru_It2_loop Bru_It2>WKD_next
else
  Bru_Ig21_tor1
condition memcompare * * 0 endevent

Symetryczna obsługa obu kierunków. Pierwszy event odczytuje nazwę rozkładu zbliżającego się pociągu i jest to w zasadzie formalność, gdyż nie jest ona potem używana. Kolejne 3 eventy sprawdzają stan blokady po przeciwnej stronie.

Jeśli blokada jest wolna (0), ustawiany jest przelot. Przelot jeszcze sprawdza, czy tor jest wolny, bo jeśli nie jest, to musi być wybrany drugi z torów. Jeśli blokada jest w tę samą stronę, to można pociąg wprowadzić na prosto, gdyż będzie on oczekiwał na zwolnienie blokady przez poprzedni pociąg. Jeśli blokada jest ustawiona w przeciwną stronę, to znaczy że trzeba oczekiwać na pociąg z przeciwka — nieco szybciej będzie wyjechać, jeśli wjedzie on na wprost.

Wyłączenie łączenia eventów

config joinduplicatedevents no endconfig

Wpis powyższy powoduje, że kolejne eventy o tych samych nazwach będą traktowane jako błędne.


Scenerie realistyczne
Sceneria Podstrony i informacje
Gorlice Realistyczny układ torów
Linia 61 UwagiWOS 2011Aktualne zmianyZmiany w 2016Zmiany w 2015
Linia 64 Realistyczny układ torów
Linia 139 Realistyczny układ torów
Linia 181 WOS 2011Aktualne zmiany
Suwałki Realistyczny układ torów
Szczecin Realistyczny układ torów
Tramwaje GOP Realistyczny układ torów
Scenerie fikcyjne
Sceneria Podstrony i informacje
Czarne Prosty tor o długości ponad 460km
Drawinowo Zmiany
Linia 546 OpisDzierżawa
MZD Zmiany
Quark MydelniczkaRuch 2016Aktualne zmiany
SDR StrzęsowiecCzerwiceKarpiceKrętoszynPiaskowiecWostrzewo
Tarniowo Na bazie rzeczywistej stacji, poprawne profile pionowe na szlakach
Zwierzyniec Zmiany
Zagadnienia ogólne
Profil 2-5-13Unifikacja klonówOdcinki izolowaneSterowanie ruchem 2016