controlli automatici e azionamenti … di matlab • per il corso di controlli automatici •...
Post on 16-Feb-2019
249 Views
Preview:
TRANSCRIPT
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: alberto.bellini@unimore.it
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);
top related