31
Sistemes de Control en Espai d’Estat Emprant M AT LAB c /Simulink c Sergio López-Doriga Guerra Enric Fossas Colet Ramon Costa Castelló 10 d’octubre de 2011

Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

Embed Size (px)

Citation preview

Page 1: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

Sistemes de Control en Espai d’Estat

Emprant MATLAB c© /Simulink c©

Sergio López-Doriga GuerraEnric Fossas ColetRamon Costa Castelló10 d’octubre de 2011

Page 2: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

Índex

1 Sistemes lineals en espai d’estats (temps continu) 3

1.1 Definició d’un sistema en espai d’estats . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Estabilitat del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3 Propietats del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.3.1 Controlabilitat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.3.2 Observabilitat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.4 Conversió del model en espai d’estats a un model entrada-sortida . . . . . . . . . 7

1.5 Conversió del model entrada-sortida a un model en espai d’estats . . . . . . . . . 8

1.6 Control per assignació de pols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.7 Disseny d’un observador d’estat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.7.1 Disseny d’un regulador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.8 Simulacions del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.8.1 Resposta del sistema a un impuls o a un graó . . . . . . . . . . . . . . . . 13

1.8.2 Resposta del sistema amb condicions inicials no nul.les . . . . . . . . . . . 14

1.8.3 Resposta del sistema a una entrada arbitrària . . . . . . . . . . . . . . . . 16

1.9 Guany d’un sistema en estat estacionari . . . . . . . . . . . . . . . . . . . . . . . 17

1.10 Recuperant informació d’un sistema . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.11 Linealització de sistemes usant Simulink c© . . . . . . . . . . . . . . . . . . . . . 19

2 Sistemes lineals en espai d’estats (temps discret) 26

2.1 Discretització de sistemes de temps continu . . . . . . . . . . . . . . . . . . . . . 26

2.2 Definició d’un sistema de temps discret . . . . . . . . . . . . . . . . . . . . . . . . 27

2.3 Anàlisi d’un sistema de temps discret . . . . . . . . . . . . . . . . . . . . . . . . . 28

2

Page 3: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

1 Sistemes lineals en espai d’estats (temps continu)

1.1 Definició d’un sistema en espai d’estats

En MATLAB c© , es disposa de la funció ss que serveix per a introduir models en espai d’estatsdels sistemes lineals: {

x = Ax + Buy = Cx + Du

Aquests sistemes es designaran de la forma (A,B,C,D).� �sist = ss(A,B,C,D)

A, B, C, D són les matrius que defineixen el sistema.Si la matriu D és nul ·la , només cal posar D=0 sense tenir en compte les dimensions.� �

Exemple

Sigui el sistema1: x =

−1, 6 2 00 −1, 2 00 0 −0, 9

x +

0, 6 1, 50 0, 7

1, 5 1, 5

u

y =

[2 0 00 0 1

]x

Per introduir-lo en MATLAB c© cal escriure les següents instruccions:

>> A=[ -1.6 2 0; 0 -1.2 0;0 0 -0.9];>> B=[0.6 1.5; 0 0.7;1.5 1.5];>> C=[2 0 0;0 0 1];>> D=0;>> sist=ss(A,B,C,D)

a =x1 x2 x3

x1 -1.6 2 0x2 0 -1.2 0x3 0 0 -0.9

b =u1 u2

x1 0.6 1.5x2 0 0.7x3 1.5 1.5

1Aquest sistema s’utilitzarà en els successius exemples d’aquest manual.

3

Page 4: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

c =x1 x2 x3

y1 2 0 0y2 0 0 1

d =u1 u2

y1 0 0y2 0 0

Continuous -time model.

1.2 Estabilitat del sistema

Per a conèixer l’estabilitat d’un sistema s’han d’analitzar els seus pols. En el cas d’un sistema enespai d’estats això equival a estudiar els valors propis de la matriu A. MATLAB c© té la funciópole que permet calcular els pols d’un sistema.� �

p = pole(sist)

p és un vector columna amb els valors propis de la matriu A del sistema sist.� �Exemple

Continuant l’exemple anterior en què s’obtenia el sistema sist, els valors propis de la seva matriuA s’obtenen utilitzant la instrucció:

>> p=pole(sist)

p =

-1.6000-1.2000-0.9000

Alternativament podríem fer :

>> eig(A)

ans =

-1.6000-1.2000-0.9000

4

Page 5: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

>> eig(sist.A)

ans =

-1.6000-1.2000-0.9000

1.3 Propietats del sistema

1.3.1 Controlabilitat

Un sistema (A, B, C, D) és controlable2 si la matriu de controlabilitat WC

WC = [B AB A2B · · · AN−1B]

té rang màxim.rang(WC) maxim⇐⇒ sist controlable

Les funcions de MATLAB c© rank i ctrb calculen, respectivament, el rang d’una matriu i lamatriu de controlabilitat WC.� �

n = rank(A)

n és el rang de la matriu A.� �� �

W = ctrb(sist)

ctrb retorna la matriu de controlabilitat del sistema sist.� �Exemple

Per analitzar la controlabilitat del sistema sist es fa:

>> W=ctrb(sist)

W =

0.6000 1.5000 -0.9600 -1.0000 1.5360 -0.0800

2En sistemes en temps continu, controlabilitat i assolibilitat són equivalents.

5

Page 6: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

0 0.7000 0 -0.8400 0 1.00801.5000 1.5000 -1.3500 -1.3500 1.2150 1.2150

>> nW=rank(W)

nW =

3

El rang de WC és 3, que coincideix amb la dimensió de l’espai on està definit el sistema; pertant el sistema és controlable.

1.3.2 Observabilitat

MATLAB c© permet fer l’anàlisi de l’observabilitat d’un sistema mitjançant el càlcul de la sevamatriu d’observabilitat WO. En aquest cas, a part de l’equació de la dinàmica també serànecessària l’equació de la sortida.

WO =

CCACA2

...CAN−1

Pel càlcul de la matriu d’observabilitat MATLAB c© disposa de la funció obsv.� �

Wo = obsv(sist)

obsv retorna la matriu d’observabilitat del sistema sist.� �Exemple

Per a l’anàlisi de l’observabilitat del sistema sist dels exemples anteriors es faran servir lessegüents instruccions:

>> Wo=obsv(sist)

Wo =

2.0000 0 00 0 1.0000

-3.2000 4.0000 00 0 -0.9000

5.1200 -11.2000 00 0 0.8100

6

Page 7: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

>> nWo=rank(Wo)

nWo =

3

El rang de WO és 3, que coincideix amb la dimensió de l’espai on està definit el sistema; pertant el sistema és observable.

1.4 Conversió del model en espai d’estats a un model entrada-sortida

El model entrada-sortida (funció de transferència) d’un sistema dinàmic es pot definir o obtenirmitjançant la funció tf. Per introduir una funció de transferència s’utilitzaran els coeficientsdels polinomis del numerador i del denominador.� �

sist_tf = tf(num , den)

num i den són vectors fila amb els coeficients del numerador i del denominador(respectivament) de la funció de transferència a introduir.� �

La funció tf també permet convertir un model en espai d’estats en un model entrada-sortida.� �sist_tf = tf(sist)

sist és un sistema dinàmic expressat en representació d’estats.sist_tf és la funció de transferència del sistema en espai d’estats; en el cas d’un

sistema multientrada , multisortida (MIMO) sist_tf és una matriu de funcions detransferència.� �

Exemples

Sigui la funció de transferència:

G(s) =2s− 3

3s3 + 4s2 + s+ 5

Per definir-la en MATLAB c© s’usarà:

>> num=[2 -3];>> den=[3 4 1 5];>> G=tf(num ,den)

Transfer function:2 s - 3

---------------------3 s^3 + 4 s^2 + s + 5

7

Page 8: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

Si es disposa d’un sistema representat en espai d’estats com el del primer exemple (pàg.3) i esconverteix a funció de transferència, s’obtè el següent resultat:

>> sist_tf=tf(sist)

Transfer function from input 1 to output ...1.2

#1: -------s + 1.6

1.5#2: -------

s + 0.9

Transfer function from input 2 to output ...3 s + 6.4

#1: ------------------s^2 + 2.8 s + 1.92

1.5#2: -------

s + 0.9

Si es vol accedir, per exemple, a la funció de transferència entre la primera sortida i la segonaentrada es farà de la següent manera:

>> sist_tf (1,2)

Transfer function:3 s + 6.4

------------------s^2 + 2.8 s + 1.92

1.5 Conversió del model entrada-sortida a un model en espai d’estats

Per fer la conversió d’un model entrada-sortida a un model en espai d’estats es pot fer servir lafunció ss vista anteriorment en l’apartat 1.1.� �

sist_ss = ss(sist_tf)

sist_tf és un sistema dinàmic expressat en forma d’entrada -sortida.sist_ss és el sistema en representació d’estats del model entrada -sortida sist_tf.� �

Tot i que es disposa d’aquesta opció, cal tenir cura al fer aquest tipus de conversió ja que en capcas la transformació és única i, a més, en el cas d’un sistema MIMO el resultat pot no ser unarealització mínima, obtenint un número de variables d’estat superior a l’esperat.

8

Page 9: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

1.6 Control per assignació de pols

En sistemes lineals, la noció de controlabilitat (veure secció 1.3.1) equival a l’existència d’unarealimentació d’estat u = −Kx que permet posicionar els pols del sistema en llaç tancat on esdesitgi. L’esquema del sistema en espai d’estats amb realimentació es pot veure a la Figura 1.

x = Ax + Buu = -Kx

}⇒ x = (A-BK)x

Figura 1: Sistema en espai d’estats amb realimentació.

MATLAB c© disposa d’un parell de funcions (acker i place) pel càlcul de la matriu derealimentació K. La que s’utilitzarà en aquest manual és la funció place3.� �

K = place(A,B,p)

A i B són les matrius del sistema. p és un vector amb els pols desitjats.La funció retorna la matriu K que situa els valors propis de A-BK allà on especifica el

vector p.� �Exemple

Es vol determinar una realimentació d’estat de manera que els pols del sistema que s’ha estatutilitzant anteriorment (pàg.3) en llaç tancat siguin els següents:

p =

−0, 2 + 0, 1j−0, 2− 0, 1j−0, 3

