Autor Wątek:  Pociąg ignoruje Obey_train  (Przeczytany 6106 razy)

0 użytkowników i 2 Gości przegląda ten wątek.

Offline HTD

  • Wiadomości: 702
  • "Twoja stara mieszka w Boldach" xD
    • Zobacz profil
    • I like trains
  • Otrzymane polubienia: 33
Pociąg ignoruje Obey_train
« dnia: 10 Grudnia 2014, 11:54:35 »
Sytuacja jest taka - postawiłem sobie pociąg przy samym odcinku izolowanym. Rozpoczynają się manewry w scenariuszu.
Ustawiłem sobie, że jak zapali się MS2, to do pociągu wysyła się Obey_train. Na odcinek izolowany, na którym na 200% w tym momencie stoję.

I co się dzieje - event przy MS2 odpala. I nic. Pociąg ma ustawiony tryb Shunt nadal. Dlaczego pociąg ignoruje event?
Czy kierunek torów w odcinku izolowanym (P1,P2) ma znaczenie?

W logu widać ewidentnie, że wykonało się coś takiego:
event kociary_jazda copyvalues 0 mc_etap_2 mc_obey_train endevent
event kociary_jazda addvalues 0 mc_etap_2 * 0 0 endevent
event drugi_rozklad copyvalues 1 mc_etap_2 mc_rozklad_2 endevent
event drugi_rozklad addvalues 1 mc_etap_2 * 0 0 endevent

Tzn odpalił event kociary_jazda i drugi_rozklad. Moja lokomotywa stoi na odcinku izolowanym, do którego przypisana jest komórka pamięci mc_etap_2.
Z tego co pamiętam - przypisywanie rozkładu nie działa, jak pociąg jest w trybie innym niż Obey_train, ale dlaczego ten tryb się nie przypisuje?

Czy trzeba zrobić coś jeszcze?

Załączam istotne fragmenty:

trainset none lgski -50 0.1
//$o Lokomotywa testowa do przypisania rozkładu.
node -1 0 EU07-00414 dynamic PKP\4E_V1 4E-ZEZ-004'14 4E-ZEZ 0 headdriver 3.BR 0 enddynamic
endtrainset

// Konfiguracja pliku
config joinduplicatedevents yes endconfig // potrzebne do "uproszczonego" wysyłania rozkładów do pociągów
// Drugi rozkład jazdy
node -1 0 mc_rozklad_2 memcell 0 0 0 Timetable:TCE752005 1 0 none endmemcell
// Tryb jazdy pociągowej
node -1 0 mc_obey_train memcell 0 0 0 Obey_train 1 0 none endmemcell

// Komórki torów
node -1 0 mc_etap_1 memcell 0 0 0 none 0 0 osobowka_z_pawianowa endmemcell
node -1 0 mc_etap_2 memcell 0 0 0 none 0 0 kociary_etap_2 endmemcell
node -1 0 mc_lgski memcell 0 0 0 none 0 0 lgski endmemcell

node 1000 0 lgski track normal 100.0 1.435 0.25 25.0 20 0 flat vis
 rail_screw_used1 4 tpd-oil1 0.2 0.5 1.1
25.0 0.2 2382.52  0.0  //point 1
0.0 0.0 0.0  //control vector 1
0.0 0.0 0.0  //control vector 2
25.0 0.2 2482.52  0.0  //point 2
0
endtrack

node 1000 0 kociary_przed_tm2_1 track normal 100.0 1.435 0.25 25.0 20 0 flat vis
 rail_screw_used1 4 tpd-oil1 0.2 0.5 1.1
25.0 0.2 2182.52  0.0  //point 1
0.0 0.0 0.0  //control vector 1
0.0 0.0 0.0  //control vector 2
25.0 0.2 2282.52  0.0  //point 2
0
isolated kociary_etap_2
event1 manewry_drugi_sklad2
endtrack

node 1000 0 kociary_przed_tm2_2 track normal 100.0 1.435 0.25 25.0 20 0 flat vis
 rail_screw_used1 4 tpd-oil1 0.2 0.5 1.1
