Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano?...

72
Introduzione a Matlab e Simulink Matteo Sartini matteo . sartini@unibo . it http: //www-lar . deis . unibo . it/people/msartini Tel (051-20)93872

Transcript of Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano?...

Page 1: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

Introduzione a

Matlab e Simulink

Matteo [email protected]://www-lar.deis.unibo.it/people/msartiniTel (051-20)93872

Page 2: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

2

Cosa è Matlab?

Matlab (MATrix LABoratory) è un ambiente diprogrammazione per applicazioni scientifiche, di analisinumerica 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 lasimulazione di sistemi dinamici;

SimulinkAltri toolbox non di interesse nel corso di ControlliAutomatici LA/LB (Signal Processing, Financial ecc…)

Page 3: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

3

Perché Matlab?

Per il corso:

strumento utile per la verifica personale dei concettiappresi, per la verifica degli esercizi e comeapprofondimento.

programma utilizzato per sviluppare il progetto di sistemidi controllo (Controlli Automatici LB)

Analisi dei sistemi (SISO, MIMO, lineari ecc…)

Sintesi dei controllori

Come ingegneri:

ambiente di sviluppo software utilizzato nelle aziende peril progetto di sistemi di controllo, per la loroimplementazione e sviluppo completo

Page 4: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

4

L’interfaccia grafica

Command window•Matlab è un ambiente a riga di comando.•I comandi Matlab possono essere eseguitidirettamente nella finestra di comando conun prompt.

Workspace: lista delle variabiliCommand History: lista dei comandi recentiCurrent Directory: lista dei file nella cartella correnteLaunch Pad: accesso rapido a Help, Toolbox, Simulink

Page 5: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

5

L’interfaccia grafica

Editor di testoScrittura di script (M-file), cioèprogrammi che contengonosequenze di comandi Matlab

Figura

Simulink

interfaccia grafica a finestre:• figure•Schemi Simulink

Page 6: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

6

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)

Page 7: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

7

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 sulfunzionamento della funzione.

Matlab Help WindowSi esegue dal menu Help, contiene informazioni su tuttele funzionalità di Matlab, Simulink e i toolboxHelp dettagliati in formato:

Html (per accesso rapido)

Pdf (per tutorial o approfondimenti)Da scaricare dal sito www.mathworks.com

Page 8: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

8

Matlab come calcolatrice

Valutare espressioni aritmetiche (al prompt dei comandi)Valutare

>> 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!!!

22 4 sin(0.2 ) e+ + +

v. File IntroMatlab.m

Page 9: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

9

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 aPer cancellare tutte le variabili>> clear allLe matrici sono l’elemento di base in Matlab

Ogni oggetto in Matlab è trattato come una matriceGli 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 efunzioni su matrici

Page 10: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

10

Il workspace

Ogni variabile definita in questo modo viene conservata inmemoria 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>

Page 11: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

11

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 inseritaCon “;” non viene visualizzato il risultato dell’istruzione a schermo

Utile nel caso di risultati “lunghi” (es. con matrici di dimensione moltoelevata)

Vettori riga e colonna:riga = [1 2 3 4];colonna = [1;2;3;4];b=[1,2,3,4]‘;

v. File IntroMatlab.m

Page 12: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

12

Operazioni matriciali

in Matlab tutte le operazioni sono relative amatrici

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=[]

v. File IntroMatlab.m

Page 13: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

13

Come accedere agli elementi di una matrice

singoloelemento

>> A(1,2)3

>> A(end, end)

1

una sottomatrice

>>A(1:3 , 2:4)

ans =

3 2 13

10 11 8

6 7 12

selezionare la prima riga>> A(1,:)ans = 16 3 2 13

selezionare la prima colonna>> A(:,1)ans = 16 5 9 4

Sottomatrici (es. 2a e 4a riga)>> A([2,4],:)ans = 5 10 11 8 4 15 14 1

A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1

v. File IntroMatlab.m

wildcard

Per accedere a intere righe o colonne di una matrice, si usa la wildcard “:”

Page 14: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

14

Come accedere agli elementi di una matrice

