Zakład Sterowania Ruchem Drogowym
Wydział Transportu PW
Do użytku wewnętrznego
Ćwiczenie 5
Realizacja algorytmów sterowania acyklicznego
Instrukcja przygotowawcza
(wersja 01a)
Opracował:
Mgr inż. Paweł Chrobot
Warszawa, marzec 2010 r.
2
Przygotowanie do ćwiczenia
W ramach przygotowania do ćwiczenia należy:
1) przypomnieć wiadomości z wykładu w zakresie zasad tworzenia algorytmów
sterowania akomodacyjnego;
2) zapoznać się z niniejszą instrukcją przygotowawczą;
3) przeanalizować przedstawiony w instrukcji algorytm sterowania; przy analizie
szczególnie przydatne będą uwagi zawarte w części „Analiza algorytmu – uwagi”.
4) opracować podobny algorytm dla prostszego sterowania dwufazowego.
Na zajęciach modelowane będzie (alternatywnie) opisane w instrukcji sterowanie
czterofazowe bądź sterowanie dwufazowe (oparte na samodzielnie przygotowanym wcześniej
„na papierze” algorytmie).
Analiza algorytmu – uwagi
Przy analizowaniu algorytmu zwrócić uwagę na następujące wskazówki:
1) algorytm wykonywany jest na początku każdej sekundy symulacji;
2) przed każdorazowym wykonaniem algorytmu obliczane są aktualne wartości wyrażeń
zdefiniowanych w
okienku EXPRESSIONS; obliczona wartość podstawiona zostaje
pod nazwę wyrażenia;
3) zarówno w wyrażeniach jak i w algorytmie używane są stałe zdefiniowane w okienku
PARAMATERS;
4) w przypadku bloków warunkowych wyjście do dołu jest wyjściem FAŁSZ, zaś
wyjście w prawą stronę odpowiada wartości TRUE;
5) zdefiniowane w okienku PARAMETERS stałe TF1, TF2, TF3, TF4 określają w
algorytmie minimalne czasy realizacji odpowiednich faz;
6) zdefiniowanie w bloku PARAMETERS stałej DetA i nadanie jej wartości 12 służy do
nadania nazwy (DetA) detektorowi numerze systemowym (w VisSim’ie) 12.
Analogicznie jest dla pozostałych detektorów;
7) W definicjach wyrażeń oraz w algorytmie używane są następujące procedury i
funkcje:
a) Call (nr) – zwraca wartość 1, jeśli detektor nr był wzbudzony od chwili ostatniego
sprawdzenia. W następnym kroku czasu wartość ta jest automatycznie zerowana.
b) T_red (nr) – zwraca czas wyświetlania sygnału czerwonego (jaki upłynął) dla
grupy sygnałowej nr lub wartość 0, jeśli dla tej grupy sygnał czerwony nie jest
aktualnie wyświetlany.
c) StgA (nr) – zwraca wartość 1, jeśli aktualnie realizowana jest faza o numerze nr.
W przeciwnym wypadku zwraca wartość 1.
d) StgT (nr) – zwraca czas jaki upłynął od początku realizacji fazy nr. Jeśli faza ta
nie jest aktualnie realizowana, to zwracana jest wartość 0.
e) Is (nr1,nr2) – wywołuje przejście międzyfazowe z fazy nr1 do fazy nr2.
Wstęp
Jeszcze do dzisiaj dosyć powszechnie na skrzyżowaniach sterowanych drogową
sygnalizacją świetlną polskich ulic pracują sterowniki mogące realizować jedynie stosunkowo
proste sterowanie.
Produkowane obecnie sterowniki są zwykle urządzeniami mikroprocesorowymi,
pozwalającymi na realizację praktycznie dowolnych, zaprojektowanych przez inżyniera
3
ruchu, algorytmów sterowania. Okresowa wymiana na skrzyżowaniach wyeksploatowanych
sterowników na nowe urządzenia daje możliwość powszechnego stosowania nowych
rozwiązań w zakresie sterowania ruchem drogowym.
Powyższe uwarunkowania spowodowały konieczność wzbogacenia wiadomości
teoretycznych przekazywanych studentom specjalności „Sterowanie ruchem drogowym” na
wykładach o zajęcia praktyczne poświęcone projektowaniu i weryfikacji algorytmów
sterowania adaptacyjnego.
Na zajęciach wykorzystywany jest pakiet programów firmy PTV, w którego skład
wchodzi:
• program Vissim odpowiadający za właściwe przemieszczanie pojazdów
(zgodnie z zaawansowanym modelem ruchu), wizualizację animacji oraz
zbieranie uzyskanych parametrów ruchu;
• moduł VAP – moduł umożliwiający realizację programu sterowania
adaptacyjnego w modelu Vissim;
• program VisVap – program umożliwiający zapis algorytmu sterowania w
postaci schematu blokowego.
Cel ćwiczenia
Celem ćwiczenia jest pogłębienie wiedzy z zakresu zasad tworzenia algorytmów
sterowania adaptacyjnego oraz (na bazie symulacji komputerowej) ich testowania i oceny
efektywności.
Analizowany przykład
W przykładzie rozważane jest skrzyżowanie (przejście dla pieszych) spełniające
następujące założenia:
a) przejście dla pieszych zlokalizowane jest na drodze o dwóch jezdniach rozdzielonych
pasem zieleni (dwa lub trzy pasy 3,5 metrowej szerokości, szerokość pasa
rozdzielającego – ok. 3m);
b) rozmieszczenie sygnalizatorów zgodnie z rys. 1. Na słupkach sygnalizatorów
zamontowane są przyciski wzbudzane przez pieszych;
c) zakłada się, że skrzyżowanie pracuje jako „izolowane”, tzn. odległości od sąsiednich
skrzyżowań jest duża, co eliminuje potrzebę koordynacji;
d) natężenie ruchu kołowego jest dosyć znaczne (np. ok. 1000 poj/h/pas), zaś ruch
pieszy odbywa się sporadycznie.
Na rys.1 przedstawiono szkic przykładowego skrzyżowania (przejścia dla pieszych) z
naniesionymi sygnalizatorami i przyciskami dla pieszych (P1...P4).
Rys. 1. Szkic przejścia dla pieszych z przykładu
4
Dla opisanego wyżej przejścia dla pieszych przyjęto sterowanie zgodnie z pokazanym na
rys.2 grafem
przejść fazowych.
Rys. 2. Graf przejść dla sterowania 4-fazowego
W tab.1 przedstawiono zestawienie warunków przejść fazowych dla grafu z rys.2. Przyjęto
tu, że zgłoszenia pieszych są rejestrowane przez detektor jedynie w trakcie realizacji fazy 1.
Tab. 1. Zestawienie warunków przejść fazowych
Przejście
fazowe
Warunki
czasowe
Upłynął:
Warunki detektorowe
Zarejestrowane zostało zgłoszenie pieszego:
1 PF1,2 minimalny
czas realizacji
fazy 1
z detektora P1 i/lub P2 (przyciski zewnętrzny i/lub
wewnętrzny przy jezdni północnej (A))
2 PF1,3 minimalny
czas realizacji
fazy 1
z detektora P3 i/lub P4 (przyciski wewnętrzny
i/lub zewnętrzny przy jezdni południowej (B))
3 PF1,4 minimalny
czas realizacji
fazy 1
z detektora P1 i/lub P2 (przyciski zewnętrzny i/lub
wewnętrzny przy jezdni północnej (A))
oraz
z detektora P3 i/lub P4 (przyciski wewnętrzny
i/lub zewnętrzny przy jezdni południowej (B))
4 PF2,1 minimalny
czas realizacji
fazy 2
wyłącznie z detektora P2 (przycisk wewnętrzny
przy jezdni północnej (A))
5 PF2,3 minimalny
czas realizacji
fazy 2
z detektora P1 i/lub P2 (przyciski zewnętrzny i/lub
wewnętrzny przy jezdni północnej (A))
6 PF3,1 minimalny
czas realizacji
fazy 3
wyłącznie z detektora P3 (przycisk wewnętrzny
przy jezdni południowej (B))
5
7 PF3,2 minimalny
czas realizacji
fazy 3
z detektora P4 i/lub P3 (przyciski zewnętrzny i/lub
wewnętrzny przy jezdni południowej (B))
8 PF4,1 minimalny
czas realizacji
fazy 4
Warto zwrócić uwagę na sposób działania sterowania. Przy braku zgłoszeń pieszych
realizowana jest przez cały czas faza 1 (ruch kołowy na obu jezdniach). Zapewniony jest
również minimalny (określony przez projektanta) czas realizacji tej fazy przy licznych
zgłoszeniach pieszych. Możliwe jest przechodzenie pieszych w tym samym czasie przez obie
jezdnie (faza 4), jeśli zostały zarejestrowanie zgłoszenia pieszych z przycisków np. po obu
stronach drogi. W przypadku, gdy zgłoszenie pieszego nastąpiło z jednej strony drogi (np.
zewnętrzny przycisk przy jezdni północnej), realizowana jest sekwencja faz 1-2-3-1
pozwalająca pieszemu na płynne przejście obu jezdni i redukująca czas wyświetlanych
sygnałów czerwonych dla pojazdów. Uwzględniona jest również możliwość przejścia
pieszego, który z różnych powodów (np. wolniej poruszająca się osoba niepełnosprawna) nie
zdążyła w przeznaczonym czasie przejść przez obie jezdnie i pozostała na pasie
rozdzielającym.
Modelowanie ruchu w programie VisSim
Uruchomienie programu powoduje ukazania się okna programu pokazanego na rys.3.
Rys.3. Okno programu VisSim (w trakcie symulacji 2D)
Centralną część stanowi obszar roboczy, w którym umieszczane są elementy modelu.
Podstawowymi elementami modelu są odcinki oraz łączniki (łączniki nie występują w
rozpatrywanym na ćwiczeniu przykładzie i nie będą omawiane).
6
Odcinki reprezentują fragmenty dróg (ulic), po których przemieszczać się mogą
użytkownicy drogi.
Wstawianie odcinków polega na wybraniu odpowiedniej ikony na pasku narzędzi z lewej
strony okna i przeciągnięciu myszką w obszarze roboczym. Po wstawieniu odcinka należy
jeszcze wypełnić okno dialogowe (właściwości odcinka) pokazane na rys.4.
Rys.4. Okno dialogowe właściwości odcinka
Edycja właściwości odcinka możliwa jest zawsze – należy wybrać odpowiednią ikonę na
pasku narzędzi, wskazać odcinek poprzez kliknięcie i dwukrotnie na nim kliknąć, co
udostępni pokazane na rys.4. okno dialogowe.
Usuwanie odcinków odbywa się poprzez wybranie odpowiedniej ikony na pasku narzędzi,
wskazanie odcinka poprzez kliknięcie, usunięcie klawiszem DEL i potwierdzenie komunikatu
ostrzegającego o usuwaniu (UWAGA: usunięcie odcinka lub łącznika powoduje usunięcie
wszystkich związanych z nim elementów modelu).
Wstawianie innego elementu modelu (np. generatora ruchu, sygnalizatora, detektora itp.)
odbywa się poprzez wybranie odpowiedniej ikony na pasku narzędzi z lewej strony okna,
wskazanie odcinka lub łącznika, na którym ma być wstawiony element oraz wstawienie
elementu w odpowiednim miejscu odcinka poprzez klikniecie. Następnie należy ustawić w
oknie dialogowym właściwości wstawionego elementu sieci (wygląd okna zależny jest
oczywiście od typu elementu – tzn. np. detektor ma inne właściwości niż sygnalizator).
Edycja właściwości elementu odbywa się poprzez wybranie odpowiedniej ikony na pasku
narzędzi, wskazanie (kliknięcie) odcinka (łącznika), na którym znajduje się element
i kliknięcie na znaczniku elementu – udostępnione zostaje wówczas okno dialogowe
umożliwiające edycję właściwości elementu.
UWAGA: należy zwrócić uwagę, że jedną z właściwości elementów modelu
(sygnalizatorów, detektory itp.) jest ich numer systemowy. Odwołanie się (np. w algorytmie
sterowania) do konkretnego elementu (detektora, sygnalizatora) może zatem odbywać się
poprzez odwołanie do numeru systemowego elementu.
Usuwanie elementu odbywa się poprzez wybranie odpowiedniej ikony na pasku narzędzi,
wskazanie (kliknięcie) odcinka (łącznika) na którym znajduje się element i przeciągnięcie
7
elementu poza obszar odcinka; należy również potwierdzić chęć usunięcia po ukazaniu się
komunikatu ostrzegającego o usuwaniu elementu.
W przykładzie wykorzystywane są następujące typy elementów:
a) generatory ruchu – powodują, że na odcinkach generowane są pojazdy. Natężenie
ruchu oraz struktura rodzajowa definiowane jest w oknie dialogowym elementu.
b) detektory ruchu – służą do wykrywania pojazdów (pieszych) w obszarze detekcji
określonym poprzez rozmiar modelu detektora. Właściwości detektora definiowane
są w jego oknie dialogowym. W trakcie symulacji można rozpoznać stan detektora
(np. jego zajętość, prędkość przejeżdżającego pojazdu itp.) wywołując odpowiednią
funkcję modułu VAP (wywołanie następuje z poziomu algorytmu sterowania
zapisanego w postaci schematu blokowego w programie VisVAP).
c) sygnalizatory – przekazują sygnały określonym uczestnikom ruchu (pojazdy,
autobusy, piesi). Każdy sygnalizator przyporządkowany jest do odpowiedniej grupy
sygnałowej określonego sterownika. Właściwości sygnalizatora definiowane są w
jego oknie dialogowym. UWAGA: modele sygnalizatorów umieszcza się na każdym
pasie ruchu w miejscu odpowiedniej linii zatrzymania.
Modelowanie sterowania zależnego do ruchu - podstawy
Realizację sterowania zależnego od ruchu umożliwia opcjonalnie dołączony do programu
VisSim moduł VAP. Udostępnia on użytkownikowi bogaty zestaw funkcji pozwalających np.
sprawdzić aktualny stan detektora, przełączyć fazę lub podać czas jej realizacji itp.
Modelowanie odbywa się w trzech etapach:
a) algorytm sterowania należy zapisać w postaci schematu blokowego wykorzystując
współpracującą z programem VisSim aplikację VisVAP (edytor schematu
blokowego algorytmu sterowania). Po skompilowaniu algorytmu poleceniem
Compile/Generale VAP File utworzony i zapisany zostanie plik nazwa.vap, do
którego ścieżkę dostępu należy podać w programie VisSim.
b) w pliku z rozszerzeniem „.pua” podać należy pozostałe, niezbędne do prawidłowego
funkcjonowania algorytmu informacje (np. przyporządkowanie grup sygnałowych
do fazy, fazę od której zaczynamy realizację itp.).
c) w programie VisSim poleceniem Sterowanie/Edycja sterowników/zakładka Sterownik
VAP należy przywołać okno dialogowe, w którym podamy ścieżkę dostępu do w/w
plików oraz dostarczonego przez producenta pliku vap216.dll. Ponadto należy na
zakładce Grupy sygnalizacyjne zdefiniować używane grupy sygnałowe (np. określić
długość sygnału żółtego w danej grupie itp.).
Ad a) Zapisywanie algorytmu sterowania w aplikacji VisVAP
Uruchomienie aplikacji VisVap powoduje zgłoszenie się okna o wyglądzie jak na rys.5.
8
Rys.5. Okno aplikacji VisVap
Część centralna (robocza) podzielona jest na cztery podobszary:
z
CHART (schemat blokowy) – w tej części umieszczany jest schemat blokowy
algorytmu – opis jego tworzenia oraz interpretacji podany jest dalej.
z
ARRAYS – część ta umożliwia definiowanie dwuwymiarowych tablic.
z
CONSTANS (stałe) – w tej części zdefiniować można wartości stałych używanych w
algorytmie (w części CHART) lub w wyrażeniach (w części EXPRESSION). Jeśli w
tej części np. stałej TF1 nadamy wartość 15, to zawsze w wyrażeniu lub algorytmie
zapis TF1 zostanie zinterpretowany jako wartość 15.
z
EXPRESSIONS (wyrażenia) – zdefiniować można tu wyrażenia arytmetyczne i
logiczne. Do ich tworzenia wykorzystywać można podstawowe operatory (+, -, *, /,
OR, AND). Wyrażeniu można nadać nazwę. Aktualna wartość zdefiniowanego
wyrażenia jest obliczana w każdej sekundzie symulacji PRZED rozpoczęciem
wykonywania algorytmu i podstawiana pod jego nazwę. Tak więc odwołanie (w
algorytmie) do nazwy zdefiniowanego tu wyrażenia reprezentuje w algorytmie jego
aktualną wartość.
z
SUBROUTINES (procedury) – w części tej można zdefiniować ścieżki dostępu do
plików, zawierających wyodrębnione z algorytmu fragmenty, wykonywane w
przypadku ich wywołania z algorytmu (wywołanie zdefiniowanych procedur).
Wywołanie takie następuje przez podanie zdefiniowanej tu nazwy procedury. Uwaga:
wszystkie używane w algorytmie i procedurach zmienne są zmiennymi globalnymi
(tzn. zmiana wartości zmiennej w algorytmie (procedurze) pociąga automatycznie
zmianę wartości tej zmiennej w procedurze (algorytmie)).
9
Zasady tworzenia schematu blokowego algorytmu w części CHART
Obszar ten podzielony jest na komórki (podobnie do arkusza kalkulacyjnego) – dlatego
wszystkie elementy algorytmu (bloki, łączniki) umieszczane są wewnątrz tych komórek. W
jednej komórce umieszczony może być co najwyżej jeden element (blok, fragment łącznika).
Możliwa jest dostosowanie do potrzeb wielkości czcionki zapisów wewnątrz bloków przy
wykorzystaniu odpowiednich ikon z górnego paska narzędzi (czcionka będzie zawsze taka
sama dla całego algorytmu).
Algorytm tworzony jest przy wykorzystaniu bloków (skrzynek):
* ograniczających - wyznaczających początek i koniec algorytmu; wewnątrz tych
skrzynek umieszcza się napisy np. BEGIN i END;
* wykonawczych – wewnątrz nich umieszcza się instrukcję bądź kilka instrukcji;
najczęściej będą to instrukcje podstawienia (nadania wartości zmiennej) lub
wywołania procedury. Instrukcje oddziela się znakiem” ; ”. Do tworzenia wyrażeń
używać można operatorów podanych wcześniej oraz stosować wywołania funkcji i
procedur charakterystycznych dla modułu VAP;
* warunkowych – wewnątrz tych skrzynek umieszcza się wyrażenie logiczne, którego
wartością będzie PRAWDA lub FAŁSZ. UWAGA: przyjęta jest tu zasada, że gałąź
wychodząca z tego bloku w prawo zawsze odpowiada wyjściu (wartości logicznej)
PRAWDA, zaś gałąź skierowana do dołu – wyjściu FAŁSZ.
* wywołania procedury – wewnątrz umieszcza się nazwę wywoływanej procedury;
* separator strony - skrzynka wyznaczająca podział schematu blokowego na strony w
przypadku jego drukowania.
Wstawianie skrzynek odbywa się poprzez wybranie odpowiedniego typu skrzynki na
pasku narzędzi, wskazaniu (kliknięciem) położenia skrzynki i po wybraniu z menu
podręcznego (prawy przycisk myszy) polecenia Wstaw. Wewnątrz umieszcza się odpowiedni
zapis – można tu wykorzystywać udostępnione przez moduł VAP funkcje i procedury.
Skrzynki łączy się gałęziami – należy wybrać odpowiednią ikonę na pasku narzędzi,
następnie podświetlić (kliknięciem) odpowiednią komórkę początkową i wskazać kliknięciem
prawym klawiszem komórkę końcową (uwaga: zaleca się rysować gałęzie kolejno metodą
„komórka po komórce”).
UWAGA: przyjęta jest w VisSim’ie zasada, że algorytm (od początkowej do końcowej
skrzynki ograniczającej) wykonywany jest na początku KAŻDEJ SEKUNDY SYMULACJI.
Po stworzeniu (i zapisaniu do pliku) algorytmu należy go skompilować poleceniem
Compile/Generale VAP File z menu głównego. Utworzony i zapisany zostanie wówczas plik
tekstowy o takiej samej nazwie z rozszerzenie *.vap zawierający opis zdefiniowanego
algorytmem sterowania w formie zrozumiałej dla programu VisSim.
Ad b) Informacje zapisywane w pliku *.pua
Pliki *.pua są plikami tekstowymi (a więc można je tworzyć i edytować dowolnym
edytorem np. Notatnik). Mają one budowę segmentową, gdzie poszczególne segmenty (bloki)
rozdzielane są nagłówkami. Ilość typów segmentów jest dosyć znaczna – poniżej opisany
będzie plik .pua odpowiedni dla realizowanego na ćwiczeniu przykładu.
Postać tego pliku to:
$SIGNAL_GROUPS---------
$-------
K1 1
W bloku $SIGNAL_GROUPS nadawane
są nazwy grupom sygnalizacyjnym. Np.
grupie sygnalizacyjnej o numerze
10
K2 2
P3 3
P4 4
$STAGES---------
$-------
stage_1 K1,K2
stage_2 K2,P3
stage_3 K1,P4
stage_4 P3,P4
$STARTING_STAGE
$-----
stage_1
$INTERSTAGE1-----------
length :4
from stage :1
to stage
:2
$
K1 -127
0
P3 4 127
$INTERSTAGE2-----------
length :4
from stage :1
to stage
:3
$
K2 -127
0
P4 4 127
$INTERSTAGE3-----------
length :4
from stage :1
to stage
:4
$
K1 -127
0
K2 -127
0
P3 4 127
P4 4 127
$INTERSTAGE4-----------
length :8
from stage :2
to stage
:1
$
K1 6 127
P3 -127
0
$INTERSTAGE5-----------
length :8
from stage :2
to stage
:3
$
K1 6 127
K2 -127
0
P3 -127
0
systemowym (w VisSim’ie) 1 nadana została
nazwa K1.
W bloku $STAGES przyporządkowywane
są grupy sygnałowe do faz. Np. do fazy 1
należą grupy K1 i K2.
W bloku $STARTING_STAGE
określana jest faza początkowa, która będzie
realizowana po rozpoczęciu symulacji.
Bloków $INTERSTAGExx jest tyle, ile
możliwych przejść fazowych w algorytmie
(w przykładzie jest 8). Określają one długość
(length) przejścia fazowego w [s] z fazy
(from stage) i do fazy (to stage).
Zasady zapisu realizacji przejścia ilustrują
rys.6 i rys.7.
11
P4 4 127
$INTERSTAGE6-----------
length :6
from stage :3
to stage
:1
$
K2 6 127
P4 -127
0
$INTERSTAGE7-----------
length :6
from stage :3
to stage
:2
$
K1 -127
0
K2 4 127
P3 4 127
P4 -127
0
$INTERSTAGE8-----------
length :6
from stage :4
to stage
:1
$
K1 6 127
K2 6 127
P3 -127
0
P4 -127
0
$END
12
Rys.6. Następstwo sygnałów – sygnały zielony i czerwony rozdzielane są sygnałami zgodnie z
definicją danej grupy sygnałowej w programie Vissim
Rys.7. Definiowanie przejść międzyfazowych w plikach *.pua