25.0 0.2 2282.52  0.0  //point 1
0.0 0.0 0.0  //control vector 1
0.0 0.0 0.0  //control vector 2
25.0 0.2 2382.52  0.0  //point 2
0
isolated kociary_etap_2
endtrack

node 1000 0 kociary_przed_tm2_3 track normal 0.0 1.435 0.25 25.0 20 0 flat vis
 rail_screw_used1 4 tpd-oil1 0.2 0.5 1.1
25.0 0.2 2182.52  0.0  //point 1
0.0 0.0 -9.52246  //control vector 1
-0.0010643 0.0 9.52271  //control vector 2
24.9834 0.199629 2153.96  0.0  //point 2
0
isolated kociary_etap_2
endtrack

Offline Stele

  • Zasłużony dla Symulatora
  • Wiadomości: 10133
    • Zobacz profil
  • Otrzymane polubienia: 2612
Odp: Pociąg ignoruje Obey_train
« Odpowiedź #1 dnia: 10 Grudnia 2014, 12:33:43 »
Toru "kociary_etap_2" nie dałeś w przykładach, a to na niego idzie komenda. Z tego co się orientuję, wysłanie rozkładu z odpowiednim parametrem powinno przestawić z Shunt na Obey_train. Co ma robic jedynka w Timetable? W dokumentacji nie znajduję takiej wartości tego parametru. Jeśli zinterpretuje to jako Vn=1 to nie pojedzie.
Przy wysyłaniu komend jazdy, a przynajmniej przy manewrach, istotna jest lokalizacja komórki z komendą, bo jej pozycja względem pojazdu determinuje kierunek. Tu orientacja toru może mieć znaczenie, ale nie eksperymentowałem z tym dość długo, bo po kilku próbach uzyskałem zamierzony efekt i się nie wgłębiałem w to, gdzie robiłem błąd.
Istotnego błędu nie widzę. Sprawdź ten tor trzeci raz i sprawdzaj logvalues po każdym kroku.
Mój kanał youtube

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6355
  • Ostatni gasi światło...
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 388
Odp: Pociąg ignoruje Obey_train
« Odpowiedź #2 dnia: 10 Grudnia 2014, 12:39:17 »
Mam wrażenie, że reprezentujesz szamańskie podejście do MaSzyny, na zasadzie "wierzę, że to tak działa, tylko że działać nie chce".

Sytuacja jest taka - postawiłem sobie pociąg przy samym odcinku izolowanym.
Co to znaczy i czemu ma to służyć? Odcinki izolowane potrzebne są do wykrywania obecności taboru na torze — tylko i wyłącznie.

Ustawiłem sobie, że jak zapali się MS2, to do pociągu wysyła się Obey_train. Na odcinek izolowany, na którym na 200% w tym momencie stoję.
Jak się zapala Ms2, to pociąg widzi w skanowaniu toru komórkę z komendą ShuntVelocity oraz niezerową prędkością. Nie można włączyć trybu pociągowego trybem manewrowym. Na odcinek izolowany nic się nie wysyła, komórki pamięci wiązane są z odcinkami torów. Komórka pamięci wiązana z odcinkiem izolowanym to osobna bajka (służy do sprawdzenia zajętości odcinka i wcześniej można było ją tak powiązać używając odpowiednio eventów *:free i *:busy).

Z tego co pamiętam - przypisywanie rozkładu nie działa, jak pociąg jest w trybie innym niż Obey_train, ale dlaczego ten tryb się nie przypisuje?
Czyste szamaństwo.

// Konfiguracja pliku
config joinduplicatedevents yes endconfig // potrzebne do "uproszczonego" wysyłania rozkładów do pociągów
Bzdura. Parametr ten pozwala na grupowanie eventów pod wspólną nazwą. Dzięki temu pisanie złożonych eventów jest formalnie prostsze, ale łatwiej też się pogubić, jeśli przypadkowo użyje się tej samej nazwy dla zupełnie innego eventu.
¯\_( ͡° ͜ʖ ͡°)_/¯ Ra

