Matlab Control
-
Upload
marcos-medrano -
Category
Documents
-
view
88 -
download
1
Transcript of Matlab Control
Taller IntersemestralAgosto 2005
Ingeniería Eléctrica y Electrónica
Matlab/Simulinkpara Control
Usar Matlab y Simulink como herramientas
auxiliares para el análisis y solución de
problemas de Ingenieria de Control
Ingeniería Eléctrica y Electrónica
Objetivo:
Ingeniería Eléctrica y Electrónica
Desglose de temas:
• Iniciando problemas de control
Ingeniería Eléctrica y Electrónica
Iniciando problemas de controlCreando funciones de transferencia:
Para crear funciones de transferencia se usa el comando‘tf(num,den)’, por ejemplo la función de transferencia
Se puede definir como
num=[18 360];den=[1 40.4 391 150]; sys=tf(num,den);
Se listan los coeficientes del los polinomios en ‘s’, enpotencias decrecientes.
Ingeniería Eléctrica y Electrónica
O bien, directamente en la función ‘tf’
sys=tf([18 360], [1 40.4 391 150])
Resultando,
Transfer function:
18 s + 360----------------------------s^3 + 40.4 s^2 + 391 s + 150
La variable ‘sys’ representa entonces a una funciónde transferencia.
Ingeniería Eléctrica y Electrónica
En el caso de la siguiente función de transferencia
Podemos definirla como
sys=tf([1 0 0], [1 0 2 10])
Resultando,
Transfer function:s^2
--------------s^3 + 2 s + 10
Los coeficientes iguales a cero que estan a la derecha de coeficientes distintos de cero deben ser listados.
Ingeniería Eléctrica y Electrónica
En el estudio de sistemas LTI (linear Time-Invariant), es muycomún el análisis de sistemas de segundo orden de la forma
22
2
2)()(
nn
n
sssUsY
ωξωω
++=
Estos sistemas pueden ser definidos con la función ‘ord2’,por ejemplo:
>> [num,den]=ord2(10,1)
num =1
den = 1 20 100
Ingeniería Eléctrica y Electrónica
Matlab puede generar funciones de transferencia aleatorias con la funcion ‘rmodel’, por ejemplo:
>> [num,den]=rmodel(3)
num = 0 0 0 1.1909
den = 1.0000 1.6154 1.1551 0.2360
>> [num,den]=rmodel(3)
num = 0 0 0 0.7258
den = 1.0000 7.3984 24.5843 15.8755
Las funciones de transferencia generadas con ‘rmodel’son siempre estables.
Ingeniería Eléctrica y Electrónica
Para sistemas con tiempo de retraso, con representacion en‘s’ dada por , Matlab no provee un medio exacto paradescribirlo. Sin embargo la funcion ‘pade’ puede ser usadopara generar una funcion de transferencia que puedeaproximar el tiempo de retraso. Por ejemplo:
>> [num,den]=pade(5,2)num = 1.0000 -1.2000 0.4800den = 1.0000 1.2000 0.4800
>> sys=tf(num,den)Transfer function:
s^2 - 1.2 s + 0.48------------------
s^2 + 1.2 s + 0.48
sTe−
Ingeniería Eléctrica y Electrónica
Matlab impone una restricción muy importante a
la definición de sistemas a tráves de funciones de
transferencia. Esta es que los sistemas deben ser
propios, es decir, el orden del numerador debe ser
igual o menor al orden del denominador.
Ingeniería Eléctrica y Electrónica
Creando modelos con variables de estado
Para definir el sistema:
)(001
)()()(
0100011503914.40
)()()(
3
2
1
3
2
1
tutxtxtx
txtxtx
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡+
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡ −−−=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
[ ]⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
)()()(
360180)(
3
2
1
txtxtx
ty
Ingeniería Eléctrica y Electrónica
Matlab provee la funcion ‘ss’, por ejemplo:
>> a=[-40.4 -391 -150; 1 0 0; 0 1 0];
>> b=[1 0 0]';
>> c=[0 18 360];
>> d=0;
>> sys=ss(a,b,c,d)
a = x1 x2 x3
x1 -40.4 -391 -150
x2 1 0 0
x3 0 1 0
b = u1
x1 1
x2 0
x3 0
c = x1 x2 x3
y1 0 18 360
d = u1
y1 0
Continuous-time model.
Ingeniería Eléctrica y Electrónica
De manera similar que con funciones de transferencia,
podemos usar la función ‘ord2’ para definir sistemas de
segundo orden, especificando y .
>> wn=2;
>> zeta=.707;
>> [a1,b1,c1,d1]=ord2(wn,zeta)
a1 = 0 1.0000
-4.0000 -2.8280
b1 = 0
1
c1 = 1 0
d1 = 0
nω ξ
Ingeniería Eléctrica y Electrónica
Cambiando de Espacio de Estado a Función de Transferencia
La función ‘ss2tf’ puede ser usada para cambiar un sistema con
definición en espacio de estado a función de transferencia.
>> [numcss,dencss]=ss2tf(a1,b1,c1,d1)
numcss = 0 0 1
dencss = 1.0000 2.8280 4.0000
>> tf(numcss,dencss)
Transfer function: 1
-----------------
s^2 + 2.828 s + 4
Ingeniería Eléctrica y Electrónica
Cambiando de Función de Transferencia a Espacio de Estado
La función ‘tf2ss’ puede ser usada para cambiar un sistema
definido con función de transferencia, a espacio de estado.
>> [actf,bctf,cctf,dctf]=tf2ss(numcss,dencss)
actf = -2.8280 -4.0000
1.0000 0
bctf = 1
0
cctf = 0 1
dctf = 0
Ingeniería Eléctrica y Electrónica
Construyendo Sistemas
Matlab provee funciones para la construccion de sistemas
complejos. Por ejemplo, para las siguientes configuraciones:
SERIE
PARALELO
REALIMENTACION UNITARIAREALIMENTACION
Ingeniería Eléctrica y Electrónica
Conección Serie
Para la conección serie, Matlab provee la función ‘series’,
por ejemplo:
>> G=tf(4,[1 2])
Transfer function:
4
-----
s + 2
>> H=tf([10 0.5],[1 2 4])
Transfer function:
10 s + 0.5
-------------
s^2 + 2 s + 4
>> sys_serie=series(G,H)
Transfer function:
40 s + 2
---------------------
s^3 + 4 s^2 + 8 s + 8
Ingeniería Eléctrica y Electrónica
Conección Paralelo
Para la conección paralelo, Matlab provee la función ‘parallel’,
por ejemplo:
>> sys_paralelo=parallel(G,H)
Transfer function:
14 s^2 + 28.5 s + 17
---------------------
s^3 + 4 s^2 + 8 s + 8
Ingeniería Eléctrica y Electrónica
Conección con Realimentación
Para la conección con realimentación, Matlab provee la
función ‘feedback’. Con realimentación unitaria:
>> sys_realim_uni=feedback(G,1)
Transfer function:
4
-----
s + 6
Con realimentación:
>> sys_realim=feedback(G,H)
Transfer function:
4 s^2 + 8 s + 16
-----------------------
s^3 + 4 s^2 + 48 s + 10
Ingeniería Eléctrica y Electrónica
Sistemas complejos:
Para construir sistemas mas complejos, Matlab provee el
archivo m ‘blkbuild.m’. Por ejemplo para el sistema
G0(s) G1(s) G2(s) G3(s)
H1(s)
H2(s) H3(s)
+ + +
1 2 3 4
6 7
5
- - -R(s) Y(s)
Ingeniería Eléctrica y Electrónica
sistema_complejo.m
%Usando blkbuild para construir un sistema complejo
n1=1; d1=1;
n2=1; d2=[1 1];
n3=1; d3=[1 2];
n4=1; d4=[1 3];
n5=4; d5=1;
n6=8; d6=1;
n7=12; d7=1;
nblocks=7;
blkbuild
q=[2 1 -5 0 0
3 2 -6 0 0
4 2 -6 3 -7
5 3 0 0 0
6 3 0 0 0
7 4 0 0 0];
inpt=1;
output=4;
[aa,bb,cc,dd]=connect(a,b,c,d,q,inpt,output);
[num,den]=ss2tf(aa,bb,cc,dd);
tf(num,den)
Ingeniería Eléctrica y Electrónica
Calculando Polos y Ceros
Para calcular los polos y ceros de un sistema, a partir de los
polinomios del numerador y denominador, Matlab provee la función
‘tf2zp’. Por ejemplo para el sistema:
2724364523)( 2345
234
+++++++++
=sssss
sssssG
Corremos el siguiente código:
>> num=[3 2 5 4 6];>> den=[1 3 4 2 7 2];>> [z,p,]=tf2zp(num,den)
Ingeniería Eléctrica y Electrónica
Resultando
>> [z,p,k]=tf2zp(num,den)
z = 0.4019 + 1.1965i
0.4019 - 1.1965i
-0.7352 + 0.8455i
-0.7352 - 0.8455i
p = -1.7680 + 1.2673i
-1.7680 - 1.2673i
0.4176 + 1.1130i
0.4176 - 1.1130i
-0.2991
k = 3
Ingeniería Eléctrica y Electrónica
Los polos y ceros tambien pueden ser calculados a partir de un
sistema descrito en espacio de estado. Por ejemplo:
usando_ss2zp.m
vec=[1 2 5 3 6 1];
A=compan(vec);
c=[1 0 0 0 0];
b=[0;0;0;0;1];
[z,p,k]=ss2zp(A,b,c,0)
Ingeniería Eléctrica y Electrónica
Resultando
z = 1.0e-005 *
0.8792
-0.4396 + 0.7614i
-0.4396 - 0.7614i
p =
-1.0433 + 1.6215i
-1.0433 - 1.6215i
0.1323 + 1.2217i
0.1323 - 1.2217i
-0.1781
k = -1
Ingeniería Eléctrica y Electrónica
Mapa de polos y ceros
Para visualizar el mapa de polos y ceros, Matlab provee la
función ‘pzmap’. Al correr esta función se crea una figura
mostrando en forma gráfica la ubicación de polos y ceros.
Al correr el código,
>> pzmap(p,z)
Resulta en la siguiente gráfica
Ingeniería Eléctrica y Electrónica
Ingeniería Eléctrica y Electrónica
Creando Funciones de Transferencia a partir de Polos y Ceros
Es posible definir funciones de transferencia a partir del listadoexplicto de polos, ceros y ganancia.
polocero2ft.m
z=[0;0;0;-1];p=[-1+i –1-i -2 -3.15+2.63i -3.15-2.63i];k=2;[num,den]=zp2f(z,p,k);tf(num,den)
Transfer function:2 s^4 + 2 s^3
--------------------------------------------------------------------s^5 + 10.3 s^4 + 48.04 s^3 + 109.2 s^2 + 126.2 s + 67.36
Ingeniería Eléctrica y Electrónica
Creando sistemas en Espacio de Estado a partir de Polos y Ceros
usandozp2ss.m
[a,b,c,d]=zp2ss( [-1] , [-2 –1+i –1-i ], 2);pausepoles=eig(a)pauseceros=tzero(a,b,c,d)pausek=dcgain(a,b,c,d)
a = -2.0000 0 0-1.0000 -2.0000 -1.4142
0 1.4142 0b = 1
10
c = 0 0 1.4142
d = 0
poles = -1.0000 + 1.0000i-1.0000 - 1.0000i-2.0000
ceros = -1
k = 0.5000
Ingeniería Eléctrica y ElectrónicaIngeniería Eléctrica y Electrónica
Análisis de respuesta transitoria
Matlab provee funciones para la aplicación de estímulos asistemas LIT definidos a tráves de funciones de transferenciao variables de estado.
Las funciones mas comunes son: la entrada escalón (step),el impulso (impulse), condición inicial (initial), y señalarbitraria (lsim).
Ejemplo: Un sistema con no ceros, polos en s=-1±3i, yganancia 3, tiene la siguiente respuesta a una estradaescalon.
Ingeniería Eléctrica y Electrónica
>> [num,den]=zp2tf([ ],[-1+3i -1-3i],3)
num = 0 0 3
den = 1 2 10
>> sys=tf(num,den)
Transfer function:3
--------------s^2 + 2 s + 10
>> step(sys)
Ingeniería Eléctrica y Electrónica
La función step puede ser invocada con argumentos de salida,
>> [y,t]=step(num,den);
Donde ‘y’ es el vector de la respuesta del sistema, y ‘t’ es el vector del tiempo de simulación.
Ejercicio: Crear un archivo ‘m’ que obtenga: El valor de pico, tiempo de pico, tiempo de crecimiento, tiempo de establecimiento y frecuencia natural.
Ingeniería Eléctrica y Electrónica
Respuesta al Impulso
>> [num,den]=zp2tf([ ],[-1+3i -1-3i],3)
num = 0 0 3
den = 1 2 10
>> sys=tf(num,den)
Transfer function:3
--------------s^2 + 2 s + 10
>> impulse(sys)
Ingeniería Eléctrica y Electrónica
Respuesta a la Rampa
Matlab no provee una función para una entrada rampa. Sin embargo,
provee la función ‘lsim’ que permite definir una señal arbitaria.
La sintaxis de ‘lsim’ es lsim(sys,u,t) donde t es el vector de tiempo y
u es la señal de entrada para cada instante de tiempo en t.
Entonces, una rampa con pendiente unitaria y duración de 10
segundos pude ser definida como,
>> t=0:.01:10;
>> u=t;
Ingeniería Eléctrica y Electrónica
Respuesta a la Rampa
>> lsim(sys,u,t)
>> hold
Current plot held
>> plot(t,u)
Ingeniería Eléctrica y Electrónica
Respuesta a una Condición Inicial
Una de las ventajas de la representacion de sistemas LIT con variables deestado es la respuesta a condiciones iniciales. Matlab provee la función ‘initial’para simular la respuesta a una condición inicial.
>> [a,b,c,d]=zp2ss([ ],[-1+6i -1-6i],10);>> sys=ss(a,b,c,d);>> [y,t,x]=initial(sys,[-10 10]');>> subplot(1,2,1), plot(t,x(:,1),t,x(:,2))>> subplot(1,2,2), plot(x(:,1),x(:,2))
Ingeniería Eléctrica y Electrónica
Respuesta a una Condición Inicial
>> [a,b,c,d]=zp2ss([ ],[6i -6i],10);>> sys=ss(a,b,c,d);>> [y,t,x]=initial(sys,[-10 10]‘,5);>> subplot(1,2,1), plot(t,x(:,1),t,x(:,2))>> subplot(1,2,2), plot(x(:,1),x(:,2))
Ingeniería Eléctrica y Electrónica
Respuesta a una Condición Inicial
>> [a,b,c,d]=zp2ss([ ],[1+6i 1-6i],10);>> sys=ss(a,b,c,d);>> [y,t,x]=initial(sys,[-10 10]‘,5);>> subplot(1,2,1), plot(t,x(:,1),t,x(:,2))>> subplot(1,2,2), plot(x(:,1),x(:,2))