CONTROLLI AUTOMATICI e AZIONAMENTI … di Matlab • Per il corso di Controlli Automatici •...

31
CONTROLLI AUTOMATICI E AZIONAMENTI ELETTRICI Ingegneria Meccatronica CONTROLLI AUTOMATICI e CONTROLLI AUTOMATICI e AZIONAMENTI ELETTRICI AZIONAMENTI ELETTRICI INTRODUZIONE A MATLAB INTRODUZIONE A MATLAB Ing. Alberto Bellini Tel. 0522 522626 e-mail: [email protected] http://www.dismi.unimo.it/ INTRODUZIONE A MATLAB INTRODUZIONE A MATLAB

Transcript of CONTROLLI AUTOMATICI e AZIONAMENTI … di Matlab • Per il corso di Controlli Automatici •...

CONTROLLI AUTOMATICI E AZIONAMENTI ELETTRICIIngegneria Meccatronica

CONTROLLI AUTOMATICI eCONTROLLI AUTOMATICI eAZIONAMENTI ELETTRICIAZIONAMENTI ELETTRICIINTRODUZIONE A MATLABINTRODUZIONE A MATLAB

Ing. Alberto Bellini

Tel. 0522 522626

e-mail: [email protected]

http://www.dismi.unimo.it/

INTRODUZIONE A MATLABINTRODUZIONE A MATLAB

Parte Azionamenti elettriciParte Azionamenti elettrici

Introduzione a Matlab e Simulink per l’analisi dei sistemi di controllo lineari, dei sistemi elettromeccanici e degli azionamenti elettrici

Sintesi del controllo di macchina e di azionamento di motori DC PM

Verifica delle prestazioni dell’azionamento, attraverso la simulazione numerica

Introduzione a Matlab -- 2Cristian Secchi Controlli Automatici

numerica

Utilizzo di MatlabUtilizzo di Matlab

• Per il corso di Controlli Automatici

• Strumento software per la testare i concetti appresi a lezione e per la verifica degli esercizi svolti a lezione

• Utilizzato per lo sviluppo di algoritmi di controllo

Introduzione a Matlab -- 3Cristian Secchi Controlli Automatici

• Come Ingegneri

• Ambiente di sviluppo software utilizzato nelle aziende per la modellistica, il progetto di sistemi di controllo, per la loro implementazione e per il loro sviluppo completo.

MatlabMatlab

Matlab è un programma per l'analisi numerica e la simulazione disistemi dinamici.

• Analisi: Modellazione e analisi del comportamento dei sistemi dinamici

• Sintesi dei sistemi di controllo: ci sono delle funzioni che possono essere utilizzate per la sintesi di controllori

Introduzione a Matlab -- 4Cristian Secchi Controlli Automatici

• Simulazione: E’ possibile verificare le prestazioni di un sistema simulandone il comportamento

• Programmazione: E’ possibile sviluppare algoritmi utilizzando i costrutti messi a disposizione per la programmazione

• Grafici: Consente di analizzare e visualizzare graficamente dati di interesse

MatlabMatlab

Esso contiene un nucleo di funzioni di base general purpose; esistono, poi, delle estensioni, i Toolbox, che consentono di estendere le del programma aggiungendo funzioni specialistiche.

Introduzione a Matlab -- 5Cristian Secchi Controlli Automatici

Durante il corso impareremo a utilizzare il programma sia per l'Analisi di sistemi dinamici che per la Sintesi di sistemi di controllo. Utilizzeremo intoolbox Control e Simulink

MatlabMatlab

Matlab è un ambiente a riga di comando: quando si apre il programma cisi trova a un prompt dal quale possibile immettere un comando.

In Matlab qualsiasi dato è trattato come una variabile.

Per introdurre una variabile basta assegnarle un nome e un valore inquesto modo:

Introduzione a Matlab -- 6Cristian Secchi Controlli Automatici

questo modo:

>> x=12