singoloelemento

>> A(1,2)3

>> A(end, end)

1

una sottomatrice

>>A(1:3 , 2:4)

ans =

3 2 13

10 11 8

6 7 12

selezionare la prima riga>> A(1,:)ans = 16 3 2 13

selezionare la prima colonna>> A(:,1)ans = 16 5 9 4

Sottomatrici (es. 2a e 4a riga)>> A([2,4],:)ans = 5 10 11 8 4 15 14 1

A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1

v. File IntroMatlab.m

Page 15: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

15

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)

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)

v. File IntroMatlab.m

A =

2 3

1 2

4 5

B =

1 3 4 6

2 5 3 6

C =

8 21 17 30

5 13 10 18

14 37 31 54

* =

Page 16: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

16

Operazioni matriciali vs. operazioni elemento perelemento

Normalmente le operazioni *, / sono operazioni matriciali.Per eseguire operazioni elemento per elemento siantepone 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 .* ./ .^

v. File IntroMatlab.m

>>A=[1,2;3,4]A =

1 2 3 4

>> A*Aans =

7 10 15 22

>> A.*Aans =

1 4 9 16

Operazionematriciale

Operazioneelemento per elemento

Page 17: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

17

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 cheassume in un insieme di isatnti di tempo, quindimediante un vettore).

Page 18: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

18

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

d=[1:5,2:2:10,2]d = 1 2 3 4 5 2 4 6 8 10 2

e=[3.2:-.1:2.5] e =

3.2 3.1 3.0 2.9 2.8 2.7 2.6 2.5

Utile perla selezione degli elementi di una matricela generazione di vettori “temporali” equispaziati

v. File IntroMatlab.m

Valore inizialePasso

Valore finale

Page 19: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

19

Polinomi e loro operazioniSono definiti come vettori: Es:

>>pol=[1 3 -15 -2 9]pol=

1 3 -15 -2 9Calcolo delle radici:

>>roots(pol)>>ans=

-5.5745 2.5836 -0.7951 0.7860

Page 20: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

20

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

Page 21: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

21

M-file

Matlab è un linguaggio di programmazione e unambiente di calcolo interattivo

M-file: file contenente codice Matlab

Vengono scritti mediante un qualsiasi editor ditesto e eseguiti chiamandoli dalla linea dicomando

In Matlab è disponibile un editor di testo (Edit)

2 tipi di M-file: script e funzioni

Page 22: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

22

Script e funzioni

Gli script si usano per automatizzare le sequenze dicomandi.

Quando viene eseguito uno script, l’esecuzione dei comandi è deltutto equivalente alla scrittura del codice con la tastiera.

Si utilizzano per evitare di riscrivere la stessa sequenza dicomandi 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 daiparametri in ingresso.

Le variabili sono locali alla funzione.

function [output]=nomefunction(input)istruzioni;

Page 23: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

23

Esempio di script e di funzione

Script

A1=[1 2 3];

A2=[3 4 5];

y=A1.*A2-A2.^3+log10(1+A2.^2)

y1=myfun(A1,A2)

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);

esegue lo script

commento

v. IntroMatlab.m

myfun1.m

Page 24: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

24

Programmare in Matlab

Matlab è un linguaggio di programmazione

Esistono comandi per il controllo di flusso:

if…elseif…else...end

while…end

for

switch

break

Page 25: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

La grafica in Matlab

v. File matlab “grafica.m”

Page 26: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

26

La grafica in Matlab

I grafici vengono visualizzati infigure

Il comando di base per la grafica èplot(y) – visualizza gli elementi delvettore y rispetto agli indici delvettore stessoplot(x,y) – visualizza il vettore yvs. il vettore x

E’ possibile modificare in modointerattivo l’aspetto dei grafici

mediante il Plot Editing Mode

mediante riga di comando

Page 27: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

27

Generare i dati

Per visualizzare una qualsiasi funzione y=f(x) inMatlab, è SEMPRE necessario creare i vettori x e ynel dominio di interesse:(N.b. Matlab è un programma per l’analisinumerica, non simbolica!)

