Zad. 1.
Zaprojektuj układ regulacji poziomu cieczy w zbiorniku przedstawionym na poniższym rysunku. Zastosuj
regulator typu PID. Nominalny poziom cieczy w zbiorniku wynosi 10 m.
Specyfikacja
A = 5 m2
qwe
A
h =ð 10 m
qwe =ð qwy =ð 108 m3/h =ð 0.03 m3/s
h
qwe 0.03
s =ð =ð =ð 0.00214m2
s
2 ×ð9.81×ð10
2gh
qwy
Sygnał sterujący generowany przez regulator [zakres <0,1>] odpowiada liniowo przepływowi qwe [zakres <0, 1>
m3/s]. Instalacja jest wyposażona w ciągły sygnał (y) pomiaru wysokości cieczy w zbiorniku [zakres <0,10> V ]
odpowiadający liniowo wysokości cieczy (h) [zakres <0, 20> m]. Zawór wyjściowy może być sterowany w
trybie ręcznym za pomocą sygnału s [zakres <0,1>] odpowiadającemu liniowo polu przekroju otwarcia zaworu
w zakresie <0,1> m2. Projektowany regulator nie ma wpływu na stopień otwarcia zaworu wyjściowego. Układ
pomiarowo-sterujący pracuje z cyklem 1 s. Eksperymenty dla obiektu mogą być przeprowadzone za pomocą
poniższego bloku Simulink (zbiornik całkowicie opróżniony).
qwe
y
s
Obiekt
Wyznaczenia parametrów modelu transmitancyjnego należy dokonać za pomocą 2 punktów pomiarowych.
Należy zastosować typowy regulator stosowany dla uzyskanego modelu obiektu (wykład).
Na prośbę egzaminującego należy przedstawić następujące wyniki prac:
- projekt Simulink umożliwiający przeprowadzenie eksperymentu identyfikacyjnego w punkcie pracy 10%
zmiana sterowania w stosunku do stanu nominalnego
- wykres dla przetworzonych danych pomiarowych wykorzystywanych do bezpośredniej identyfikacji modelu
transmitancyjnego Matlab
- wzór ogólny dla przyjętego modelu transmitancyjnego oraz uzyskane wartości liczbowe jego parametrów
- wykres obrazujący porównanie wyników odpowiedzi obiektu i przyjętego modelu
- typ i wzór przyjętego regulatora
- wartości nastaw regulatora wyznaczone z metody tabelarycznej oraz przeliczone wartości nastaw dla bloku
regulatora stosowanego w Simulink
- projekt Simulink umożliwiający przeprowadzenie eksperymentu skoku wartości zadanej dla modelu obiektu
- projekt Simulink umożliwiający przeprowadzenie eksperymentu skoku wartości zadanej dla obiektu w
punkcie pracy - zwiększenie wartości zadanej o 10% w stosunku do wartości nominalnej
- projekt Simulink umożliwiający przeprowadzenie eksperymentu wprowadzenia zakłócenia skokowego w
układzie dla punktu pracy za pomocą otwarcia zaworu wyjściowego w zakresie o 20% większym niż w
stanie nominalnym
- fragmenty programów Matlab realizujące poszczególne punkty zadania: przetwarzanie danych, identyfikacja
parametrów modelu obiektu, symulacje, wykresy, wyliczenie nastaw regulatorów
Otwieramy plik Zad4.mdl
Zapisujemy plik mat jak i mdl pod swojÄ… nazwÄ…
Tworzymy schemat do identyfikacji-wpisujemy w matlabie polecenie simulink
Ustawienia Scope:
Scope parameters Liczba wejść; 2 wyłączenie limitu czasu i zapis danych do
określonej zmiennej ScopeData
Ustawienie Gain:
W zadaniu jest napisane: Sygnał sterujący generowany przez regulator [zakres <0,1>] odpowiada liniowo
przepływowi qwe [zakres <0, 1> m3/s]. Instalacja jest wyposażona w ciągły sygnał (y) pomiaru wysokości
cieczy w zbiorniku [zakres <0,10> V ] odpowiadający liniowo wysokości cieczy (h) [zakres <0, 20> m].
Oznacza to że wyjście nie może być podpięte bezpośrednio tak jak wejście lecz trzeba sygnał wymnożyć przez
2, więc do gain wpisujemy 2
Ustawienie constant:
Do bloku constant wpisujemy wartość stałej
qwe 0.03
s =ð =ð =ð 0.00214m2
2 ×ð9.81×ð10
2gh
Ustawienie Step:
Pierwszym krokiem jest zidentyfikowanie obiektu (jaka będzie odpowiedz skokowa) i sprawdzenie przy
maksymalnym przepływie czasu po którym zbiornik się napełni.
W wierszu final value wpisujemy 0.03, ponieważ mamy dane w
zadaniu:
Teraz możemy przeprowadzić symulację
Po symulacji od razu wciskamy Autoscale ozn. lornetkÄ…
Po powiększeniu wykresu widać, że dolny przebieg
(wyjście) stabilizuje się przy wartości ok. 2.5*10^4. I
napełnił się do nominalnej wartości h=10m.
Ponad to pierwszą rzeczą którą powinniśmy zrobić
to identyfikacja czyli określenie jaki jest to rodzaj
odpowiedzi skokowej. Z wykresu widać, że jest to
inercja z opóznieniem (rodzaje odpowiedzi
skokowych znajdują się w wykładzie 9). Wiedza ta
przyda nam się pózniej przy aproksymacji przebiegu
i liczeniu transmitancji.
Kolejny punkt zadania to projekt Simulink umożliwiający przeprowadzenie eksperymentu identyfikacyjnego w
punkcie pracy 10% zmiana sterowania w stosunku do stanu nominalnego
Sterowanie zmieniamy po czasie po którym przebieg się już ustabilizuje czyli u nas jest to 2.5*10^4. Wartość
nominalna przepływu to 0.03 a o 10% więcej to 0.033
Więc zmieniamy ustawienia w bloku Step i włączamy symulacje
Powinien nam się pokazać przebieg z ustalonym przez nas skokiem
o czasie 2.5*10^4 z opóznieniem:
Teraz wprowadzamy dwie komendy do matlaba:
ScopeData
ScopeData.signals
Następnie otwieramy w matlabie file->new->blank M-file
Pojawi nam się editor, zapisujemy go. Teraz wszystkie komendy będziemy wprowadzać do niego
te=ScopeData.time;
ue=ScopeData.signals(1).values;
he=ScopeData.signals(2).values;
subplot(211)
plot(te,ue);grid
subplot(212)
plot(te,he);grid
Po tej komendzie klikamy F5 I klikamy Add to Path
Powinno się nam pojawić okno z wykresami
Piszemy dalej:
n=max(find(te<=2.5*10^4)); -wartość czasu jest zmienna, zależy
t=te(n:end)-te(n); jak odczytamy z wykresu
u=ue(n:end)-ue(n-1);
h=he(n:end)-he(n);
plot(t,h);grid
Po tej komendzie enter i zaznaczamy cztery wiersze i dajemy comment
tak żeby pojawiły się procenty po lewej %
Piszemy dalej:
hu=h(end);
U=u(end);
k=hu/U -klikamy F5 i w oknie matlaba powinno pojawić się obliczone k
Piszemy dalej:
n10=max(find(h<=0.1*hu));
h10=h(n10);
t10=t(n10);
n90=max(find(h<=0.9*hu));
h90=h(n90);
t90=t(n90);
T=(t90-t10)/2.2
tau=t10-0.1*T - klikamy F5 i w oknie matlaba powinno pojawić się obliczone T i tau
Wzory na T i tau odczytujemy z materiałów pomocniczych dla inercji z opóznieniem
Piszemy dalej: aproksymacja i transmitancja (jakoÅ› tak Jð)
[Lp Mp]=pade(tau,12);
L=k*Lp;
M=[T 1];
M1=conv(M,Mp);
hm=lsim(L,M1,u,t);
plot(t,h,t,hm);grid -klikamy F5 i w oknie Figure1 przebiegi
na wyjściu powinny nam sie nałożyć na siebie
Piszemy dalej:
kp=0.34*T/(k*tau) -odczytujemy z tabeli
Ti=T -odczytujemy z tabeli
Tr=7.2*tau -odczytujemy z tabeli bÄ…dz dany w zadaniu
P=kp
I=kp/Ti -klikamy F5 i wynik w matlabie
W oknie modelu tworzymy nowy model (drugi) file->new->model
Wprowadzamy dane do bloczków wg wyników z matlaba.
W sumatorze ustawiamy dolny + na -
Schemat po wprowadzeniu parametrów:
Zwiększamy także czas
symulacji z 10.0 na np.
5*10^4 aby cały przebieg
był widoczny.
Puszczamy symulacje i powinno wyjść:
Teraz wyrzucamy z drugiego modelu bloki transfer FCN i transport delay i kopiujemy do niego nasz
obiekt, gain i constant z pierwszego modelu.
Symulujemy i powinno wyjść:
Następnie podmieniamy blok constant na blok step1 żeby sprawdzić jak, już nasz gotowy układ, reaguje na
wprowadzenie zakłócenia
Wprowadzamy do bloku step1 parametry naszego zakłócenia
3*10^4 jest to czas w jakim wprowadzamy zakłócenie. Może
być inny, byle już po ustabilizowaniu przebiegu
0.00214 nominalny stan otwarcia zaworu
0.0025- otwarcie zaworu o ok 20% (powiedziane w zadaniu)
większe od nominalnego w czasie 3*10^4 potrzebne do
sprawdzenia czy przebieg siÄ™ ustabilizuje czyli poziom wody ustali
na h=10m
Wynik symulacji:
Jak widać poziom wody ustalił się powtórnie od nalewania (po zakłóceniu) na określonym na wejściu poziomie
10m
Pełny kod
Z opuznieniem
ScopeData
ScopeData.signals
te=ScopeData.time;
ue=ScopeData.signals(1).values;
he=ScopeData.signals(2).values;
% subplot(211)
% plot(te,ue);grid
% subplot(212)
% plot(te,he);grid F5
n=max(find(te<=2*10^4));
t=te(n:end)-te(n);
u=ue(n:end)-ue(n-1);
h=he(n:end)-he(n);
plot(t,h);grid -procenty
hu=h(end);
U=u(end);
k=hu/U F5
n10=max(find(h<=0.1*hu));
h10=h(n10);
t10=t(n10);
n90=max(find(h<=0.9*hu));
h90=h(n90);
t90=t(n90);
T=(t90-t10)/2.2
tau=t10-0.1*T F5
[Lp Mp]=pade(tau,12);
L=k*Lp;
M=[T 1];
M1=conv(M,Mp);
hm=lsim(L,M1,u,t);
plot(t,h,t,hm);grid F5
kp=0.34*T/(k*tau)
Ti=T
Tr=7.2*tau
P=kp
I=kp/Ti F5
Bez opóznienia
. przepisujemy poczÄ…tek
.
.
.
.
.
T=(t90-t10)/2.2 -odczytujemy z tabeli
tau=t10-0.1*T F5 -wyrzucamy cały wiersz
[Lp Mp]=pade(tau,12); -wyrzucamy cały wiersz
L=k*Lp; -wyrzucamy Lp
M=[T 1];
M1=conv(M,Mp); -wyrzucamy cały wiersz
hm=lsim(L,M1,u,t); -zamiast M1 samo M
plot(t,h,t,hm);grid F5
kp=0.34*T/(k*tau) -odczytujemy z tabelki
Ti=T
Tr=7.2*tau F5 -dany bÄ…dz z tabeli
P=kp
I=kp/Ti F5
W przypadku PID należy podać wzór na D i z tabeli odczytać Td
Gdy nie ma opóznienia to nie wstawiamy bloku transport delay
Wyszukiwarka
Podobne podstrony:
automatyka zadania cw 1 cz 1Przykładowe zadania egzaminacyjne 2zadania egzaminacyyjneautomatyka zadania cw 3zadania egzaminacyjne listopadzadanie egzaminacyjnearchiwum państwowe zadanie egzaminacyjnezadania egzaminMatematyka zadania egzaminacyjne Zestaw4 2002Zadania egzamin 0Aarchiwum państwowe zadanie egzaminacyjne 2009 zimaCw 3 MS pytania zadania?ne egzamin 09 przykladwięcej podobnych podstron