Upload
trinhdung
View
309
Download
9
Embed Size (px)
Citation preview
1.12.2017.
1
AUTOMATIZACIJALaboratorijske 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
• 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.
• 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
Osnovni tipovi sustava
i zatvorenom petljom
Sa otvorenom petljom
Regulator Proces
R(s) Y(s)
Regulator Proces
Senzor
_
+R(s) Y(s)E(s)
Yp(s)
Ciljevi analize i sinteze
Zahtjevana stabilnost, minimalna greška u stacionarnom stanju i oblik prijelaznog odziva sustava
1.12.2017.
2
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.
Primjena gotovih programskih paketa
• 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.
Što je MATLAB ?
OCTAVE ?
Scilab ?
• 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.
• upotrebljava se zamatematiku i računanjerazvoj algoritama
modeliranje, simulaciju, analizuanalizu i obradu podataka, vizualizacijuznanstvenu i inžinjersku grafiku
Što je MATLAB ?Primjer:Dinamika Fluida
Rezultati modeliranja problema u
strojarstvu koristeći metodu konačnih
elemenata predstavljeni u MATLABu
Koraci za rješavanje problema uz pomoć MATLAB-a (Octave) u tehnici i znanosti
1. Jasno postaviti/formulirati problem
2. Definirati ulazne i izlazne vrijednosti
3. Razviti algoritam (metodu za riješavanje problema)
4. Riješiti problem
5. Provijeriti riješenje
1.12.2017.
3
Ako se pridržavate pravila kod rješavanja vaših problema povećavate šanse da dođete do točnog rješenja.
mali primjer….
Koliko sunce potroši materije tokom jednog dana?
MATLAB – OCTAVE ? • 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
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>.
• Neki primjeri ….
Komandni prozor
Komande se unose kod “>>”
odziva
Tekući Direktorij
MATLAB Prozori
aktivne varijable
Radni prostor
Rješavanje Problema uz Pomoć MATLABa
• Pogledajmo sada kako MATLAB radi na nekim primjerima
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
% primjer level_tank
clc, clear
Kp=16.5;
A_tank=78.5;
A=[0,-1/A_tank; 0, 0];
B=[Kp/A_tank; 0];
C=[1, 0];
D=[0];
model=ss(A, B, C, D)
step(model) % crta step na model
H=tf(model)
step(H)
1.12.2017.
4
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).
• Tekst iza znaka % se zanemaruje
>>A=5; % ovo je komentar
>>% a=10
>>
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
• 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 = 103
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 …
1.12.2017.
5
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
>> 4/1
ans =
4
>> 4\1
ans =
0.2500
>> 1 + 3 * 2 ^ 4 / 6 - 9
ans =
0
>> 1 + (3 * 2) ^ 4 / (6 - 9)
ans =
-431
+ zbrajanje
- oduzimanje
* množenje
/ "Desno" dijeljenje
\ "lijevo" dijeljenje
^ potenciranje
Zadatak:
Definirajte varijable x i z, x kao x=5.3 i z kao z=7.8
(x /z)2
xz14x 2 0.8z 2
1
) 2)2
x
z
z
x (x 2z z 2x (
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)
Da bi ste u radnom prostoru stvorili vektor –
jednodimenzionalnu matricu, koristite
pravokutne zagrade [ ]
Operacije sa matricama
Između pojedinačnih brojeva u
vektoru možete upotrijebiti ili prazan
prostor ili zareze
Operacije sa matricama
1.12.2017.
6
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
Č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:
b =
1 2 3 4 5
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 = [0: pi/10: pi]
Vježba
36
Generirajte vektor
a) v1= 2 4 6 8 10 12 sa konstantnim korakom između elemenata, zadavanjem prvog elementa, koraka i zadnjeg elementa.
b) v2= 2.0000;2.2000;2.4000;2.6000;2.8000;3.0000
sa konstantnim korakom između elemenata
c) u kojem je prvi element 18, a posljednji -22, a korak između elemenata je -4.
1.12.2017.
7
Generirajte vektor
a) v1= 2 4 6 8 10 12 sa konstantnim korakom između elemenata, zadavanjem prvog elementa, koraka i zadnjeg elementa.
v1=2:2:12
a) v2= 2.0000;2.2000;2.4000;2.6000;2.8000;3.0000
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
OPERATORI
Prioritet Operator Opis
1 ( ) Grupiranje i prioritet
2 ’
.’Konjugiranje i transponiranje
Transponiranje
3 ^
.^
Potenciranje
Potenciranje između elemenata
4 *
.*
/
\
./
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
38
ARITMETIČKI OPERATORI Relacijski operatori
40
Kao rezultat operacije se dobiva
logička vrijednost (0 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
Logički operatori
41
Operator Opis Primjer
&
Logičko I – Ako A i B imaju vrijednost true
(1), rezultat je true, u suprotnom rezultat
je false (0).A&B
I
Logičko ILI – Ako jedan ili oba operanda
imaju vrijednost true (1),rezultat je true
(1), u suprotnom rezultat je false (0)A|B
~Logički komplement – daje suprotnu
vrijednost operanda (1--> 0)~A
xor Logičko ekskluzivno ILI xor(A,B)
Početna
vrijednost
izražena kao
stupanj broja 10
Završna vrijednost
izražena kao
stupanj broja 10
Broj elemenata
e =
10 100 1000
1.12.2017.
8
Operacije sa Matricama i Vektorima• Množenje .*
• Dijeljenje ./
• Eksponencijalne funkcije .^
Dimenzije matrica ili vektora moraju biti iste.
Kod množenja matrica broj stupaca lijeve matrice mora biti jednak broju
redaka desne matrice:
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
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).
Uočimo iz prethodnog primjera da ako Matlab naredba ima više argumenata, oni se međusobno odvajaju zarezom.
Matricu sa slučajno odabranim brojevima (u intervalu od 0 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
Ž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
1.12.2017.
9
Neke funkcije mogu (ili moraju) imati više ulaznih vrijednosti
• Funkcija “remainder” izračunava ostatak cjelobrojnog dijeljenja
• Npr. ostatak kod dijeljenja 10 i 3, 10/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 pozvatiIz komandnog prozoraIz MATLAB menija
Iz komandnog prozora
help help
Operacije sa matricamaKako se stvara matrica u MATLABu
A=[3.5]
B=[1.5, 3.1] ili
B=[1.5 3.1]
C=[-1, 0, 0; 1, 1, 0; 0, 0, 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 0 i 1
• rand(n,m)• Daje n puta m matricu slučajnih brojeva izmedju 0 i 1
• Ovi brojevi su uniformno raspodijeljeni !
1.12.2017.
10
POLINOMI
U teoriji sustava i automatizaciji prijenosne funkcije sustava definiraju se
razlomcima s polinomima u brojniku i nazivniku.
Kako se u Matlabu definiraju polinomi ?
p=x5 + 3x2 – 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():
Funkcije za rad sa polinomima
Funkcija Opis
x=roots(P) Korijeni polinoma P
P=poly(x)Vraća polinom na temelju korijena
polinoma
R=conv(P,Q) Množenje polinoma P i Q
[R,S]=deconv(P,Q)Dijeljenje polinoma P/Q (R je
rezultat dijeljenja a S ostatak)
Q=polyder(P) Derivacija polinoma P
P=polyfit(x,y,n)
Metodom najmanjih kvadrata
računaju se koeficijenti polinoma
P(x) n-tog reda
Skripte Funkcije
Ima nastavak .m
Varijable možemo koristiti i u radnom prostoru, odnosno iz tog radnog prostora
Sadrže niz Matlabovih naredbi
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)=x3-5x2+8x-6
Q(x)=x2-4x+3
P(x)Q(x)
P(x)/Q(x)
P’(x)
>> P=[1 -5 8 -6];
>> Q=[1 -4 3];
>> R=conv(P,Q)
R =
1 -9
31 -
53
48 -18
>> R=polyder(P) R =
3 -10 8
>> [R,S]=deconv(P,Q)
R =
1 -1
S =
0 0 1 -3
8.0000 -6.0000
P(x)
Q(x)
>> R=roots(P) R
=
3.0000
1.0000 + 1.0000i
1.0000 - 1.0000i
>> P=poly(R) P
=
1.0000 -5.0000
Množenje
Dijeljenje
Derivacija
Korijeni
polinom na temelju korijena
POLINOMI Polinomi se množe naredbom conv() : Pomnoži dva polinoma (x2 + 3x + 2)*(4x+2)
Za dijeljenje polinoma služi naredba deconv():
pri čemu je n kvocijent, a r ostatak dijeljenja, tj. vrijedi: p1/p2 = n + r/p2
!
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.
Ove funkcije primaju i dodatne parametre koji definiraju izgled samog grafa (npr. boja i vrsta linija)
>>plot(x,y)
1.12.2017.
11
Osnovna naredba dvo-dimenzionalne grafike u MATLABu je plot.
Potrebno je nacrtati funkciju y=sin(x) od 0 do
2 P sa 30 točaka.
Osnovna naredba dvo-dimenzionalne grafike u MATLABu je plot.
Potrebno je nacrtati funkciju y=sin(x) od 0 do
2 P sa 30 točaka
>> x=linspace(0,2*pi,30); % od 0 do 2pi generira 30 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
• Interaktivni grafički alati
1 2 3 4 50
2
4
6
8
A bargraph of vector x
1 20
2
4
6
8
A bargraph of matrix y
12
34
51
2
0
5
10
A three dimensional bargraph
5%10%
25%
20%
40%
A pie chart of x
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 Zelena
b Plava
w Bijela
k Crna
Grafičke funkcije – 2D (opcije)
semilogy
Nova slika
Figure
Više odvojenih grafova na istoj slici
subplot
figure, plot(x,y,’r’);
subplot(211), plot(x1,y1,’r’);
subplot(212), plot(x2,y2,’k’);
semilogx(x,y,’r’);
semilogy(x2,y2,’k’);
Crtanje na logaritamskoj skali
semilogx
1.12.2017.
12
76
X=1:10
Y1=2*X+3
Y2=3*X-1
Plot(X,Y1,’r’,X,Y2,’g’)
1 2 3 4 5 6 7 8 9 100
5
10
15
20
25
30
X=1:10;
Y1=2*X+3;
Y2=3*X-1;
plot(X,Y1,'r',X,Y2,'g')
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
1.12.2017.
13
Svaki par varijabli
u plot komandi će
proizvesti novi
graf.
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.
Jednom komandom je moguće istovremeno iscrtati više
krivulja
Koristeći ovaj način, svaki graf je druge boje
peaks(100)
instrukcija stvara
100x100 matricu
čije se vrijednosti
mogu prikazati
pomoću “plot”
funkcije koja daje
100 različitih
grafova.
Subplot
• 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 reda
2 stupca
1 2
3 4
-20
2
-20
2
-5
0
5
x
Peaks
y 2 reda i 1 stupac
1.12.2017.
14
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
% crtanje
x=[0:0.1:10];
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');
Primjer skripte
Rezolucija x osi (5)