- Symulator MaSzyna -

Symulator EU07 (i nie tylko) => Pomoc doraźna => Wątek zaczęty przez: Mytnik w 25 Listopada 2010, 15:01:06

Tytuł: Sterowanie semaforem- problem
Wiadomość wysłana przez: Mytnik w 25 Listopada 2010, 15:01:06
Witam. Temat w odniesieniu do postu kolegi @Darth Luk z tego tematu.
Chciałem zobaczyć czy mi w ogóle coś z tego wyjdzie. Mam plik .inc semafora ss5zpcpbyn, i na końcu dodałem linikjkę "sterowanie ręczne":
//Semafor półsamoczynny, pięciokomorowy na słupie odchylonym dla toru N - powiązany z tarczą ostrzegawczą/ostatnim semaforem SBL.
//Autorzy: Kudłacz, ZiomalCl

origin (p2) (p3) (p4)
rotate 0 (p5) 0
//model semafora 5komorowego:
node 1000 0 (p1) model 0 0 0 0 sem/glowice/S5YLzpcpb_dd.t3d tabl/(p6) Lights 0 0 1 0 0 endmodel            //glowica
node 200 0 none model 0 0 0 0 sem/slupy/S5YLmg.t3d sem/slupy.dds endmodel       //slup
node 100 0 none model 0 0 0 0 sem/drabinki/D5YL.t3d sem/slupy.dds endmodel      //drabinka

node 700 100 none lines 100 50 20 100.0                                                //linia zeby byl maszt widoczny z daleka
0.0 0.0 0.0 0.0 3.5 0.0
endline
rotate 0 0 0
endorigin

// PODSTAWOWE ZDARZENIA:

//dla nastepnego SBL zeby mogl zmienic stan:
event (p1)_SBLs2 multiple 0 (p1)_sem_mem  (p1)_s2 condition memcompare * -1 0 endevent
event (p1)_SBLs10 multiple 1 (p1)_sem_mem  (p1)_s10 condition memcompare * 40 0 endevent

//sygnalizacja SHP:
event (p1)_SHP putvalues 1.0 none (p2) (p3) (p4) CabSignal -1 -1 endevent


//odczyt z pamieci (zdarzenie przypisane do toru przy ktorym stoi semafor):
event (p1)_sem_info getvalues 1.0 (p1)_sem_mem endevent

//stany semafora:

event (p1)_s1 multiple 0 none (p1)_sem_ligh1 (p1)_sem_info_stop (p7)_os1 endevent

event (p1)_s2 multiple 0 none (p1)_sem_ligh2 (p1)_sem_info_vmax (p1)_sem_distinfo_vmax (p7)_os2 endevent

event (p1)_s3 multiple 0 none (p1)_sem_ligh3 (p1)_sem_info_vmax (p1)_sem_distinfo_v100 (p7)_os2 endevent

event (p1)_s4 multiple 0 none (p1)_sem_ligh4 (p1)_sem_info_vmax (p1)_sem_distinfo_v40 (p7)_os2 endevent

event (p1)_s5 multiple 0 none (p1)_sem_ligh5 (p1)_sem_info_vmax (p1)_sem_distinfo_stop (p7)_os2 endevent

event (p1)_s10 multiple 0 none (p1)_sem_ligh10 (p1)_sem_info_v40 (p1)_sem_distinfo_vmax (p7)_os4 endevent

event (p1)_s11 multiple 0 none (p1)_sem_ligh11 (p1)_sem_info_v40 (p1)_sem_distinfo_v100 (p7)_os4 endevent

event (p1)_s12 multiple 0 none (p1)_sem_ligh12 (p1)_sem_info_v40 (p1)_sem_distinfo_v40 (p7)_os4 endevent

event (p1)_s13 multiple 0 none (p1)_sem_ligh13 (p1)_sem_info_v40 (p1)_sem_distinfo_stop (p7)_os4 endevent

event (p1)_ms2 multiple 0 none (p1)_sem_lighs2 (p1)_sem_info_shunt2 endevent

event (p1)_sz1 multiple 0 none (p1)_sem_lighz1 (p1)_sem_info_v20 (p1)_wyg_Sz endevent
event (p1)_wyg_Sz multiple 90 (p1)_sem_mem (p1)_s1 condition memcompare SetVelocity 20 0 endevent

//powyzsze zdarzenia skladaja sie z:


//memcell do pamietania predkosci:
node -1 0 (p1)_sem_mem memcell (p2) (p3) (p4) SetVelocity 0.0 0.0 none endmemcell

