Estratto del documento

INDICE

Lezione 1 (pagina 2)

Lezione 2 (pagina 35)

Lezione 3 (pagina 69)

Lezione 4 (pagina 113)

Lezione 5 (pagina 147)

Lezione 6 (pagina 214)

Lezione 7 (pagina 260)

Lezione 8 (pagina 303) 1

Lezione 1

In questa lezione vedremo Matlab dopo aver fatto una piccola ricapitolazione delle lezioni precedenti.

Per sistema intendiamo qualsiasi entità fisica caratterizzata da parti che interagiscono con l’ambiente e con

tutto quello che ci sta attorno. Esistono due varietà di sistemi

- Tempo Continuo ->

- Tempo Discreto ->

Dato un sistema l’obiettivo è farne l’analisi.

Il controllo consiste nel dire noto il sistema, nota la sua dinamica come posso influenzare il sistema per

fargli assumere un comportamento desiderato?

Abbiamo due tipi di schemi di controllo

1) Schema in Feed Forward detto anche in catena aperta; dato il processo P l’uscita controllata

sarà y(t) ed in ingresso abbiamo l’ingresso manipolabile che uscirà da un controllore C che

conterrà al suo interno un algoritmo che farà in modo che la variabile controllata y(t) raggiunga

effettivamente l’uscita desiderata y (t). In questo senso il controllore è detto proprio in

d

feed-forward o in catena aperta, proprio perché non c’è nessuna chiusura tra quello che ho

effettivamente, la y(t) e la y . Questo tipo di controllo non è molto efficiente perché in questo

d

caso il controllore non ha istante per istante delle misure della variabile controllata. Per tale

ragione questa azione di controllo viene ad essere definita cieca nel senso che non riusciamo

mai a sapere se la variabile controllata ha raggiunto o meno il desiderio.

2) Controllo di tipo Feed-Back anche detto a catena chiusa dove abbiamo una retroazione di

uscita; il controllo in questo caso va a pesare la differenza tra quello che effettivamente ho y e

la mia y che rappresenta il desiderio e quindi è possibile regolare il controllo di conseguenza

d

per avvicinare la y alla y.

d

Nel caso invece di una retroazione di stato, in ingresso al controllo non avremo tutta l’uscita y

ma retroazioneremo lo stato x(t). Questo significa che si ha una serie di sensori che permette le

2

misurazioni istante per istante delle variabili di stato che quindi risulta possibile portare in

retroazione al controllo tutte le misure di tutte le variabili di stato.

Questo secondo schema di controllo è sicuramente più efficiente ma è anche il più costoso.

Se y = costante parleremo di problema di regolazione

d

Se y è tempo variante e quindi abbiamo una y (t) si parla di un problema di tracking.

d d

Quando abbiamo un problema di controllo, essenzialmente dobbiamo soddisfare delle specifiche; le

specifiche di controllo che si possono presentare possono essere in primo luogo delle specifiche di regime;

dire questo significa dire che a regime voglio arrivare al mio desiderio.

considerando t -> ∞ significa dire che il desiderio siamo consci che verrà raggiunto in un tempo minimo pari

a 5 τ che rappresenta il tempo di assestamento e dove τ rappresenta proprio la costante di tempo. Se

invece il sistema risulta essere in principio instabile però attraverso un’opportuna progettazione di una

legge di controllo riusciamo a stabilizzarlo allora riusciamo a dire che riusciremo a raggiungere

effettivamente la y .

d

In questo caso possiamo ad esempio avere un sistema che è di per sé stabile però ad esempio vogliamo che

stabilizzi in un tempo più veloce e quindi ad esempio vogliamo sovrapporre alla dinamica originale del

sistema che comunque è una dinamica stabile, perché ad esempio gli autovalori del sistema di partenza

sono comunque a parte reale minore di zero, stiamo ragionando a TC, però magari abbiamo una dinamica

troppo lenta e quindi vogliamo velocizzarla. Un altro caso che si può presentare è quello di un sistema che a