% un oscillatore armonicot=[0:pi/100:2*pi];x=cos(t);y=sin(t);

E’ importante selezionare la “risoluzione” lungo l’asse xsufficientemente elevata

Page 28: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

28

Scegliere la finestra

figure(n) specifica su quale figura lavorarefigure(1)

plot(t,x)

% per disegnare entrambe le funzioni

plot(t,x,t,y)

subplot permette di suddividere la finestra in più grafici, pervisualizzare contemporaneamente diversi segnali

figure(1)subplot(211),…subplot(212),…

hold on mantiene il grafico presentenella figura

clf - pulisce la figura corrente

Page 29: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

29

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 gliassi

semilogx grafico con scala logaritmica per l’asse x elineare per l’asse y

semilogy grafico con scala logaritmica per l’asse y elineare per l’asse x

La struttura dei comandi è plot(x1,y1,x2,y2,…)

E’ possibile specificare il colore e il tipo di linea dei graficiv. help plot

Page 30: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

30

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));

endend

>>mesh(x,y,z)

Page 31: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

31

axis ( [XMIN XMAX YMIN YMAX] )imposta la scala degli assi

grid on / grid offabilita e disabilita la griglia

titleinserisce il titolo

xlabel, ylabelinserisce le etichette negli assi, p.e. per specificare le unità di misura

legendinserisce la legenda

Queste caratteristiche si impostano anche in “Menu, Axes Properties”

Gestione degli assi

Page 32: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

32

Plot Editing Mode

Interfaccia user-friendly interattiva per modificare leproprietà delle figure, delle linee, ecc. (Plot Editing Mode)

modificare le proprietà delle linee, degli assi, delle griglieMenu “Edit”, “Figure Properties”, “Axes Properties”, “CurrentObject Properties”

zoom aggiungere linee, frecce e testo alle figure

Page 33: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

33

Plot Editing Mode

E’ possibile modificare le caratteristiche di una linea (es.colore, spessore, stile), selezionando la linea e andandonel menu “Edit, Current Object Properties”

Page 34: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

34

Esportare i grafici

Esportazione in Word/PowerpointIn Matlab, “Edit, Copy Figure” per copiare la figura negli appunti diWindows

In Matlab, “Edit, Copy Options” per modificare le impostazioni

Scegliere “Metafile” come “clipboard format”

In Word/Powerpoint, incollare con “Modifica, Incolla speciale” eselezionare “Enhanced Metafile”

Page 35: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

Control System Toolbox

v. File matlab “ConTBox.m”

Page 36: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

36

Il Control System Toolbox

Il Control System Toolbox mette a disposizione una seriedi strumenti per la modellazione, l’analisi e il controllo disistemi dinamici (come f.d.t. o in forma di stato)

E’ costituito da una collezione di comandi scritti come M-

file, 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 (diagrammidi Bode, Nyquist)

progettare un controllore con varie tecniche (luogo delleradici, progetto frequenziale, ecc.)

Page 37: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

37

Il Control System Toolbox

E’ lo strumento utilizzato nel corso di ControlliAutomatici

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.

Page 38: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

38

Inserimento di una f.d.t. (1° metodo)

Inserire

Num=[1 1]; den=[1 2 3];G=tf(num,den)Transfer function: s + 1------------------- s^2 + 2 s + 3

m m 1

m m 1 0

n n 1 2

n n 1 0

b s b s bG(s)

a s a s a

s 1

s 2s 3

+ + +=

+ + +

+=

+ +

Inseriti come polinomi(Vedi lucidi precedenti)

Page 39: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

39

Inserimento di una f.d.t. (2° metodo)

Inserire

>> 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)

iii i

ii

(s z )G(s) k , z ,p

(s p )

(s 2)(s 4)20

(s 3 j)(s 3 j)

=

+=

+ + +

C

2 2

n n

2

n ni

s 2 s

s j 1

+ +

= ±

Page 40: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

40

Inserimento di una f.d.t. (3° metodo)

In modo più intuitivo, definire la variabile s comes=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

Page 41: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

41

Inserimento di un sistema in forma di statoInserire 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.

