Está en la página 1de 75

PARTE II:

SIMULACIÓN DE SISTEMAS:
FUNCIONES PARA CONTROL

Mgt. Ing. Carlos Gustavo Pérez.


Funciones para Control
• ss, tf, zpk. • Pole() • Step()
• tf2ss, c2d • Zero() • Impulse()
• ssdata, tfdata • Tf() • Pade()
• series, parallel • Feedback () • Margin()
• order • Freqs • Polar()
• pole, zero, pzmap • Bode() • initial, lsim
• minreal • Rlocus() • bode, nyquist
• nyquist() • evalfr, dcgain
• Nichols() • bandwidth
• pid, lqr, kalman
Funciones Gráficas • isstable
• Semilogx() • Ezplot()
• Semilogy() • Plot()
• Loglog()
Función de transferencia
La representación en función de transferencia de un sistema
dinámico se puede ingresar a MATLAB con el comando “tf”.

Ejemplo: G1(s) = 10/ (s2+2s+10), G2(s) = 5/(s+5)


num1 = 10;
den1 = [1 2 10];
num2 = 5;
den2 = [1 5];
G1 = tf(num1, den1) %G1(s)=10/(s2+2s+10)
G2 = tf(num2, den2) %G2(s)=5/(s+5)
Función de transferencia

De manera alternativa, se puede emplear directamente


expresiones racionales para crear un modelo:

s = tf('s'); %Define variable de Laplace “s”


G1s = 10/(s^2+2*s+10) %TF de manera directa
G2s = 5/(s+5)
G3s = (s^2+3*s+1)*(s+2)/(s^4+8*s^3+10*s^2+20*s+25)/(s^2+10)
Función de transferencia
Una vez creado un modelo, se puede encontrar características
propias tales como los polos y ceros:
pole(G3s) %Encuentra polos de FdT
zero(G3s) %Encuentra ceros de FdT
pzmap(G3s) %Muestra polos (x) y ceros (o) de manera gráfica

Así como, combinar funciones de transferencia:

Gs = series(G1,G2) %Arreglo serie: Gs = G1*G2


Gp = parallel(G1,G2) %Arreglo paralelo Gp = G1+G2
Gfn = feedback(G1,G2,-1) %Arreglo de realimentación negativa
Gfp = feedback(G1,G2,+1) %Arreglo de realimentación positiva
Representación de polos y ceros
Para realizar esta representación utilizaremos el
comando pzmap a partir de una función racional
previamente definida.

1. Obtener la representación gráfica en el plano s de los


polos y ceros de:

𝑠 2 − 4𝑠 + 20
𝐺 𝑠 =
(𝑠 + 5)(𝑠 2 + 22 + 10)
Representación de polos y ceros
Escribimos num y den, utilizar la función conv:
>> printsys(num,den)
num/den = Pole-Zero Map
5
s^2 - 4 s + 20
4
-----------------------
s^3 + 7 s^2 + 20 s + 50
3

>> numraices=roots(num) % polos del sistema


1

Imaginary Axis
>> denraices=roots(den) % polos del sistema 0

-1

>>pzmap(num,den) -2

% definición de límites: Xmax Xmin Ymin Ymax -3

>>axis([-6 3 -5 5]) -4

-5
-6 -5 -4 -3 -2 -1 0 1 2 3
Real Axis
Descomposición en Fracciones Parciales
Una FT G(s) se descompone en fracciones parciales con:
>> [r,p,k]=residue(num,den)

𝒃𝒎 𝒔𝒎 +𝒃𝒎−𝟏 𝒔𝒎−𝟏 +⋯𝒃𝟎 𝑷(𝒔) 𝒓(𝟏) 𝒓(𝟐) 𝒓 𝒏


𝑮 𝒔 = = = + + ⋯ + 𝒌(𝒔)
𝒂𝒏 𝒔𝒏 +𝒂𝒏−𝟏 𝒔𝒏−𝟏 +⋯𝒂𝟎 𝑸(𝒔) 𝒔−𝒑(𝟏) 𝒔−𝒑(𝟐) 𝒔−𝒑 𝒏