ciclo aperto presenta delle oscillazioni e si vogliono cancellare queste oscillazioni e quindi per fare questo si

vuole che il sistema non abbia poli che siano complessi e coniugati ma vogliamo che siano solo a parte

reale.

Si può anche volere soddisfare delle

cioè imposto che possiamo raggiungere il nostro desiderio e che quindi che a regime raggiungiamo x ,

d

vogliamo anche che a questo desiderio ci possiamo permanere, cioè non vogliamo che l’azione di un

disturbo che può presentarsi, ma anche delle incertezze parametriche perché quando andiamo a modellare

3

un sistema si commettono degli errori di approssimazione nell’andare a scrivere delle equazioni che

rappresentano la dinamica del sistema, possano farci scostare da questa posizione raggiunta. Per specifiche

di robustezza quindi si intendono quelle specifiche che nonostante si commettano degli errori di

approssimazione, nonostante ci siano degli ingressi esogeni di disturbo, oppure delle incertezze

parametriche, non solo riusciamo a raggiungere le condizioni di regime ma anche permanerci.

Il controllo in Feedback di per sé risulta essere robusto al disturbo. In catena aperta abbiamo visto infatti

che un buon Tuning di K che ci consente di raggiungere il regime non riesce a reiettare il disturbo mentre

un controllo in feedback permette di soddisfare sia la specifica di regime che reiettare il disturbo.

In questi ragionamenti che stiamo facendo stiamo sempre considerando che lo stato risulti essere sempre

completamente raggiungibile e che quindi abbiamo sempre la possibilità di misurare tutte le variabili di

stato.

Tutte le specifiche che vogliamo soddisfare si traducono in termini di autovalori del sistema a ciclo chiuso

nel piano complesso e quindi della matrice che abbiamo chiamato Â; tale matrice permette di

rappresentare la dinamica del sistema controllato a ciclo chiuso e agendo su tale matrice si può fare in

modo che questa matrice abbia tutte le caratteristiche imposte dalle specifiche. In sostanza quello che

facciamo con l’azione di controllo è sovrapporre alla dinamica di partenza del sistema, una nuova matrice

dinamica, una nuova dinamica in termini di  che cancella la dinamica originaria del sistema,

sovrapponendo una dinamica desiderata che faccia in modo di soddisfare tutte le specifiche.

Oggi vedremo la tecnica del Pole Placement in matlab.

Il Pole Placement come detto nelle scorse lezioni è una legge in retroazione di stato che permette di

portare gli autovalori nella zona desiderata del piano.

Quanto detto fa sì che il nostro sistema a ciclo chiuso (c.c) diventi un sistema autonomo.

Questo tipo di azione fa sì che posso scegliere opportunamente questo vettore, perché stiamo ragionando

in termini di sistema di ordine superiore al primo. Quello che stiamo dicendo è che vanno scelti in maniera

opportuna i valori da dare a K per fare in modo che a c.c, quindi quando otteniamo questo sistema

autonomo, la matrice  effettivamente sia in grado di soddisfare tutte le specifiche desiderate.

L’assunzione che stiamo facendo è che il sistema sia controllabile, tuttavia non è detto che tutti i processi

siano controllabili, cioè non è sempre detto che riusciamo a trovare un’azione di controllo che permetta a

tutti i sistemi a ciclo chiuso di fare quanto richiesto. Abbiamo dato la definizione di controllabilità che è una

proprietà strutturale del sistema e l’abbiamo data secondo Kalman per il quale abbiamo che dato un 4

sistema LTI si dirà completamente controllabile se per ogni x esiste un’azione di controllo u(t) o u a

0 k

seconda che stia nel TC o nel TD tale per cui a partire dalle condizioni iniziali x possiamo raggiungere uno

0

stato desiderato x .

d

quindi sono sempre in grado di trovare un controllo che permette di raggiungere da qualsiasi punto iniziale

il valore desiderato. Questa è una definizione di controllabilità completa nella misura in cui vale per ogni x .

0