Page 42: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

42

Rappresentazione di un sistema dinamico

le rappresentazioni con ss, tf o zpksono equivalenti. Si può passaredall’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 0b = u1 x1 1 x2 0 x3 0c = x1 x2 x3 y1 0 0.0625 1.25d = u1 y1 0Continuous-time model.

Page 43: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

43

Proprietà delle f.d.t.

Con tfdata si estraggono il numeratore e il denominatoredella f.d.t.[num,den] = tfdata(G1,'v')

Con zpkdata si estraggono gli zeri, i poli e la costante ditrasferimento della f.d.t.[z,p,k] = zpkdata(G1,'v')

Con ssdata si estraggono le matrici del sistema scritto informa di stato (in una base nello spazio degli stati scelta daMatlab)[A,B,C,D] = ssdata(SYS)

Page 44: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

44

Proprietà delle f.d.t.

Altre proprietà delle f.d.t.damp pulsazione naturale e coeff. smorz. di poli e zeri

dcgain guadagno statico

pole, eig poli

zero zeri

pzmap grafico di poli e zeri nel piano complesso

Page 45: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

45

Risposte temporaliComandi per generare risposte temporali

step Risposta al gradino unitarioimpulse Risposta all’impulso di DiracInitial Risposta al movimento liberolsim 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)

Page 46: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

46

Risposte temporali

Risposta a un ingresso genericoSuccessivamente 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)

Page 47: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

47

Analisi frequenziale

Diagrammi di Bodebode(G1)

Margini di fase e ampiezzamargin(G1)

G1=10/(s+1)G2=20/(s^2+0.8*s+4)L=G1*G2

bode(G1,G2,L)

margin(L)

Bode Diagram

Frequency (rad/sec)

Ph

ase

(d

eg

)M

ag

nit

ud

e (

dB

)

-20

-10

0

10

20

30

40

10-1

100

101

-270

-225

-180

-135

-90

-45

0

Bode Diagram

Frequency (rad/sec)

Ph

ase

(d

eg

)M

ag

nit

ud

e (

dB

)

-20

-10

0

10

20

30

40Gm = -32.69 dB (at 2 .1909 rad/sec), Pm = -72.106 deg (at 6 .0302 rad/sec)

10-1

100

101

-270

-225

-180

-135

-90

-45

0

Page 48: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

48

Luogo delle radici

rlocusrlocus(L)

sgrid

Root Locus

Imag Axis

-10 -8 -6 -4 -2 0 2 4

-8

-6

-4

-2

0

2

4

6

8

0 8 6 4 2

0.975

0.91

0.82

0.7 0.56 0.42 0.28 0.14

0.975

0.91

0.82

0.7 0.56 0.42 0.28 0.14

Dopo aver disegnato il luogo delle radici con rlocus, per trovare il guadagno delregolatore 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 delpolo desiderato (es. poli c.c. con parte reale nulla). Matlab restituisce la posizionedei poli e il guadagno:Select a point in the graphics windowselected_point = 0.0073 + 2.1804ians = 0.0231

Page 49: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

49

Interconnessione di sistemi

Serie:

Gseries = G1*G2G1(s) G2(s)

u(s) y(s)

Parallelo:

Gpar = G1+G2

Feedback:

Gtot=feedback(G1,G2)

G1(s)

G2(s)

u(s) y(s)

G1(s)u(s) y(s)

G2(s)

Page 50: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

50

Esempio di interconnessione

Calcolare la f.d.t. y(s)/r(s)

1 2 32

1 4 2( ) ; ( ) ; ( ) ;

1 0.8 4 2G s G s G s

s s s s= = =

+ + + +

1( )G s

3 ( )G s

2 ( )G sr y

Page 51: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

51

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:

4 s + 8

-------------------------------------------------

s^4 + 3.8 s^3 + 8.4 s^2 + 13.6 s + 16

Page 52: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

52

Esempio di interconnessionezpk(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)

Page 53: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

53

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: []

set(G,’InputDelay’,1);

step(G)

Step Response

Amplitude