3Es remet al lector al help de MATLAB c© per a veure les limitacions de la funció acker.

9

Page 10: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

Per aconseguir-ho s’utilitzaran les següents instruccions:

>> p=[ -0.2+j*0.1; -0.2 -j*0.1; -0.3];>> K=place(A,B,p)

K =

-2.4787 7.3115 0.05351.4381 -4.7566 -0.2804

Per tal de comprovar que efectivament els valors propis de A-BK són els indicats al vector p esdefineix el sistema en llaç tancat (A-BK,0,C,0) que correspon a:{

x = (A−BK)xy = Cx

I, a continuació, es calculen els seus pols:

>> sist2=ss(A-B*K,zeros (3,2),C,0);>> pole(sist2)

ans =

-0.2000 + 0.1000i-0.2000 - 0.1000i-0.3000

1.7 Disseny d’un observador d’estat

Un observador d’estat permet estimar el valor de les variables d’estat d’un sistema (xe) a partirde la seva entrada (u) i la seva sortida (y), vegis l’esquema de la Figura 2. Si s’estima el valor detotes les variables d’estat independentment de si es pot fer una mesura directa o no, l’observadors’anomena d’ordre complet; en cas contrari, es parla d’un observador d’ordre reduït.

L’equació que descriu l’observador és:

xe = Axe + He(y− (Cxe + D)) + Bu

Al mateix temps, l’error de la estimació es pot calcular sabent que xerror = x − xe, així, ladinàmica de l’error es descriu:

xerror = (A−HeC)xerror

La matriu He fixa els pols de la dinàmica de l’error (xerror), que és convenient que siguin mésràpids que la dinàmica de la planta per a garantir una estimació acurada. He tindrà tantes filescom estats tingui el sistema original i tantes columnes com sortides, per trobar-la es farà servirla funció place descrita a l’apartat anterior (pàg.9).

10

Page 11: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

Figura 2: Esquema d’un sistema amb observador d’estat.

Així, tenint en compte que els valors propis d’una matriu i la seva transposada són els mateixos,es pot fer una analogia entre el càlcul de la matriu K d’un controlador per realimentació i lamatriu He d’un observador.

Controlador Observador

A−BK A−HeCA′ −C′H′e

K=place(A,B,p) He=place(A’,C’,p)’

Un cop trobada He, caldrà muntar el sistema observador. Per a fer-ho MATLAB c© comptaamb la funció estim que dóna directament el sistema de l’observador en espai d’estats.� �

sistObs = estim(sist ,He)

sistObs és el sistema observador en espai d’estats del sistema sist sent He el guany del’observador.� �

Exemple

Per calcular l’observador, voldrem situar els pols que determinen la dinàmica de l’error en:

p =

−0, 2 + 0, 1j−0, 2− 0, 1j−0, 3

Ara només cal calcular la matriu K que situa els pols del sistema dual (A’,C’) allà on es desitja itransposar-la per obtenir la matriu He que, juntament amb la funció estim ens proporciona unaestimació dels estats. Per últim amb la funció pole es pot comprovar que els pols del sistema

11

Page 12: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

observador siguin els desitjats. En cas de no tancar cap llaç amb la u, els pols del sistemaobservador i els del sistema error (x− xe) són els mateixos.

>> p =[ -0.2+ j *0.1; -0.2 - j *0.1; -0.3];>> He= place (A’,C’,p)’

He =

-1.2000 00.2525 0

0 -0.6000

>> sistObs=estim(sist ,He)

a =x1 x2 x3

x1 0.8 2 0x2 -0.505 -1.2 0x3 0 0 -0.3

b =u1 u2

x1 -1.2 0x2 0.2525 0x3 0 -0.6

c =x1 x2 x3

y1 2 0 0y2 0 0 1y3 1 0 0y4 0 1 0y5 0 0 1

d =u1 u2

y1 0 0y2 0 0y3 0 0y4 0 0y5 0 0

Input groups:Name Channels

Measurement 1,2

Output groups:Name Channels

OutputEstimate 1,2StateEstimate 3,4,5

Continuous -time model.>> pole(sistObs)

ans =

-0.2000 + 0.1000i-0.2000 - 0.1000i-0.3000

12

Page 13: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

1.7.1 Disseny d’un regulador

Un regulador és un sistema basat en un observador al qual se li ha afegit un control perrealimentació resultant un esquema com el de la Figura 3. Les equacions que modelen aquestsistema són:

[xxe

]=

[A −BK0 A−HeC− (B−HeD)K

] [xxe

]+

[0

Hey

]

y =[

C 0] [ x

xe

]

Figura 3: Esquema d’un sistema regulador.

Per calcular el reguladorMATLAB c© ofereix la funció reg amb la qual es pot obtenir el sistemaen espai d’estats.� �

sistReg = reg(sist ,K,He)

sistReg és el sistema regulador en espai d’estats del sistema sist , sent K la matriu derealimentació i He el guany de l’observador.� �

1.8 Simulacions del sistema

1.8.1 Resposta del sistema a un impuls o a un graó

Per conèixer la resposta temporal d’un sistema a una entrada impuls o a una entrada graóMATLAB c© té les funcions impulse i step respectivament. Amb aquestes funcions no només

13

Page 14: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

es pot veure un gràfic amb la resposta del sistema sinó que també hi ha la possibilitat d’obtenirles trajectòries de les variables d’estat x. En cas que el sistema amb què es treballa tingui mésd’una entrada, s’aplicarà un impuls o un graó simultani a cadascuna. Les dues funcions treballende la mateixa manera:� �

impulse(sist)o

step(sist)

sist és el sistema del qual volem conèixer la resposta temporal , la funció mostraràaquesta resposta en un gràfic.

[y,t]= impulse(sist)o

[y,t]=step(sist)

La funció no retornarà un gràfic sinó que guardarà els valors de la sortida i del tempsen els vectors y i t respectivament. Si el sistema té més d’una sortida o

més d’una entrada , el vector y serà una taula de dimensions:[núm. punts , núm. sortides , núm. entrades]

[y,t,x]= impulse(sist)o

[y,t,x]=step(sist)

Igual que en el cas anterior , la funció no retornarà un gràfic sinó que guardarà elsvalors de la sortida , el temps i les variables d’estat en els vectors y, t i

x respectivament.� �Exemple

Si es vol conèixer la resposta del sistema del primer exemple (pàg.3) a una entrada graó s’utilitzaràla següent comana:

>> step(sist)

Donat que el sistema sist té dues entrades i dues sortides, la funció retorna com a resultatquatre gràfics (Figura 4): els dos primers corresponents a les sortides per a un graó a la primeraentrada i una segona entrada nul.la, i dos gràfics més per a les sortides corresponents a unaprimera entrada nul.la i una graó a la segona entrada.

1.8.2 Resposta del sistema amb condicions inicials no nul.les

Per defecte les funcions impulse i step suposen condicions inicials nul.les. La funció initialpermet simular el sistema amb condicions inicials x0 i entrada u = 0. El sistema simulat és, per

14

Page 15: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

Figura 4: Resposta temporal de les diferents sortides a un graó a la primera entrada (esquerra)o un graó a la segona entrada (dreta).

tant, de la forma: {x = Axy = Cx amb x(0) = x0

Igual que en funcions vistes anteriorment, MATLAB c© permet veure el gràfic de la resposta delsistema o directament emmagatzemar les dades de sortida.� �

initial(sist ,x0)

Retorna el gràfic resultat de simular l’evolució temporal del sistema sist per a unsvalors inicials donats pel vector x0.

[y,t,x]= initial(sist ,x0)

La funció no retornarà un gràfic sinó que guardarà els valors de la sortidadel sistema , el temps i les variables d’estat en els vectors y, t i xrespectivament.� �

15

Page 16: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

1.8.3 Resposta del sistema a una entrada arbitrària

En cas de voler definir una entrada determinada pel sistema es pot fer mitjançant una matriuU i un vector t. El vector4 t contindrà valors equiespaiats de temps. La matriu U tindrà tantescolumnes com entrades tingui el sistema i tantes files com instants de temps s’hagin de mostrejar.

Un cop definida una entrada, MATLAB c© permet simular la resposta del sistema amb la funciólsim. Es podrà obtenir el gràfic de la resposta o emmagatzemar els valors de la sortida i de lestrajectòries de les variables d’estat.� �

lsim(sist ,U,t)

Retorna el gràfic resultat de simular l’evolució temporal del sistema sist per a unaentrada definida en la matriu U i el vector t.

[y,t,x]=lsim(sist ,U,t)

La funció no retornarà un gràfic sinó que guardarà els valors de la sortida delsistema , el temps i les variables d’estat en els vectors y, t i x respectivament.� �

Es pot afegir un paràmetre extra per indicar quin ha de ser el mètode de interpolació entre lesdiferents mostres: un mantenidor d’ordre zero (’zoh’) o interpolació lineal (’foh’). Per defecte,MATLAB c© escull una de les dues opcions de forma automàtica en funció de la entrada Uespecificada.

Exemple

Suposarem que es vol obtenir la resposta del sistema als cinc primers segons (amb mostres cada0,01s) d’una entrada sinusoidal per u1 i un graó unitari per u2. Per definir aquesta entradas’utilitzaran les següents instruccions:

>> t=0:0.01:5;>> U=[sin(t); ones(size(t))];>> U=U’U =

0 1.00000.0100 1.00000.0200 1.00000.0300 1.00000.0400 1.00000.0500 1.00000.0600 1.00000.0699 1.00000.0799 1.00000.0899 1.0000

etc.

4El vector t pot ser vector columna o vector fila indistintament.

16

Page 17: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

1.9 Guany d’un sistema en estat estacionari

Per calcular el guany d’un sistema en estat estacionariMATLAB c© disposa de la funció dcgainque calcula G(s = 0). En sistemes en espai d’estats això equival a K = D−CA−1B si es treballaen temps continu5.� �

G=dcgain(sist)

G és el guany en estat estacionari del sistema sist. Si el sistema té mésd’una entrada o més d’una sortida G serà una matriu de dimensions: [núm.sortides x núm. entrades]� �

Exemple

Pel càlcul del guany del sistema sist del primer exemple s’utilitzaran les següents instruccions:

>> G=dcgain(sist)

G =

0.7500 3.33331.6667 1.6667

El guany en estat estacionari entre la primera sortida i la segona entrada val G12 = 3.3333.

1.10 Recuperant informació d’un sistema

A partir d’un sistema donat, sist, MATLAB c© permet recuperar la seva informació. Així,mitjançant la funció tfdata es pot obtenir el numerador i el denominador d’una funció detransferència6.� �

[num , den]= tfdata(tfunc ,’v’)

Retorna el numerador num i el denominador den de la funció de transferència tfunc. Calindicar el paràmetre ’v’ per obtenir els resultats en forma de vector en

sistemes SISO.� �5En temps discret, el guany en estat estacionari pot calcular-se amb l’expressió K = D − C(Id − A)−1B6Alternativament, per a una funció de transferència tfunc les comanes tfunc.num i tfunc.den retornen el

numerador i el denominador respectivament.

17

Page 18: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

En cas que el sistema sist es trobi en forma d’espai d’estats, si es vol obtenir una de les sevesmatrius únicament caldrà escriure sist.A on sist és el nom del sistema.

A més, MATLAB c© disposa de la funció zpkdata que retorna els zeros, els pols i el guany d’unsistema (independentment de la forma en què estigui expressat).� �

[z,p,k]= zpkdata(sist)

z, p i k són els zeros , els pols i el guany del sistema sist. z i p són taules devalors i k una matriu. Tots tenen dimensions (i,j) on ’i’ és el número de

sortides i ’j’ és el número d’entrades.� �Exemple

Amb el sistema del primer exemple en forma de funció de transferència sist_tf (veure exemplede la pàg.7), si es vol obtenir el numerador i el denominador de la funció de transferència entrela primera sortida i la segona entrada s’utilitzarà la següent instrucció:

>> [num , den]= tfdata(sist_tf (1,2) ,’v’)

num =

0 3.0000 6.4000

den =

1.0000 2.8000 1.9200

Si es disposa d’un sistema anomenat sistema2 i es desitja obtenir les seves matrius caldrà escriureel següent:

>> A=sistema2.A;>> B=sistema2.B;>> C=sistema2.C;>> D=sistema2.D;

En cas de voler obtenir els pols, zeros i el guany de cada sortida respecte cadascuna de les entradess’usarà la comana del següent exemple, tenint en compte que es pot indicar com a paràmetre dela funció tant el sistema en espai d’estats sist com el sistema en forma de funció de transferènciasist_tf:

18

Page 19: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

>> [z,p,k]= zpkdata(sist)

z =

[0x1 double] [ -2.1333][0x1 double] [0x1 double]

p =

[ -1.6000] [2x1 double][ -0.9000] [ -0.9000]

k =

1.2000 3.00001.5000 1.5000

Com es pot observar, alguns dels resultats són taules de vectors. Per accedir al valor numéricd’un dels vectors s’usarà el nom de la taula seguit de la posició desitjada entre dos claus:

>> p{1,2}

ans =

-1.6000-1.2000

1.11 Linealització de sistemes usant Simulink c©

A partir de les equacions diferencials que descriuen un sistema dinàmic es pot obtenir un diagramade blocs mitjançant Simulink c© . Un cop afegits els diferents blocs que conformen el sistemas’inclourà un port d’entrada (inport) i un altre de sortida (outport) per a poder actuar sobrel’entrada del sistema i observar la sortida des de la finestra de MATLAB c© .

Donat un sistema dinàmic definit per

x = f(x, u)

y = h(x)

els punts d’equilibri són trajectòries constants i estan caracteritzats per:

0 = f(x0, u0)

y0 = h(x0)

Per l’estudi del sistema dinàmic, és possible que sigui necessari linealitzar-lo. Aquest procés delinealització tindrà lloc al voltant d’un punt d’equilibri que MATLAB c© calcula amb la funciótrim. Quan el punt d’equilibri sigui conegut no caldrà utilitzar aquesta funció.

19

Page 20: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

� �[x,u,y,dx]=trim(’nom_del_model ’)

Matlab intentarà trobar els valors de les variables d’estat x, l’entrada u i lasortida y per tal que dx sigui nula.

nom_del_model és el nom de l’arxiu que conté el sistema modelat (sense extensió).� �Per tal de linealitzar un sistema al voltant d’un punt predeterminat, MATLAB c© ofereix lafunció linmod que donarà com a resposta un sistema en la forma (A,B,C,D).� �

[x,u,y,dx]=trim(’nom_del_model ’)

Matlab intentarà trobar els valors de les variables d’estat x, l’entrada u i lasortida y per tal que dx sigui nula.

nom_del_model és el nom de l’arxiu que conté el sistema modelat (sense extensió).� �� �

[A,B,C,D]= linmod(’nom_del_model ’,x)

A, B, C i D són les matrius resultants de la linealització del sistema modelitzat ennom_del_model al voltant del punt d’equilibri x.� �

Per linealitzar sistemes al voltant d’un punt d’equilibri s’utilitza la el polinomi de Taylor deprimer grau del camp vectorial i de la funció de sortida.

f(x, u) ≈ f(x0, u0) +∂f

∂x(x− x0) +

∂f

∂u(u− u0) + · · ·

aquesta aproximació es substitueix en les equacions no lineals:

x = f(x, u) ≈ f(x0, u0) +∂f

∂x

∣∣∣∣(x0,u0)

(x− x0) +∂f

∂u

∣∣∣∣(x0,u0)

(u− u0)

y − y0 ≈ (h(x0) +dh

dx

∣∣∣∣x0

(x− x0))− h(x0)

Aleshores es defineixen les variables incrementals següents:

χ∆= x− x0

γ∆= y − y0

µ∆= u− u0

en aquestes noves variables el sistema s’escriu:

χ =∂f

∂x

∣∣∣∣x0,u0

χ+∂f

∂u

∣∣∣∣x0,u0

µ = A · χ+B · µ

γ =∂h

∂x

∣∣∣∣x0,u0

χ+∂h

∂u

∣∣∣∣x0,u0

µ = C · χ+D · µ

20

Page 21: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

Igual que s’han vist les comanes trim i linmod, treballant amb Simulink c© es disposa d’un altreconjunt d’instruccions que també permeten linealitzar sistemes però amb major control sobrel’operació i amb més opcions. Un exemple és la possibilitat de linealitzar el sistema en llaç obertsense necessitat de canviar l’esquema en Simulink c© , també es pot escollir linealitzar només unconjunt de blocs prèviament indicat sense tenir en compte la resta del sistema.

Aquest conjunt d’instruccions es poden fer servir mitjançant comanes (com fins ara) o accedinta una finestra que integra totes aquestes eines. Per accedir-hi només cal prémer l’opció Tools >Control Design > Linear Analysis....

Les tres comanes que s’usaran són operspec, findop i linearize.� �opspec=operspec(’nom_del_model ’)

opspec serà l’estructura de dades del sistema modelitzat en nom_del_model. És a dir , estransforma el sistema d’un esquema en Simulink a una variable

estructurada.� �� �

op=findop(’nom_del_model ’,opspec)

op serà el punt d’operació (Operation Point) on es vol linealitzar el sistemamodelitzat en nom_del_model. Per defecte , Matlab buscarà un punt d’equilibri.� �

� �linsys=linearize(’nom_del_model ’,op)

linsys serà la linealització en espai d’estats del sistema modelitzat en nom_del_modeli al voltant del punt d’operació op.� �

Exemple

Per a mostrar com modelitzar un sistema en Simulink c© s’usarà l’exemple del pèndol invertit.El sistema proposat (Figura 5) consta d’una massa m situada a l’extrem d’una barra rígida delongitud l. A l’extrem contrari, la barra té un eix de gir al voltant del qual pot donar voltessenceres. El pèndol està sotmès a forces externes que provoquen un parell Γ respecte l’eix de gir.Es considerarà també fregament viscòs a l’eix de gir amb constant de proporcionalitat (respectela velocitat angular) b.

Per a obtenir la dinàmica del pèndol, utilitzant la segona llei de Newton, determinem el momentd’inèrcia j = ml2.

21

Page 22: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

Figura 5: El sistema d’estudi consta d’un pèndol sotmès a un parell Γ en l’eix de gir.

L’equació que governa aquest sistema és:

jd2θ(t)

dt2= Γ(t)− bdθ(t)

dt−mgl sin θ(t)

Escrivint el sistema en espai d’estats amb x1∆= θ i x2

∆= θ queda:

x1 = x2

x2 = −gl sin x1 − b

jx2 + 1j Γ

y = x1

L’esquema de la Figura 6 representa aquest sistema dinàmic; es pot codificar directament enSimulink c© tenint en compte que cal tenir un port d’entrada i un altre de sortida per a poderactuar sobre l’entrada del sistema i observar-ne la sortida. El model final queda tal com es veua la Figura 7.

Com es pot observar s’ha afegit un Clock que guarda el valor del temps a la variable de sortida tper tal de poder veure l’evolució temporal de θ. Els blocs integradors permeten, si cal, introduircondicions inicials que per defecte són nul.les.

En general, es pot treballar amb paràmetres que després es poden definir de manera directades de la línia de comanes de MATLAB c© . D’aquesta manera no cal modificar el model cadavegada que es vulgui variar algun dels paràmetres del sistema dinàmic. L’entrada (en aquest casΓ) ha de ser una matriu de dues columnes, en la primera s’especifica el temps t i en la segona elvalor de l’entrada Γ(t).

22

Page 23: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

Figura 6: Esquema que seguirà el model en Simulink c© .

A l’hora de fer la simulació cal tenir en compte les diferents opcions que ofereix MATLAB c©tals com el temps de simulació, el període de mostratge, el pas i el mètode d’integració... Totesaquestes opcions poden ajustar-se al menú Configuration parameters... accessible amb les teclesCtrl+E. A més, aquests paràmetres poden tractar-se de la mateixa manera que els anteriors pertal d’accedir directament des de la línia de comanes de MATLAB c© . Havent acabat es guardael model.

Donat el model en Simulink c© pendol.mdl definit anteriorment, s’usarà la funció trim per buscarun punt d’equilibri:

>> l=1;m=3;b=2;g=9.8; Gamma =[0 0];x1=1;x2=1;>> [x,u,y,dx] = trim(’pendol ’)

x =

1.0e-012 *

0.2923-0.0000

u =

0

y =

2.9227e-013

23

Page 24: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

Figura 7: Esquema de Simulink c© que modela el pèndol invertit.

dx =

1.0e-011 *

-0.0000-0.2864

MATLAB c© retorna una aproximació al punt d’equilibri estable corresponent a (x1,x2) = (0, 0).Per linealitzar el sistema al voltant del punt d’equilibri inestable (x1,x2) = (π, 0) es faran servirles següents instruccions:

>> [A,B,C,D]= linmod(’pendol ’,[pi 0])

A =

0 1.00009.8000 -0.6667

B =

00

C =

1 0

D =

0

24

Page 25: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

Utilitzant el mateix model també es podria haver linealitzat el sistema mitjançant les següentscomanes, en aquest cas, la linealització es realitza al voltant del punt d’equilibri estable(x1,x2) = (0, 0):

>> sys = ’pendol ’;>> opspec = operspec(sys);>> op=findop(sys ,opspec);

Operating Point Search Report:---------------------------------

Operating Report for the Model pendol2.(Time -Varying Components Evaluated at time t=0)

Operating point specifications were successfully met.

States: None----------(1.) pendol2/Integrator

x: 0 dx: -2.87e-012 (0)(2.) pendol2/Integrator1

x: 2.92e-013 dx: 0 (0)

Inputs: None----------(1.) pendol2/In1

u: 0 [-Inf Inf]

Outputs: None----------(1.) pendol2/Out1

y: 2.92e-013 [-Inf Inf]

>> linsys = linearize(sys ,op);

25

Page 26: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

2 Sistemes lineals en espai d’estats (temps discret)

Treballant amb temps discret, es defineix un sistema lineal en espai d’estats de la següent forma:{xk+1 = Axk + Buk

yk = Cxk + Duk

2.1 Discretització de sistemes de temps continu

La funció c2d permet discretitzar un sistema de temps continu. El sistema en temps continu potestar expressat en espai d’estats o com a funció de transferència.� �

sist_d=c2d(sist_c ,Ts,MÈTODE)

sist_d és el sistema de temps discret resultant de discretitzar sist_c amb període demostratge Ts.

MÈTODE és una cadena de caràcters que especifica el procediment de discretitzacióutilitzat. Per defecte el seu valor és ’zoh ’ (mantenidor d’ordre zero).� �

Entre d’altres, també es pot especificar la transformada bilineal per a fer la discretització. Calrecordar que la bilineal es defineix pel canvi s = 2

Tz−1z+1 . Donat que aquesta transformació també

és coneix com a mètode Tustin, en MATLAB c© caldrà especificar ’tustin’ com a procedimentde discretització.

La funció d2c fa el contrari que la discretització, és a dir, donat un sistema de temps discret enretorna un de temps continu.� �

sist_c=d2c(sist_d ,MÈTODE)

sist_c és el sistema de temps continu calculat a partir de sist_d.MÈTODE és una cadena de caràcters que especifica el procediment per transformar la

representació de temps discret del sistema a una de temps continu. Per defecteel seu valor és ’zoh ’ (mantenidor d’ordre zero).� �

26

Page 27: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

Exemple

Disposant del sistema sist definit al primer exemple, si es vol discretitzar amb un període demostratge Ts = 0, 1s es farà servir la següent instrucció:

>> sist_d=c2d(sist ,0.1)

a =x1 x2 x3

x1 0.8521 0.1739 0x2 0 0.8869 0x3 0 0 0.9139

b =u1 u2

x1 0.05545 0.145x2 0 0.06596x3 0.1434 0.1434

c =x1 x2 x3

y1 2 0 0y2 0 0 1

d =u1 u2

y1 0 0y2 0 0

Sampling time: 0.1Discrete -time model.

2.2 Definició d’un sistema de temps discret

La funció ss7 vista a l’apartat 1.1 permet definir directament aMATLAB c© un sistema de tempsdiscret; només caldrà afegir un cinquè paràmetre tal com es pot veure a l’exemple següent.� �

sist = ss(A,B,C,D,Ts)

A, B, C, D són les matrius que defineixen el sistema sist.Ts és el període de mostratge.� �7També és vàlid per a les funcions tf i zpk.

27

Page 28: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

Exemple

Sigui el sistema de temps discret amb període de mostratge Ts = 0, 1s:xk+1 =

0, 6 0, 7 00 0, 75 00 0 0, 8

xk +

0, 8 0, 40 0, 9

0, 9 0, 9

uk

yk =

[1 0 00 0 1

]xk

Per a definir-lo en MATLAB c© cal escriure les següents instruccions:

>> A=[0.6 0.7 0; 0 0.75 0; 0 0 0.8];>> B=[0.8 0.4; 0 0.9; 0.9 0.9];>> C=[1 0 0; 0 0 1];>> D=0;>> sist_d=ss(A,B,C,D ,0.1)

a =x1 x2 x3

x1 0.6 0.7 0x2 0 0.75 0x3 0 0 0.8

b =u1 u2

x1 0.8 0.4x2 0 0.9x3 0.9 0.9

c =x1 x2 x3

y1 1 0 0y2 0 0 1

d =u1 u2

y1 0 0y2 0 0

Sampling time: 0.1Discrete -time model.

2.3 Anàlisi d’un sistema de temps discret

Quan es disposa d’un sistema definit en temps discret es pot fer una anàlisi de les seves propietats,dissenyar un controlador o observador, transformar-lo a funcions de transferència...

La majoria de les funciones necessàries per a aquests objectius són les mateixes que ja s’han vistal primer capítol, en molts casos l’ús serà idèntic i en uns altres caldrà afegir algun paràmetred’entrada. Cal anar amb compte si es treballa amb la funció linmod ja que aquesta passa a

28

Page 29: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

Funció Temps continu Temps discretss ss(A,B,C,D) ss(A,B,C,D,Ts)pole pole(sist) pole(sist)rank rank(A) rank(A)ctrb ctrb(sist) ctrb(sist)obsv obsv(sist) obsv(sist)tf tf(sist) tf(sist,Ts)

tf(num,den) tf(num,den,Ts)place place(A,B,p) place(A,B,p)estim estim(sist,He) estim(sist,He)reg reg(sist,K,He) reg(sist,K,He)impulse impulse(sist) impulse(sist)step step(sist) step(sist)initial initial(sist,x0) initial(sist,x0)lsim lsim(sist,U,t) lsim(sist,U,t)dcgain dcgain(sist) dcgain(sist)tfdata tfdata(tf,’v’) tfdata(tf,’v’)zpkdata zpkdata(sist) zpkdata(sist)trim trim(’nom_del_model’) trim(’nom_del_model’)linmod linmod(’nom_del_model’,x) dlinmod(’nom_del_model’,Ts,x)operspec operspec(’nom_del_model’) operspec(’nom_del_model’)findop findop(’nom_del_model’,opspec) findop(’nom_del_model’,opspec)linearize linearize(’nom_del_model’,op) linearize(’nom_del_model’,op)c2d c2d(sist_c,Ts,MÈTODE) -d2c - d2c(sist_d,MÈTODE)

Taula 1: Llistat de funcions

ser dlinmod si es treballa en temps discret. El funcionament és el mateix però s’ha d’afegir elperíode de mostratge Ts.

A la Taula 1 es fa un llistat, per ordre d’aparició, de les funcions vistes fins ara amb els paràmetrescorresponents per l’ús en temps continu i en temps discret.

29

Page 30: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

Índex alfabèticMATLAB c©, 1, 3–7, 9, 11, 13, 15–20, 22–24,

26–28Simulink c©, 1, 19, 21–24

acker, 9assignació de pols, 9assolibilitat, 5

bilineal, 26blocs integradors, 22

c2d, 26, 29Clock, 22condicions inicials, 14control per realimentació, 13controlabilitat, 5, 9controlador, 11, 28Conversió, 7, 8ctrb, 5, 29

d2c, 26, 29dcgain, 17, 29denominador, 7, 17, 18diagrama de blocs, 19dinàmica de l’error, 10, 11dinàmica de la planta, 10discretitzar, 26, 27dlinmod, 29

el polinomi de Taylor, 20entrada, 8, 10, 13, 14, 16entrada arbitrària, 16error de la estimació, 10espai d’estats, 3estabilitat, 4estim, 11, 29estimar, 10

findop, 21, 29funció de transferència, 7, 8, 17, 18, 26

graó, 13, 14guany, 17, 18

impuls, 13, 14impulse, 13, 14, 29initial, 14, 29interpolació, 16

linealitzar, 19–21, 24linearize, 21, 29linmod, 20, 28, 29lsim, 16, 29

mètode d’integració, 23mantenidor d’ordre zero, 16MATLAB, 1, 3–7, 9, 11, 13, 15–20, 22–24, 26–

28matriu d’observabilitat, 6matriu de controlabilitat, 5matriu de realimentació, 9model en espai d’estats, 7, 8model entrada-sortida, 7, 8modelitzar un sistema, 21mostres, 16

numerador, 7, 17, 18

observabilitat, 6observador, 11, 13, 28observador d’estat, 10obsv, 6, 29operspec, 21, 29

període de mostratge, 23, 27–29place, 9, 10, 29pole, 4, 11, 29pols, 4, 9–12, 18port d’entrada, 22punt d’equilibri, 19, 20, 23, 24

rang, 5, 6rank, 5, 29realimentació d’estat, 9reg, 13, 29regulador, 13resposta del sistema, 14, 16

30

Page 31: Sistemes de Control en Espai d'Estat Emprant MATLAB/Simulinkocw.upc.edu/sites/ocw.upc.edu/files/materials/25401/2011/1/53881/... · 1 Sistemes lineals en espai d’estats (temps continu)

Simulacions del sistema, 13Simulink, 1, 19, 21–24sistema dual, 11sortida, 8, 10, 22ss, 3, 8, 27, 29step, 13, 14, 29

temps continu, 3, 26, 29temps de simulació, 23temps discret, 26–29tf, 7, 27, 29tfdata, 17, 29trajectòries, 14, 16, 19transformació, 8transformada bilineal, 26trim, 19, 23, 29Tustin, 26

valors propis, 4, 10variables d’estat, 10

zeros, 18zpk, 27zpkdata, 18, 29

31