//zdarzenia wpisujace w memcell predkosci przy tym (info) i przy nastepnym (distinfo) semaforze:
event (p1)_sem_info_stop updatevalues 10.0 (p1)_sem_mem SetVelocity 0.0 0.0 endevent
event (p1)_sem_distinfo_stop updatevalues 1.0 (p1)_sem_mem SetVelocity * 0.0 endevent
event (p1)_sem_info_vmax updatevalues 1.0 (p1)_sem_mem SetVelocity -1 * endevent
event (p1)_sem_distinfo_vmax updatevalues 0.0 (p1)_sem_mem SetVelocity * -1 endevent
event (p1)_sem_distinfo_v100 updatevalues 1.0 (p1)_sem_mem SetVelocity * 100 endevent
event (p1)_sem_info_v40 updatevalues 1.0 (p1)_sem_mem SetVelocity 40 * endevent
event (p1)_sem_distinfo_v40 updatevalues 0.0 (p1)_sem_mem SetVelocity * 40 endevent
event (p1)_sem_info_v20 updatevalues 1.0 (p1)_sem_mem SetVelocity 20 0 endevent
// dziala tylko na pojazdy w trybie manewrowym:
event (p1)_sem_info_shunt2 updatevalues 1.0 (p1)_sem_mem ShuntVelocity 40 0 endevent

//zdarzenia sterujace swiatlami:
event (p1)_sem_ligh1 lights 0.0 (p1)  0 0 1 0 0 endevent
event (p1)_sem_ligh2 lights 0.0 (p1)  1 0 0 0 0 endevent
event (p1)_sem_ligh3 lights 0.0 (p1)  2 0 0 0 0 endevent
event (p1)_sem_ligh4 lights 0.0 (p1)  0 2 0 0 0 endevent
event (p1)_sem_ligh5 lights 0.0 (p1)  0 1 0 0 0 endevent
event (p1)_sem_ligh10 lights 0.0 (p1) 1 0 0 1 0 endevent
event (p1)_sem_ligh11 lights 0.0 (p1) 2 0 0 1 0 endevent
event (p1)_sem_ligh12 lights 0.0 (p1) 0 2 0 1 0 endevent
event (p1)_sem_ligh13 lights 0.0 (p1) 0 1 0 1 0 endevent
event (p1)_sem_lighs2 lights 0.0 (p1) 0 0 0 0 1 endevent
event (p1)_sem_lighz1 lights 0.0 (p1) 0 0 1 0 2 endevent

// uszkodzony semafor - nieoswietlony:
event (p1)_uszk multiple 0 none (p1)_sem_ligh0 (p1)_sem_info_stop endevent
event (p1)_sem_ligh0 lights 0.0 (p1) 0 0 0 0 0 endevent

// sterowanie ręczne
node -1 0 (p1)_ev eventlauncher (p2) (p3) (p4) 3.0 t 0 (p1)_s1 (p1)_s2 end
node -1 0 (p1)_ev eventlauncher (p2) (p3) (p4) 3.0 h 0 (p1)_s2 (p1)_s3 end
node -1 0 (p1)_ev eventlauncher (p2) (p3) (p4) 3.0 k 0 (p1)_s4 (p1)_s5 end
node -1 0 (p1)_ev eventlauncher (p2) (p3) (p4) 3.0 s 0 (p1)_s10 (p1)_s11 end
node -1 0 (p1)_ev eventlauncher (p2) (p3) (p4) 3.0 f 0 (p1)_s12 (p1)_s13 end

Chciałem wstawić ten semafor do scenerii testowej TD, więc znalazłem wpis include
include;SS5zpcpbyn.inc;Alakowice_B;4200.71;10.2008;-7862.71;-52.0333;B-12;sbl_462N;end
i dodałem go do wpisu .scn: (wklejam tylko ostatnie linijki z tego pliku)
 node 1000 0 none triangles material ambient: 0.0 0.0 0.0 diffuse: 149.94 149.94 149.94 specular: 229.5 229.5 229.5  endmaterial GrassGreen1.dds
-450.362 0.0 1456.36 0.0 1.0 0.0  1770.13 1455.07 end
-450.362 0.0 1085.53 0.0 1.0 0.0  1770.13 1262.89 end
-1114.47 0.0 2742.46 0.0 1.0 0.0  2219.89 2121.61
endtri

node 1000 0 none triangles material ambient: 0.0 0.0 0.0 diffuse: 149.94 149.94 149.94 specular: 229.5 229.5 229.5  endmaterial GrassGreen1.dds
89.753 0.0 1638.7 -0.0177113 0.999831 0.00483222  1404.34 1549.57 end
133.208 0.0 2281.83 0.0 1.0 0.0  1374.91 1882.88 end
628.591 0.0 2047.18 -0.000651891 0.999924 0.0123355  1039.42 1761.27
endtri