Donde: r= coeficientes de los numeradores, p= polos del sistema ((𝒔 − 𝒑𝟏 )(𝒔 − 𝒑𝟐 )...
k= residuo

5 Lo que equivale a:
Ejemplo: 𝐺 𝑠 =
𝑠 2 +2𝑠

𝑃(𝑠) −2.5 2.5


= +
>> [r,p,k]=residue([5],[1 2 0]) 𝑄(𝑠) 𝑠 + 2 𝑠
r= p= k=
-2.5000 -2 []
Residuo = 0
2.5000 0
Descomposición en Fracciones Parciales
1. Presentar el equivalente en funciones parciales de la
siguiente FT:

𝑷(𝒔) 𝟓𝒔𝟐 − 𝟏𝟏𝟏 − 𝟏𝟏


𝑮 𝒔 = =
𝑸(𝒔) 𝒔𝟒 − 𝟓𝒔𝟑 + 𝟔𝒔𝟐 + 𝟒𝟒 − 𝟖

De la misma forma se puede realizar una conversión inversa de


fracciones parciales a función racional:

>> [num,den]=residue(r,p,k)

2. Convertir:
𝑷(𝒔) −𝟐. 𝟑𝟑𝟑𝟑 𝟑 𝟎. 𝟔𝟔𝟔𝟔
= + −
𝑸(𝒔) 𝒔 + 𝟏𝟏 𝒔+𝟓 𝒔+𝟐
Objetos Simbólicos en Matlab
• Matlab cuenta con herramientas para realizar análisis
simbólico, bajo su sintaxis habitual. Ej.: y=int(x^2)

• syms construye un objeto simbólico:


syms arg1 arg2
ó
>> arg1 = sym(‘arg1’);
>> arg2 = sym(‘arg2’);

• Para remover un objeto de la memoria:


syms arg1 arg2 … clear
Transformada Directa de Laplace
• Transformar al dominio s: 𝑦 𝑡 = 8𝑠𝑠𝑠 4𝑡 − 5cos(4𝑡)
• Primero se crea las variables simbólicas:
>> syms t s
% La notación en minúscula supone una función definida en t
>> y=8*sin(4*t)-5*cos(4*t);
% La notación en mayúscula indica una función transformada
>> Y=laplace(y)
Y=
32/(s^2 + 16) - (5*s)/(s^2 + 16)
• Por tanto:
32 5𝑠
𝐿 8𝑠𝑠𝑠 4𝑡 − 5cos(4𝑡) = 2 − 2
𝑠 + 16 𝑠 + 16
Transformada Inversa de Laplace
6𝑠−4
• Transformar al dominio t: 𝑦 𝑠 = 𝑠2 +4𝑠+20
• Primero se crea las variables simbólicas:
>> syms t s
% La notación en mayúscula supone una función definida en s
>> Y=(6*s-4)/(s^2+4*s+20)
% La notación en minúscula indica una función transformada
>> y=ilaplace(Y)

• Por tanto:
−1
6𝑠 − 4 −2𝑡 −2𝑡
𝐿 2
= 6𝑒 cos 4𝑡 − 4𝑒 𝑠𝑠𝑠 4𝑡
𝑠 + 4𝑠 + 20
Ejercicios
1. Obtener la FT para el diagrama de polos y ceros de la figura:
Pole-Zero Map
4

1
Imaginary Axis

-1

-2

-3

-4
-9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2
Real Axis

Considerar una ganancia de K=6.


Ejercicios
2. Por descomposición en fracciones parciales, obtenga g(t):

𝑠2 −𝑠−3
a) 𝐸 𝑠 = 𝑠(𝑠−1)(𝑠+3)

6𝑠2 +26𝑠+8
b) 𝐹 𝑠 = 𝑠 3 +4𝑠2 +14𝑠+20

10𝑠 2 +51𝑠+56
c) 𝐺 𝑠 = (𝑠+4)(𝑠+2)2

Graficar las funciones en el tiempo con el comando ezplot(f)


Ejercicios
3. Considerar el sistema mecánico de la figura, inicialmente en reposo. El
desplazamiento de x i y son medidos desde sus respectivas posiciones
de equilibrio. Asumiendo que p(t) es la entrada y x(t) es la salida.
Encontrar una solución analítica de x(t):

𝑋(𝑠) 10𝑠 + 100 𝑏2


= 3
𝑃(𝑠) 𝑠 + 10𝑠 2 + 100𝑠 + 600
𝐾1 𝑝
Donde P(s) es un escalón de fuerza de 10N. 𝐾2 𝑦

