Politechnika Białostocka Wydział Mechaniczny Instrukcja do zajęć projektowych Temat projektu: Modelowanie i badanie układów sterowanych zdarzeniami Zajęcia projektowe z przedmiotu: Sterowanie procesami dyskretnymi Kod: Opracował: Dr inż. Arkadiusz Mystkowski 2011 1/14
ZADANIE PROJEKTOWE NR 1 Projektowanie układu sterowania o skończonej liczbie stanów z wykorzystaniem modułu Stateflow środowiska Matlab/Simulink 1. Wprowadzenie 1.1. Układy sterowane zdarzeniami dyskretnymi Układy sterowane zdarzeniami (ang. event-driven systems) zwane są układami reaktywnymi lub układami o skończonej liczbie przełączanych stanów (ang. finite state machines, FSM). Układ sterowany zdarzeniami jest reprezentowany poprzez skończony zbiór stanów. W układach tych przejście z jednego stanu do drugiego odbywa się w odpowiedzi na występujące zdarzenie i po spełnieniu postawionego warunku. Istnieje wiele przykładów fizycznych urządzeń i systemów wykorzystujących sterowanie zdarzeniami, np: sterowanie grzałką, wentylatorem, pompą, skrzynią biegów, układy sterowania PLC oraz automaty. 1.2. Charakterystyka modułu Stateflow Moduł Stateflow zaimplementowany do pakietu Matlab/Simulink stanowi graficzny interaktywny interfejs do modelowania i symulacji układów sterowanych zdarzeniami. Zazwyczaj symulowany układ sterowany zdarzeniami posiada zmienne określające dane wejściowe i wyjściowe, zbiór zdarzeń i przerwań oraz zdefiniowane warunki opisujące przejście pomiędzy stanami. Przybornik Stateflow dzięki wbudowanemu generatorowi kodu C (ang. Stateflow Coder) można wykorzystać do zbudowania aplikacji sterowania w czasie rzeczywistym. Algorytm sterowania w kodzie C może zostać zaimplementowany w sterowniku rzeczywistym połączonym z obiektem fizycznym. Jest to możliwe dlatego, że moduł Stateflow współpracuje z modułem Real-Time Workshop oraz z zwykłymi blokami bibliotek środowiska Simulink. Projektowanie układu sterowania zdarzeniami często opiera się na wykorzystaniu tablicy prawdy (ang. truth table) definiującej zależności logiczne pomiędzy sygnałami we/wy oraz stanami FSM. W przypadku występowania niewielkiej liczby stanów, modelowanie układu sterowanego zdarzeniami można zrealizować poprzez zdefiniowanie stanów i warunków przejść między nimi. Zastosowanie znajduje tutaj teoria grafów, a graficzna reprezentacja systemu opiera się na diagramie przejść między stanami (ang. sequential-transistion diagram). 2. Przykład sterowania podgrzewaczem wody Zadanie układu sterowania podgrzewaczem wody polega na utrzymaniu stałej temperatury wody w zbiorniku na poziomie 70. Temperatura otoczenia wynosi 18 i jest traktowana jako stała wartość zakłócenia. Transmitancja operatorowa modelu zbiornika z s e grzałką jest następująca: G( s) =. Podgrzewacz jest wyposażony w dwie grzałki 100s + 1 załączane okresowo. Jeżeli temperatura wody spadnie poniżej 40 obie grzałki są załączane w innym przypadku działa tylko jedna. Układ sterowania jest reprezentowany przez trzy stany: żadna grzałka nie pracuje, pracuje jedna grzałka, pracuję dwie grzałki. W takich układach nie jest konieczne dokładne utrzymywanie uchybu regulacji na poziomie zero. Wystarczy jedynie podtrzymywanie temperatury w pewnym zakresie. Dlatego też, regulator dyskretny sterujący podgrzewaniem wody jest uruchamiany okresowo sygnałem np. z okresem 300 sekund. 2/14
W celu realizacji układu sterowania należy zamodelować obiekt w programie Simulink. Następnie należy powiązać sygnały wejściowe i wyjściowe obiektu z projektowanym modelem regulatora dyskretnego, patrz rys. 1. Rys. 1. Model obiektu sterowania Następnie model obiektu należy zgrupować i podłączyć wartość stałą temperatury otoczenia, patrz rys. 2. Rys. 2. Zgrupowany model obiektu W dalszej części zadania należy zaprojektować sygnały sterujące regulatorem podgrzewacza. Z biblioteki Simulink/Sources należy wybrać blok Signal Builder. Sygnał włączający lub wyłączający grzałki o nazwie SWITCH dodajemy poprzez zakładkę Signal/New/Square. Parametry sygnału SWITCH to: częstotliwość 1/300 Hz, amplituda 1, offset 0, wypełnienie okresu 50%, długość sygnału: 600 sekund. Sygnał SWITCH powinien zaczynać się od wartości zero, można to zmienić poprzez przeciągnięcie myszką. W podobny sposób dodajemy sygnał taktujący przełączanie pomiędzy stanami regulatora o nazwie CLOCK. Parametry sygnału CLOCK to: częstotliwość 1 Hz, amplituda 2, offset 0 i wypełnienie okresu 50%. Ograniczenia sygnału CLOCK (prawy klawisz myszy) y: od 0 do 2, x: od -inf do inf. Po zbudowaniu sygnałów okno bloku Signal Builder przedstawiono na rys. 3. 3/14
Rys. 3. Sygnały referencyjne Realizacja opisu zadania dotyczy wersji Stateflow nr 7.1, R2008a. W celu uruchomienia Stateflow należy otworzyć bibliotekę modułu Stateflow z linii komend Matlab poleceniem >>stateflow. Następnie należy metodą drag and drop przekopiować diagram chart do wcześniej utworzonego okna z modelem obiektu. Po wykonaniu opisanych działań, model układu sterowania wygląda tak jak na rys. 4. Rys. 4. Układ sterowania zdarzeniami Okno wywołanego diagramu chart będącego graficznym edytorem Stateflow przedstawiono na rys. 5. 4/14
Rys. 5. Okno interfejsu graficznego Stateflow Do zrealizowania włączenia/wyłączenia podgrzewacza potrzebujemy dwóch stanów. Za pomocą przycisku state wybieramy dwukrotnie stany i nadajemy im nazwy: PowerOn i PowerOff, patrz rys. 6. Następnie za pomocą myszki tworzymy dwa połączenia między tymi stanami o nazwie SWITCH. Stan PowerOn definuje pracę dwóch grzałek, dlatego kopiujemy dodatkowe dwa stany o nazwach np. Heater1 i Heater2, które mogą być uruchamiane jednocześnie (równolegle) i będą reprezentować poszczególne grzałki. W tym celu w obszarze diagramu PowerOn klikamy prawym klawiszem myszy i wybieramy opcję Decomposition/Parallel (AND). Ramki oznaczone liną przerywaną mogą być jednocześnie aktywne (Parallel, AND). Ramki ciągłe oznaczają stany wzajemnie wykluczające się (Exclusive OR), patrz rys. 7. Rys. 6. Stany w polu edycji 5/14
Rys. 7. Stany AND i OR Dalej kolejno należy stany Heater1 i Heater2 rozbudować o dwa następne stany o nazwach On i Off. Przejścia pomiędzy stanami wykonujemy myszką, definiując przy tym warunki, np: dla Heater1: On Off when [temp>70], Off On when [temp<=70] oraz dla Heater2: On Off when [temp>40], Off On when [temp<=40], patrz rys. 8. Zmienna temp jest definiowana jako sygnał wejściowy. W tym celu wybieramy zakładkę Add/Data/Input from Simulink, patrz rys. 9. Rys. 8. Przejścia między stanami On i Off 6/14
Rys. 9. Definicja zmiennej wejściowej W obrębie stanu PowerOn pozostaje dodanie trzeciego stanu o nazwie np. HeatersOn definiującego stan kiedy obie grzałki będą włączone. Zapis definicji stanu HeatersOn jest następujący: during: heaters_on=in(heater1.on)+in(heater2.on);. Zapis definicji stanu PowerOff, kiedy obie grzałki są wyłączone jest następujący: entry: heaters_on=0;. Zmienna heaters_on jest sygnałem wyjściowym, definiowanym zgodnie z rys. 10. Następnie należy zdefiniować zdarzenia SWITCH i CLOCK. W tym celu korzystając z zakładki Add/Event/Input from Simulink definiujemy zdarzenia według rys. 11 i 12. Rys. 10. Definicja zmiennej wyjściowej 7/14
Rys. 11. Zdarzenie SWITCH Rys. 12. Zdarzenie CLOCK Po wykonaniu opisanych czynność okno Stateflow przedstawiono na rys. 13. Rys. 13. Okno Stateflow 8/14
Uruchomienie zbudowanego diagramu Stateflow z zakładki Simulation/Start, powoduje generowanie błędu o komunikacie: Chart #1104 has no unconditional default path to a state. This may lead to a state inconsistency error during runtime. Co jest związane z brakiem definicji pozostania w stanie wyłączenia. W tym celu wszystkie stany Off zaopatrujemy przejściem domyślnym. Finalne okno Stateflow pokazano na rys. 14. Rys. 14. Ostateczne okno Stateflow Dostęp do zdefiniowanych sygnałów oraz zdarzeń jest możliwy poprzez eksploratora edytora Stateflow, wybór zakładki Tools/Explore, patrz rys. 15. Rys. 15. Okno eksploatora Stateflow Widok finalnego układu sterowania zdarzeniami przedstawiono na rys. 16. 9/14
Rys. 16. Układ sterowania zdarzeniami W celu przeprowadzenia symulacji należy ustawić opcje symulacji w oknie układu Simulink: Simulation/Configuration Parameters: Stop time=600, stałokrokowa metoda całkowania: Solver option type: Fixed-step, Solver: ode4 (Runge-Kutta), Fixed-step size: 0.1. Przebieg zmian temperatury w zbiorniku (temperature plot) przedstawiono na rys. 17. Rys. 17. Przebieg wielkości regulowanej Wizualizacja i analiza procesów przełączania stanów w Stateflow jest łatwiejsza z zadanym opóźnieniem. W tym celu w zakładce Tools/Debug ustawiamy opóźnienie na np. 1 sec, patrz rys. 18. Rys. 18. Okno Stateflow debugging 10/14
Uruchamiamy diagram Stateflow z zakładki Simulation/Start lub przyciskiem Run, patrz rys. 19. Rys. 19. Przełączanie stanów w uruchomionym oknie Stateflow Polecenia do wykonania - analiza i powtórzenie przykładu z punktu 2, - wykonanie sterowania zdarzeniami wybranym obiektem z opóźnieniem typu np. żelazko, wentylator, klimatyzator, pompa, silnik krokowy, itp. (każda grupa indywidualnie), - sporządzenie sprawozdania z wykonanych zadań z analizą wyników. 11/14
ZADANIE PROJEKTOWE NR 2 Projektowanie układu sterowania typu: Bang-Bang w środowisku Stateflow/Simulink Polecenia do wykonania - wykonanie układu sterowania zdarzeniami (regulator Bang-Bang) dla wybranego obiektu, np. zawieszenie magnetyczne, kulka na pochylni, silnik liniowy, silnik krokowy, itd., - sporządzenie sprawozdania z wykonanego zadania z analizą i syntezą otrzymanych wyników. Model obiektu sterowania 1 Metalowa kulka o masie m została zawieszona w polu magnetycznym generowanym przez aktywny elektromagnes (rys. 1). Jest to obiekt strukturalnie niestabilny o bardzo małej stałej czasowej rzędu 0.0001 sec. Sygnałem wejściowym jest napięcie zasilające cewkę elektromagnetyczną u, natomiast sygnałem wyjściowym (obserwowanym) jest przemieszczenie kulki x. W celu uproszczenia modelu obiektu pominięto efekt strat elektrycznych (prądy wirowe), straty cieplne, itd. Rys. 1. Kulka w polu magnetycznym Model siłownika magnetycznego składa się z części mechanicznej i elektrycznej. Równanie ruchu kulki jest następujące: mx ɺɺ = kxx + kii + Fz, (1) gdzie: masa kulki: m=6 [kg], przemieszczenie masy z położenia równowagi: x [m], sztywność przemieszczeniowa: k x =400593 [N/m], sztywność prądowa: k i =50 [N/A], prąd elektryczny cewki: i [A], siła zewnętrzna (zakłócenie): F z [N]. Równanie dynamiki obwodu elektrycznego siłownika elektromagnetycznego jest następujące: di u R k = i i x ɺ, (2) dt L0 L0 L0 gdzie: napięcie elektryczne cewki: u [V], indukcyjność nominalna cewki: L 0 =0.006 [H], rezystancja cewki: R=0.5 [Ω]. 12/14
Model obiektu sterowania 2 Metalowa kulka została zamieszczona na pochylni, której kąt jest sterowany poprzez ramię korbowe serwo-silnika (patrz rys. 2). Zmiana kąta serwa θ (sygnał wejściowy) powoduje zmianę kąta pochylenia bieżni α. Jeżeli pochylenie bieżni zmieni się od pozycji poziomej, siła grawitacyjna spowoduje przemieszczanie się kulki po bieżni ruchem obrotowym. Zmiana przemieszczenia liniowego kulki r jest sygnałem wyjściowym obiektu (obserwowanym). W celu uproszczenia modelu obiektu pominięto poślizg oraz tarcie pomiędzy kulką a bieżnią. Rys. 2. Kulka na pochylni Wychodząc z równań Lagrange a, równanie równowagi kulki na bieżni możemy zapisać następująco: J 2 + m r + mg sin α mr( α) = 0 2 ɺɺ ɺ, (3) R gdzie: moment inercji kulki: J=9.99e-6 [kgm 2 ], promień kulki: R=0.015 [m], masa kulki: m=0.11 [kg], przyspieszenie grawitacyjne: g=9.8 [m/s 2 ], kąt pochylenia wahadła: α, przemieszczenie kulki: r [m]. Równanie (3) zostało zlinearyzowane w otoczeniu punktu pracy dla α=0 następująco: J + m r + mgα = 0 2 ɺɺ. (4) R Równanie wiążące kąt pochylenia wahadła z kątem obrotu serwa jest opisane liniową i przybliżoną zależnością: d α = θ, (5) L gdzie: promień przekładni serwa d=0.03 [m], długość wahadła L=1 [m], kąt obrotu serwa θ. 13/14
ZADANIE PROJEKTOWE NR 3 Modelowanie układu sekwencyjnego w postaci automatu skończonego typu Mealy ego i Moore a z wykorzystaniem modułu Stateflow Polecenia do wykonania - wykonanie modelu i symulacji układu zdarzeń sekwencyjnych w oparciu o automaty Mealy ego i Moore a w Stateflow, każda grupa pracuje nad indywidualnym zadaniem, - sporządzenie sprawozdania z wykonanego zadania z analizą i opisem działania automatu. Przykład 1. Należy zbudować synchroniczny układ sekwencyjny modelujący wybrane tabele stanów: a) dla automatu Mealy ego: tablica wejść i wyjść x X 1 X 2 x X 1 X 2 S S S 1 S 1 S 1 Y 1 Y 2 S 3 Y 3 Y 1 S 3 S 1 S 3 Y 2 Y 3 b) dla automatu Moore a X 2 x X 1 X 2 Y S S 1/Y 2 X 1 X 2 S 1 S 1 Y 2 S 3 Y 1 /Y 1 S 3 S 1 Y 3 X 2 X 1 X 1 S 3/Y 3 Przykład 2. Należy zbudować układ wykrywający podaną sekwencję np. 011 w dowolnym miejscu grafu. Układ zatrzymywany jest sekwencją 100. Graf detekcji sekwencji 00110: 14/14