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)

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?

Schemi di controllo

  • 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 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 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.
  • 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 per avvicinare la y alla y.

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 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. Se y è tempo variante e quindi abbiamo una y(t) si parla di un problema di tracking.

Specifiche di controllo

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.

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 specifiche di robustezza, cioè imposto che possiamo raggiungere il nostro desiderio e che quindi che a regime raggiungiamo x, 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 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.

Controllo in feedback

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.

Tecnica del pole placement

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 sistema LTI si dirà completamente controllabile se per ogni x0 esiste un’azione di controllo u(t) o uk seconda che stia nel TC o nel TD tale per cui a partire dalle condizioni iniziali x0 possiamo raggiungere uno stato desiderato xd.

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 x0. Questa definizione di controllabilità si traduce in termini di 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 solo 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.

Operare in MATLAB

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

Uso di Simulink

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 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 “ ; ”.

Funzioni utili in MATLAB

  • 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.
  • 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 sensitive. 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.

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.

Librerie Simulink

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

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

Collegamenti e visualizzazione

Per vedere ora quanto esce andiamo a collegare a questo blocco lo Scope che sta in Sinks. 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 x1 che x2. Per semplicità di notazione e per 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. 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 x1 mentre quello blu la x2. Se clicchiamo sullo step possiamo andare a settare diversi parametri.

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.

Rappresentazione a blocchi

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 (integrator); 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à x2 al primo, questo lo ricaviamo da x2 che ci dice che la derivata di x1 è proprio uguale a x2. Inserisco due blocchi Scope che mi permettono di osservare x1 e x2. In ingresso al secondo integratore che ci dà x2 andando a leggere l’equazione dinamica riportata nel sistema sopra possiamo osservare che gli dobbiamo dare - 2 x2 +u(t) dove abbiamo immaginato che questa 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 selezioneremo.

Ora dobbiamo sottrarre 2 x2 allo step quindi consideriamo un blocco sum e facendo doppio click possiamo 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 -.

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