Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione...

41
Guida al toolbox di controllo in Matlab/Simulink Carlo Alberto Avizzano

Transcript of Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione...

Page 1: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Guida al toolbox di controllo in Matlab/Simulink

Carlo Alberto Avizzano

Page 2: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

I sistemi LTI

• Gia’ visti nelle precedenti lezioni sono di quattro tipologie di rappresentazione:

– ABCD

– ZPK

– TF

– FRD

Page 3: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

L’esempio di un motore a corrente continua PM con inerzia di carico

• Equazioni costituenti:Equazione elettrica

Equazione meccanica

Page 4: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Modello ABCD

• Equazioni costituenti:Equazione elettrica

Equazione meccanica

Page 5: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Modello ABCD

• Equazioni di uscita:

Page 6: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Inserendo valori caratteristici (MKS)

• R = 2.0

• L=0.5

• Kem=Ki= 0.015

• Kv=0.2

• J=0.02

• A = [-R/L –Kem/L; Ki/J –Kv/J]

• B = [1/L ; 0]

• C [ 0 1]

• D = [0]

• DCmotor=ss(A,B,C,D);

Page 7: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Realizzazione tramite schema matlab

Anello Elettrico

1

I

V

w

I

ElectricLoop

I w

CurrentLoop

1

V

Anello Meccanico

• Linearizziamo tramite LinMOD

1

I

R

V=iR

Kw

Gain1

1/L

Gain

1

s

Current

2

w

1

V

1

w

Kv

Viscosity

1

s

Omega

1/Jt

Mass

Ki

EmGain

1

I

Page 8: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Derivazione delle equazioni e confronto

• A=

• -4.0000 -0.0300

• -0.7500 -10.0000

• B =

• 2

• 0

• C = [ 0 1 ]

• D = 0

• A=

• -10.0000 0.7500

• -0.0300 -4.0000

• B=

• 0

• 2

• C = [ 1 0 ]

• D = 0

Page 9: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Comportamento di Linmod

• Linmod usa una perturbazione deglo stato e dell’ingresso per trovare il comportamento del sistema. Generando un numero sufficiente di campioni si puo’determinare il vettore (A,B,C,D). Y= [X U](ABCD).

• L’ordine degli stati e non e’ predefinito• Un comando rileva l’associazione attribuita agli stati:

Simulink.BlockDiagram.getInitialState(‘model') ;• Per sistemi non lineari punti di linearizzazione diversi

dall’origine possono essere definiti passandoli come parametro.

• Detti punti saranno i riferimenti intorno ai quali generare le perturbazioni

Page 10: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Caratteristiche dei sistemi

Page 11: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Inversione e trasposizione

Page 12: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Composizione

Page 13: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Prime operazioni di analisi

• Damp ci informa per sistemi stabili sulle frequenze di smorzamento naturali

• Dcgain ci riporta il guadagno del sistema in zero (nel nostro caso la velocita motore x volt).

• Pole/eig ritorna la lista dei poli e degli autovalori

• Dsort/Esort (applicati ai poli) ordina la lista per modulo oppure per la sua parte reale

Page 14: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Individuazione caratteristiche notevoli

• Pzmap individua i poli e gli zeri del sistema rappresentandoli sul piano complesso:

• zpk(mm)

• Zero/pole/gain:

• 1.5

• -------------------

• (s+9.996) (s+4.004)

-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

10.650.880.9450.9720.9860.993

0.998

0.999

0.650.880.9450.9720.9860.993

0.998

0.999

246810

Pole-Zero Map

Real Axis

Imagin

ary

Axis

Page 15: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Individuazione delle caratteristiche notevoli

• normnorm(sys,inf) norm(sys,inf,tol) [ninf,fpeak] = norm(sys,inf)

• H2: Guadagno su un rumore gaussiano

• Hinf: guadagno nella condizione peggiore

Page 16: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Manipolazione rappresentazione

• Forma Canonica (CANON): cerca di rendere diagonale la matrice A (autovalori in diagonale)

• Forma Compagna, evidenzia i coefficienti del polinomio caratteristico (utile per spostarli con feedback)

• Le forme compagne si ottengono tramite trasformazione con i le matrici di controllabilita’o osservabilita’. (gram, ctrb)

• Ss2ss(mm,T):– ss2ss(mm,inv(ctrb(mm)))– Ss2ss(mm,obsv(mm))

• L’analisi di dette forme ci aiutano a comprendere quali stati siano controllabili e come

Page 17: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Analisi delle risposte

• Step(mm)

• Impulse(mm)

• Initial(mm,X0)

• Lsim(mm,U,T[,X0])

• Bode…

0 0.5 1 1.5 2 2.5 3-1.5

-1

-0.5

0

0.5

1

Response to Initial Conditions

Time (sec)

Am

plit

ude

Page 18: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Un’unica interfaccia

• LTIVIEW semplifica l’analisi delle risposte per un modello dato.

• Mostra il risultato ottenuto con N modelli tramite l’uso dei colori

• Permette di selezionare il tipo di risposta che ci interessa tra un set molto ampio

Page 19: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Analisi della risposta

• I comandi funzionano anche per sistemi mimo in questo caso producono viste multimple (NxM)

• LTIVIEW e’ un ottimo strumento per confrontare anche piu’sistemi controllati

Page 20: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Tools per il controllo

Page 21: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Premessa

• Controllare un sistema non e’ un problema matematico ben definito fino a quando non vi siano date le caratteristiche del vostro controllo e gli elementi necessari per formalizzare la sua definizione.

• E’ per questo motivo che non esiste un solo strumento di realizzazione di un controllo, ma generalmente se ne usano diversi (equivalenti) ma meglio adatti caso per caso.

Page 22: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Premessa 2

• Tra questi:– Piazzamento dei poli (Banda 1, SS)– Specifiche su diagramma di bode (Banda 2, TF)– Regolazione dei margini (TF)– Regolazione dei margini (NY)– Stabilita’ (rlocus, SS)– Stabilita’ (Nyquist, TF)– Compensatori (anticipo, ritardo, cancellazioni)– Tempi di risposta– Errori su riferimenti– PID (Controllori commerciali)– LQG/LTR

Page 23: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Premessa 3

• Anche se molti modelli sono equivalenti da un punto di vista analitico, si differenziano poi per opportunita’ e da un punto di vista pratico.

• Ogni modello infatti e’ vincolato ad un ambiente ed una metodologia tramite il quale viene ottenuto, e risulta opportuno venga trattato quindi con lo strumento piu’ adeguato alla situazione

Page 24: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Alcuni esempi

• Si esegua un controllo di velocita’ in grado di mostrare una banda sul motore di almeno 100rad/sec

• Una prima idea potrebbe essere quella di utilizzare il piazzamento dei poli tramite feedback lineare dello stato sull’ingresso

Page 25: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Comandi

• k=place(mm.a, mm.b, [-100 -130])

• mm.a-mm.b*k

• ans = 1.0e+004 *

• -0.0010 0.0001

• -1.4400 -0.0220

• >> eig(mm.a-mm.b*k)

• -100.0000

• -130.0000

• Il piazzamento e’ riuscito, ma il sistema e’ fisicamente irrealizzabile, infatti se guardiamo il nostro feedback:

• k =[7200 108]

• Richiede che per errori di velocita’ e corrente modesti siano generati comandi di Kilovolt

Page 26: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Altre soluzioni

• Una seconda idea potrebbe essere quella di modificare la risposta ad anello aperto aggiungendo una distorsione in ingresso che ne esalti il comportamento alle alte frequenze.

• Anche questa soluzione non va bene se non quando il margine di banda da ottenere e’ molto piccolo, altrimenti si amplificano segnali (e rumori) che poi saranno filtrati nel motore.

Page 27: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Altra soluzione

• Cosa succederebbe se progetto un guadagno proporzionale?

• Rlocus e’ lo strumento giusto per vedere il comportamento dei poli.

• Superato un certo valore non vi e’ piu’ utilita’ a aumentare il guadagno (poli complessi coniugati)

-12 -10 -8 -6 -4 -2 0 2-3

-2

-1

0

1

2

3

Root Locus

Real Axis

Imagin

ary

Axis

Page 28: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

E se…

• Introducessi uno zero?

• Proviamo con

• rlocus(mm*tf([1 4],[1 0.005], 30))

• Il sistema presenta una cancellazione polo zero

• Quindi il secondo polo migra verso il polo aggiunto nel sistema

• ltiview(30*cs/(1+30*cs))

-250 -200 -150 -100 -50 0 50-60

-40

-20

0

20

40

60

Root Locus

Real Axis

Imagin

ary

Axis

Page 29: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Vediamo il sisotool

• Ovviamente e’ un toolche bisogna imparare a usare solo dopo aver gia’preso pratica con i controlli.

• Accelera le fasi di design, verifica delle ipotesi e test dei risultati.

• Permette di lavorare con diversi schemi preimpostati di controllori (la cui struttura dovrebbe esser nota).

Page 30: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Cosa e’ possibile fare

1. Cambiare la struttura di controllo (ogni struttura’ e’ comporta di due elementi)

2. 6 strutture tipiche sono gia’ definite

3. Associare ogni elemento dell’architettura a un controllore esterno ovvero costruirlo nel sisotool

4. Lavorare in modalita’ ZPK su tutti gli elementi di controllo

• Il compensatore si edita nell’ compensator editor.

• Si puo’ esprimere la dinamica sia per la componente di controllo (C)

• Che per la componente di Feedforward (F) che agisce in anello aperto

• Le risposte vengono date su una finestra definita di Design plot

Page 31: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Sisotools -> Design plot

• Il Design plot mette a disposizione tre metodi di visualizzazione interattivi:– Nichols– Bode– Rlocus

• Ognuno dei metodi permette di inserire o rimuovere poli e zeri dei controllori

• Poli e zeri possono essere manovrati sia per la risposta in anello aperto che per quella a ciclo chiuso

• Poli e zeri impostati nel controllore sono anche manipolabili graficamente in tempo reale per valutare l’effetto del design nei diagrammi.

• Un pallino pieno nei diagrammi di bodeidentifica i margini (di guadagno per quello di ampiezza), di fase per quello di fase. I valoreirelativi sono riportati in nota al grafico

Page 32: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Sisotool => Analysis plots

• I plot di analisi non consentono il design ma interagiscono con il sistema di design in tempo reale.

• Un comando Show architecture consente di vedere le variabili da mostrare

• Importante vedere il grafico di risposta (ingresso uscita)

• Ed il grafico di comando (per valutare le saturazioni)

• In una seconda fase si imparera’ ad apprezzare anche l’effetto dei disturbi (sensitivita’)

Page 33: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Archiviazione

• Quando soddisfatti di una particolare soluzione trovata e’ possibile generare un report con i grafici di performance e memorizzare i risultati tramite un unicoocomando (store design)

• Perche’ non ci preoccupiamo qui del valore di feedback sull’ingresso?

Page 34: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Sisotool=> Tuning automatico

• Esempio di PID

• Con un PID posso trasformare il mio sistema in un integratore (doppia cancellazione polo zero)

Page 35: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Attenti a come usate il tuning automatico

Non e’ assolutamente detto che sia piu’ bravo di voi, lui ottimizza solo le strutture che gli passate secondo i criteri predefiniti, ma per sapere come tirare il meglio fuori dai vostri sistemi vi servira’il corso di controlli.In figura si vede come un controllore ottimizzato della stessa struttura del nostro sistema dia performance peggiori solo perche’ si assume di poter mettere un polo in zero (sbagliato concettualmente)

Page 36: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Gli strumenti simulink

Page 37: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

I blocchi di Matlab utili per il controllo

• SS, TF, ZPKSimulink base:

• LTI modelControl System

Toolbox

• PID, SS, TF,ZPK (With initial condition)

• Blocchi autotuning (Signal Constraint: dagli esempi di simulink response optimization)

Simulink Extras

Page 38: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

I blocchi di model verification

• Gradienti,

• lower bound

• Upper boung

• Range dinamico

• …

Sono disponibili blocchi per verificare

le proprieta’ di risposta del sistema

Detti blocchi sono di utilita’ quando sia

necessario controllare che la risposta rispetti

dei criteri esterni

Page 39: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Esempi (Simulink Response Optimization): PID

Control of an Inverted Pendulum

Double -click on the Signal Constraint blocks (in green )

to tune the gains Ki , Kp , Kf, and Klqr of

the cart position control system .

The "Desired Cart Position " block specifies the desired

step response in position , while the "Angle Constraints "

block limits the pendulum swing .

Sum

Step Fcn

-K-

Proportional gain

Kp

Pendulum

U

Cart

Angle

Mux

Mux

Mux

LQR gain

K*u

Integrator

1

s

Integral

gain

Ki

Initial

-C-

Feedforward gain

Kf .s

s+2

Desired Cart Position

Cart Velocity Estimate

FD w/ filter

Animation

Angular Velocity Estimate

FD w/ filter

Angle Constraints

cart position

cart position

pendulum

angle

Page 40: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

EsempiLQG LTR Shaping

Double -click on the "Output Constraint " block to

optimize the output response .

The tuned variables are the LQR gain matrix K and the feedforward gain FF .

The optimization also accounts for uncertainty in the plant model .

Open the dialogs under the Optimization menu for more details .

Integral action

LQG Controller for Reference Tracking

Sensor

Noise

Scope

Reference Step

Plant /Actuator

in_1

out_1

out_2 Output Constraint

Mux

LQR Gain

(matrix )

K* uMux

Kalman state

estimator

x' = Ax+Bu

y = Cx+Du

1

s

Feedforward gain

FF

Page 41: Guida al toolbox di controllo in Matlab/Simulink - percro.org al toolbox di... · Realizzazione tramite schema matlab Anello Elettrico 1 I V w I ElectricLoop I w CurrentLoop 1 V Anello

Strumenti di controllo in simulink

• Interfaccia di linearizzazione grafica su modello

– Scelta delle condizioni di linearizzazione

– Salvataggio e richiamo dei modelli

– Editing interattivo dei punti di linearizzazione

• Interfaccia di tuning interattiva su i tunableparameters

– Selezione degli elementi di IO

– Selezione dei blocchi da ottimizzare

• Model discretizer