0 1 2 3 4 5 6 70

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Per inserire un ritardo finito di 1.0s

Page 54: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

Simulink

v. file .mdl

Page 55: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

55

Che cos’è?

Simulink è un programma per la modellazione, lasimulazione e l’analisi di sistemi dinamici descrittida equazioni differenziali, mediante funzioni ditrasferimento, sistemi in forma di stato, ecc.

Permette la simulazione di sistemi complessi

di ordine elevato

con nonlinearità

segnali di riferimento complessi

Page 56: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

56

Come funziona?

La simulazione avviene in due passi:Descrizione del sistema mediante schema a blocchi

Simulink contiene una libreria di blocchi chedescrivono elementi algebrici e dinamici elementari

Funzioni di trasferimento, ecc

Guadagno, saturazioni, funzioni matematiche

L’utente compone lo schema a blocchi del sistema dasimulare mediante l’interconnessione dei blocchielementari

Simulazione del sistema

integrazione numerica delle equazioni differenziali, inun certo intervallo di tempo

Page 57: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

57

Interazione Matlab Simulink

Simulink interagisce con Matlab mediante ilworkspace: i modelli simulink possono contenerevariabili del workspace.Allo stesso modo il risultato delle simulazioni puòessere esportato nel workspace e analizzato conMatlab.Digitando ‘simulink’ dal prompt di Matlab si apre lalibreria dei modelli.Da qui è possibile creare un nuovo modello (fogliobianco) e comporre il sistema da simularemediante i diversi blocchi.

Page 58: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

58

Simulink

LibrerieModello

Page 59: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

59

Diagrammi a blocchiInterfaccia grafica:Un sistema è rappresentato come un diagramma a blocchi, cioè comeblocchi interconnessi da lineeOgni blocco rappresenta un sistema elementare:

sistema dinamico o algebricoÈ caratterizzato da ingressi e uscite (una o più), e eventualmente da statiinterni (per i sistemi dinamici)I blocchi possono essere parametrizzati (attraverso finestre)

Es. guadagno, poli/zeri di fdt, ecc.

X(t)u(t) y(t)

Es. integratore:y(s)=1/s u(s)

Un segnale (scalare, vettoriale) è rappresentato da una linea checollega blocchi

Page 60: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

60

Simulink

Possibilità di modellare in modo semplice sistemi dicontrollo, 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 illuogo delle radici, ecc. (in Matlab)

verifica dei risultati in Simulink, nel dominio temporale. Possibilitàdi modellare effetti secondari, dinamiche non modellate, ecc.

Page 61: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

61

Modello Simulink

Step1

Step

Sine Wave

Scope

R1

LTI System2

G

LTI System

Page 62: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

62

Libreria Simulink – elenco di alcuni blocchiContinuous

IntegratorPossibilità di definire condizioni iniziali, reset, saturazioni

State-spaceTransfer function

nella forma numeratore/denominatoretransport delay

Ritardo purozero-pole

Functions & tablesfcn, Matlab Fcn

Funzioni matematiche varieMath

AbsGain

GuadagnoLogical operator, relational operatorMath function, trigonometric functionsum, productsign

Page 63: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

63

Libreria Simulink – elenco di alcuni blocchiNonlinear

dead-zone, saturationVarie funzioni nonlineari

Manual switch

Signals & Systemsmux, demux

Unione di più segnali scalari in un unico segnale vettoriale (e viceversa) – v.uso con “scope” e “to workspace”

From, Goto

SinksDisplayScope

Visualizzazione grafica durante la simulazione (e possibilità di salvataggio nelworkspace)

to_workspaceSalvataggio delle variabili nel workspace

Page 64: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

64

Libreria Simulink – elenco di alcuni blocchiSources

Clock

Constant

from workspace, pulse generator, repeating sequence

Per la generazione di segnali temporali “complessi”

sine

Step

gradino

Control System ToolboxLTI System

V. Help di MATLAB/Simulink per maggiori dettagli

Page 65: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

65

Simulazione