Questa definizione di controllabilità si traduce in termini controllabilità per verificare se il sistema è

effettivamente controllabile e questo ci consente di andare a costruire la matrice di controllabilità C che è

del tipo

questo criterio di controllabilità ci dice che il sistema è controllabile se e sole se questa matrice ha rango

pieno. Quindi se il sistema è di ordine n questo vorrà dire che il rango di C sarà uguale a n.

Fatto questo preambolo vediamo come operare in matlab.

La Command window permette di fare qualsiasi operazione e restituisce il risultato ma non permette di

salvare quanto facciamo

Nell’Editor invece è possibile creare un foglio di lavoro e salvarlo e per questo tenderemo a lavorare qui.

Nel Workspace si vanno a salvare tutte le variabili che abbiamo definito. 5

In Current Folder invece possiamo impostare la nostra cartella di lavoro, cioè dove verranno ad essere

salvati i nostri lavori

Una panoramica dello spazio di lavoro è la seguente

Quando gli schemi diventeranno troppo complessi andremo ad usare matlab solo per la definizione delle

variabili ed andremmo a rappresentare il nostro schema a blocchi all’interno di Simulink.

Per aprire Simulink basta cliccare su HOME in modo che compaia l’icona di Simulink e poi cliccarci sopra

Se apriamo Simulink e clicchiamo su blank model possiamo creare un progetto.

La finestra che si apre ci permette di modellare il nostro sistema in modo semplice attraverso l’uso di

diagrammi a blocchi. 6

Supponiamo ora di considerare il seguente sistema e vediamo come risolverlo usando simulink

Ciò che vogliamo trovare sono i guadagni K da assegnare al sistema per risolverlo.

Per l’uscita possiamo immaginare che lo stato sia completamente accessibile e che quindi

Dove D pesa il contributo diretto dell’ingresso sulla variabile di uscita. D deve avere tante righe quante

sono le variabili di uscita e tante colonne quante sono gli ingressi.

L’obiettivo in questo esempio è progettare una retroazione di stato tale da portare i poli del sistema a ciclo

chiuso in -2 ± j. In qualche modo questi quindi rappresentano

dove λ*rappresenta la λ di desiderio.

Prima cosa che si fa è andare in matlab a rappresentare il nostro sistema e poi lo si modella in Simulink.

Con - clear puliamo il workspace

- clc pulisce la command window,

è sempre buona norma cominciare gli script con questi comandi per pulire lo spazio di lavoro

Per salvare lo script andare su EDITOR e cliccare su Save

Definiamo ora tutte le matrici che definiscono il sistema.

La matrice tipicamente si scrive per righe ed i termini della stessa riga vanno semplicemente separati con

uno spazio, mentre gli elementi di righe diverse con il “ ; ” . 7

- eye(dimensione) crea una matrice identità; ad esempio con C = eye (2), crea una matrice identità di

dimensione 2x2.

- zeros (righe, colonne) costruisce una matrice di zeri e all’interno delle parentesi vengono indicate

le righe e le colonne.

Mettere il “ ; ” dopo un comando significa non voler vedere il risultato dell’operazione a video nella

Command Window, le matrici create vengono visualizzate nel Workspace.

La specifica del problema ci chiede di andare a mettere gli autovalori del sistema a c.c in - 2±j

Posso verificare se la mia specifica è soddisfatta andando a valutare tutti gli autovalori della matrice A

Il comando che si adopera è eig.

Quindi con

- eig (matrice_degli_autovalori) posso andare a valutare gli autovalori della matrice in esame

- help comando_matlab nella Command Window permette di avere una descrizione generale del

comando sul quale stiamo richiamando l’help. Con help eig ad esempio abbiamo una descrizione

dettagliata del comando eig

Controlliamo allora gli autovalori 8

Se al comando eig diamo due ingressi esso ci restituisce non solo gli autovalori ma anche gli autovettori.

La matrice L è una matrice che per colonne avrà gli autovettori mentre la matrice T sarà una matrice

