Sterowanie sygnalizatorami świetlnymi
: 21 lis 2012 16:52
Witam,
mam stworzoną aplikację sterującą sygnalizatorami na skrzyżowaniu.
Próbuję stworzyć sterowanie adaptacyjne, które uruchamia odpowiednie sygnalizatory w zależności od liczby pojazdów oczekujących na przejazd.
Mam problem ze wstawieniem stanów pośrednich (czerwone+żółte i żółte).
W uproszczeniu: na danym wlocie skrzyżowania mam najwięcej pojazdów -> sygnalizator otrzymuje światło zielone -> kończy się pętla dająca zielone na sygnalizator i w tym momencie muszę się jakoś dowiedzieć jakie będzie światło w następnej pętli żeby ustawić stan przejściowy. Załóżmy, że będzie to czerwone więc muszę wstawić pętlę pośrednią ze stanem żółtym.
Mój program wygląda tak, że mam algorytm liczący która faza ma być aktywna ( tzn. np zielony na danym sygnalizatorze -> oznaczenie 1). Ta jedynka trafia na pętle case która wylicza algorytmem czas dla tego stanu później i jedynka i czas trafiają na kolejną pętlę case która uruchamia zielone na sygnalizatorze przez określony czas.
Jak 'przewidzieć przyszłość' i dorzucić stan przejściowy??
Poniżej mój schemat testowy. Numericem zadaje fazę wyliczoną przez algorytm. Wchodzę do odpowiedniego case czas mam ustawiony stały (5) idę dalej na wykonanie fazy i aktualną fazę mam porównywaną z przykładowo 1 a kolejną z 2. Jeśli i to i to jest spełnione to mam stan przejściowy. Według mnie działałoby to jeśli bym informację o kolejnej fazie dostawał w momencie kiedy informacja o aktualnej jest przekazywana do porównywania ale nie wiem jak to zrobić
Na screenie jest błąd, w ostatnim case T dla diody przejścia powinno być w True
mam stworzoną aplikację sterującą sygnalizatorami na skrzyżowaniu.
Próbuję stworzyć sterowanie adaptacyjne, które uruchamia odpowiednie sygnalizatory w zależności od liczby pojazdów oczekujących na przejazd.
Mam problem ze wstawieniem stanów pośrednich (czerwone+żółte i żółte).
W uproszczeniu: na danym wlocie skrzyżowania mam najwięcej pojazdów -> sygnalizator otrzymuje światło zielone -> kończy się pętla dająca zielone na sygnalizator i w tym momencie muszę się jakoś dowiedzieć jakie będzie światło w następnej pętli żeby ustawić stan przejściowy. Załóżmy, że będzie to czerwone więc muszę wstawić pętlę pośrednią ze stanem żółtym.
Mój program wygląda tak, że mam algorytm liczący która faza ma być aktywna ( tzn. np zielony na danym sygnalizatorze -> oznaczenie 1). Ta jedynka trafia na pętle case która wylicza algorytmem czas dla tego stanu później i jedynka i czas trafiają na kolejną pętlę case która uruchamia zielone na sygnalizatorze przez określony czas.
Jak 'przewidzieć przyszłość' i dorzucić stan przejściowy??
Poniżej mój schemat testowy. Numericem zadaje fazę wyliczoną przez algorytm. Wchodzę do odpowiedniego case czas mam ustawiony stały (5) idę dalej na wykonanie fazy i aktualną fazę mam porównywaną z przykładowo 1 a kolejną z 2. Jeśli i to i to jest spełnione to mam stan przejściowy. Według mnie działałoby to jeśli bym informację o kolejnej fazie dostawał w momencie kiedy informacja o aktualnej jest przekazywana do porównywania ale nie wiem jak to zrobić
Na screenie jest błąd, w ostatnim case T dla diody przejścia powinno być w True