Definire in un file .m il modello dell’impianto (mediante fdt)altri parametri del modello (es. Ampiezza/frequenza del rumore dimisura e dei disturbi, riferimenti, saturazioni, ecc.)Il regolatore (mediante progetto frequenziale, ecc.)

Creare il modello Simulink .mdlImpostare i parametri del solver della simulazione

Eseguire la simulazione (“run”)Visualizzare i grafici

Direttamente in Simulink mediante ScopeIn Matlab, importando i dati da Simulink o mediante blocchi “ToWorkspace”, o mediante blocchi “Scope”Generare i grafici mediante un file .m (per automatizzare laprocedura)

Stampare e esportare i grafici in Word/Powerpoint

Page 66: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

66

Inserimento di una f.d.t. in Simulink

Specificando numeratore e denominatore

Specificando poli, zeri e guadagno

Come in CST

(s-1)

s(s+1)

Zero-Pole

1

s+1

Transfer Fcn

tf(1,[1 1])

LTI System

x' = Ax+Bu

y = Cx+Du

State-Space

In forma di stato

Page 67: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

67

Come impostare i parametri della simulazione

saturazione

attuatore

rumore di misura

R

regolatoreingresso di riferimento

G

impianto

H

filtro in retroazione

disturbo sin

disturbo a gradino

d

To Workspace4

y_sp

To Workspace3

u

To Workspace2

time

To Workspace1

y

To Workspace

Sum3

Sum2

Sum1Sum

Step3

Step2

Signal

Generator

Repeating

Sequence

Pulse

Generator

Product1

Product

Output[0.95 1.05]

Constant

Clock

e

e

y y sp

u

u

Page 68: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

68

Come impostare i parametri della simulazione(vedi Simulation, Simulation parameters…)

Istante iniziale e finale della simulazioneTipo della tecnica di integrazione numerica

(es. variable step, ODE45)

Max step size (massimo intervallo fra un istante di calcolo della soluzionedell’ODE e il successivo)

DEVE essere scelto:Minore della costante di tempo più veloce del sistemaMinore del periodo del segnale periodico più veloce che agisce sulsistema (es. 1/10 più piccolo)In modalità AUTO, si hanno simulazioni poco precise

Min step size (minimo intervallo fra un istante di calcolo della soluzionedell’ODE e il successivo)

Può essere utilizzato per ridurre il tempo richiesto per la simulazione (adiscapito della precisione)

Relative/absolute tolleranceAccuratezza del risultato ottenuto con la simulazioneImpostare “auto” o a valori sufficientemente piccoli(es. Relative tolerance 1E-4)

Page 69: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

69

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 cuivengono salvati i dati, si accede aivalori salvati con:

Y.time – tempo

Y.signals.values- variabili salvate

Utilizzare i comandi standard diMatlab per generare i grafici

Es. Plot(Y.time, Y.signals.values)

Page 70: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

70

Esportazione di dati da Simulink a MatlabCon il blocco “Scope”

PropertiesImpostare il numero di assiData History

NON selezionare “Limit data point to last”Altrimenti viene salvato solo un numero limitato di dati dellasimulazione

Save Data to workspacesalvataggio 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-esimosono contenuti in Y.signals(k).values

Page 71: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

71

Note sull’esportazione di dati da Simulink a MatlabIn Matlab, utilizzare i comandi per la rappresentazione delle variabiliY.signals(k).values (es. plot)

Oppure utilizzare il comando “simplot(Y)” per generare in Matlab lastessa figura ottenuta nello Scope

L’aspetto della figura (es. i colori) è modificabile (v. Edit Figure)

Page 72: Introduzione a Matlab e Simulink - LAR-DEIS Home Page · Quali parti di Matlab ci interessano? Matlab concetti base, uso delle matrici, vettori, ecc. la grafica con Matlab Control

72

Esportare i grafici

Esportazione in Word/PowerpointIn Matlab, “Edit, Copy Figure” per copiare la figura negli appunti diWindows

In Matlab, “Edit, Copy Options” per modificare le impostazioni

Scegliere “Metafile” come “clipboard format”

In Word/Powerpoint, incollare con “Modifica, Incolla speciale” eselezionare “Enhanced Metafile”