La variabile x vale 12. Omettendo il ; viene stampato il nomedella variabile e il suo valore (echo off). Se si digita soltanto un valore e non lo si assegna a una variabile, Matlab assegna di default tale valore alla variabile ans

MatlabMatlab

• Le variabili immesse dal prompt costituiscono il workspace (spazio di lavoro) di Matlab.

• Per sapere quali sono le variabili presenti nel workspace in un dato momento si utilizza il comando who

• Per cancellare una variabile dal workspace si utilizza il comando clear<nome variabile>

Introduzione a Matlab -- 7Cristian Secchi Controlli Automatici

<nome variabile>

• Per cancellare tutte le variabili dal workspace si utilizza il comando clear all

Vettori e MatriciVettori e Matrici

Possiamo definire una matrice con la seguente sintassi:

>> A=[1,2,3,4;5,6,7,8;9,10,11,12]

Gli elementi della stessa riga sono separati da , mentre le varie righeDal ;. E’ possibile estrarre da una matrice un singolo elemento oppure una sottomatrice.

associa alla variabile element il valore

Introduzione a Matlab -- 8Cristian Secchi Controlli Automatici

>> element = A(1,2)associa alla variabile element il valore dell'elemento di riga 1 e colonna 2 della matrice A. In particolare sarà element=2

>> subA = A(1:3,1:2)associa alla variabile subA la sottomatrice composta dalle prime 3 righe e dalle prime 2 colonne. In particolare sarà subA=[1,2;5,6;9,10];

Vettori e MatriciVettori e Matrici

Un vettore è una particolare matrice.

• >> c=[4;5;6];

• >> r=[4,5,6];

Vettore colonna

Vettore riga

Si può far generare a Matlab un vettore automaticamente.

Introduzione a Matlab -- 9Cristian Secchi Controlli Automatici

>> t=[0:0.1:10]

Il comando genera un vettore riga con valori che vanno da 0 a 10con passo 0.1.

Possiamo operare con le variabili: possiamo costruire una variabileutilizzando i valori memorizzati in altre variabili. Possiamocostruire vettori con variabili scalari, matrici con vettori e matricicon altre matrici.

Vettori e MatriciVettori e Matrici

>> c1 = A(:,2)associa alla variabile c1 la seconda colonna della matrice A. In particolare sarà c1=[2;6;10]

Possiamo estrarre vettori riga e vettori colonna da una matrice.

Introduzione a Matlab -- 10Cristian Secchi Controlli Automatici

>> r1= A(1,:)associa alla variabile r1 prima riga della matrice A. In particolare sarà r1=[1,2,3,4];

Vettori e MatriciVettori e Matrici

Esistono comandi che generano automaticamente alcune matrici notevoli

A=eye(n); A è la matrice indentità di ordine n

A è una matrice quadrata di ordine n

Introduzione a Matlab -- 11Cristian Secchi Controlli Automatici

A=zeros(n);A è una matrice quadrata di ordine n

i cui elementi sono zero

A=ones(n)A è una matrice quadrata di ordine n i cui

elementi sono uno

Esempio: Costruzione di una matriceEsempio: Costruzione di una matrice

Costruire una matrice 6 x 6 del tipo:

Dove:

Introduzione a Matlab -- 12Cristian Secchi Controlli Automatici

Dove v1, v2 e v3 sono vettori colonna definibili dall'utente,O3 è la matrice ones(3), I3 è la matrice identità 3x3

Operatori comparativiOperatori comparativi

In Matlab il valore 0 rappresenta il valore booleanoFALSE mentre tutti gli altri valori numerici rappresentano il

valore booleano TRUE. Si dispone di 6 operatori:

Introduzione a Matlab -- 13Cristian Secchi Controlli Automatici

Se l'espressione è vera ritorna un 1 altrimenti 0.

Un paragone tra due matrici viene eseguito elemento per elemento.

Operatori LogiciOperatori Logici