Polecam: kręgarz Wojciech Walczak, projekt masarni

Offline HTD

  • Wiadomości: 702
  • "Twoja stara mieszka w Boldach" xD
    • Zobacz profil
    • I like trains
  • Otrzymane polubienia: 33
Odp: Pociąg ignoruje Obey_train
« Odpowiedź #3 dnia: 10 Grudnia 2014, 12:44:45 »
Symbol "kociary_etap_2" to nazwa odcinka izolowanego, a nie nazwa toru. Czy jest to nieprawidłowe? Z tego co sprawdzałem w Quarku, można używać nazw odcinków izolowanych zamiennie z nazwami torów. Czy nie można?

Jedyna w Timetable? Bez znaczenia. Jako wartość wysyłana do pociągu jest pierwszym parametrem, a więc określa odległość od początku toru - tu 1m. Kolejna wartość jest prędkością. Nie wiem, może w przypadku Timetable wartości inne niż 0 są niedozwolone, tyle że mam inny scenariusz gdzie identyczna konstrukcja działa bez problemu.

Moim zamysłem było połączenie 3 torów przed tarczą TM2 w odcinek izolowany, przesłanie do tego odcinka Obey_train w momencie kiedy tarcza zapali MS2 i sekundę po tym rozkładu jazdy.
Niestety z nieznanego mi powodu to po prostu nie działa. Jeśli chodzi o odcinek izolowany - pierwszy raz używam tej opcji :)

Czy jakiś szczególny warunek musi być spełniony, żeby komórka została przesłana do toru i pociągu stojącego na torze? Czy pociąg musi być ustawiony w jakimś konkretnym kierunku? Czy kierunek toru bądź odcinka izolowanego ma znaczenie? Czy mają znaczenie kierunki torów? Z tego co widziałem na mapie, ciągła linia tworząca ten odcinek wygląda tak: 12-21-12 - tak jakby jeden z torów był odwrócony. Z tego co wiem decyduje to o wysyłaniu event1 lub event2 - ale czy ma jeszcze na coś innego wpływ? Czy konieczne jest wysyłanie eventów przez mój odcinek? Czy może wysłanie eventu z tego odcinka w czymś przeszkadzać?

  Dodano: 10 Grudnia 2014, 12:52:46
@Ra:
Opieram się wyłącznie na rzeczach przeczytanych na tym forum :) Nie wiem czy gdzieś jest dokumentacja odcinków izolowanych, ja nigdy takowej nie widziałem.
Myślałem, że można do odcinka izolowanego przesłać komórkę pamięci i zostanie ona przekazana do wszystkich torów w tym odcinku. Jeśli nie - jaka jest inna opcja? Tylko proszę nie pisz, żeby zrobić cały scenariusz od nowa, bo jak wszyscy zaczną robić wszystko od nowa, to nowe rzeczy zobaczymy za parę lat albo w ogóle ;)

Mamy co mamy i chcemy, żeby jakoś działało, kroczek po kroczku poprawiając. Zadanie jest chyba proste: mam tor, mam skład, mam event, chcę wysłać rozkład do pociągu. Kiedyś już to robiłem (i działało).
Mało tego - przy okazji pytań stawianych przy tamtej okazji dostałem wskazówkę, żeby użyć odcinka izolowanego - dopytałem o te odcinki i wyszło mi coś takiego.

Dobra, skracając tę akademicką dyskusję - mówisz odcinek izolowany jest tylko do sprawdzania zajętości torów. Więc mogę podłączyć coś np pod "kociary_etap_2_busy" i jak wjadę na ten odcinek, to się odpali. Ale to nie załatwia sprawy. Sprawę załatwi, jak mój pociąg dostanie rozkład przypisany w tym momencie. Problem w tym, że jeśli chodzi o tory - w interesującym mnie odcinku są 3 dość krótkie tory. Do którego mam wysyłać ten rozkład? Mogę do wszystkich 3 dla pewności? Co stoi na przeszkodzie, żeby to zadziałało?
« Ostatnia zmiana: 10 Grudnia 2014, 12:52:46 wysłana przez HTD »