10
𝑃 𝑠 = 𝑚
𝑠
𝑥
Expandir en fracciones parciales y aplicar transformada inversa
Solución de Ecuaciones Diferenciales
Una de las maneras de resolverlas es utilizando la función
dsolve
• D indica la primera diferenciación de la variable dependiente.
• D2 indica la segunda diferenciación y así sucesivamente.
La combinación de dsolve con el símbolo Dn permite
determinar su solución con Matlab.

1. Resolver: dy/dt + 2y = 5 con y(0)=2


>> y=dsolve('Dy+2*y=5','y(0)=2')
y=
5/2 - 1/(2*exp(2*t))
Ejercicios
1. Resolver la siguiente ecuación diferencial:

𝑑𝑑 2 𝑑𝑑
2
+2 + 10𝑦 = 2𝑈(𝑡)
𝑑𝑑 𝑑𝑑

Para condiciones iniciales:


a) y(0)=y’(0)=0
b) Y(0)= -2, y’(0)=0
Ejercicios
a) Para condiciones iniciales nulas: y(0)=y’(0)=0
>> y=dsolve('D2y+2*Dy+10*y=2','Dy(0)=0','y(0)=0')
y=
1/5 - sin(3*t)/(15*exp(t)) - cos(3*t)/(5*exp(t))
>> simple(y) % comando que simplifica la expresión.
>>ezplot(y,[0 6]) %Presenta y en un rango de valores en función
de la variable independiente t
>>axis([0 6 0 0.3]) %Personaliza los ejes de la gráfica
1/5 - sin(3 t)/(15 exp(t)) - cos(3 t)/(5 exp(t))

0.25

0.2

0.15

0.1

0.05

0
0 1 2 3 4 5 6
t
Respuesta Transitoria en Matlab
• Se presentan las bondades de Matlab para obtener la respuesta de los
sistemas ante entradas en el dominio del tiempo como el escalón,
impulso y rampa.
• Se analizan las respuestas ante condiciones iniciales y funciones de
tiempo arbitrarias.

Dado el sistema general de segundo orden,

𝐾𝐾𝑛2
𝐺 𝑠 = 2
𝑠 + 2𝜁𝑤𝑛 𝑠 + 𝑤𝑛2

Se define en función de:

𝜁 = Factor de amortiguamiento

𝑤𝑛 = Frecuencia natural
Respuesta Transitoria en Matlab
• Considerando, por ejemplo, el cado de

𝜁 = 0.4

𝑤𝑛 = 5 rad / seg

En Matlab:
>> wn=5;
>> Fa=0.4;
>> [num0,den]=ord2(wn,Fa);
>> num=wn^2*num0;
>> printsys(num,den,'s')

num/den =

25
--------------
s^2 + 4 s + 25
Respuesta al Escalón
Ej 01: Considerando el sistema mecánico mostrado, montado sobre una
plataforma móvil, donde u es el desplazamiento de entrada i y es el
desplazamiento de salida, derivar una función de transferencia y calcular su
respuesta al escalón en Matlab.

𝑚𝑚 = ∑ 𝐹
𝑢 𝑦

𝑑2 𝑦 𝑑𝑑 𝑑𝑑
𝑘 𝑚 2 = −𝑏 − − 𝑘(𝑦 − 𝑢)
𝑑𝑡 𝑑𝑑 𝑑𝑑
𝑚
𝑑2 𝑦 𝑑𝑑 𝑑𝑑
𝑚 2 +𝑏 + 𝑘𝑘 = 𝑏 + 𝑘𝑘
𝑏 𝑑𝑡 𝑑𝑑 𝑑𝑑

Representa el modelo matemático


del sistema
𝒑𝒑𝒑𝒑𝒑𝒑𝒑𝒑𝒑𝒑 𝒄𝒄𝒄 𝒎𝒎𝒎𝒎 𝒅𝒅𝒅𝒅𝒅𝒅𝒅𝒅𝒅𝒅𝒅𝒅
Respuesta al Escalón
De donde:
(𝑚𝑠 2 + 𝑏𝑏 + 𝑘)𝑌 𝑠 = (𝑏𝑏 + 𝑘)𝑈(𝑠)

Asumiendo m=10 Kg, b= 20 N-s/m, k=100 N/m y la entrada u(t) como un


escalón de 1m, se obtiene:
𝑌(𝑠) 20𝑠+100 2𝑠+10
= =
𝑈(𝑠) 10𝑠 2 +20𝑠+100 𝑠 2 +2𝑠+10

Finalmente en Matlab: 1.5


Step Response

>> num=[2 10];


>> den=[1 2 10]; 1

>> sys=tf(num,den);
Amplitude