node 1000 0 none triangles material ambient: 0.0 0.0 0.0 diffuse: 149.94 149.94 149.94 specular: 229.5 229.5 229.5  endmaterial GrassGreen1.dds
-197.048 0.0 1838.59 0.0 1.0 0.0  1598.57 1653.17 end
-249.194 0.0 769.609 0.0 1.0 0.0  1633.89 1099.16 end
-450.362 0.0 1456.36 0.0 1.0 0.0  1770.13 1455.07
endtri

node 1000 0 none triangles material ambient: 0.0 0.0 0.0 diffuse: 149.94 149.94 149.94 specular: 229.5 229.5 229.5  endmaterial GrassGreen1.dds
1097.9 0.0 65.6434 0.0228053 0.999731 -0.00420518  721.579 734.32 end
579.25 23.7858 1273.68 0.0562867 0.998405 0.00450754  1072.83 1360.4 end
1097.9 0.0 1708.23 0.011174 0.999926 0.00489723  721.579 1585.61
endtri


include;SS5zpcpbyn.inc;Alakowice_B;0.387232;5.8;1500.25 0.0;sbl_462N;end

event KeyCtrl01 multiple 0.1 none Test_zwr01- endevent
event KeyCtrl02 multiple 0.1 none Test_zwr01+ endevent
event KeyCtrl03 multiple 0.1 none zwr02- endevent
event KeyCtrl04 multiple 0.1 none zwr02+ endevent



FirstInit

trainset rozklad start 0.0 0.0
//$o Tor doświadczalny

node -1 0 SM48-092 dynamic PKP\TEM2U SM48-092.tga TEM2Ua 0.0 headdriver 3 0 enddynamic

endtrainset


Semafor jest w scenerii tylko gdy podlatuję do niego niestety nie da się zmieniać sygnałów (próbuje zmieniać oczywiście klawiszami t,h,k,s,f)
Gdzie jest problem ?
Tytuł: Odp: Sterowanie semaforem- problem
Wiadomość wysłana przez: Ra w 25 Listopada 2010, 15:24:23
A w którym miejscu będąc próbujesz zmieniać? Zasięg 3m to dosyć niedużo i liczy się od podstawy semafora.
Tytuł: Odp: Sterowanie semaforem- problem
Wiadomość wysłana przez: Mytnik w 25 Listopada 2010, 15:26:16
No oczywiście przy samym semaforze. Spróbuje zwiększyć przypuśćmy do 5 metrów i zobaczę czy coś się zmieni.
EDIT. Zasięg zwiększyłem do 5 metrów ale nadal to samo.
Tytuł: Odp: Sterowanie semaforem- problem
Wiadomość wysłana przez: Quark-t w 25 Listopada 2010, 15:45:43
No oczywiście przy samym semaforze.
No nie takie oczywiście, bo przy głowicy czy przy podstawie? Przeczytałeś, co napisał @Ra? Eventlauncher działa wewnątrz sfery o zadanym promieniu o środku w podstawie semafora.
I spróbowałbym jeszcze wyrzucić "_ev" z nazwy eventlaunchera. Niby to tylko nazwa, ale...

EDIT: Uporządkuj wpis do scenerii. Przed obrotem daj średnik i wstaw tabliczkę.
Tytuł: Odp: Sterowanie semaforem- problem
Wiadomość wysłana przez: Mytnik w 25 Listopada 2010, 19:10:48
Cytuj
No nie takie oczywiście, bo przy głowicy czy przy podstawie? Przeczytałeś, co napisał @Ra? Eventlauncher działa wewnątrz sfery o zadanym promieniu o środku w podstawie semafora.
Przepraszam, mój błąd. Sprawdziłem przy podstawie tak jak mówiłeś i rzeczywiście się zmieniają. Tylko jest problem bo odległość mam ustawioną na 5 metrów i nie za bardzo widać na jaki sygnał zmieniamy, ponieważ gdy podlecę troszkę wyżej do głowicy to już nie działa.
Przy 1 semaforze zwiększenie tego zasięgu tak aby sterowanie działało przy głowicy nie będzie problemem. Ale co gdy obok siebie stoi kilka semaforów, np. szlak wielotorowy ?? Tu już sprawa się komplikuje, ponieważ sterowanie jednym semaforem, może powodować że będzie się ono "gryzło" z tym stojącym obok.
Tytuł: Odp: Sterowanie semaforem- problem
Wiadomość wysłana przez: Ra w 25 Listopada 2010, 19:15:11
Daj eventlauchery do środka origin i wtedy zamiast współrzędnych z parametrów zrób tylko przesunięcie w górę na wysokość głowicy. A nawet metr czy dwa do przodu.
Tytuł: Odp: Sterowanie semaforem- problem
Wiadomość wysłana przez: Mytnik w 25 Listopada 2010, 19:24:28
Dałem je do origin, ale co dalej zrobić niestety nie wiem.
Cytuj
współrzędnych z parametrów
chodzi o te które dawałem w include w pliku td.scn ??
Tytuł: Odp: Sterowanie semaforem- problem
Wiadomość wysłana przez: AtapiCl w 25 Listopada 2010, 19:32:22
Taki przykład:

origin (p2) (p3) (p4)
rotate 0 (p5) 0
//model semafora 5komorowego:
node 1000 0 (p1) model 0 0 0 0 sem/glowice/S5YLzpcpb_dd.t3d tabl/(p6) Lights 0 0 1 0 0 endmodel            //glowica
node 200 0 none model 0 0 0 0 sem/slupy/S5YLmg.t3d sem/slupy.dds endmodel       //slup
node 100 0 none model 0 0 0 0 sem/drabinki/D5YL.t3d sem/slupy.dds endmodel      //drabinka

node 700 100 none lines 100 50 20 100.0                                                //linia zeby byl maszt widoczny z daleka
0.0 0.0 0.0 0.0 3.5 0.0
endline

node -1 0 (p1)_ev eventlauncher 0 5 0 3.0 f 0 (p1)_s12 (p1)_s13 end

rotate 0 0 0
endorigin

Cytuj
node -1 0 (p1)_ev eventlauncher 0 5 0 3.0 f 0 (p1)_s12 (p1)_s13 end
Tytuł: Odp: Sterowanie semaforem- problem
Wiadomość wysłana przez: Mytnik w 25 Listopada 2010, 19:46:32
Czyli plik .inc semafora ma wyglądać tak ?
//Semafor półsamoczynny, pięciokomorowy na słupie odchylonym dla toru N - powiązany z tarczą ostrzegawczą/ostatnim semaforem SBL.
//Autorzy: Kudłacz, ZiomalCl

origin (p2) (p3) (p4)
rotate 0 (p5) 0
//model semafora 5komorowego:
node 1000 0 (p1) model 0 0 0 0 sem/glowice/S5YLzpcpb_dd.t3d tabl/(p6) Lights 0 0 1 0 0 endmodel            //glowica
node 200 0 none model 0 0 0 0 sem/slupy/S5YLmg.t3d sem/slupy.dds endmodel       //slup
node 100 0 none model 0 0 0 0 sem/drabinki/D5YL.t3d sem/slupy.dds endmodel      //drabinka

node 700 100 none lines 100 50 20 100.0                                                //linia zeby byl maszt widoczny z daleka
0.0 0.0 0.0 0.0 3.5 0.0
endline
rotate 0 0 0

// sterowanie ręczne
node -1 0 (p1) eventlauncher (p2) (p3) (p4) 0 5 0 5.0 t 0 (p1)_s1 (p1)_s2 end
node -1 0 (p1) eventlauncher (p2) (p3) (p4) 0 5 0 5.0 h 0 (p1)_s2 (p1)_s3 end
node -1 0 (p1) eventlauncher (p2) (p3) (p4) 0 5 0 5.0 k 0 (p1)_s4 (p1)_s5 end
node -1 0 (p1) eventlauncher (p2) (p3) (p4) 0 5 0 5.0 s 0 (p1)_s10 (p1)_s11 end
node -1 0 (p1) eventlauncher (p2) (p3) (p4) 0 5 0 5.0 f 0 (p1)_s12 (p1)_s13 end


endorigin

// PODSTAWOWE ZDARZENIA:

//dla nastepnego SBL zeby mogl zmienic stan:
event (p1)_SBLs2 multiple 0 (p1)_sem_mem  (p1)_s2 condition memcompare * -1 0 endevent
event (p1)_SBLs10 multiple 1 (p1)_sem_mem  (p1)_s10 condition memcompare * 40 0 endevent

//sygnalizacja SHP:
event (p1)_SHP putvalues 1.0 none (p2) (p3) (p4) CabSignal -1 -1 endevent
Tytuł: Odp: Sterowanie semaforem- problem
Wiadomość wysłana przez: AtapiCl w 25 Listopada 2010, 20:39:47
Nie. Spójrz raz jeszcze na to, co podałem.