Offline muri

  • Wiadomości: 627
    • Zobacz profil
  • Otrzymane polubienia: 5
Odp: Pociąg ignoruje Obey_train
« Odpowiedź #4 dnia: 10 Grudnia 2014, 13:17:02 »
No ale komórkę wiążesz z torem "jawnie" - podając nazwę toru na jaki ma oddziaływać w definicji komórki (ostatni parametr przed endmemcell): http://rainsted.com/pl/Symulator/MaSzyna/Scenery.doc#node_.E2.80.A6_memcell. Te komórki tworzone przy okazji definiowania odcinka izolowanego tworzone są "przyokazyjnie" i jak widać nie są powiązane z torem (no bo i z którym? jak w odcinku jest więcej niż jeden). Po mojemu jak masz w tym odcinku 3 tory, to musisz zrobić 3 komórki i każdą przywiązać do jej toru. A potem odpalając event ustaw potrzebną wartość we wszystkich tych komórkach - no i tam gdzie będzie stał jakiś pojazd, to powinno "zaskoczyć". Tyle mówi logika.

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6355
  • Ostatni gasi światło...
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 388
Odp: Pociąg ignoruje Obey_train
« Odpowiedź #5 dnia: 10 Grudnia 2014, 13:35:08 »
Symbol "kociary_etap_2" to nazwa odcinka izolowanego, a nie nazwa toru. Czy jest to nieprawidłowe?
Można nazwać identycznie tor oraz odcinek izolowany, ale trzeba mieć świadomość, w jakim kontekście który jest używany. Komórki wiążą się z torami, komendy wysyła się do toru.

Jedyna w Timetable? Bez znaczenia. Jako wartość wysyłana do pociągu jest pierwszym parametrem, a więc określa odległość od początku toru - tu 1m. Kolejna wartość jest prędkością.
Pierwszy parametr liczbowy określa prędkość oraz tryb, drugi minuty doliczone do rozkładu.

Niestety z nieznanego mi powodu to po prostu nie działa.
Powód jest taki, że mieszasz koncepcje i mechanizmy oraz masz błędne pojęcie o działaniu odcinków izolowanych i przesyłaniu komend.

Czy jakiś szczególny warunek musi być spełniony, żeby komórka została przesłana do toru i pociągu stojącego na torze?
Pojazd z obsadą musi stać na torze połączonym z komórką.

Czy pociąg musi być ustawiony w jakimś konkretnym kierunku?
Jeśli podasz niezerową prędkość przy przesyłaniu rozkładu, to tak. Dla dodatniej pojedzie w stronę komórki, dla ujemnej w przeciwną.

Czy kierunek toru bądź odcinka izolowanego ma znaczenie? Czy mają znaczenie kierunki torów?
Kierunek toru nie ma znaczenia, odcinki izolowane nie mają kierunku (są typu bool).

Mamy co mamy i chcemy, żeby jakoś działało, kroczek po kroczku poprawiając. Zadanie jest chyba proste: mam tor, mam skład, mam event, chcę wysłać rozkład do pociągu. Kiedyś już to robiłem (i działało).
Zacznij poprawiać coś, co działa, modyfikując jeden element na raz. Jeśli modyfikujesz cokolwiek w kilku miejscach na raz, tracisz kontrolę nad tym, co ma jaki wpływ i przestajesz wiedzieć, co robisz.


Problem w tym, że jeśli chodzi o tory - w interesującym mnie odcinku są 3 dość krótkie tory. Do którego mam wysyłać ten rozkład?
1. Postawić pociąg na dłuższym torze. 2. Umieścić komendę rozkładu w sygnalizatorze.

Mogę do wszystkich 3 dla pewności? Co stoi na przeszkodzie, żeby to zadziałało?
Możesz, ale rezultat może być nieokreślony. Trudne dzieciństwo.
¯\_( ͡° ͜ʖ ͡°)_/¯ Ra

