Sterowanie sygnalizatorami świetlnymi

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
Marcin_K
Posty: 25
Rejestracja: 08 paź 2012 21:09
Wersja środowiska: LabVIEW 2011

Sterowanie sygnalizatorami świetlnymi

Post autor: Marcin_K »

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
Załączniki
Bez tytułu.png
Bez tytułu.png (22.7 KiB) Przejrzano 7530 razy
Awatar użytkownika
trooper
Posty: 22
Rejestracja: 22 paź 2012 17:44
Wersja środowiska: LabVIEW 2012
Kontakt:

Sterowanie sygnalizatorami świetlnymi

Post autor: trooper »

Witam,

Skrzyzowanie jest standardowym problemem przygotowującym do egzaminu CLD, stąd też znajdziesz wiele przykładów rozwiązania podstawowego problemu zmiany kolejności, która powinna być zbudowana z wykorzystaniem wzorca maszyny stanów. Każdy z przykładów (lepiej lub gorzej) rozwiązuje to poprawnie.

Jako punkt pierwszy proponuję zapoznać się i zrozumieć takie przykłady. Może ktos z WEAIiIB AGH ma swojego dobrego gotowca i zechce wrzucić? (to jest prosba, ja nie mam dobrego przykladu pod ręką)

Modyfikacja do Twoich potrzeb nie będzie trudna. Poszukaj CLD Sample Exams.

Pozdrawiam i powodzenia w kodowaniu!
Marcin_K
Posty: 25
Rejestracja: 08 paź 2012 21:09
Wersja środowiska: LabVIEW 2011

Re: Sterowanie sygnalizatorami świetlnymi

Post autor: Marcin_K »

Przykładów nie oglądałem ale rozwiązałem problem za pomocą maszyny stanów. Dzięki!
plejek
Posty: 25
Rejestracja: 17 lis 2012 19:30
Wersja środowiska: LabVIEW 2010
Lokalizacja: Rzeszów

Re: Sterowanie sygnalizatorami świetlnymi

Post autor: plejek »

Mógłbyś wrzucić ten program, z ciekawości chciałbym to zobaczyć???
Marcin_K
Posty: 25
Rejestracja: 08 paź 2012 21:09
Wersja środowiska: LabVIEW 2011

Re: Sterowanie sygnalizatorami świetlnymi

Post autor: Marcin_K »

To moja praca inżynierska, więc wolałbym tego na razie tak nie udostępniać. Mogę Ci powiedzieć co jak zrobiłem :P
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Sterowanie sygnalizatorami świetlnymi

Post autor: Mikrobi »

Proponuję przeglądnąć zasoby NI w kontekście przykładowych rozwiązań zadań z CLD.
Jeśli dobrze poszukać można znaleźć bardzo dobrą prezentację z dyskusją każdego z rozwiązań.
To kilka słów, jednak zawsze jest to wskazówka kiedy jak i dlaczego programista wybiera określone sposoby realizacji programu.
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
ODPOWIEDZ