Introduzione a Matlab e Simulink Matteo Sartini Tel (051-20)93872

Introduzione a Matlab e Simulink Matteo Sartini Tel (051-20)93872
Introduzione a
Matlab e Simulink
Matteo Sartini
[email protected]
http://www-lar.deis.unibo.it/people/msartini
Tel (051-20)93872
Cosa è Matlab?
Matlab (MATrix LABoratory) è un ambiente di
programmazione per applicazioni scientifiche, di analisi
numerica e per la simulazione di sistemi dinamici.
L’elemento di base di Matlab è la matrice.
Matlab contiene:
Un vasto set di funzioni di base general purpose;
Possibilità di definire nuove funzioni
Estensioni application oriented (toolboxes);
es. Control System Toolbox
Un’interfaccia grafica interattiva per la modellazione e la
simulazione di sistemi dinamici;
Simulink
Altri toolbox non di interesse nel corso di Controlli
Automatici LA/LB (Signal Processing, Financial ecc…)
2
Perché Matlab?
Per il corso:
strumento utile per la verifica personale dei concetti
appresi, per la verifica degli esercizi e come
approfondimento.
programma utilizzato per sviluppare il progetto di sistemi
di controllo (Controlli Automatici LB)
Analisi dei sistemi (SISO, MIMO, lineari ecc…)
Sintesi dei controllori
Come ingegneri:
ambiente di sviluppo software utilizzato nelle aziende per
il progetto di sistemi di controllo, per la loro
implementazione e sviluppo completo
3
L’interfaccia grafica
Command window
•Matlab è un ambiente a riga di comando.
•I comandi Matlab possono essere eseguiti
direttamente nella finestra di comando con
un prompt.
Workspace: lista delle variabili
Command History: lista dei comandi recenti
Current Directory: lista dei file nella cartella corrente
Launch Pad: accesso rapido a Help, Toolbox, Simulink
4
L’interfaccia grafica
Editor di testo
Scrittura di script (M-file), cioè
programmi che contengono
sequenze di comandi Matlab
interfaccia grafica a finestre:
• figure
•Schemi Simulink
Figura
Simulink
5
Quali parti di Matlab ci interessano?
Matlab
concetti base, uso delle matrici, vettori, ecc.
la grafica con Matlab
Control System Toolbox
definizione di sistemi dinamici (funzioni di trasferimento,
sistemi in forma di stato, ecc.)
strumenti per:
analisi di sistemi LTI (stabilità, diagrammi di Bode,
luogo delle radici, ecc.)
progetto di regolatori
Simulink
simulazione di sistemi dinamici (complessi)
6
L’help di Matlab
2 modi per ottenere l’help di una funzione:
Help in linea:
è sufficiente scrivere nella Command Window “help
<nomefunzione>”per avere informazioni dettagliate sul
funzionamento della funzione.
Matlab Help Window
Si esegue dal menu Help, contiene informazioni su tutte
le funzionalità di Matlab, Simulink e i toolbox
Help dettagliati in formato:
Html (per accesso rapido)
Pdf (per tutorial o approfondimenti)
Da scaricare dal sito www.mathworks.com
7
v. File IntroMatlab.m
Matlab come calcolatrice
Valutare espressioni aritmetiche (al prompt dei comandi)
Valutare 2 + 4 + sin(0.2 ) + e 2
>> sqrt(2)+4+sin(0.2*pi)+exp(2)
ans =
13.3911
Esiste un insieme di istruzioni matematiche
(help elfun, help elmat)
Aritmetiche
Trigonometriche
Esponenziali
Per i numeri complessi
Etc.
N.B. Matlab è case-sensitive!!!
8
Definizioni di variabili
E’ possibile definire variabili ed espressioni complesse:
>> a=4; b=2;
>> a*b
ans =
8
Per cancellare una variabile (es. a):
>> clear a
Per cancellare tutte le variabili
>> clear all
Le matrici sono l’elemento di base in Matlab
Ogni oggetto in Matlab è trattato come una matrice
Gli scalari sono considerati casi particolari di matrici (matrici 1x1)
Le matrici colonna (o riga) sono dette vettori (vectors)
E’ possibile definire, modificare, visualizzare e eseguire operazioni e
funzioni su matrici
9
Il workspace
Ogni variabile definita in questo modo viene conservata in
memoria nel workspace.
Per workspace, si intende l’insieme di tutte le variabili
Lista
delle variabili del workspace: who
Salvare il workspace (o alcune variabili): save <file> <var1>
<var2> …
Caricare variabili salvate da disco: load <file>
10
v. File IntroMatlab.m
Inserimento di matrici
Inserire una matrice 4x4
>> A = [16, 3, 2, 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
A=
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
Matlab mostra la matrice appena inserita
Con “;” non viene visualizzato il risultato dell’istruzione a schermo
Utile nel caso di risultati “lunghi” (es. con matrici di dimensione molto
elevata)
Vettori riga e colonna:
riga = [1 2 3 4];
colonna = [1;2;3;4];
b=[1,2,3,4]‘;
11
v. File IntroMatlab.m
Operazioni matriciali
in Matlab tutte le operazioni sono relative a
matrici
trasposta:
A'
Diagonale: diag(A)
dimensioni di A
Numero righe e colonne: size(A)
Numero righe: size(A,1)
per i vettori: length(b)
alcune matrici utili ...
Matrice di uno: ones(m,n)
Matrice di zero: zeros(m,n)
Matrice identità: eye(n)
Matrice vuota: X=[]
12
v. File IntroMatlab.m
Come accedere agli elementi di una matrice
singolo
elemento
>> A(1,2)
3
>> A(end, end)
1
>> A(1,:)
ans =
16 3
2
13
selezionare la prima colonna
>> A(:,1)
ans =
16
5
9
4
una sottomatrice
>>A(1:3 , 2:4)
ans =
3 2 13
10 11 8
6 7 12
selezionare la prima riga
A=
16 3
5 10
9 6
4 15
2 13
11 8
7 12
14 1
Sottomatrici (es. 2a e 4a riga)
>> A([2,4],:)
ans =
5 10 11 8
4 15 14 1
wildcard
Per accedere a intere righe o colonne di una matrice, si usa la wildcard “:”
13
v. File IntroMatlab.m
Come accedere agli elementi di una matrice
singolo
elemento
>> A(1,2)
3
>> A(end, end)
1
>> A(1,:)
ans =
16 3
2
13
selezionare la prima colonna
A=
16 3
5 10
9 6
4 15
2 13
11 8
7 12
14 1
>> A(:,1)
ans =
16
5
9
4
una sottomatrice
>>A(1:3 , 2:4)
ans =
3 2 13
10 11 8
6 7 12
selezionare la prima riga
Sottomatrici (es. 2a e 4a riga)
>> A([2,4],:)
ans =
5 10 11 8
4 15 14 1
14
v. File IntroMatlab.m
Operazioni matriciali
Operazioni su matrici:
Operatori +,-,*
* è il prodotto matriciale (righe per colonne)!
A[m*n] * B[n*p] = C[m*p] (nell’esempio sotto non potrei fare b*a)
A=
2
1
4
3
2
5
C=
B=
*
1
2
3
5
4
3
6
6
=
8 21 17 30
5 13 10 18
14 37 31 54
Inversa di matrice: inv(A) (Per questa matrice A non esiste)
Se non è invertibile si può calcolare la pseudoinversa: pinv(A)
Determinante: det(A)
Autovalori: eig(A)
15
v. File IntroMatlab.m
Operazioni matriciali vs. operazioni elemento per
elemento
Normalmente le operazioni *, / sono operazioni matriciali.
Per eseguire operazioni elemento per elemento si
antepone il punto (.) all’operatore
L’operazione viene eseguita fra i singoli elementi delle matrici.
CI deve essere coerenza fra le dimensione degli operandi.
A[m*n] * B[m*n] = C[m*n]
esempio .* ./ .^
Operazione
matriciale
>> A*A
ans =
7 10
15 22
>>A=[1,2;3,4]
A=
1 2
3 4
Operazione
elemento per elemento
>> A.*A
ans =
1 4
9 16
16
I vettori
I vettori hanno due funzioni fondamentali in matlab:
Rappresentazione dei polinomi (un polinomio è
descritto dal vettore dei suoi copefficienti);
Rappresentazione di segnali (un segnale è
rappresentato mediante la sequenza dei valori che
assume in un insieme di isatnti di tempo, quindi
mediante un vettore).
17
v. File IntroMatlab.m
Vettori con numeri reali a intervalli regolari
E’ Possibile definire dei vettori con numeri a intervalli regolari:
c=[1:2:8]
c=
1 3 5 7
Valore finale
Passo
Valore iniziale
d=[1:5,2:2:10,2]
d=
1 2 3 4 5 2 4 6 8
e=[3.2:-.1:2.5]
e=
3.2 3.1 3.0 2.9 2.8 2.7 2.6 2.5
10
2
Utile per
la selezione degli elementi di una matrice
la generazione di vettori “temporali” equispaziati
18
Polinomi e loro operazioni
Sono definiti come vettori: Es:
>>pol=[1 3 -15 -2 9]
pol=
1 3 -15 -2 9
Calcolo delle radici:
>>roots(pol)
>>ans=
-5.5745
2.5836
-0.7951
0.7860
19
Polinomi e loro operazioni
Valutazione in un punto:
>> polyval(pol,0)
>> ans=
9
Prodotto di polinomi (conv) Es:
>>pol1=[1 1]; pol2=[1 1];
>>polprod=conv(pol1,pol2)
polprod=
1 2 1
20
M-file
Matlab è un linguaggio di programmazione e un
ambiente di calcolo interattivo
M-file: file contenente codice Matlab
Vengono scritti mediante un qualsiasi editor di
testo e eseguiti chiamandoli dalla linea di
comando
In
Matlab è disponibile un editor di testo (Edit)
2 tipi di M-file: script e funzioni
21
Script e funzioni
Gli script si usano per automatizzare le sequenze di
comandi.
Quando viene eseguito uno script, l’esecuzione dei comandi è del
tutto equivalente alla scrittura del codice con la tastiera.
Si utilizzano per evitare di riscrivere la stessa sequenza di
comandi ripetutamente
Non hanno argomenti di input e output, tutte le variabili sono globali.
Le function si usano per estendere le funzionalità di Matlab.
Normalmente generano una o più uscite (matriciali) dipendenti dai
parametri in ingresso.
Le variabili sono locali alla funzione.
function [output]=nomefunction(input)
istruzioni;
22
Esempio di script e di funzione
Script
A1=[1 2 3];
A2=[3 4 5];
y=A1.*A2-A2.^3+log10(1+A2.^2)
v. IntroMatlab.m
myfun1.m
Funzione
%Descrizione delloperazione implementata da myfun
%In ingresso ci devono essere due vettori della stessa
% lunghezza
%y=myfun(x1,x2)=x1.*x2-x2.^3+log10(1+x2^.2)
y=x1.*x2-x2.^3+log10(1+x2.^2);
y1=myfun(A1,A2)
commento
esegue lo script
23
Programmare in Matlab
Matlab è un linguaggio di programmazione
Esistono comandi per il controllo di flusso:
if…elseif…else...end
while…end
for
switch
break
24
La grafica in Matlab
v.
File matlab “grafica.m”
La grafica in Matlab
I grafici vengono visualizzati in
figure
Il comando di base per la grafica è
plot(y) – visualizza gli elementi del
vettore y rispetto agli indici del
vettore stesso
plot(x,y) – visualizza il vettore y
vs. il vettore x
E’ possibile modificare in modo
interattivo l’aspetto dei grafici
mediante il Plot Editing Mode
mediante riga di comando
26
Generare i dati
Per visualizzare una qualsiasi funzione y=f(x) in
Matlab, è SEMPRE necessario creare i vettori x e y
nel dominio di interesse:
(N.b. Matlab è un programma per l’analisi
numerica, non simbolica!)
%
un oscillatore armonico
t=[0:pi/100:2*pi];
x=cos(t);
y=sin(t);
E’ importante selezionare la “risoluzione” lungo l’asse x
sufficientemente elevata
27
Scegliere la finestra
figure(n) specifica su quale figura lavorare
figure(1)
plot(t,x)
% per disegnare entrambe le funzioni
plot(t,x,t,y)
subplot permette di suddividere la finestra in più grafici, per
visualizzare contemporaneamente diversi segnali
figure(1)
subplot(211),…
subplot(212),…
hold on mantiene il grafico presente
nella figura
clf - pulisce la figura corrente
28
Tracciare il grafico
Esistono diversi comandi per rappresentare i dati:
plot grafico 2-D con scala lineare lungo entrambi gli assi
loglog
grafico con scale logaritmiche per entrambi gli
assi
semilogx grafico con scala logaritmica per l’asse x e
lineare per l’asse y
semilogy grafico con scala logaritmica per l’asse y e
lineare per l’asse x
La struttura dei comandi è plot(x1,y1,x2,y2,…)
E’ possibile specificare il colore e il tipo di linea dei grafici
v. help plot
29
Grafici 3-D
Possibilità di tracciare grafici tridimensionali (mesh):
>>x=(0:0.01:2*pi);y=(0:0.01:2*pi);
>>for i=1:length(x)
for j=1:length(y)
z(i,j)=sin(x(i)+y(j));
end
end
>>mesh(x,y,z)
30
Gestione degli assi
axis ( [XMIN XMAX YMIN YMAX] )
grid on / grid off
inserisce le etichette negli assi, p.e. per specificare le unità di misura
legend
inserisce il titolo
xlabel, ylabel
abilita e disabilita la griglia
title
imposta la scala degli assi
inserisce la legenda
Queste caratteristiche si impostano anche in “Menu, Axes Properties”
31
Plot Editing Mode
Interfaccia user-friendly interattiva per modificare le
proprietà delle figure, delle linee, ecc. (Plot Editing Mode)
modificare le proprietà delle linee, degli assi, delle griglie
Menu “Edit”, “Figure Properties”, “Axes Properties”, “Current
Object Properties”
zoom
aggiungere linee, frecce e testo alle figure
32
Plot Editing Mode
E’ possibile modificare le caratteristiche di una linea (es.
colore, spessore, stile), selezionando la linea e andando
nel menu “Edit, Current Object Properties”
33
Esportare i grafici
Esportazione in Word/Powerpoint
In Matlab, “Edit, Copy Figure” per copiare la figura negli appunti di
Windows
In Matlab, “Edit, Copy Options” per modificare le impostazioni
Scegliere “Metafile” come “clipboard format”
In Word/Powerpoint, incollare con “Modifica, Incolla speciale” e
selezionare “Enhanced Metafile”
34
Control System Toolbox
v.
File matlab “ConTBox.m”
Il Control System Toolbox
Il Control System Toolbox mette a disposizione una serie
di strumenti per la modellazione, l’analisi e il controllo di
sistemi dinamici (come f.d.t. o in forma di stato)
E’ costituito da una collezione di comandi scritti come Mfile, che permettono di
inserire un sistema LTI in vari modi
come funzione di trasferimento
in forma di stato
manipolare sistemi dinamici
analizzare risposte temporali e frequenziali (diagrammi
di Bode, Nyquist)
progettare un controllore con varie tecniche (luogo delle
radici, progetto frequenziale, ecc.)
36
Il Control System Toolbox
E’ lo strumento utilizzato nel corso di Controlli
Automatici
In particolare si considerano:
Sistema
LTI definito
come f.d.t. in forma N(s)/D(s) e in forma poli/zeri
in forma di stato (definendo le matrici A, B, C, D)
Proprietà di una f.d.t. (poli, zeri, guadagno, ecc.)
Risposte temporali
Risposte frequenziali
Luogo delle radici
ecc.
37
Inserimento di una f.d.t. (1° metodo)
Inserire
b m s m + b m1s m1 + … + b 0
s +1
= 2
G(s) =
n
n 1
a n s + a n 1s + … + a 0
s + 2s + 3
Num=[1 1]; den=[1 2 3];
G=tf(num,den)
Transfer function:
s+1
------------------s^2 + 2 s + 3
Inseriti come polinomi
(Vedi lucidi precedenti)
38
Inserimento di una f.d.t. (2° metodo)
Inserire
(s z )
G(s) = k
,
(s p )
i
i
i
i
s 2 + 2n s + 2n
z i , pi C
(s + 2)(s 4)
= 20
(s + 3 + j)(s + 3 j)
si = n ± jn 1 2
>> k=20;Z=[-2,4];P=[-3+i, -3-i];G=zpk(Z,P,k)
Zero/pole/gain:
20 (s+2) (s-4)
---------------------(s^2 + 6s + 10)
39
Inserimento di una f.d.t. (3° metodo)
In modo più intuitivo, definire la variabile s come
s=tf(‘s’)
Inserire la f.d.t. come funzione razionale fratta in s
>> G3 = (s + 160)/(s^3 + 12 *s^2 + 30 *s + 100)
Transfer function:
s + 160
-----------------------------------s^3 + 12 s^2 + 30 s + 100
40
Inserimento di un sistema in forma di stato
Inserire
A=[0,1 ; -2,-1];
B=[0;1];
C=[1, 0];
D=0;
S=ss(A,B,C,D)
a=
x1 x2
x1 0 1
x2 -2 -1
b=
u1
x1 0
x2 1
c=
x1 x2
y1 1 0
d=
u1
y1 0
Continuous-time model.
41
Rappresentazione di un sistema dinamico
le rappresentazioni con ss, tf o zpk
sono equivalenti. Si può passare
dall’una all’altra indifferentemente
>> zpk(G3)
Zero/pole/gain:
(s+160)
----------------------------(s+10) (s^2 + 2s + 10)
>> tf(G3)
Transfer function:
s + 160
----------------------------------s^3 + 12 s^2 + 30 s + 100
>> ss(G3)
a=
x1
x2
x3
x1
-12 -1.875 -0.7813
x2
16
0
0
x3
0
8
0
b=
u1
x1 1
x2 0
x3 0
c=
x1
x2
x3
y1
0 0.0625 1.25
d=
u1
y1 0
Continuous-time model.
42
Proprietà delle f.d.t.
Con tfdata si estraggono il numeratore e il denominatore
della f.d.t.
[num,den] = tfdata(G1,'v')
Con zpkdata si estraggono gli zeri, i poli e la costante di
trasferimento della f.d.t.
[z,p,k] = zpkdata(G1,'v')
Con ssdata si estraggono le matrici del sistema scritto in
forma di stato (in una base nello spazio degli stati scelta da
Matlab)
[A,B,C,D] = ssdata(SYS)
43
Proprietà delle f.d.t.
Altre proprietà delle f.d.t.
damp
dcgain
pole, eig
zero
pzmap
pulsazione naturale e coeff. smorz. di poli e zeri
guadagno statico
poli
zeri
grafico di poli e zeri nel piano complesso
44
Risposte temporali
Comandi per generare risposte temporali
step
Risposta al gradino unitario
impulse
Risposta all’impulso di Dirac
Initial
Risposta al movimento libero
lsim
Risposta a un ingresso generico (definito mediante
vettore dell’asse dei tempi e vettore dell’ingresso)
Grafico:
step(S)
Memorizza i dati:
[T,Y]=step(S);
plot(T,Y)
•Caratteristiche della risposta al gradino:
• tempo di assestamento,
• tempo di salita,
• sovraelongazione, ecc.
(Valutabili dalla finestra della risposta –
pulsante destro del mouse)
45
Risposte temporali
Risposta a un ingresso generico
Successivamente si vedrà come realizzarla con Simulink
G1=tf(20*[1 8],[1 12 30 100]) ;
t = 0:0.01:20;
u = sin(t);
[y,t_y]=lsim(G1,u,t);
plot(t,u,t_y,y)
46
Analisi frequenziale
Bo d e D i a g ra m
Diagrammi di Bode
bode(G1)
20
10
0
-2 0
Margini di fase e ampiezza
30
-1 0
0
-4 5
Ph a se (d e g )
Ma g n i tu d e (d B)
40
margin(G1)
-9 0
-1 3 5
-1 8 0
-2 2 5
-2 7 0
G1=10/(s+1)
G2=20/(s^2+0.8*s+4)
L=G1*G2
-1
0
10
1
10
10
Fre q u e n cy (ra d /se c)
Bo d e D i a g ra m
Gm = -3 2 .6 9 d B (a t 2 .1 9 0 9 ra d /se c), Pm = -7 2 .1 0 6 d e g (a t 6 .0 3 0 2 ra d /se c)
bode(G1,G2,L)
Ma g n i tu d e (d B)
40
30
20
10
0
-1 0
-2 0
0
margin(L)
Ph a se (d e g )
-4 5
-9 0
-1 3 5
-1 8 0
-2 2 5
-2 7 0
-1
10
0
10
1
10
Fre q u e n cy (ra d /se c)
47
Root Locus
Luogo delle radici
0.7
8
0.56
0.42
0.28
0.14
0.82
6
rlocus
rlocus(L)
sgrid
0.91
4
s
i
x
A
g
a
m
I
2 0.975
0
0
8
6
4
2
-2 0.975
-4
0.91
-6
0.82
-8
-10
0.7
-8
0.56
-6
0.42
-4
0.28
-2
0.14
0
2
4
Dopo aver disegnato il luogo delle radici con rlocus, per trovare il guadagno del
regolatore K in retroazione che corrisponde a una certa posizione dei poli, si usa:
rlocfind(L)
In modo interattivo, si clicca sul luogo delle radici per indicare la posizione del
polo desiderato (es. poli c.c. con parte reale nulla). Matlab restituisce la posizione
dei poli e il guadagno:
Select a point in the graphics window
selected_point =
0.0073 + 2.1804i
ans =
0.0231
48
Interconnessione di sistemi
u(s)
G1(s)
G2(s)
y(s)
Serie:
Gseries = G1*G2
y(s)
Parallelo:
Gpar = G1+G2
G1(s)
u(s)
G2(s)
u(s)
G1(s)
y(s)
Feedback:
Gtot=feedback(G1,G2)
G2(s)
49
Esempio di interconnessione
Calcolare la f.d.t. y(s)/r(s)
1
G1 ( s ) =
;
s +1
r
4
2
G2 ( s ) = 2
; G3 ( s ) =
;
s + 0.8s + 4
s+2
G1 ( s )
G2 ( s )
y
G3 ( s )
50
Esempio di interconnessione…
>> s=tf('s');
>> G1=1/(s+1); G2=4/(s^2+0.8*s+4);
G3=2/(s+2);
>> fdt_dir=series(G1,G2);
>> Gtot=feedback(fdt_dir,G3)
Transfer function:
4s+8
------------------------------------------------s^4 + 3.8 s^3 + 8.4 s^2 + 13.6 s + 16
51
Esempio di interconnessione
zpk(Gtot)
4 (s+2)
--------------------------------------------------------------(s^2 + 3.707s + 4.5) (s^2 + 0.09294s + 3.556)
Oppure:
Gtot1=zpk(G1*G2/(1+G1*G2*G3))
4 (s+2) (s+1) (s^2 + 0.8s + 4)
-------------------------------------------------------------------------------------------(s+1) (s^2 + 3.707s + 4.5) (s^2 + 0.09294s + 3.556) (s^2 + 0.8s + 4)
ATTENZIONE: Per cancellare poli/zeri utilizzare minreal:
Gtot1=zpk(minreal(G1*G2/(1+G1*G2*G3)))
4 (s+2)
--------------------------------------------------------------(s^2 + 3.707s + 4.5) (s^2 + 0.09294s + 3.556)
52
Sistemi con ritardo finito
s=tf(‘s’);G=1/(s+1)
get(G)
num: {1}
den: {1}
Variable: 's'
Ts: 0
ioDelay: 0
InputDelay: 0
OutputDelay: 0
InputName: {''}
OutputName: {''}
InputGroup: {0x2 cell}
OutputGroup: {0x2 cell}
Notes: {}
UserData: []
Per inserire un ritardo finito di 1.0s
set(G,’InputDelay’,1);
step(G)
Step Response
1
0.9
0.8
e
d
u
t
i
l
p
m
A
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
1
2
3
4
5
6
7
53
Simulink
v.
file .mdl
Che cos’è?
Simulink è un programma per la modellazione, la
simulazione e l’analisi di sistemi dinamici descritti
da equazioni differenziali, mediante funzioni di
trasferimento, sistemi in forma di stato, ecc.
Permette
la simulazione di sistemi complessi
di ordine elevato
con nonlinearità
segnali di riferimento complessi
55
Come funziona?
La simulazione avviene in due passi:
Descrizione
del sistema mediante schema a blocchi
Simulink contiene una libreria di blocchi che
descrivono elementi algebrici e dinamici elementari
Funzioni di trasferimento, ecc
Guadagno, saturazioni, funzioni matematiche
L’utente compone lo schema a blocchi del sistema da
simulare mediante l’interconnessione dei blocchi
elementari
Simulazione del sistema
integrazione numerica delle equazioni differenziali, in
un certo intervallo di tempo
56
Interazione Matlab Simulink
Simulink interagisce con Matlab mediante il
workspace: i modelli simulink possono contenere
variabili del workspace.
Allo stesso modo il risultato delle simulazioni può
essere esportato nel workspace e analizzato con
Matlab.
Digitando ‘simulink’ dal prompt di Matlab si apre la
libreria dei modelli.
Da qui è possibile creare un nuovo modello (foglio
bianco) e comporre il sistema da simulare
mediante i diversi blocchi.
57
Simulink
Modello
Librerie
58
Diagrammi a blocchi
Interfaccia grafica:
Un sistema è rappresentato come un diagramma a blocchi, cioè come
blocchi interconnessi da linee
Ogni blocco rappresenta un sistema elementare:
sistema dinamico o algebrico
È caratterizzato da ingressi e uscite (una o più), e eventualmente da stati
interni (per i sistemi dinamici)
I blocchi possono essere parametrizzati (attraverso finestre)
Es. guadagno, poli/zeri di fdt, ecc.
u(t)
X(t)
y(t)
Es. integratore:
y(s)=1/s u(s)
Un segnale (scalare, vettoriale) è rappresentato da una linea che
collega blocchi
59
Simulink
Possibilità di modellare in modo semplice sistemi di
controllo, tenendo in considerazione:
generazione del riferimento (non solo gradini, rampe, ecc.)
disturbi presenti sul sistema
rumore di misura
nonidealità dell’impianto (es. saturazione dell’attuatore)
Il progetto, utilizzando Matlab, si realizza in 2 passi:
progetto nel dominio frequenziale (es. diagrammi di Bode), con il
luogo delle radici, ecc. (in Matlab)
verifica dei risultati in Simulink, nel dominio temporale. Possibilità
di modellare effetti secondari, dinamiche non modellate, ecc.
60
Modello Simulink
Step1
Step
R1
G
LTI System2
LTI System
Scope
Sine Wave
61
Libreria Simulink – elenco di alcuni blocchi
Continuous
Functions & tables
Integrator
Possibilità di definire condizioni iniziali, reset, saturazioni
State-space
Transfer function
nella forma numeratore/denominatore
transport delay
Ritardo puro
zero-pole
fcn, Matlab Fcn
Funzioni matematiche varie
Math
Abs
Gain
Guadagno
Logical operator, relational operator
Math function, trigonometric function
sum, product
sign
62
Libreria Simulink – elenco di alcuni blocchi
Nonlinear
dead-zone, saturation
Varie funzioni nonlineari
Manual switch
Signals & Systems
mux, demux
Unione di più segnali scalari in un unico segnale vettoriale (e viceversa) – v.
uso con “scope” e “to workspace”
From, Goto
Sinks
Display
Scope
Visualizzazione grafica durante la simulazione (e possibilità di salvataggio nel
workspace)
to_workspace
Salvataggio delle variabili nel workspace
63
Libreria Simulink – elenco di alcuni blocchi
Sources
Control System Toolbox
Clock
Constant
from workspace, pulse generator, repeating sequence
Per la generazione di segnali temporali “complessi”
sine
Step
gradino
LTI System
V. Help di MATLAB/Simulink per maggiori dettagli
64
Simulazione
Definire in un file .m
il modello dell’impianto (mediante fdt)
altri parametri del modello (es. Ampiezza/frequenza del rumore di
misura e dei disturbi, riferimenti, saturazioni, ecc.)
Il regolatore (mediante progetto frequenziale, ecc.)
Creare il modello Simulink .mdl
Impostare i parametri del solver della simulazione
Eseguire la simulazione (“run”)
Visualizzare i grafici
Direttamente in Simulink mediante Scope
In Matlab, importando i dati da Simulink o mediante blocchi “To
Workspace”, o mediante blocchi “Scope”
Generare i grafici mediante un file .m (per automatizzare la
procedura)
Stampare e esportare i grafici in Word/Powerpoint
65
Inserimento di una f.d.t. in Simulink
1
s+1
Specificando numeratore e denominatore
Transfer Fcn
(s-1)
s(s+1)
Specificando poli, zeri e guadagno
Zero-Pole
tf(1,[1 1])
Come in CST
LTI System
x' = Ax+Bu
y = Cx+Du
In forma di stato
State-Space
66
Come impostare i parametri della simulazione
time
Clock
Signal
Generator
To Workspace1
disturbo sin
Product
d
To Workspace4
Step2
disturbo a gradino
Sum2
e
u
Pulse
Generator
R
e
ingresso di riferimento
Sum
regolatore
G
u
saturazione
attuatore
impianto
y y sp
Sum1
[0.95 1.05]
Output
Constant
Repeating
Sequence
H
filtro in retroazione
Sum3
y
To Workspace
rumore di misura
Product1
y_sp
To Workspace3
Step3
u
To Workspace2
67
Come impostare i parametri della simulazione
(vedi Simulation, Simulation parameters…)
Istante iniziale e finale della simulazione
Tipo della tecnica di integrazione numerica
Max step size (massimo intervallo fra un istante di calcolo della soluzione
dell’ODE e il successivo)
DEVE essere scelto:
Minore della costante di tempo più veloce del sistema
Minore del periodo del segnale periodico più veloce che agisce sul
sistema (es. 1/10 più piccolo)
In modalità AUTO, si hanno simulazioni poco precise
Min step size (minimo intervallo fra un istante di calcolo della soluzione
dell’ODE e il successivo)
(es. variable step, ODE45)
Può essere utilizzato per ridurre il tempo richiesto per la simulazione (a
discapito della precisione)
Relative/absolute tollerance
Accuratezza del risultato ottenuto con la simulazione
Impostare “auto” o a valori sufficientemente piccoli
(es. Relative tolerance 1E-4)
68
Esportazione di dati da Simulink a Matlab
Con il blocco “to Workspace”
Scegliere il nome della variabile
Formato di salvataggio (save format):
Array – variabile in forma vettoriale
Struct with time:
Definita “Y” la variabile in cui
vengono salvati i dati, si accede ai
valori salvati con:
Y.time
– tempo
Y.signals.values
- variabili salvate
Utilizzare i comandi standard di
Matlab per generare i grafici
Es. Plot(Y.time, Y.signals.values)
69
Esportazione di dati da Simulink a Matlab
Con il blocco “Scope”
Properties
Impostare il numero di assi
Data History
NON selezionare “Limit data point to last”
Altrimenti viene salvato solo un numero limitato di dati della
simulazione
Save Data to workspace
salvataggio delle variabili, come con “to workspace”. Scegliere
“Struct with time” e il nome della variabile (es. Y)
Se si utilizzano più assi, i dati visualizzati nell’asse k-esimo
sono contenuti in Y.signals(k).values
70
Note sull’esportazione di dati da Simulink a Matlab
In Matlab, utilizzare i comandi per la rappresentazione delle variabili
Y.signals(k).values (es. plot)
Oppure utilizzare il comando “simplot(Y)” per generare in Matlab la
stessa figura ottenuta nello Scope
L’aspetto della figura (es. i colori) è modificabile (v. Edit Figure)
71
Esportare i grafici
Esportazione in Word/Powerpoint
In Matlab, “Edit, Copy Figure” per copiare la figura negli appunti di
Windows
In Matlab, “Edit, Copy Options” per modificare le impostazioni
Scegliere “Metafile” come “clipboard format”
In Word/Powerpoint, incollare con “Modifica, Incolla speciale” e
selezionare “Enhanced Metafile”
72
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement