• Non ci sono risultati.

Esercitazioni (03 03 2011)

N/A
N/A
Protected

Academic year: 2021

Condividi "Esercitazioni (03 03 2011)"

Copied!
31
0
0

Testo completo

(1)

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: alberto.bellini@unimore.it http://www.dismi.unimo.it/

INTRODUZIONE A MATLAB

INTRODUZIONE A MATLAB

(2)

Parte Azionamenti elettrici

Parte 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

(3)

Utilizzo di Matlab

Utilizzo 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

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.

(4)

Matlab

Matlab

Matlab è un programma per l'analisi numerica e la simulazione di sistemi 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

• 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

(5)

Matlab

Matlab

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.

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

(6)

Matlab

Matlab

Matlab è un ambiente a riga di comando: quando si apre il programma ci si 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 in questo modo:

questo modo:

>> x=12

La variabile x vale 12. Omettendo il ; viene stampato il nome

della 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

(7)

Matlab

Matlab

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>

<nome variabile>

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

(8)

Vettori e Matrici

Vettori 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 righe Dal ;.

E’ possibile estrarre da una matrice un singolo elemento oppure una sottomatrice.

associa alla variabile element il valore >> 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

(9)

Vettori e Matrici

Vettori 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.

>> t=[0:0.1:10]

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

Possiamo operare con le variabili: possiamo costruire una variabile utilizzando i valori memorizzati in altre variabili. Possiamo

costruire vettori con variabili scalari, matrici con vettori e matrici con altre matrici.

(10)

Vettori e Matrici

Vettori 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.

>> r1= A(1,:)

associa alla variabile r1 prima riga della matrice A. In particolare sarà

(11)

Vettori e Matrici

Vettori 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 A=zeros(n); A è una matrice quadrata di ordine n i cui elementi sono zero

(12)

Esempio: Costruzione di una matrice

Esempio: Costruzione di una matrice

Costruire una matrice 6 x 6 del tipo:

Dove:

Dove v1, v2 e v3 sono vettori colonna definibili dall'utente,

(13)

Operatori comparativi

Operatori comparativi

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

valore booleano TRUE. Si dispone di 6 operatori:

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

(14)

Operatori Logici

Operatori Logici

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

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

(15)

Principali comandi sulle matrici

Principali 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) >> d=det(A)

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

>> r=rank(A)

(16)

Principali comandi sulle matrici

Principali comandi sulle matrici

Inversa >>I=inv(A)

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

>> t=trace(A) >> t=trace(A)

Assegna alla variabile t il valore della traccia di A Autovalori

>> e=eig(A)

(17)

L’help online

L’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 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 su altri operatori su matrici consultare la sezione dell' help window matlab/matfun

(18)

Esempio: Risoluzione di un sistema lineare

Esempio: Risoluzione di un sistema lineare

Si risolva il seguente sistema

(19)

Esempio: Risoluzione di un sistema lineare

Esempio: Risoluzione di un sistema lineare

Abbiamo un sistema del tipo Ax=b.

Passi per la risoluzione:

1. Costruire A e b 1. Costruire A e b

2. Verificare se A è invertibile

(20)

Costrutti per la programmazione MATLAB

Costrutti per la programmazione MATLAB

• Utilizzati per una programmazione evoluta • Molto simili ai costrutti del C

• Consentono elaborazioni complesse dei dati

Costrutti fondamentali: • IF

• FOR • WHILE

(21)

IF

IF

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

Sintassi: if (espressione logica) istruzioni; istruzioni; else istruzioni; end

(22)

IF: Esempio

IF: Esempio

if (temperatura > 25) ariafredda = 1; else ariafredda=0;

Controllo di temperatura di una stanza

ariafredda=0; end

(23)

FOR

FOR

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

Sintassi:

for indice=init:step:end

istruzioni;

end

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

(24)

FOR: Esempio

FOR: Esempio

Si vuole costruire una matrice 3x3

k = 3; for m = 1:k for n = 1:k a(m,n) = 1/(m+n -1); end Otteniamo a=[1, 1/2, 1/3; ½, 1/3, ¼; 1/3, ¼, 1/5] end end

(25)

WHILE

WHILE

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

Sintassi:

while (espressione logica)

istruzioni;

(26)

WHILE: Esempio

WHILE: Esempio

Controllo di temperatura di una stanza

while (Temperatura>20) ariafredda=1; end

(27)

BREAK

BREAK

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

Esempio

… % inizializzazione di y(i) svolta in precedenza

for i=1:1000 a(i)=y(i)

Per maggiori informazioni consultare l'help a matlab/lang

a(i)=y(i)

if (a(i) > 1000) break;

end end

(28)

M

M-

-files

files

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.

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 non sono locali ma si riflettono direttamente sul workspace

(29)

M

M-

-files

files

%

% Risolvere un sistema di equazioni lineari % clear close all % A = [1,1,1,-1; 1,1,-1,0; 1,-1,1,0; 1,2,-3,0]; B = [1;2;0;2]; % % Ax = B % % x = inv(A)*B % x = inv(A)*B

(30)

M

M-

-function

function

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

(31)

Function

Function

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

Riferimenti

Documenti correlati

I punti Q, R sono anche collegati all’origine O da altre due sbarrette uguali alle precedenti (vedi figura). Il piano `e posto in rotazione attorno all’asse y con velocit`a

Esercizio 1: Si consideri il sistema meccanico formato da 2 punti materiali P, Q di massa m vin- colati ad un piano verticale in cui introduciamo il riferimento Oxy, con asse

Il punto A `e l’estremo di un’asta di lunghezza ℓ e massa trascurabile, libera di ruotare nel piano con l’altro estremo fissato nell’origine; tale punto `e inoltre

(Suggerimento: si usi il parametro ausiliario θ come indicato in figura per calcolare la posizione di A

CORSO DI SISTEMI DINAMICI COMPITO

b) Determinare se l’origine `e un punto fisso stabile, instabile, attrattivo, asintotica- mente

a) si scrivano l’energia cinetica, l’energia potenziale, la funzione di Lagrange e l’equazione di

Inoltre sul corpo agisce un’accelerazione di gravit`a di intensit`a g rivolta verso l’asse delle