Matlab Control
-
Upload
elelefanterozado -
Category
Documents
-
view
300 -
download
8
Transcript of Matlab Control
![Page 1: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/1.jpg)
LUIS ALFREDO RODRIGUEZ UMAÑA
INGENIERO ELECTRONICO
ESPECIALISTA EN AUTOMATICA E INFORMATICA INDUSTRIAL
MatlabSimulink
para Control
![Page 2: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/2.jpg)
Usar Matlab y Simulink como
herramientas auxiliares para el
análisis y solución de
problemas de Ingenieria de
Control
Objetivo:
![Page 3: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/3.jpg)
Iniciando problemas de control
Creando funciones de transferencia:
Para crear funciones de transferencia se usa el comando ‘tf(num,den)’, por ejemplo la función de transferencia
1503914.40
36018
)(
)(23
sss
s
sF
sX
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’, en potencias decrecientes.
![Page 4: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/4.jpg)
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.
![Page 5: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/5.jpg)
En el caso de la siguiente función de transferencia
102)(
)(3
2
ss
s
sF
sX
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.
![Page 6: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/6.jpg)
En el estudio de sistemas LTI (linear Time-Invariant), es muy común el análisis de sistemas de segundo orden de la forma
22
2
2)(
)(
nn
n
sssU
sY
Estos sistemas pueden ser definidos con la función ‘ord2’,por ejemplo:
>> [num,den]=ord2(10,1)
num =1
den = 1 20 100
![Page 7: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/7.jpg)
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.
![Page 8: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/8.jpg)
Para sistemas con tiempo de retraso, con representacion en
‘s’ dada por , Matlab no provee un medio exacto para
describirlo. Sin embargo la funcion ‘pade’ puede ser usado
para generar una funcion de transferencia que puede
aproximar el tiempo de retraso. Por ejemplo:
>> [num,den]=pade(5,2)
num = 1.0000 -1.2000 0.4800
den = 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
![Page 9: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/9.jpg)
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.
![Page 10: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/10.jpg)
Creando modelos con variables de estado
Para definir el sistema:
)(
0
0
1
)(
)(
)(
010
001
1503914.40
)(
)(
)(
3
2
1
3
2
1
tu
tx
tx
tx
tx
tx
tx
)(
)(
)(
360180)(
3
2
1
tx
tx
tx
ty
![Page 11: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/11.jpg)
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.
![Page 12: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/12.jpg)
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
![Page 13: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/13.jpg)
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
![Page 14: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/14.jpg)
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
![Page 15: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/15.jpg)
Construyendo Sistemas
Matlab provee funciones para la construccion de sistemas
complejos. Por ejemplo, para las siguientes configuraciones:
SERIE
PARALELO
REALIMENTACION UNITARIA
REALIMENTACION
![Page 16: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/16.jpg)
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
![Page 17: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/17.jpg)
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
![Page 18: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/18.jpg)
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
![Page 19: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/19.jpg)
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)
![Page 20: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/20.jpg)
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)
![Page 21: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/21.jpg)
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:
27243
64523)(
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)
![Page 22: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/22.jpg)
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
![Page 23: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/23.jpg)
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)
![Page 24: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/24.jpg)
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
![Page 25: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/25.jpg)
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
![Page 26: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/26.jpg)
![Page 27: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/27.jpg)
Creando Funciones de Transferencia a partir de Polos y Ceros
Es posible definir funciones de transferencia a partir del listado explicto 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
![Page 28: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/28.jpg)
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 1 0
c = 0 0 1.4142
d = 0
poles = -1.0000 + 1.0000i -1.0000 - 1.0000i -2.0000
ceros = -1
k = 0.5000
![Page 29: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/29.jpg)
Análisis de respuesta transitoria
Matlab provee funciones para la aplicación de estímulos a
sistemas LIT definidos a tráves de funciones de transferencia
o variables de estado.
Las funciones mas comunes son: la entrada escalón (step),
el impulso (impulse), condición inicial (initial), y señal
arbitraria (lsim).
Ejemplo: Un sistema con no ceros, polos en s=-1±3i, y
ganancia 3, tiene la siguiente respuesta a una estrada
escalon.
![Page 30: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/30.jpg)
>> [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)
![Page 31: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/31.jpg)
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.
![Page 32: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/32.jpg)
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)
![Page 33: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/33.jpg)
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;
![Page 34: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/34.jpg)
Respuesta a la Rampa
>> lsim(sys,u,t)
>> hold
Current plot held
>> plot(t,u)
![Page 35: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/35.jpg)
Respuesta a una Condición Inicial
Una de las ventajas de la representacion de sistemas LIT con variables de estado 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))
![Page 36: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/36.jpg)
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))
![Page 37: Matlab Control](https://reader038.fdocuments.net/reader038/viewer/2022102621/5571fb18497959916993ef96/html5/thumbnails/37.jpg)
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))