diagonale che mi dà gli autovalori che si troveranno appunto posizionati lungo la diagonale principale.

Prima di poter progettare la specifica di controllo chiediamoci se il sistema è controllabile.

N.B Matlab è case sensitve.

Il comando ctrb (A, B) dategli in pasto le matrici A e B ci restituisce la matrice di controllabilità

Il comando rank(matrice) ci dà il rango della matrice che gli si dà in pasto 9

Il risultato ottenuto ci dice che la matrice di controllabilità ha rango pieno e quindi il sistema è controllabile.

Facciamo ora un’analisi a ciclo aperto in Simulink; tale tipo di analisi in realtà l’abbiamo già fatta quando

abbiamo visto che il sistema non soddisfaceva le specifiche e quindi quando abbiamo fatto

quindi quando siamo andati a calcolare gli autovalori di A e quando abbiamo visto che questi non

coincidevano con quelli dettati dalla specifica.

Andiamo ora a fare un’analisi a ciclo aperto in Simulink, andiamo quindi a modellare il sistema assegnato ed

andiamo a valutarne la sua risposta indiciale, cioè la risposta al gradino, questo prima di andare a

progettare il controllore.

In Simulink possiamo rappresentare il sistema a tempo continuo.

Se apriamo la library possiamo selezionare i diversi blocchetti, che possono essere ottenuti anche facendo

click sul foglio bianco e scrivendo il nome del blocco. 10

La libreria di blocchi più usati è la Commonly Used Blocks.

In Continuous possiamo trovare tutti i blocchi che sono usati nel TC.

In Discrete troviamo invece tutti i blocchi necessari a modellare il TD.

In Math Operations troviamo tutte le operazioni matematiche che possiamo adoperare; abbiamo ad

esempio il gain

tale blocco ci consente di fare un prodotto, inserendo un numero all’interno di questo triangolino permette

di moltiplicare quanto diamo in ingresso al gain per un guadagno (appunto gain da dove discende il nome)

In Sinks troviamo ad esempio il blocco scope che permette di vedere a video il valore assunto da un

determinato segnale collegato a questo blocco

In Sources troviamo tutti i segnali che possiamo generare come ad esempio dalla rampa ad un segnale

sinusoidale ecc. 11

In Sources possiamo trovare tutti i segnali che possiamo generare 12

Se andiamo in Continuous possiamo selezionare il blocco State-Space che ci serve per la nostra soluzione

Trascinatoci il blocco State-Space cliccando sopra possiamo aprire il blocco che permette di configurarlo, se

abbiamo definito le varie variabili in codice matlab questi valori appariranno automaticamente nel

Workspace e verranno definiti in base al codice, altrimenti andranno definiti singolarmente. 13

Ad esempio nel codice ci siamo dimenticati le condizioni iniziali che possiamo quindi definire qui nel box; le

condizioni iniziali saranno un vettore colonna 2x1 e supponiamo di considerare [0;0]

Per vedere ora quanto esce andiamo a collegare a questo blocco lo Scope che sta in Sinks 14

In run otterrò allora due uscite dal sistema perché abbiamo considerato che C è una matrice identità e

quindi l’uscita del sistema y sarà uguale a x e quindi vedremo sia x che x Per semplicità di notazione e per

1 2.

ricordarci che cosa ci viene fuori da un collegamento andando a fare doppio click sulla freccetta possiamo

dare un nome al collegamento che può ad esempio essere un nome esemplificativo per il collegamento.

Mettiamo ora in ingresso un segnale come ad esempio un gradino (step), settiamo la durata

dell’esperimento che nel nostro caso sarà 10 secondi e facciamo click su run

Otteniamo allora la risposta del sistema 15

Se clicchiamo su View -> Legend possiamo mettere una piccola legenda in modo da capire bene il grafico.

vediamo allora che il tratto giallo rappresenta la x mentre quello blu la x .

1 2

Se clicchiamo sullo step possiamo andare a settare diversi parametri 16

Step Time che in questo caso è settato ad 1 ci dice il tempo al quale parte il gradino, possiamo poi andare a

