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 AUTOMATIZACIJA Ključnu ulogu u industriji igraju znanje i informacije Kontrola, nadzor i optimizacija zasnovani su na procesu mjerenja. Proces kontrole i upravljanja zahtijeva kontinuirano mjerenje Tri osnovne grupe zadataka koje sistem treba osigurati: Otklanjanje utjecaja vanjskih poremećaja (željeni kvalitet i količina proizvoda) Osiguravanje stabilnosti procesa (sigurnost) Optimiziranje rada procesa Aktuator je meahanička naprava koja pretvara energiju u kretanje. Mehanička naprava koja uzima energiju (obično energiju zraka, tekućine, električnu energiju) i pretvara je u neku vrstu gibanja. Dakle to je električni, hidraulični ili pneumatski uređaj koji upravlja tokom materijala ili energije. Osnovni tipovi sustava Ciljevi analize i sinteze R(s) Regulator Proces Y(s) Sa otvorenom petljom R(s) + _ E(s) Regulator Proces Y(s) Y p (s) Senzor Zahtjevana stabilnost, minimalna greška u stacionarnom stanju i oblik prijelaznog odziva sustava i zatvorenom petljom 1
1.12.217. Primjena gotovih programskih paketa Analiza u vremenskoj domeni Analiza u vremenskom području najčešće podrazumijeva rješavanje diferencijalnih jednadžbi koje opisuju sustav, ili promatranje odziva sustava na narinute standardne pobudne funkcije na njegovom ulazu. Analiza u frekvencijskoj domeni Temelji se na pobudi sustava sinusnim signalom promjenjive frekvencije i promatranjem odgovarajućeg odziva. Za linearne, vremenski nepromjenjive sustave i odziv će biti sinusan, ali će mu na svakoj frekvenciji amplitude i faza biti drugačija. Na temelju poznatih ulaznih i izlaznih amplituda i faza crtaju se frekvencijski dijagrami koji su temelj analize sustava u frekvencijskoj domeni. Što je MATLAB? Što je MATLAB? OCTAVE? Scilab? MatLab - jedan od komercijalnih matematičkih software paketa/alata (Maple, Mathematica, MathCad ) OCTAVE, Scilab (Xcos) - nekomercijalni alati Posjeduju visoke performanse u numeričkim izračunavanjima i vizualizaciji podataka. Primjer: Dinamika Fluida MATLAB (MATrix LABoratory) je programski jezik namjenjen za tehničke proračune. Objedinjava računanje, vizualizaciju i programiranje u lako uporabljivoj okolini u kojoj su problem i rješenje definirani poznatom matematičkom notacijom. Rezultati modeliranja problema u strojarstvu koristeći metodu konačnih elemenata predstavljeni u MATLABu upotrebljava se za matematiku i računanje razvoj algoritama modeliranje, simulaciju, analizu analizu i obradu podataka, vizualizaciju znanstvenu i inžinjersku grafiku Koraci za rješavanje problema uz pomoć MATLAB-a (Octave) u tehnici i znanosti 1. 2. 3. 4. 5. Jasno postaviti/formulirati problem Definirati ulazne i izlazne vrijednosti Razviti algoritam (metodu za riješavanje problema) Riješiti problem Provijeriti riješenje 2
1.12.217. MATLAB OCTAVE? Ako se pridržavate pravila kod rješavanja vaših problema povećavate šanse da dođete do točnog rješenja. mali primjer. okruženje i programski jezik njegov programski jezik omogućava izgradnju vlastitih alata Toolbox je skup specijaliziranih M - datoteka za rad na određenoj klasi problema. S MATLABom dolazi nekoliko Toolbox- ova s područja upravljanja, obrade signala, identifikacije procesa, i drugih Koliko sunce potroši materije tokom jednog dana? MATLAB Matlab sve podatke tretira kao matrice i ne zahtjeva dimenzioniranje; Nakon pokretanja programa, otvara se glavni prozor u kojem ćemo uočiti znak >> (prompt), koji označava da Matlab očekuje unos nove naredbe. Svaka naredba mora završiti tipkom Enter u nastavku teksta koristit ćemo oznaku <ent>. Tekući Direktorij Komandni prozor Komande se unose kod >> odziva aktivne varijable Neki primjeri. Radni prostor MATLAB Prozori Rješavanje Problema uz Pomoć MATLABa Skripte skup naredbi koje se mogu izvršiti u komandnom prozoru Koriste se za automatsko ponavljanje zadatka. Funkcije Ugrađene funkcije plot(),!rand(),!mean(),!std() može i korisničke funkcije Skripta je skup naredbi i funkcija spremljenih u jednoj datoteci. Kad ju pokrenemo naredbe se izvršavaju sekvencijalno, jedna za drugom. U Editoru kreiramo i modificiramo m-datoteke možemo ih pokrenuti sa edit otvori debug-run ili sa alatne trake zeleni trokutić % primjer level_tank clc, clear Kp=16.5; A_tank=78.5; A=[,-1/A_tank;, ]; B=[Kp/A_tank; ]; C=[1, ]; D=[]; model=ss(a, B, C, D) step(model) % crta step na model Pogledajmo sada kako MATLAB radi na nekim primjerima H=tf(model) Primjer: level_tank step(h) 3
Izvršavanje naredbi Tijek: Pročitati naredbu (razumjeti je) Izvršiti naredbu Ispisati rezultat Ukoliko liniju naredbe završimo sa ; naredba će se izvršiti, ali se njen rezultat neće ispisati, (za međukorake čiji nas rezultat ne zanima). Varijable Na početku rada sa MATLABom obično je potrebno definirati varijable i dodijeliti im odredjene vrijednosti, npr. A=3 Ovu komandu je najbolje shvatiti kao dodjeljivanje vrijednosti 3 varijabli A Tekst iza znaka % se zanemaruje >>A=5; % ovo je komentar >>% a=1 >> Ovako definirane varijable mogu se koristiti u narednim komandama Varijable Sva imena moraju početi slovima Imena varijable mogu sadržavati slova, brojeve i znak _ ) MATLAB pravi razliku izmedju malih i velikih slova Osnovna vrsta varijabli Grupa brojeva raspoređena u redove i stupce Jedan broj (Skalar) MATLAB ga tretira kao matricu sa jednim redom i jednin stupcem Vektor (Jednodimenzionalna matrica) Jedan red ili jedan stupac Matrica (Dvije dimenzije) Varijable Prema sadržaju elemenata matrice: Realne Kompleksne Simboličke Polja Strukture Prema dohvatu (vidljivosti) na: Lokalne Globalne Prema izvoru nastanka: Interne Eksterne Varijable Varijablu ans automatski generira i pridružuje joj vrijednost zadnjeg izračunatog izraza koji nije pridružen nijednoj varijabli. >> 4*25+3 ans = 13 MATLAB pamti varijable koje smo koristili Varijable koje su u radnom prostoru možemo vidjeti naredbom who (ispis varijabli) >> who Your variables are: a b d kmpl2 p_kmpl1 y ans c kmpl1 kmpl3 x whos (detaljniji ispis varijabli) >>whos Name Size Elements Bytes Density Complex a 1 by 1 1 8 Full No ans 1 by 1 1 8 Full No b 1 by 1 1 8 Full No kmpl1 1 by 1 1 16 Full Yes 4
Brisanje varijabli clear briše sve varijable iz workspace-a clear a, b, c briše varijable a, b i c iz workspace-a clear global briše globalne varijable iz workspace-a clear d* - sve varijable koje počinju na d Brisanje pomoću prozora workspace-a Aritmetičke operacije + zbrajanje - oduzimanje * množenje / "Desno" dijeljenje \ "lijevo" dijeljenje ^ potenciranje >> 4/1 ans = 4 >> 4\1 ans =.25 >> 1 + 3 * 2 ^ 4 / 6-9 ans = >> 1 + (3 * 2) ^ 4 / (6-9) ans = -431 Zadatak: Definirajte varijable x i z, x kao x=5.3 i z kao z=7.8 xz (x /z) 2 14x 2.8z 2 x z x 2 z z 2 x ( ) 2 ( x ) 2 z 1 Redosljed operacija Isti kako ste naučili u matematici Prvo zagrade Eksponencijalne funkcije Množenje / dijeljenje Zbrajanje / oduzimanje Zagrade Koristite samo ( ) { } i [ ] se koriste za neke druge (važne) stvari u MATLABu MATLAB ne podrazumjeva množenje ako se ispusti znak * >> 5(3+4)??? 5(3+4) Error: Unbalanced or unexpected parenthesis or bracket 5 * (3+4) nije 5(3+4) Operacije sa matricama Operacije sa matricama Da bi ste u radnom prostoru stvorili vektor jednodimenzionalnu matricu, koristite pravokutne zagrade [ ] Između pojedinačnih brojeva u vektoru možete upotrijebiti ili prazan prostor ili zareze 5
Korištenje točka-zareza umijesto zareza ili praznih prostora će brojeve rasporediti u kolonu umjesto u redak (stupčasti vektor) Korištenje točka-zareza da bi se označio novi red Korištenje prečica Dok se neke komplicirane matrice moraju unositi pažljivo, ručno, unos je puno lakši ako se radi o matricama sa elementima koji su pravilno raspoređeni. Instrukcija b= 1:5 ili b = [1:5] će stvoriti vektor u jednom redu b = 1 2 3 4 5 Često nam vektor predstavlja rastući ili padajući niz brojeva s jednolikim razmakom između susjeda. Takav vektor zadajemo pomoću znaka dvotočke (:). Npr: Razlika izmedju elemenata matrice ili vektora je 1 po definiciji, ako želite neku drugu razliku, umetnite je izmedju početne i krajnje vrijednosti Korisna napomena U instrukciji koja definira elemente matrice može se upotrijebiti i matematička operacija Na primjer: a = [: pi/1: pi] Vježba Generirajte vektor a) v1= 2 4 6 8 1 12 sa konstantnim korakom između elemenata, zadavanjem prvog elementa, koraka i zadnjeg elementa. b) v2= 2.;2.2;2.4;2.6;2.8;3. sa konstantnim korakom između elemenata c) u kojem je prvi element 18, a posljednji -22, a korak između elemenata je -4. 36 6
Generirajte vektor OPERATORI a) v1= 2 4 6 8 1 12 sa konstantnim korakom između elemenata, zadavanjem prvog elementa, koraka i zadnjeg elementa. v1=2:2:12 a) v2= 2.;2.2;2.4;2.6;2.8;3. sa konstantnim korakom između elemenata v1=2:.2:3 c) u kojem je prvi element 18, a posljednji -22, a korak između elemenata je -4. t=18:-4:-22 Aritmetički operatori (matrice) Relacijski operatori Logički operatori ARITMETIČKI OPERATORI Prioritet Operator Opis 1 ( ) Grupiranje i prioritet 2. 3 ^.^ 4 *.* / \./ Konjugiranje i transponiranje Transponiranje Potenciranje Potenciranje između elemenata Matrično množenje Množenje među elementima matrica Desno dijeljenje (X*Y -1 ) Lijevo dijeljenje (Y -1 *X) Dijeljenje među elementima matrica 5 + - Zbrajanje Oduzimanje Relacijski operatori Kao rezultat operacije se dobiva logička vrijednost ( ili 1) Operator Opis Primjer < Manje a<b <= Manje ili jednako a<=b > Veće a>b >= Veće ili jednako a>=b == Jednako a==b ~= Različito a~=b 38 4 Logički operatori Operator Opis Primjer & I ~ Logičko I Ako A i B imaju vrijednost true (1), rezultat je true, u suprotnom rezultat je false (). Logičko ILI Ako jedan ili oba operanda imaju vrijednost true (1),rezultat je true (1), u suprotnom rezultat je false () Logički komplement daje suprotnu vrijednost operanda (1--> ) A&B A B xor Logičko ekskluzivno ILI xor(a,b) ~A Početna vrijednost izražena kao stupanj broja 1 e = Završna vrijednost izražena kao stupanj broja 1 1 1 1 Broj elemenata 41 7
Operacije sa Matricama i Vektorima Množenje.* Dijeljenje./ Eksponencijalne funkcije.^ Dimenzije matrica ili vektora moraju biti iste. Zahvaljujući matricama ponavljanje istih operacija u MATLABu je jednostavno Ako, na primjer, imate veliki broj kutova u stupnjevima koje treba pretvoriti u radijane, najbolje je Prvo ih sortirati u vektor (ili matricu) Potom izvršiti pretvaranje u radijane Kod množenja matrica broj stupaca lijeve matrice mora biti jednak broju redaka desne matrice: POSEBNE MATRICE Naredba zeros(m,n) vraća matricu sa m redaka i n stupaca popunjenu nulama, dok funkcija ones(m,n) vraća matricu istih dimenzija popunjenu jedinicama. Naredba eye(n) kreirat će kvadratnu matricu dimenzija n n s jedinicama po dijagonali (jedinična matrica). Matricu sa slučajno odabranim brojevima (u intervalu od do 1) kreirat će naredba rand(n,m): Znak % se koristi za komentar u Matlabu Potreban je jedan % znak za svaku liniju u koju stavljate komentar Uočimo iz prethodnog primjera da ako Matlab naredba ima više argumenata, oni se međusobno odvajaju zarezom. Želimo li izbrisati neku varijablu iz radnog prostora, koristit ćemo naredbu clear. Npr: >> clear a % briše varijablu a >> clear % briše sve varijable iz radnog prostora >> clear all Korištenje predefiniranih funkcija u MATLABu Funkcija se sastoji od Imena Ulaznih vrijednosti Izlaznih vrijednosti (Rezultata) sqrt (x)= result In MATLAB sqrt(4) ans = 2 8
Neke funkcije mogu (ili moraju) imati više ulaznih vrijednosti Funkcija remainder izračunava ostatak cjelobrojnog dijeljenja Npr. ostatak kod dijeljenja 1 i 3, 1/3 MATLAB funkcije mogu načiniti (skoro) sve što vam može zatrebati Da bi ste saznali kako rade i kako se koriste MATLAB funkcije možete upotrijebiti MATLAB help Help se može pozvati Iz komandnog prozora Iz MATLAB menija help help Iz komandnog prozora Operacije sa matricama Kako se stvara matrica u MATLABu A=[3.5] B=[1.5, 3.1] ili B=[1.5 3.1] C=[-1,, ; 1, 1, ;,, 2]; : operator se korsti da bi se: stvorile matrice sa konstantnom razlikom između susjednih elemenata pristupilo elementima ili djelovima postojećih matrica matrica pretvorila u stupac Slučajni Brojevi rand(x) Daje x puta x matricu slučajnih brojeva izmedju i 1 rand(n,m) Daje n puta m matricu slučajnih brojeva izmedju i 1 Ovi brojevi su uniformno raspodijeljeni! 9
POLINOMI Funkcije za rad sa polinomima U teoriji sustava i automatizaciji prijenosne funkcije sustava definiraju se razlomcima s polinomima u brojniku i nazivniku. Kako se u Matlabu definiraju polinomi? p=x 5 + 3x 2 4x + 21 Polinomi se u Matlabu predstavljaju s vektorima koji sadržavaju koeficijente uz pojedine potencije varijable x Korijeni polinoma traže se naredbom roots(): Funkcija x=roots(p) P=poly(x) R=conv(P,Q) [R,S]=deconv(P,Q) Q=polyder(P) P=polyfit(x,y,n) Opis Korijeni polinoma P Vraća polinom na temelju korijena polinoma Množenje polinoma P i Q Dijeljenje polinoma P/Q (R je rezultat dijeljenja a S ostatak) Derivacija polinoma P Metodom najmanjih kvadrata računaju se koeficijenti polinoma P(x) n-tog reda Skripte Ima nastavak.m Varijable možemo koristiti i u radnom prostoru, odnosno iz tog radnog prostora Sadrže niz Matlabovih naredbi Funkcije Ima nastavak.m Prvi red mora biti red s definicijom funkcije Varijable su lokalne Prihvaćaju podatke putem ulaznih argumenata, a vraćaju preko izlaznih Kada snimamo funkcijsku datoteku, dajemo joj ime jednako imenu funkcije Funkcije za rad sa polinomima P(x)=x 3-5x 2 +8x-6 Q(x)=x 2-4x+3 Korijeni >> R=roots(P) R = 3. 1. + 1.i 1. - 1.i polinom na temelju korijena >> P=poly(R) P = 1. -5. 8. -6. >> P=[1-5 8-6]; >> Q=[1-4 3]; >> R=conv(P,Q) Množenje R = 1-9 48-18 31 - >> 53 R=polyder(P) R = 3-1 8 >> [R,S]=deconv(P,Q) R = 1-1 S = 1-3 Dijeljenje P(x) Q(x) P(x)Q(x) Derivacija P (x) P(x)/Q(x) POLINOMI Polinomi se množe naredbom conv() : Pomnoži dva polinoma (x 2 + 3x + 2)*(4x+2) Za dijeljenje polinoma služi naredba deconv():! Grafičke funkcije 2D Važnije funkcije (plot, bar, stem, stairs) Kao prvi korak potrebno generirati vektor x koji sadrži vrijednosti u kojima se izračunava funkcija y=f(x), te nakon izračunavanja graf funkcije se iscrtava. >>plot(x,y) pri čemu je n kvocijent, a r ostatak dijeljenja, tj. vrijedi: p 1 /p 2 = n + r/p 2 Ove funkcije primaju i dodatne parametre koji definiraju izgled samog grafa (npr. boja i vrsta linija) 1
Osnovna naredba dvo-dimenzionalne grafike u MATLABu je plot. Osnovna naredba dvo-dimenzionalne grafike u MATLABu je plot. Potrebno je nacrtati funkciju y=sin(x) od do 2 P sa 3 točaka. Potrebno je nacrtati funkciju y=sin(x) od do 2 P sa 3 točaka >> x=linspace(,2*pi,3); % od do 2pi generira 3 točaka >> y=sin(x); >> plot(x,y) Osnove grafike u MATLABu Crtanje i označavanje dvodimenzionalnih grafova Podešavanje izgleda vaših crteža Upotreba subplot opcije Trodimenzionalni crteži A bargraph of vector x 8 8 6 6 Interaktivni grafički alati 4 2 1 5 1 2 1 2 3 4 5 A three dimensional bargraph 1 2 3 4 5 4 2 A bargraph of matrix y 25% 1 2 A pie chart of x 5% 1% 2% 4% Inženjeri obično dodaju i Naslov Ime za X osu, i jedinice Ime za Y osu, i jedinice često je korisno dodati i mrežu preko slike xlabel ( x os ) dodavanje naziva x osi ylabel ( y os ) dodavanje naziva y osi title ( Graf funkcije ) dodavanje naziva grafu grid on /grid off dodavanje mreže Grafičke funkcije 2D (opcije) Oznaka Boja Oznaka Tip linije y Žuta - Puna m Ljubičasta : Točkasta linija c Svjetloplava -. Crta točka r Crvena -- Isprekidana linija g b w k Zelena Plava Bijela Crna Grafičke funkcije 2D (opcije) Crtanje na logaritamskoj skali semilogx semilogy Nova slika Figure semilogx(x,y, r ); semilogy(x2,y2, k ); figure, plot(x,y, r ); Više odvojenih grafova na istoj slici subplot(211), plot(x1,y1, r ); subplot subplot(212), plot(x2,y2, k ); 11
X=1:1 Y1=2*X+3 Y2=3*X-1 Plot(X,Y1, r,x,y2, g ) X=1:1; Y1=2*X+3; Y2=3*X-1; plot(x,y1,'r',x,y2,'g') 3 25 2 15 1 5 1 2 3 4 5 6 7 8 9 1 76 Više grafova na jednom crtežu Svaki put kada izdate naredbu plot MATLAB briše postojeći crtež Da bi se otvorila nova slika, koristi se funkcija figure, npr. figure(2) Naredba plot(x) crta vektor x na način da se na x-os nanose indeksi vektora x, a na y-osi nalaze se vrijednosti vektora. Zadane točke međusobno se spajaju ravnim linijama: Crteži sa više grafova hold on Zadržava postojeći crtež tako da se novi graf može crtati preko postojećeg Kod ovog pristupa novi graf će po definiciji biti nacrtan plavom bojom Ova krivulja je u plavoj boji hold on komanda zadržava postojeći crtež Drugi crtež je takodjer nacrtan koristeći plavu boju hold off komanda prekida zadržavanje grafova na slici 12
Jednom komandom je moguće istovremeno iscrtati više krivulja Koristeći ovaj način, svaki graf je druge boje Jednom komandom je moguće istovremeno iscrtati više krivulja Koristeći ovaj način, svaki graf je druge boje Svaki par varijabli u plot komandi će proizvesti novi graf. Svaki par varijabli u plot komandi će proizvesti novi graf. Subplot peaks(1) instrukcija stvara 1x1 matricu čije se vrijednosti mogu prikazati pomoću plot funkcije koja daje 1 različitih grafova. subplot komandom se prozor u kome se crta može podijeliti na više pod-prozora u kojima se mogu prikazati crteži subplot(m,n,p) broj red broj stupca broj slike (položaj) subplot(2,2,1) 2 stupca 5-5 Peaks 1 2 2 reda 2-2 y -2 x 2 2 reda i 1 stupac 3 4 13
x-y plot linearna podjela na obje osi semilogx log podjela na x osi semilogy log podjela na y osi loglog log podjela na obje osi Primjer skripte % crtanje x=[:.1:1]; y=x.^2-2*x; plot(x,y) % nacrtaj grafikon x,y grid on % uključi rešetku title('grafik funkcije'); %naslov grafikona xlabel('x'); ylabel('y'); Rezolucija x osi (5) 14