Operatori Binari: Il formato dell'operazione logica èRisultato=operatore(A,B). Gli operatori sono:

Introduzione a Matlab -- 14Cristian Secchi Controlli Automatici

Operatori Monari: Il formato dell'operazione logica èRisultato=operatore (A). Gli operatori sono:

Principali comandi sulle matriciPrincipali comandi sulle matrici

Trasposta

>>B=A’ ( oppure >>B=transpose(A) )

Assegna a B(i,j) il valore A(j,i) =AT

Determinante

>> d=det(A)

Introduzione a Matlab -- 15Cristian Secchi Controlli Automatici

>> d=det(A)

Assegna alla variabile d il valore del determinante di A, se A è quadrata

Rango

>> r=rank(A)

Assegna alla variabile r il valore del rango di A.

Principali comandi sulle matriciPrincipali comandi sulle matrici

Inversa

>>I=inv(A)

Assegna a I l’inversa della matrice A (se esiste!)

Traccia

>> t=trace(A)

Introduzione a Matlab -- 16Cristian Secchi Controlli Automatici

>> t=trace(A)

Assegna alla variabile t il valore della traccia di A

Autovalori

>> e=eig(A)

Assegna alla variabile e un vettore contenente gli autovalori di A.

L’help onlineL’help online

• Digitando Help dal prompt di comando compare la lista completa dei toolbox presenti. Digitando help < nome toolbox> si ha l'elenco completo delle funzioni disponibili per quel toolbox. Digitando help<nome funzione> si accede alla descrizione di quel comando.

• Dal menu Help� Help window: Non è altro che l'help che si può ottenere da

linea di comando messo sotto forma di finestra grafica di più agevole consultazione. Analogamente si può eseguire il comando doc <nome comando> per ottenere in forma

Introduzione a Matlab -- 17Cristian Secchi Controlli Automatici

agevole consultazione. Analogamente si può eseguire il comando doc <nome comando> per ottenere in forma grafica le funzioni disponibili.

� Help Desk: Un help in HTML molto completo e di facilenavigazione fornito anche di svariati esempi

Per avere maggiori informazioni sugli operatori visti finora e sualtri operatori su matrici consultare la sezione dell' help windowmatlab/matfun

Esempio: Risoluzione di un sistema lineareEsempio: Risoluzione di un sistema lineare

Si risolva il seguente sistema

Introduzione a Matlab -- 18Cristian Secchi Controlli Automatici

Esempio: Risoluzione di un sistema lineareEsempio: Risoluzione di un sistema lineare

Abbiamo un sistema del tipo Ax=b.

Passi per la risoluzione:

1. Costruire A e b

Introduzione a Matlab -- 19Cristian Secchi Controlli Automatici

1. Costruire A e b

2. Verificare se A è invertibile

3. Trovare la soluzione: x = inv(A)*b

Costrutti per la programmazione MATLABCostrutti per la programmazione MATLAB

• Utilizzati per una programmazione evoluta

• Molto simili ai costrutti del C

• Consentono elaborazioni complesse dei dati

Introduzione a Matlab -- 20Cristian Secchi Controlli Automatici

Costrutti fondamentali:

• IF• FOR•WHILE

IFIF

• Utilizzato quado l'esecuzione di un certo numero di istruzioni è vincolato dal soddisfacimento di un certa espressione logica.

Sintassi:

if ( espressione logica)istruzioni;

Introduzione a Matlab -- 21Cristian Secchi Controlli Automatici

istruzioni;else

istruzioni;end

IF: EsempioIF: Esempio

if (temperatura > 25) ariafredda = 1;

else ariafredda=0;

Controllo di temperatura di una stanza

Introduzione a Matlab -- 22Cristian Secchi Controlli Automatici

ariafredda=0; end

FORFOR

• Utilizzato quando un blocco di istruzioni deve essere ripetuto un ben determinato numero di volte.

Sintassi:

for indice=init:step:end

Introduzione a Matlab -- 23Cristian Secchi Controlli Automatici

istruzioni;

end

Step è l’incremento del contatore ad ogni ciclo. E’ opzionale, se omesso vale 1

FOR: EsempioFOR: Esempio

Si vuole costruire una matrice 3x3

k = 3;for m = 1:k

for n = 1:ka(m,n) = 1/(m+n -1);

end

Introduzione a Matlab -- 24Cristian Secchi Controlli Automatici

Otteniamo a=[1, 1/2, 1/3; ½, 1/3, ¼; 1/3, ¼, 1/5]

endend

WHILEWHILE

• Utilizzato quando un blocco di istruzioni deve essere ripetuto finché una condizione logica risulta vera.

Sintassi:

Introduzione a Matlab -- 25Cristian Secchi Controlli Automatici

while ( espressione logica)

istruzioni;

end

WHILE: EsempioWHILE: Esempio

Controllo di temperatura di una stanza

while (Temperatura>20)ariafredda=1;

end

Introduzione a Matlab -- 26Cristian Secchi Controlli Automatici

BREAKBREAK

• Utilizzato quando si deve interrompere un ciclo (for o while) prima del previsto.

Esempio

… % inizializzazione di y(i) svolta in precedenzafor i=1:1000

a(i) =y(i)

Introduzione a Matlab -- 27Cristian Secchi Controlli Automatici

Per maggiori informazioni consultare l'help a matlab/lang

a(i) =y(i)if (a(i) > 1000)

break;end

end

MM--filesfiles

Matlab dispone di un editor a cui si accede mediante il comando edit. I file prodotti con questo editor vengono salvati con l’estensione .m e sono eseguibili da MATLAB.

Possiamo costruire dei file, con estensione .m, che contengono una serie di comandi e costrutti Matlab. Chiamando il file dal prompt dei comandi eseguiamo tutti i comandi in esso contenuti.

Introduzione a Matlab -- 28Cristian Secchi Controlli Automatici

eseguiamo tutti i comandi in esso contenuti.

Un m-file è come uno script (batch). E’ solo un modo di raggruppare i comandi. Le modifiche sulle variabili nonsono locali ma si riflettono direttamente sul workspace

Esempio: Costruire un M-file per la risoluzione di un sistema lineare

MM--filesfiles

%% Risolvere un sistema di equazioni lineari%clearclose all%A = [1,1,1,-1; 1,1,-1,0; 1,-1,1,0; 1,2,-3,0];B = [1;2;0;2];%

Introduzione a Matlab -- 29Cristian Secchi Controlli Automatici

% Ax = B%% x = inv(A)*B%x = inv(A)*B

% identifica una riga di commento

MM--functionfunction

Possiamo aggiungere alla funzioni preesistenti, funzione costruite da noi per risolvere problemi specifici.

Le variabili definite all'interno di una function sono LOCALI

Sintassi:

function [output]=nomefunction(input)

Introduzione a Matlab -- 30Cristian Secchi Controlli Automatici

istruzioni;

All'interno del blocco di istruzioni le variabili output vengono settati e il loro valore viene ritornato al termine della funzione stessa.

Non occorre usare return come in C.

Anche le function vengono salvate con estensione .m

FunctionFunction

function [mean,stdev] = stat(x)n = length(x);mean = sum(x)/n;stdev = sqrt(sum((x-mean).^2/n));

Esempio. Calcolo di alcune funzione statistiche di un vettore

Il blocco va salvato in un file .m di nome stat.m, e si può utilizzare come di seguito, purché il file stat.m sia nella stessa directory o in una directory

Introduzione a Matlab -- 31Cristian Secchi Controlli Automatici

seguito, purché il file stat.m sia nella stessa directory o in una directory inserita nel path (File->Set Path...)

dati = rand (10,1); % crea un vettore di numeri

casuali [m,var] = stat(dati);