settare il valore iniziale e finale che desideriamo imporre al segnale.

Se vogliamo vedere il segnale in ingresso al sistema basterà mettere un altro Scope in ingresso

Così facendo possiamo osservare il valore del segnale che nel nostro caso sarà quindi 17

La rappresentazione a blocchi sopra è una rappresentazione che può essere fatta solo per i sistemi lineari.

Questo stesso schema può essere rappresentato in modo equivalente attraverso il blocco integratore

(integretor); tale modo di rappresentare il sistema sarà l’unico modo che abbiamo per rappresentare

sistemi non lineari. Per questo tipo di rappresentazione abbiamo bisogno di tanti integratori quanti sono le

variabili di stato; la initial condition per questi blocchi integratori dovrà essere zero perché abbiamo settato

che le condizioni iniziali siano [0;0]

collego ora un secondo integratore che mi dà x al primo, questo lo ricaviamo dà

2

che ci dice che la derivata di x è proprio uguale a x .

1 2

Inserisco due blocchi Scope che mi permettono di osservare x e x .

1 2

In ingresso al secondo integratore che ci dà x andando a leggere l’equazione dinamica riportata nel

2

sistema sopra possiamo osservare che gli dobbiamo dare - 2 x +u(t) dove abbiamo immaginato che questa

2

u(t) sia uno step unitario. Per poter rappresentare questa operazione possiamo usare come blocchi un gain

ed una sum; con sum possiamo sommare due segnali, con gain moltiplichiamo i blocchi in input per un

valore costante e possiamo andando ad indagare il blocco scegliere se effettuare una moltiplicazione per

uno scalare (element wise gain) che effettuerà una moltiplicazione elemento per elemento oppure per una

matrice (matrix wise gain), noi abbiamo bisogno di uno scalare pari a 2 e quindi selezioneremmo

ora dobbiamo sottrarre 2 x allo step quindi consideriamo un blocco sum e facendo doppio click possiamo

2

andare a selezionare i segni di questo blocco sommatore e la forma; possiamo ad esempio settarlo in

questo modo con forma rettangolare e segni + e - 18

un blocco pu&ogr

Anteprima
Vedrai una selezione di 10 pagine su 349
Appunti Controlli Automatici MATLAB (Parte Pratica) Pag. 1 Appunti Controlli Automatici MATLAB (Parte Pratica) Pag. 2
Anteprima di 10 pagg. su 349.
Scarica il documento per vederlo tutto.
Appunti Controlli Automatici MATLAB (Parte Pratica) Pag. 6
Anteprima di 10 pagg. su 349.
Scarica il documento per vederlo tutto.
Appunti Controlli Automatici MATLAB (Parte Pratica) Pag. 11
Anteprima di 10 pagg. su 349.
Scarica il documento per vederlo tutto.
Appunti Controlli Automatici MATLAB (Parte Pratica) Pag. 16
Anteprima di 10 pagg. su 349.
Scarica il documento per vederlo tutto.
Appunti Controlli Automatici MATLAB (Parte Pratica) Pag. 21
Anteprima di 10 pagg. su 349.
Scarica il documento per vederlo tutto.
Appunti Controlli Automatici MATLAB (Parte Pratica) Pag. 26
Anteprima di 10 pagg. su 349.
Scarica il documento per vederlo tutto.
Appunti Controlli Automatici MATLAB (Parte Pratica) Pag. 31
Anteprima di 10 pagg. su 349.
Scarica il documento per vederlo tutto.
Appunti Controlli Automatici MATLAB (Parte Pratica) Pag. 36
Anteprima di 10 pagg. su 349.
Scarica il documento per vederlo tutto.
Appunti Controlli Automatici MATLAB (Parte Pratica) Pag. 41
1 su 349
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Ingegneria industriale e dell'informazione ING-INF/04 Automatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Dadox94 di informazioni apprese con la frequenza delle lezioni di Controlli Automatici e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di Napoli Federico II o del prof Santini Stefania.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community