AUTOMATIZACIJA Laboratorijske vježbe MatLab/Simulink (Octave, Scilab) 1. Uvod u MatLab (Octave, Scilab) 2. Matematičko modeliranje komponenti sustava 3. Matlab (Octave, Scilab) u analizi automatskih sustava pomoću prijenosne funkcije 4. Modeliranje i simulacija sustava pomoću Simulink-a (Scilab/Xcos) 5. Vremenski odzivi sustava za različite koeficijente prigušenja (Po, P1, P2) 6. Utjecaj parametara PID regulatora i vremenskog kašnjenja na odziv i amplitudno fazno frekvencijsku karakteristiku sustava (P, PI, PID). 7. Kolokvij ODREĐIVANJE POLOVA, NULA SUSTAVA: NAREDBE : PZMAP, RESIDUE PZMAP (G) služi za računanje i crtanje polova i nula prijenosne funkcije u kompleksnoj ravnini [P,Z]=pzmap(G) računanje polova i nula prijenosne funkcije, P: matrica polova a Z: matrica nula pzmap(g) crtanje polova i nula prijenosne funkcije, pole (G) računanje polova prijenosne funkcije zero (G) računanje nula prijenosne funkcije Izračunaj i nacrtaj polove i nule prijenosne funkcije koristeći naredbu pzmap : PZMAP Izračunaj i nacrtaj polove i nule prijenosne funkcije : (s 2 +s+1)/(s 3-5s 2 +8s-4) br=[1 1 1]; naz=[1-5 8-4]; G=tf(br,naz) [P,Z]=pzmap(G) % računanje pzmap(g) (s 2 +s+1) (s 3-5s 2 +8s-4) Residue rastavljanje na parcijalne razlomke Kvocijent dvaju polinoma može se rastaviti na parcijalne razlomke gdje je M broj polova (duljina R, P i E), k vektor je polinom reda N-1 koji predstavlja izravni doprinos, a e vektor određuje mnoštvo m-t ostatka pola. [br, naz] = residue (r, p, k, e) ODREĐIVANJE VREMENSKOG ODZIVA SUSTAVA NAREDBE: STEP, IMPULSE, LSIM STEP računanje i crtanje vremenskog odziva na step pobudu IMPULSE računanje i crtanje vremenskog odziva sustava na Dirac-ov impuls, y=step(g) računanje odziva sustava, y(t), pri čemu je t vremenski vektor za kojega računamo odziv; opcijski argument (ako nije zadan, Matlab ga automatski određuje) y: izračunati odziv sustava step(g, t) crtanje y=impulse(g, t) računanje odziva sustava, y(t), impulse(g, t) crtanje vremenskog odziva LSIM (G) računanje i crtanje vremenskog odziva sustava na proizvoljno zadanu ulaznu funkciju y=lsim(g,u,t); računanje lsim(g,u,t) crtanje P2rez.m 1
Primjeri Izračunati i nacrtati vremenski odziv zadane prijenosne funkcije G(s) =1/(s 2 +s+1) na jediničnu skokovitu, impulsnu i proizvoljno zadanu ulaznu funkciju u=5t u vremenskom intervalu od 0 do 3 sekunde sa korakom 0,01. OCTAVE br=[1]; naz=[1 1 1]; G=tf(br,naz) Ys=step(G); step(g,2); step(g,12) MatLab br=[1]; naz=[1 1 1]; step(br,naz); Promjena trajanja odziva % crtanje odziva OCTAVE ( tko želi više ) T1 = 0.4; % vremenska konstanta P = tf([1], [T1 1]); % kreiranje modela transfer funkcije step(p, 2) % plot step odziv (trajanje 2 s) % dodaci markera za tangente koje presijecaju linije lim(n->inf) f(t) pri t=t1 hold on plot ([0 T1], [0 1], "g") plot ([T1 T1], [0 1], "k") plot ([0 T1], [1-1/e 1-1/e], "m") hold off Primjeri Izračunati i nacrtati vremenski odziv zadane prijenosne funkcije G(s) =1/(s 2 +s+1) na jediničnu skokovitu, impulsnu i proizvoljno zadanu ulaznu funkciju u=5t u vremenskom intervalu od 0 do 3 sekunde sa korakom 0,01. br=[1]; naz=[1 1 1]; G=tf(br,naz) ys=step(g); step(g) figure % crtanje odziva yi=impulse(g); impulse(g) t=0:0.01:3; u=5*t; % crtanje odziva y=lsim(g,u,t); % računanje odziva plot(t,u,t,y) % crtanje pobude i odziva Ili lsim(g,u,t) % crtanje y(t) p2odzivstep2 Potrebno je izračunati i nacrtati vremenski odziv sustava y(t) na proizvoljno zadanu ulaznu funkciju: u=5t 2 u vremenskom intervalu od 0 do 3 sekunde sa korakom 0,01 za prijenosnu funkciju G(s)= 25/(s 2 + 5s+25). br=[25]; naz=[1 5 25]; G=tf(br,naz); t=0:0.01:3; u=5*t.^2; y=lsim(g,u,t); plot(t,u,t,y) Ili >>lsim(g,u,t) % definiranje vremenskog vektora % definiranje ulazne funkcije % računanje odziva % crtanje pobude i odziva % samo crtanje u(t) i y(t) OCTAVE(P2_odzivslf) Analiza - vremenski kontinuirani sustavi koje opisujemo pomoću diferencijalnih jednadžbi sa stalnim koeficijentima br = [0 0 1]; % definiramo koeficijente brojnika naz= [1 2 3]; % definiramo koeficijente nazivnika G = tf(br, naz) % definiramo sustav Transfer funkcija: 1 /( s^2 + 2 s + 3) impulse(g); % crtamo impulsni odziv mirnog sustava step(g); % crtamo odziv na jedinični skok pzmap(g); % crtamo položaj polova i nula t = 0:0.001:10; u = t > 0.5; % definiramo pobudu kao skok u 0.5 y = lsim(g, u, t); % računamo odziv mirnog sustava na pobudu plot(t, y); % crtamo odziv Zadatak Za zadanu prijenosnu funkciju 1 /( s 2 + 2 s + 3) nacrtati a) odziv na impulsnu pobudu b) odziv na jediničnu odskočnu funkciju c) polove i nule funkcije d) odziv na funkciju prema slici ako je zadano t od 0 do 10 sa korakom 0,001. e) Sve prethodno nacrtati u jednom prozoru pomoću naredbi subplot 2
ZADATAK (samostalni) Zadan je mehanički sustav s oprugom prikazan na slici. Odrediti i nacrtati pomak mase M ako na nju djelujemo: a) konstantnom silom od 5N b) silom oblika f(t)=3sin(t) Zadano je: M=10 kg; k=1 N/m; b=0,5 Ns/m (t je od 1 do 200 sa korakom 0,1) Prijenosnu funkciju odredit ćemo kao omjer pomaka i narinute sile: Mx (t) = f(t) kx(t) bx'(t) s 2 MX(s)=F(s)-kX(s)-bs(s) X(s)[ s 2 MX(s)+bs+k]=F(s) tj. Za određivanje odziva sustava (pomaka x(t) ) koristit ćemo naredbu lsim(): x=lsim(g,u,t) % za OCTAVE; x=lsim(br,naz,u,t) % za Matlab; pri čemu su : u=f(t) narinuta sila, a x=x(t) pomak mase P2_zad2.m Prijenosna funkcija (transfer function) povezuje ulaz i izlaz sustava predstavljajući dinamičko ponašanje Ocjena kvalitete ponašanja u vremenskoj domeni za ocjenu točnosti sustava u stacionarnom ili prijelaznom procesu, koriste se standardne pobudne (ulazne) funkcije, tako da se na osnovi odziva sustava mogu dobiti poznati pokazatelji točnosti (nadvišenje, vrijeme smirivanja, frekvencija oscilacija i sl.). T r - vrijeme porasta (eng. RiseTtime ) vrijeme od 10% na 90% vrijednosti ustaljenog stanja ukoliko je na ulazu dovedena jedinična odskočna pobuda. T x - vrijeme smirivanja na x % vrijednost (eng. x% Settling Time) vrijeme za koje odziv sustava uđe u ±x % konačne vrijednosti odziva. T p - period prigušenih oscilacija i s njim povezana frekvencija prigušenih oscilacija f p = 1/ T p i kružna frekvencija prigušenih oscilacija ω P = 2π f p T m - vrijeme prvog, maksimalnog prebačaja u odzivu sustava (eng. Peak Time) i M iznos prvog, maksimalnog prebačaja (eng. Maximal Overshoot) koji se često definira i u postocima konačne vrijednosti odziva i naziva maksimalni postotni prebačaj (eng. Maximal Percent Overshoot). Razlomljenu racionalnu prijenosnu funkciju G(s) prikladno je faktorizirati (npr. u analizi stabilnosti sustava) gdje su: S Ni nule od G(s) S pj polovi od G(s) Octave -Matlab Za prijenosnu funkciju potrebno je odrediti: a)raspored nula i polova pomoću faktoriziranja funkcije, [z, p, k] = tf2zp (brojnik,nazivnik) b)bodeov dijagram c)nyquistov dijagram S Ni i S pj mogu biti: realni i konjugirano-kompleksni O položaju polova i nula prijenosne funkcije (matrice) u kompleksnoj s-ravnini ovisi vladanje sustava. 3
Octave-Matlab Za prijenosnu funkciju potrebno je odrediti: a)raspored nula i polova b)bodeov dijagram c)nyquistov dijagram b)bodeov dijagram. bode(w) Octave -Matlab c) Nyquistov dijagram dobiva se naredbom: nyquist(w) Raspored nula i polova brojnik = [.3 1]; p1 = [1 1]; p2 = [1.5]; nazivnik = conv(p1, p2); W = tf (brojnik, nazivnik); pzmap(w) MatLab zpk(w) Zero/pole/gain: kreiranje funkcije prijenosa iz nula polova i pojačanja 0.3 (s+3.333) ------------------ (s+1) (s+0.5) [z, p, k] = tf2zp (brojnik,nazivnik) Zadatatak (samostalni) Za prijenosnu funkciju izračunati nule, polove i pojačanje te nacrtaj zero-pole mapu. Prijenosna funkcija Octave p3_zad_zpk.m G= tf( [1 5 6], [1 2 2 0] ); pzmap(g) [z,p,k] =tf2zp(g) pzmap(g) br = [1 5 6] naz = [1 2 2 0] G= tf( br, naz ) pzmap(g) zpk(g) Grafičko prikazivanje frekvencijskih karakteristika. Najčešće korišteni grafički prikazi su: Nyquist-ov dijagram Bode-ovi dijagrami, Nichols-ov dijagram. Metode za promatranje frekvencijskog odziva sustava baziraju se na promatranju odziva u ustaljenom stanju na sinusnu pobudu. Ako na ulaz sustava s prijenosnom funkcijom W(s) dovedemo sinusnu pobudu oblika x(t)=asin(ωt), izlaz u ustaljenom stanju imat će oblik: y(t)=amsin(ωt + φ). Pri čemu su M(ω) i φ(ω) amplituda i faza prijenosne funkcije W(s), s=jω Nyquist-ov dijagram - je polarni dijagram prijenosne funkcije W(jω) za frekvencijski opseg - <ω<+. - polarni dijagram predstavlja prikaz prijenosne funkcije sustava W(jω) u kompleksnoj ravnini. - PF otvorene petlje - PF zatvorene petlje Sustav sa zatvorenom povratnom vezom W(s) je stabilan samo onda ako Nyquistov dijagram prijenosne funkcije otvorene petlje W 0 (s) obilazi točku 1+0j u smjeru obrnutom kazaljci na satu onoliko puta koliko funkcija otvorene petlje W 0 (s) ima polova s pozitivnim realnim dijelom (tj. u desnoj poluravnini). 4
Broj polova u desnoj poluravnini, P Broj obilazaka dijagrama oko točke 1+0j = N (predznak od N '+ obilazak u smjeru kazaljke na satu; predznak od N '-' za obilaske suprotno smjeru kns) Da bi sustav bio stabilan, treba biti zadovoljeno: P = -N OCTAVE, MATLAB NAREDBE Kriterij stabilnosti ili kritična točka stabilnosti je : W0(jω)= -1 odnosno (-1, j0) Nyquistov kriterij stabilnosti Wo=tf(br,naz) nyquist(wo) % Crta Nyquistov dijagram nyquist(wo, w) % crta Nyquistov dijagram za zadane frekvencije [Re, Im, W]=nyquist(Wo) % Vraća vektore re. i imag. dijela nyquist (br,naz) % Crta Nyquistov dijagram nyquist (br,naz,w) % u ovisnosti o frekvenciji w [Re,Im,w] = nyquist (br,naz) % Vraća vektore re. i imag. dijela Z1. Za sustav s negativnom jediničnom povratnom vezom zadana je prijenosna funkcija otvorene petlje: Rješenje: a)nacrtati Nyquist-ov dijagram te zaključiti o stabilnosti sustava. b)odrediti prijenosnu funkciju zatvorene petlje (W(s)=Y(s)/X(s)) te naći vremenski odziv sustava na jediničnu pobudu. Polarni dijagram se crta za 0 w +. Zato uvijek treba uzeti ω = 0 i ω =, one ω za koje je Re = 0 i Im = 0, te još poneku točku između. Wo=tf(br,naz) nyquist(wo) % Crta Nyquistov dijagram nyquist(wo,w) % crta Nyquistov dijagram za zadane frekvencije [Re, Im, W]=nyquist(Wo) % Vraća vektore re. i imag. dijela Slika prikazuje skicirani polarni dijagram (puna crvena linija) i nadopunu do Nyquistovog dijagrama (isprekidana plava linija). Z1. Za sustav s negativnom jediničnom povratnom vezom zadana je prijenosna funkcija otvorene petlje: a) Nacrtati Nyquist-ov dijagram te zaključiti o stabilnosti sustava. b) Odrediti prijenosnu funkciju zatvorene petlje (W(s)=Y(s)/X(s)) te naći vremenski odziv sustava na jediničnu pobudu. Wo(s)=5/(s 2 +5s) z1.m br=[5]; naz=[1 5 0]; Wo=tf(br,naz) nyquist(wo) [Re, Im, W]=nyquist(Wo, 1) br_wo=[5]; naz_wo=[1 5 0]; nyquist(br_wo, naz_wo) [Re, Im]=nyquist(br_Wo, naz_wo, 1) Re = -0.1923 Im = -0.9615 Sustav je asimptotski stabilan samo onda kada svi korijeni karakteristične jednadžbe sadrže negativne realne korijene. >> [Re, Im]=nyquist(Wo, 5) Re = -0.1000 Im = -0.1000 >> [Re, Im]=nyquist(Wo, inf) Re = -0 Im = 0 >> [Re, Im]=nyquist(Wo, 0) Warning: 5
Zadatak (samostalni) Pronađimo prijenosnu funkciju sustava i vremenski odziv na jediničnu odskočnu pobudu, te se na temelju odziva uvjerimo o stabilnosti sustava: >> [Re, Im]=nyquist(br_Wo, naz_wo, 0.0001) Re = -0.2000 Im = -1.0000e+004 Polovi=pole(Wo) Polovi = Nyquistov dijagram nijednom ne obilazi točku 1+0j, a prijenosna funkcija otvorene petlje nema polova u desnoj poluravnini, zaključujemo da je sustav W(s) stabilan (P=N=0). -5 0 Pronađimo prijenosnu funkciju sustava i vremenski odziv na jediničnu odskočnu pobudu, te se na temelju odziva uvjerimo o stabilnosti sustava: Pronađimo prijenosnu funkciju sustava i vremenski odziv na jediničnu pobudu, sustava sa negativnom jediničnom povratnom vezom te se na temelju odziva uvjerimo o stabilnosti sustava: OCTAVE p3_zodzivn.m brw =[0 0 5 ]; nazw = [1 5 5] ; W=tf(brW,nazW) W1=feedback(W,1) step(w1) Vremenski odziv (konačna pobuda, konačni odziv) potvrđuje stabilnosti do koje smo došli na temelju Nyquistovog dijagrama. brw =[0 0 5 ]; nazw = [1 5 5] ; [br_w,naz_w]=cloop(br_wo,naz_wo) step(br_w, naz_w) Vremenski odziv (konačna pobuda, konačni odziv) potvrđuje stabilnosti do koje smo došli na temelju Nyquistovog dijagrama. Bode-ovi dijagrami - ovisnost amplitude prijenosne funkcije (u decibelima) i faze φ (u stupnjevima) o frekvenciji ω, crtano u semilogaritamskom mjerilu. Graf ovisnosti amplitude M o frekvenciji naziva se amplitudna frekvencijska karakteristika. Graf ovisnosti faze φ o frekvenciji naziva se fazna frekvencijska karakteristika. Bode-ove dijagrame obično crtamo za prijenosne funkcije otvorene petlje Wo(s). Sintaksa za računanje i crtanje frekvencijskih odziva (Octave, MatLab) bode(g) // bode(br,naz) % crta amplitudni i fazni bodeov dijagram bode(g,{w min,w max }) // bode(br,naz,{w min,w max }) % crta bodeove dijagrame za frekvencije između wmin i wmax bode(g,w) // bode(br,naz,w) % crta za frekv. Zadane vektorom w koji najčešće prethodno zadajemo, logspace(): bode(tf([3],[1])) // bode([3],[1]) % kreira Bode-ove dijagrame proporcionalnog elementa K=3. 6
Metode za promatranje frekvencijskog odziva sustava baziraju se na promatranju odziva u ustaljenom stanju na sinusnu pobudu. M(ω) - amplituda φ(ω) - faza prijenosne funkcije W(s) s=jω Prikazujemo kao vektor dužine M(ω) i faznog zakreta φ(ω) - za pozitivan smjer faze φ(ω) uzet je smjer obrnut od kazaljke na satu. Pravilo za utvrđivanje stabilnosti sustava po Bode-ovom kriteriju: [AP,FP,w_pi, w_i] =margin(wo) MATLAB NAREDBE (Octave,Matlab) Za računanje vrijednosti ω I, ω П te AP i FP koristi se slijedeća Matlabova naredba: Sustav sa zatvorenom povratnom vezom W(s) biti će stabilan ako amplitudni Bodeov dijagram prijenosne funkcije otvorene petlje W o (s) siječe frekvencijsku os prije nego fazni Bodeov dijagram siječe pravac 180 o (tj. ako je ω I < ω П ). Tada će AP(pričuva) i FP imati pozitivne vrijednosti. >> margin(wo) % crta BD i označava AP i FP margin(br, naz) >> [AP,FP,w_pi, w_i] =margin(wo) [AP, FP, w_pi, w_i]=margin(br, naz) Za prethodni zadatak >> margin(wo) % Octave >> margin(brwo, nazwo) % Matlab ZADATAK: Na temelju Bodeovih dijagrama odrediti ω I, ω П, AP i FP te zaključiti da li je regulacijski sustav stabilan. Dok smo sa slike približno mogli očitati željene parametre, Octave // Matlab će nam precizno izračunati njihove vrijednosti: III >> [AP, FP, w_pi, w_i]=margin(tf([20],[1 7 10 0]) ) %Octave >> [AP, FP, w_pi, w_i]=margin([20],[1 7 10 0]) %MatLab AP= 3.5000 FP = 35.7873 w_pi = 3.1623 w_i = 1.5224 >>AP_dB=20*log10(AP) % pretvaranje u db AP_dB = 10.8814 >> margin(tf([20],[1 7 10 0])) >>margin([20],[1 7 10 0]) 7
8