Polecam: kręgarz Wojciech Walczak, projekt masarni

Offline HTD

  • Wiadomości: 702
  • "Twoja stara mieszka w Boldach" xD
    • Zobacz profil
    • I like trains
  • Otrzymane polubienia: 33
Odp: Pociąg ignoruje Obey_train
« Odpowiedź #6 dnia: 10 Grudnia 2014, 14:03:31 »
Dzięki za naświetlenie sprawy. Jak umieścić komendę rozkładu w sygnalizatorze, albo gdzie to jest użyte w jakiejś opublikowanej scenerii, żeby zobaczyć przykład? Sygnalizator mam "pod ręką" na mapie. Znaczy się tarczę manewrową, chyba może być? Czy sygnalizator musi spełniać jakiś szczególny warunek?

Offline Stele

  • Zasłużony dla Symulatora
  • Wiadomości: 10133
    • Zobacz profil
  • Otrzymane polubienia: 2612
Odp: Pociąg ignoruje Obey_train
« Odpowiedź #7 dnia: 10 Grudnia 2014, 14:11:35 »
Przypisania komendy do toru trzeba uzywac tylko przy wybudzaniu ai, gdzie zazwyczaj co do metra znasz jego pozycje. Gdy juz jest aktywne, uzywaj komorek skanowanych. Mniej pisania, a pojazd moze byc chen daleko i odczyt komendy wyzwoli dalsze zdarzenia.
Ra, mozna uzyc wielokrotnie memcell:send w odniesieniu do jednej komorki?

Poprawiłem wiadomość.
Benek
« Ostatnia zmiana: 10 Grudnia 2014, 20:48:12 wysłana przez Benek »
Mój kanał youtube

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6355
  • Ostatni gasi światło...
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 388
Odp: Pociąg ignoruje Obey_train
« Odpowiedź #8 dnia: 10 Grudnia 2014, 14:36:56 »
Można, ale albo trzeba to użyć w ramach joinduplicatedevents yes albo uruchomić Multiple, które następnie poprzez condition memcompare rozpozna etap, na którym jesteś z wysyłaniem.

  Dodano: 10 Grudnia 2014, 14:38:13
Jak umieścić komendę rozkładu w sygnalizatorze, albo gdzie to jest użyte w jakiejś opublikowanej scenerii, żeby zobaczyć przykład?
Na Quarku EZT są wybudzane z torów postojowych poprzez przypisanie rozkładu, który następnie każe im stanąć w peronie.
« Ostatnia zmiana: 10 Grudnia 2014, 14:38:13 wysłana przez Ra »
¯\_( ͡° ͜ʖ ͡°)_/¯ Ra

Polecam: kręgarz Wojciech Walczak, projekt masarni

Offline HTD

  • Wiadomości: 702
  • "Twoja stara mieszka w Boldach" xD
    • Zobacz profil
    • I like trains
  • Otrzymane polubienia: 33
Odp: Pociąg ignoruje Obey_train
« Odpowiedź #9 dnia: 10 Grudnia 2014, 18:22:45 »
Po pierwsze primo - sprawdziłem opcję z wysłaniem rozkładu do 3 torów na raz. Nic się złego nie stało, testowałem to 2 razy pod rząd, za każdym razem rozkład przypisany poprawnie.
Ale jak @Ra mówisz, że to średnio dobry sposób, to teraz próbuję przez sygnalizator. Może też zadziała :)

  Dodano: 10 Grudnia 2014, 18:33:46
Po drugie primo - szukałem tego w Quarku i nie znalazłem. Przeszukałem wszystkie pliki pod kątem Timetable. Wszystkie rozkłady są przypisane via copyvalue / addvalue. Domyślam się, że do torów, jeśli nie, nie potrafiłem tego sprawdzić / znaleźć. Proszę zatem o przykładowych parę linii skryptu, które wysyłają rozkład z sygnalizatora. Z góry wielkie dzięki.
« Ostatnia zmiana: 10 Grudnia 2014, 18:33:46 wysłana przez HTD »