>> step(sys)
>> grid 0.5

0
0 1 2 3 4 5 6
Time (sec)
Respuesta al Escalón
Asignando algunas características personalizadas:

>> t=0:0.01:8;
>> num=[2 10];
>> den=[1 2 10];
>> sys=tf(num,den);
>> step(sys,t);
>> grid
>> title('Respuesta al escalón Sistema Masa-Resorte','Fontsize',20')
>> xlabel('t','Fontsize',20')
>> ylabel('Salida y','Fontsize',20') Respuesta al escalón Sistema Masa-Resorte
1.5

1
Salida y

0.5

0
0 1 2 3 4 5 6 7 8

t (sec)
Respuesta al Escalón
Es posible también obtener curvas de respuesta al escalón a partir de
ecuaciones de estado.

Dado el sistema:

𝑥̇ 1 −1 −1 𝑥1 1 1 𝑢1
= 𝑥2 +
𝑥̇ 2 6.5 0 1 0 𝑢2
𝑦1 1 0 𝑥1 0 0 𝑢1
𝑦2 = 𝑥2 + 0 0 𝑢2
0 1
Graficar las 04 respuestas individuales al escalón.
Respuesta al Escalón
Dada la correspondencia de Funciones de Transferencia a partir de la
ecuación en espacio de estado, de acuerdo a la ecuación:

𝐺 𝑠 = 𝐶(𝑠𝑠 − 𝐴)−1 𝐵

El sistema queda descrito de la forma:

𝑠−1 𝑠
𝑦1 (𝑠) 𝑠 2 + 𝑠 + 6.5 𝑠 2 + 𝑠 + 6.5 𝑢1 (𝑠)
=
𝑦2 (𝑠) 𝑠 + 7.5 6.5 𝑢2 (𝑠)
𝑠 2 + 𝑠 + 6.5 𝑠 2 + 𝑠 + 6.5
Respuesta al Escalón
Sin embargo, graficando directamente de las matrices A, B, C y D, se obtiene
una respuesta equivalente:
Step Response
From: In(1) From: In(2)
>> A=[-1 -1;6.5 0]; 0.4

>> B=[1 1;1 0]; 0.2

>> C=[1 0; 0 1]; To: Out(1)


>> D=[0 0;0 0]; 0

>> step(A,B,C,D) -0.2


Amplitude

-0.4
2

1.5
To: Out(2)

0.5

0
0 2 4 6 8 10 12 0 2 4 6 8 10 12
Time (sec)
Respuesta al Escalón para sistemas Retroalimentados
Considerando el sistema mostrado en la figura, obtener la salida C(t),
cuando r(t)=1 y d(t)=0 y viceversa.
𝑑(𝑡)
𝑟(𝑡) 𝑐(𝑡)

1. Considerando la perturbación d(t)=0: Respuesta al escalón unitario Cr(s)/R(s)


1.4

>> t=0:0.01:5; 1.2

>> num1=[1]; 1

>> den1=[1 2 0];

Salida Y en función de r(t)


0.8
>> sys1=tf(num1,den1);
>> sys=feedback(10*sys1,[1]); 0.6

>> [c_r,t]=step(sys,t); 0.4

>> plot(t,c_r) 0.2

>> grid 0
0 0.5 1 1.5 2 2.5
t seg
3 3.5 4 4.5 5

>> title('Respuesta al escalón unitario C_r(s)/R(s)')


>> xlabel('t seg')
>> ylabel('Salida Y en función de r(t)')
Respuesta al Escalón para sistemas Retroalimentados
2. Considerando la entrada r(t)=0:

>> t=0:0.01:5;
>> num1=[1];
>> den1=[1 2 0];
>> sys1=tf(num1,den1);
>> sys=feedback(sys1,[10]);
>> [c_d,t]=step(sys,t);
>> plot(t,c_d)
>> grid
>> title('Respuesta al escalón unitario C_d(s)/D(s)')
>> xlabel('t seg')
>> ylabel('Salida Y en función de perturbación d(t)')
Respuesta al Escalón para sistemas Retroalimentados
Graficar la respuesta al escalón de los siguientes sistemas:

a)
𝑟(𝑡) 𝑐(𝑡)

b)

𝑟(𝑡) 𝑐(𝑡)

Utilizar la función series(sys1 , sys2) para multiplicación de sistemas en serie


Lugar Geométrico de Raíces
• Es un método gráfico para examinar cómo las raíces de un
sistema cambian respecto a algún parámetro, usualmente
una ganancia dentro de un lazo de realimentación.

• Permite determinar la estabilidad de un sistema.

• Se emplea en el diseño del factor de amortiguamiento y


frecuencia natural de un sistema de control.

3
Lugar Geométrico de Raíces
Considerando el sistema en lazo cerrado de la figura:

Cuya función de transferencia en lazo cerrado es:

𝐶(𝑠) 𝐺(𝑠)
=
𝑅(𝑠) 1 + 𝐺 𝑠 𝐻(𝑠)

Donde la ecuación característica de lazo cerrado se obtiene:


1 + 𝐺 𝑠 𝐻 𝑠 = 0 → 𝐺 𝑠 𝐻 𝑠 = −1

Esta ecuación compleja se divide en 02 ecuaciones:

Angulo: 𝐺 𝑠 𝐻(𝑠) = ±180° 2𝑘 + 1 (k=0,1,2,…) Magnitud: 𝐺 𝑠 𝐻(𝑠) = 1


Lugar Geométrico de Raíces
Las raíces de la ecuación característica (Los polos en lazo cerrado)
corresponden a la ganancia determinada por las condiciones del ángulo y
por la magnitud.

La localización de las raíces del sistema se define por la localización de los


polos en lazo cerrado, cuando la ganancia K es variada de 0 a ∞.

En Matlab, se utiliza el comando rlocus:

>> [r,K]=rlocus(num,den)
>> [r,K]=rlocus(num,den,K)
>> [r,K]=rlocus(A,B,C,D)
>> [r,K]=rlocus(A,B,C,D,K)
>> [r,K]=rlocus(sys)
Lugar Geométrico de Raíces
1. Considerando el sistema de la figura, graficar el lugar de raíces
contemplado bajo la región: −6 ≤ 𝑥 ≤ 6, −6 ≤ 𝑦 ≤ 6

Código Matlab:
>> num=[1 3]; den=conv([1 1 0],[1 4 16]);
>> r=rlocus(num,den);
>> plot(r,'-'); v=[-6 6 -6 6]; axis(v); axis('square')
>> grid
>> title('Lugar de Raices de: G(s)=K(s+3)/[s(s+1)(s^2+4s+16)]')
>> xlabel('eje real'); ylabel('eje imaginario')
>> gtext('o','Fontsize',15) % Para ubicar 'o' en el cero de lazo abierto.
>> gtext('x','Fontsize',15) % Para ubicar 'x' en los 04 polos de lazo abierto.
>> gtext('x','Fontsize',15) % Para ubicar 'x' en los 04 polos de lazo abierto.
>> gtext('x','Fontsize',15) % Para ubicar 'x' en los 04 polos de lazo abierto.
>> gtext('x','Fontsize',15) % Para ubicar 'x' en los 04 polos de lazo abierto.
Lugar Geométrico de Raíces
Graficar el LGR para el sistema que se muestra en la figura, considerar:
− 6 ≤ 𝑥 ≤ 6, −6 ≤ 𝑦 ≤ 6.

Considerar:

K=[k1 k2 k3]

Donde:

K1=0:0.2:20;
K2=20:0.1:30;
K3=30:5:1000;
Lugar Geométrico de Raíces

2.

s = tf('s');
G = 2/(3*s+1)/(s+1); %Define FdT
H = 0.5;
sys_ol = G*H; %FdT del sistema en lazo abierto
figure; %Abre una figura nueva
rlocus(sys_ol) %Grafica LGR para sys_ol
Lugar Geométrico de Raíces

grid %Curvas de nivel


axis([-1.2 0.2 -1.8 1.8]) %axis[xi xf yi yf]

axis('equal') %Iguala escala en direcciones X e Y


dseta = 0.707; %Factor de amortiguamiento ds= 0.707

omega = 1.33; %Frecuencia natural wn = 1.33


sgrid(dseta,[]); %sgrid(ds, wn) curva de nivel
sgrid([], omega); %especifica un cierto ds y/o wn
sgrid(dseta, omega);
Lugar Geométrico de Raíces

Para el siguiente sistema de control:

Grafique su LGR y determine el valor de K tal que se consiga


tener un factor de amortiguamiento ζ = 0.5 en un par de polos
complejos dominantes. Verifique sus resultados encontrando la
respuesta en el tiempo ante un escalón unitario.
Análisis de la Respuesta en Frecuencia:
Diagrama de Bode
Un Diagrama de Bode es una representación gráfica que sirve
para caracterizar la respuesta en frecuencia de un sistema.
Normalmente consta de dos gráficas separadas, una que
corresponde con la magnitud de dicha función y otra que
corresponde con la fase.
El diagrama de magnitud de Bode dibuja el módulo de la función
de transferencia (ganancia) en decibelios en función de la
frecuencia angular en escala logarítmica.
El diagrama de fase de Bode representa la fase de la función de
transferencia en función de la frecuencia angular en escala
logarítmica. Se da usualmente en grados sexagesimales.
Análisis de la Respuesta en Frecuencia
El comando BODE calcula las magnitudes y ángulos de fase de la
respuesta en frecuencia de sistemas lineales continuos e invariantes en
el tiempo.

Los comandos utilizados regularmente son (la magnitud se genera en


db):

>> bode(num,den)
>> bode (num,den,w)
>> bode(A, B, C, D)
>> bode (A, B, C, D, w)
>> bode (A, B, C, D, w)
>> bode (A, B,C,D, iu, w)
>> bode(sys)

Para almacenar los valores de la magnitud y la fase se utiliza:


>> [mag,phase,w]=bode(num,den,w)

Para convertir la magnitud a decibelios: >> magdB=20*log10(mag)


Análisis de la Respuesta en Frecuencia
Para especificar el rango de frecuencias se utiliza el comando logspace

>> w=logspace(d1,d2)

>> w=logspace(d1,d2,n)

Con lo cual se generan n puntos especiados logarítmicamente entre


10^d y 10^d2.

Por ejemplo, para generar 100 puntos entre 1 rad/seg y 1000 rad /seg:

>>w= logspace(0,3,100)
Análisis de la Respuesta en Frecuencia
Calcular el diagrama de Bode para la FT:

9(𝑠 2 + 0.22 + 1)
G s =
𝑠(𝑠 2 + 1.2𝑠 + 9)

Considerar un rango de frecuencias de 0.01 a 1000 rad / seg.

Código Matlab:

>> num=[9 1.8 9];


>> den=[1 1.2 9 0];
>> w=logspace(-2,3,100);
>> bode(num,den,w)
>> grid
>> title('Diagrama de Bode de G(s)')
Análisis de la Respuesta en Frecuencia

sys_ol1 = 1/(0.3*s+1); %Define FdT (1) en L.A.


sys_ol2 = 2/(s+12)*5/(2*s+1); %Define FdT (2) en L.A.

figure; %Abre figura nueva


bode(sys_ol1) %Muestra diagrama de Bode
figure;
bode(sys_ol1,'r', sys_ol2,'k') %D. Bode
grid %Habilita grilla
Análisis de la Respuesta en Frecuencia
Margen de ganancia y fase
Algo importante a obtener tras la realización del diagrama de
Bode para el análisis de la estabilidad de un sistema es lo
siguiente:
Margen de fase: Es el ángulo que le falta a la fase para llegar a
los -180º cuando la ganancia es de 0dB. Si la ganancia es
siempre inferior a 0dB, el margen de fase es infinito.
Margen de ganancia: Es el valor por el que habría que
multiplicar (en decimal), o sumar (en dB) a la ganancia para
llegar a 0dB cuando la fase es de -180º.
El sistema representado será estable si el margen de ganancia y
el margen de fase son positivos.

4
Ejemplo MG y MF
sys_ol3 = 5/s/(s^2+2*s+4)
% Margen de Ganancia (MG) % Margen de
Fase (MF)
% Frecuencias asociadas Wcg y Wcf
[MG, MF, Wcg, Wcf] = margin(sys_ol3)
% Margen de manera gráfica
margin(sys_ol3)
sys_ol4 = 3e4 * (0.05*s + 1)^2 / ((s+1)^3 * (0.01*s + 1));
% Ancho de banda
BW = bandwidth(sys_ol4)
% Ganancia en continua GH(0)
Gdc = dcgain(sys_ol4)

4
Análisis de la Respuesta en Frecuencia
Considerando el sistema de la figura:

Analizar su estabilidad usando el criterio de BODE


Análisis de la Respuesta en Frecuencia
Su diagrama de bloques en lazo cerrado es:
Circuitos (1er orden)
Modelos en MATLAB
%Modelos de Primer Orden
s = tf('s');
R = 10e+3; %Resistencia del circuito RC, R = 10kΩ
C = 0.02e-3; %Condensador del circuito RC, C = 0.02mF
Kp = 1; %Ganancia del modelo
tau = R*C; %Constante de tiempo
RC_sys = Kp/(tau*s+1) %Crea modelo del circuito RC
R1= 1e+6; %Resistencia R1 del amplificador, R1= 1MΩ
R2= 10e+6; %Resistencia R2 del amplificador, R1= 10MΩ
C= 0.47e-6; %Condensador C del amplificador, C=0.47uF
Kp = -R2/R1; %Ganancia del modelo
tau = C*R2; %Constante de tiempo
Opamp_sys = Kp/(tau*s+1) %Crea modelo del amplificador
Circuitos (2do orden)
Modelos en MATLAB
%Modelos de Segundo Orden
s = tf('s');
R1=20e+3; %R del circuito doble malla RC, R1=20kΩ
C1=0.04e-3; %C del circuito doble malla RC, C1 = 0.04mF
R2 = 50e+3; %R del circuito doble malla RC, R2 = 50kΩ
C2 = 0.13e-3; %C del circuito doble malla RC, C2 = 0.13mF
%Factor de Amortiguamiento y frecuencia natural
dseta=(R1*C1+R2*C2+R1*C2)/(2*sqrt(R1*C1*R2*C2));
omega = 1/sqrt(R1*C1*R2*C2);
DobleRC_sys=omega^2/(s^2+2*dseta*omega*s+omega^2)
L = 0.8; %Inductancia del circuito LRC, L = 0.8H
R = 8.33; %Resistencia del circuito LRC, R = 8.33Ω
C = 20e-3; %Condensador del circuito LRC, C = 20mF
LRC_sys = C*s/(L*C*s^2+R*C*s+1) %Crea modelo del LRC
Aplica señal estándar

Como señales estándar se puede utilizar el escalón y el impulso


unitario:

step(RC_sys); %Respuesta al escalón unitario


grid %Grilla en la gráfica
impulse(DobleRC_sys, 60); %Respuesta al impulso, tf = 60s

Para estas señales existe una herramienta gráfica que permite


encontrar parámetros importantes de la respuesta en el tiempo
de manera bastante sencilla:

ltiview(LRC_sys) %Lanza LTI Viewer en MATLAB


LTI Viewer
Señal arbitraria
Por otro lado, es posible generar señales de entrada arbitrarias para
estimular sistemas con la instrucción “lsim”:

t = 0:0.01:100; %Define vector de tiempos


u = t; %Define señal a aplicar
lsim(Opamp_sys,u,t) %Aplica señal
u = exp(-t/20);
lsim(LRC_sys,u,t)
u = 10*sin(t/2+pi/6);
lsim(RC_sys,u,t)
Tdi = round(0.5*rand*length(t));
Tdc = round(0.5*rand*length(t));
u = [zeros(1, Tdi) ones(1, Tdc) zeros(1,length(t)-Tdi-Tdc)];
lsim(DobleRC_sys,u,t)
Espacio de estados
Dado un modelo de sistema en representación de espacio de
estados, este se puede ingresar a MATLAB con ayuda de la
instrucción: “ss”.

Ejemplo: Para el sistema:

A = [0 1; -5 -2];
B = [0 ; 3];
C = [0 1];
D = 0;

sys = ss (A, B, C, D) %Define modelo en espacio de estados


Ejemplo: Motor DC

Dado el modelo de un motor DC estudiar su respuesta en el


tiempo.
Modelo matemático
El modelo matemático de un motor DC viene dado por:

Donde:
x1: ángulo del eje,
x2: velocidad del eje,
x3: corriente de armadura,

Entrada al sistema u: ea.


Salida del sistema: y = [x1 x2 x3]’
Parámetros del motor

Se han considerado los siguientes parámetros de construcción


del motor:

R = 1.0; %Resistencia del circuito RL


L = 0.5; %Inductancia del circuito RL
Kt = 0.01; % Torque generado por corriente N.m/A
Kth = 0.01; % Fuerza contra-electromotriz V/rad/s
Bf = 0.1; % Fricción mecánica N.m.s
J = 0.01; % Momento de inercia del rotor kg.m2
Matrices del modelo

%Matriz de estado
A = [0 1 0; 0 -Bf/J Kt/J; 0 -Kth/L -R/L ];
%Matriz de entrada
B = [0 ; 0 ; 1/L];
%Matriz de salida
C = eye(3); %Matriz identidad
%Matriz de transferencia directa
D = 0;

sys = ss (A,B,C,D) %State-Space Model


Respuesta en el tiempo

%Respuesta a condiciones iniciales


% x1(0) = pi/6, x2(0) = pi/3, x3(0) = 0.5
x0 = [pi/6 ; pi/3 ; 0.5]; %Vector columna

figure; initial (sys, x0) %Evalúa condiciones iniciales

%Entrada escalón unitario


figure; step (sys, 20) %Simula hasta t = 20 s

%Entrada impulso unitario


figure; impulse (sys, 10) %Simula hasta t = 10 s
Respuesta al escalón
Respuesta forzada
Si queremos aplicar una señal arbitraria, tiene que crearse con
vectores.

f = 1; %Frecuencia: 1Hz
T = 1/f; %Período
t = 0:T/1000:T; %Vector de tiempos
u = 12*sin (2*pi*f*t); %Señal de voltaje
figure; lsim (sys, u, t) %Aplica señal arbitraria

En lsim para facilitar la visión de la respuesta del sistema, se


puede omitir mostrar la señal de entrada aplicada. Para esto,
hacer click derecho en cualquier punto de la gráfica, seleccionar
Show Input y quitarle el check.
Ejercicio: Análisis

Investigue las instrucciones: “stepinfo” y “lsiminfo”, explique su


funcionamiento y muestre un ejemplo para cada una de ellas.

Las instrucciones: “rlocus” y “bode” pueden recibir varios


argumentos como entrada (no sólo una F.T.). Investigue su
uso y muestre su aplicación con ejemplos.
Ejercicio: Sistema de suspensión

El sistema de suspensión de la figura tiene como entrada el


nivel de la superficie de la pista y la posición vertical del
vehículo como salida. Su función de transferencia se muestra
a continuación:
Condiciones del problema

Para el sistema de estudio considere lo siguiente:


m1 = 500 kg, m2 = 100 kg
k1 = 2000 N/m, k2= 104 N/m
b = 1000 N.s/m

Una superficie particularmente agreste puede aproximarse por una


función del siguiente tipo:

Determine el valor de “f” de tal forma que la amplitud de la


respuesta inducida en y(t) sea 10% de la amplitud en r(t).
Ejercicio: Respuesta de sistema
Considere el siguiente
sistema SIMO:

Investigue cómo se
puede representar
este sistema en MATLAB y
consiga su respuesta
en el tiempo a una
señal cuadrada,
tal como se muestra
en la figura.
Ejercicio: Motor DC

Explique en un párrafo sus observaciones y conclusiones sobre


las diferentes respuestas en el tiempo obtenidas del motor DC
desarrollado en clase.

Encuentre la respuesta en el tiempo del motor ante un estímulo


tipo triangular y trapezoidal.
Ejercicio: Sistema de nivel

El sistema mostrado tiene como objetivo regular el nivel de un


tanque mediante el accionamiento de válvulas.
Ecuaciones del sistema

La entrada del sistema es el voltaje de alimentación del


circuito ei, mientras que la salida es el nivel h(t).

Las ecuaciones que describen el sistema vienen dadas por:


Parámetros

Resistencia del motor, Ra = 10 Ω


Constante del par, ki = 10 N.m/A
Constante de fuerza, kb = 0.0706 V.s/m
Inercia de carga: JL = 10 kg.m2
Ganancia del amplificador, ka = 50
Inductancia del motor, La = 0.5 H
Inercia del motor, Jm = 0.005 kg.m2
Relación de engranes, n = 1/100
Carga y fricción del motor: despreciable
Area del tanque, A = 50 m2
Flujo en tanque

El número de válvulas conectadas al tanque desde el recipiente


es N = 10. Todas las válvulas tienen las mismas
características y son manipuladas simultáneamente por θc.

Las ecuaciones que gobiernan el flujo vienen dadas por:


Respuesta en el tiempo

Donde:
kl = 10 m3/s
ko = 50 m2/s
N = 10

Considerando que las variables de estado son:

Encuentre el modelo del sistema en espacio de estados y


encuentre el nivel del tanque ante diversos tipos de estímulos en
el voltaje de entrada.
SISOTOOL
SISOTOOL
Introducir la planta:
>> s = tf('s');
>> planta = (s + 7)/(s*(s + 5)*(s + 15)*(s + 20));

Ingresar a la aplicación:
>>sisotool
SISOTOOL

También podría gustarte