Está en la página 1de 41

FIEE 1

______________________________________________________________________

Facultad de Ingeniería Eléctrica y Electrónica


(FIEE)

SEPARATA Nº 1 DE CONTROL I
(EE-615)

Autor: Ing. Daniel Carbonel Olazábal

Laboratorios que contiene:


- Nº1:
“MODELOS MATEMÁTICOS DE SISTEMAS LINEALES”
- Nº2:
“RESPUESTA DE SISTEMAS LINEALES EN TIEMPO CONTINUO”
- Nº3:
“GRÁFICOS EN 2D y en 3D”
- Nº4:
“SEÑALES DE PRUEBA Y SISTEMAS DE SEGUNDO ORDEN”
- Nº5:
“RESPUESTA TEMPORAL EN SISTEMAS DE SEGUNDO ORDEN”
- Nº6:
“ANALISIS DE LA RESPUESTA TEMPORAL PARA UN SISTEMA
DE SEGUNDO ORDEN”
- Nº7: “ANALISIS DE SISTEMAS DE TERCER ORDEN CON SIMULINK”
- Nº8: “ERROR EN ESTADO ESTABLE (ess), EMPLEANDO SIMULINK”

2008
FIEE 2
______________________________________________________________________
LABORATORIO Nº 1
“MODELOS MATEMÁTICOS DE SISTEMAS LINEALES”

Objetivos: - Conocer los comandos que serán de utilidad para el análisis de


ecuaciones características de plantas industriales.
- Aplicar transformaciones de espacio de estado a espacio de Laplace.

ECUACIÓN CARACTERÍSTICA

Las raíces de la ecuación característica son los mismos valores propios de la Matriz “A”.
La ecuación característica (polinomial) de la matriz “A” se calcula con:

p=poly(A)

Además las raíces de la ecuación característica p=0 se pueden obtener introduciendo la


orden:
r=roots(p)

Finalmente con las raíces de la ecuación característica se puede recuperar el polinomio


original con la orden:
q=poly(r)

 0 1 0 
 
Ejemplo #1: Sea la matriz A= 0 0 1 
 − 6 − 11 − 6 
 
La orden poly(A), producirá:

A=[0 1 0; 0 0 1;-6 -11 -6];


p=poly(A)

p=
1.0000 6.0000 11.0000 6.0000

que es la representación del matlab del polinomio:

s3 + 6s2 + 11s + 6 = 0

Además, las raíces de la ecuación característica (polinomial) son:

r=roots(p)

r=
-3.0000
-2.0000
-1.0000

y con las raíces de la ecuación característica, recuperamos el polinomio:


FIEE 3
______________________________________________________________________
q=poly(r)

q=
1.0000 6.0000 11.0000 6.0000

TRANSFORMACIÓN DE FT A SS Y DE SS A FT

Mediante el matlab, también es posible transformar un modelo matemático de un sistema


lineal en otro modelo.

1.- De Función de Transferencia (tf) a Espacio de Estado (ss)

Se denota como: tf2ss


La orden: [A,B,C,D] = tf2ss(num,den)

Convierte el sistema de Función de Transferencia, representado por:

Y(s) num
= = C (sI − A) − 1B + D
U(s) den

a la representación en Espacio de Estado:


.
x = Ax + Bu

y = Cx + Du

2.- De Espacio de Estado (ss) a Función de Transferencia (tf)

Se denota como: ss2tf


Si el sistema tiene una entrada y una salida, la orden:

[num,den] = ss2tf(A,B,C,D,iu)

Convierte el sistema en Espacio de Estado, representado por:


.
x = Ax + Bu

y = Cx + Du

a la Función de Transferencia:

Y(s) num
= = C (sI − A) − 1B + D
U1(s) den

Nótese que el escalar “iu”, es un índice dentro de las entradas del sistema y
especifica que entrada se va a emplear para la respuesta.
FIEE 4
______________________________________________________________________
Ejemplo#2:

Considerando el sistema siguiente, que tiene dos entradas:

 x& 1   0 1   x1   1 0   u1   x1 
  =     +     y = ( 1 0 )  
 x& 2   − 2 − 3   x2   0 1   u2   x2 

Se pueden obtener las dos funciones de transferencia del sistema presentado,


una relaciona la salida “y” con la entrada u1 y la otra relaciona la salida “y” con la
entrada u2. No olvidar que estamos empleando el principio de superposición, es
decir si se considera la entrada u1, se supone que la entrada u2 es cero y
viceversa.

A=[0 1 ;–2 –3];


B=[1 0;0 1];
C=[1 0];
D=[0 0];

[num,den]=ss2tf(A,B,C,D,1)
num=
0 1 3
den=
1 3 2

[num,den]=ss2tf(A,B,C,D,2)
num=
0 0 1

den=
1 3 2

Por lo tanto, por la salida del matlab estamos obteniendo:

Y(s) s+3 Y(s) 1


= =
U1(s) s 2 + 3s + 2 U2(s) s 2 + 3s + 2

VALORES PROPIOS Y VECTORES PROPIOS


Debe tenerse en consideración la siguiente regla;
“Si A es real y simétrica, los valores propios serán reales, pero si A no es simétrica,
entonces los valores propios suelen ser números complejos”.

VALORES Y VECTORES PROPIOS REALES

Si A es una matriz de nxn, entonces los n números λ satisfacen a:


Ax = λx
FIEE 5
______________________________________________________________________
serán los valores propios de “A”. Estos mismos pueden ser encontrados con la orden:

eig(A)

la cual devuelve los valores propios en un vector columna.

 1 2
Ejemplo #1: sea la matriz A =  
 4 3
A=[1 2;4 3];
eig(A)

ans=
-1
5

Es decir: λ1= -1
λ2= 5

Ahora para obtener la matriz de Vectores propios (E) y la matriz diagonal obtenida de
aplicar la matriz “E” para diagonalizar a “A”, se puede aplicar la orden: [E,D]=eig(A)
asi:

Ejemplo #2: Dada la matriz A anterior

[E,D]=eig(A)

E=
-0.7071 -0.4472
0.7071 -0.8944

D=
-1 0
0 5

Ejemplo #3:
F=[0 1 0;0 0 1;-6 -11 -6]

[E,D]=eig(F)
E=
-0.5774 0.2182 -0.1048
0.5774 -0.4364 0.3145
-0.5774 0.8729 -0.9435

D=
-1.0000 0 0
0 -2.0000 0
0 0 -3.0000

Nótese que los vectores propios son normalizados o escalados (módulo o norma igual a 1).
FIEE 6
______________________________________________________________________
Si los valores propios de una matriz son distintos, es decir los vectores propios son
linealmente independientes, entonces la matriz “E” diagonalizará a la matriz “A”.
Sin embargo si una matriz tiene valores propios repetidos es no diagonalizable o también
llamada defectiva.

Para estos casos, se empleará la matriz de Jordan de la siguiente manera:

Ejemplo #4:
A =[6 12 19;-9 -20 –33;4 9 15];
[V,D] = eig(A)

V=
-0.4741 -0.4082 -0.4082
0.8127 0.8165 0.8165
-0.3386 -0.4082 -0.4082

D=
-1.0000 0 0
0 1.0000 0
0 0 1.0000

Como se aprecia existe un doble valor propio en λ=1, como puede apreciarse la segunda
y tercera columna de la “supuesta” matriz “E” son iguales, por lo que no existe
independencia lineal entre los vectores propios obtenidos.NOTESE QUE A PESAR DE
QUE LA MATRIZ ES SINGULAR, LA SOLUCION SATISFACE LA ECUACIÓN λx=Ax.
Pero al aplicar esta matriz “E” para diagonalizar la matriz “A” obtenemos:

Ejemplo #5:
A=[6 12 19;-9 -20 -33;4 9 15];
E=[-0.4741 -0.4082 -0.4082;0.8127 0.8165 0.8165; -0.3386 -0.4082 -0.4082]
R=inv(E)*A*E

Warning: Matrix is singular to working precision.


R=

NaN NaN NaN


NaN NaN NaN
NaN NaN NaN

Como apreciamos no es posible diagonalizar la matriz “A”, Nos indica error!!.


Entonces aplicando la matriz de Jordan, como sigue:

Ejemplo #6:
A=[6 12 19;-9 -20 -33;4 9 15];
[X,J]=Jordan(A)

X=
-1.7500 1.5000 2.7500
3.0000 -3.0000 -3.0000
-1.2500 1.5000 1.2500
FIEE 7
______________________________________________________________________
J=
-1 0 0
0 1 1
0 0 1

% Podemos comprobar la obtención de la matriz canónica de Jordan asi:


-1
% K=J A J

Ejemplo #7:
J=[-1.75 1.5 2.75;3 -3 -3;-1.25 1.5 1.25];

K=inv(J)*A*J

K=
-1.0000 0.0000 0.0000
0.0000 1.0000 1.0000
-0.0000 0.0000 1.0000

VALORES Y VECTORES PROPIOS COMPLEJOS

Ejemplo #8:
A =[0 -6 -1;6 2 -16;-5 20 -10];
lambda = eig(A)

lambda =
-3.0710
-2.4645+17.6008i
-2.4645-17.6008i

Que como apreciamos, los valores propios son complejos conjugados (2) y real (1).

La parte real de cada valor propios complejo conjugado es negativo, por lo que eλt se
aproxima a cero a medida que “t” se incrementa.
Respecto a la solución de la ecuación diferencial, la parte imaginaria al ser diferente de
cero (±
±ω), contribuye a la componente oscilatoria de senω
ωt,.

Así para obtener los valores propios y los vectores propios, podemos emplear:

Ejemplo #9:
[V,D] = eig(A)

V=
-0.8326 0.2003 - 0.1394i 0.2003 + 0.1394i
-0.3553 -0.2110 - 0.6447i -0.2110 + 0.6447i
-0.4248 -0.6930 -0.6930

D=
-3.0710 0 0
0 -2.4645+17.6008i 0
0 0 -2.4645-17.6008i
FIEE 8
______________________________________________________________________
LABORATORIO Nº 2

“RESPUESTA DE SISTEMAS LINEALES EN TIEMPO CONTINUO”

Objetivos: - Familiarizarnos en el trabajo con Simulink, en la aplicación de


sistemas lineales en espacio de estados.
- Aplicar los comandos MatLab Function en sistemas de tiempo
continuo.

En la presente experiencia elaboraremos con el apoyo del SIMULINK, el sistema


siguiente, ADEMÁS SE DEJARÁ COMO TAREA AL ALUMNO, LA DETERMINACIÓN
DE LAS RESPUESTAS DE SALIDA y obtener las conclusiones respectivas.

Ejemplo #1: Supongamos que un sistema y(t) = N [u(t) , x(to)], tiene las
siguientes ecuaciones:

.
x(t ) = A x(t ) + B u (t )
y (t ) = C x(t ) + D u (t ), x(to) = xo, t ≥ to

 0 1 0 
Donde: A=  , B =   , C = [1 0] , D = [0]
 − 1 0 1

Este sistema se puede representar como sigue:

. +
y(t)
u(t) + x(t) x(t) +
B ∫ dt C
+

Que al implementar con simulink, su esquema será el siguiente:


FIEE 9
______________________________________________________________________

Los bloques se obtienen de la siguiente manera:

Run
Math operations Continuous

Sources
User-defined
Function Sinks

Una vez arrastrados los elementos que serán parte del diagrama de bloques, se les
debe comenzar a definir, así como a involucrar las condiciones iniciales.
Para ello se considerarán los siguientes valores:

u1(t) = sin(t) x01(0) = [1 0]t


u2(t) = cos(t) x02(0) = [0 1]t
u3(t) = 2 sin(t) + 3 cos(t) x03(0) = [2 3]t

Para nuestra demostración implementaremos primeramente el u3(t) y x03(0), en el


esquema anterior, para ello:
- En el bloque “MATLAB FUNCTION”, definimos la función:
2*sin(u) + 3*cos(u)
FIEE 10
______________________________________________________________________

- Definimos la matrices A, B, C y D, según lo indicado al inicio.

- Definimos las condiciones iniciales haciendo doble clic en el bloque


“INTEGRATOR”, estas condiciones iniciales son de acuerdo a x03(0) = [2;3]

- Una vez logrado todo ello, se inicia la simulación presionando “RUN”.

- Observar la respuesta temporal, si se debe realizar ajustes para observar


mejor dicha respuesta temporal (en el SCOPE), presione AUTOSCALE, que
se representa con la figura del LARGAVISTA.

Ahora implementaremos el esquema siguiente que trata en forma separada u1(t), u2(t)
y u3(t), mismos que serán visualizados en un mismo “SCOPE”, para ello se deberá
emplear un Multiplexor.

- Implementar el siguiente esquema (de manera similar al anterior), para no


dibujar nuevamente todo, simplemente se selecciona todo y se copia dos
veces.
- El “MULTIPLEXOR” se encuentra en el conjunto SIGNAL ROUTING,
simplemente arrastrarlo hasta nuestro esquema y se insertará.

Bloque
Nº 1

Bloque
Nº 2

Bloque
Nº 3

- En el Bloque Nº1, se implementará: u1(t) = sin(t) x01(0) = [1 0]t


- En el Bloque Nº2, se implementará: u2(t) = cos(t) x02(0) = [0 1]t
- En el Bloque Nº3, se implementará: u3(t) = 2sin(t)+3cos(t) x03(0) = [2 3]t
- El procedimiento para definir las condiciones iniciales, es el mismo usado
anteriormente, así una vez definido todo, iniciar la simulación presionando
“RUN”.
FIEE 11
______________________________________________________________________
LABORATORIO Nº 3

“GRÁFICOS EN 2D”

Objetivos: - Familiarizar al estudiantes en los comandos relacionados a la


obtención de respuestas gráficas en dos y tres dimensiones.

Un procedimiento cotidiano en la aplicación del MatLab es la presentación de gráficos,


por ello realizaremos una serie de experiencias para familiarizarnos con los comandos
aplicados para tal fin en 2D.

Entre los comandos para gráficos en dos dimensiones, podemos mencionar:

A) Comando PLOT (plot(x,y)), Es la más empleada y cuya sintaxis básica se


indica en paréntesis, es decir grafica el vector x versus el vector y, que
como pares ordenados tienen la forma (x(i) , y(i)) son unidos mediante
segmentos. La gráfica presentada mostrará una forma suave, si existe
un número adecuado de puntos en su trazo

Ejemplo # 1: grafiquemos la onda seno

t = 0 : pi/100 : 2*pi; % definimos t desde 0 a 2π


y = sin(t);
plot(t,y);
grid;
title('onda seno y = sin( t )'); % comando para poner título al gráfico
xlabel('( t )'); % etiqueta en eje X
ylabel('sin( t )'); % etiqueta en eje Y

que nos devuelve la siguiente gráfica:


FIEE 12
______________________________________________________________________

B) Comando plot(x,y,S), el comando PLOT acepta una serie de


argumentos adicionales y opcionales sobre los puntos (x(i) , y(i)), asi como
el tipo de marcas, color de ellas, cómo se unen estos puntos. La
sintaxis es similar al visto en A), pero se añade una cadena de opciones
simbolizado con S.

1º COLUMNA 2º COLUMNA 3º COLUMNA

La primera columna especifica el color a emplear, la segunda la marca


sobre cada punto y la tercera columna el patrón que siguen las líneas
utilizadas para unir los puntos.

Ejemplo # 2: grafiquemos un coseno amortiguado con cinco (5)


presentaciones diferentes.

t = linspace(0,4,100); % genera 100 puntos entre 0 y 4


y = exp(-t).*cos(2*pi*t) ;
figure(1); plot(t,y, '.') % marca puntos
figure(2); plot(t,y, 'r-') % marca una línea (-) roja (r)
figure(3); plot(t,y, 'ms--') % marca un cuadrado (s) magenta (m)
figure(4); plot(t,y, 'gh') % marca hexágonos (h) verdes (g)
figure(5); plot(t,y, 'kv :') % marca triángulos (hacia abajo) negras (k)
FIEE 13
______________________________________________________________________
El comando “figure” abre una ventana gráfica asignándole un número. Si
la ventana ya esta abierta, la coloca como la ventana de salida por
defecto. En general “figure” permite manejar varios dibujos (ventanas) en
forma simultánea.

C) Comando plot(x,y,S,x1,y1,S1,x2,y2,S2,…..,xn,yn,Sn), Si nuestro


deseo, hubiese sido el presentar varios gráficos en la misma ventana, el
procedimiento es el siguiente:

Ejemplo # 3: grafiquemos cuatro curvas diferentes en la misma ventana

t = 0 : pi/40 : 6*pi; % definimos t desde 0 a 2π


y = sin(t);
z = cos(t);
w = exp(-t*0.1);
v = y.*z;
plot(t,y,'r.',t,z,'b-',t,w,'g*',t,v,'k+'), grid

% la gráfico del seno se presentará con puntos rojos, el coseno con un trazo
% azul, el exponencial con asteriscos verdes y el producto puntual de seno
% y coseno con signos + negros.

Un efecto similar al anterior, es decir varias gráficas en una misma


ventana, se tendría si empleamos el comando “hold on”, que crea el
efecto de mantener (superponer) las graficas y no borrarlas.
FIEE 14
______________________________________________________________________
Ejemplo # 4: grafiquemos cuatro curvas diferentes en la misma ventana
(con el comando “hold on”)

t = 0 : pi/100 : 6*pi; % definimos t desde 0 a 2π


y = sin(t);
z = cos(t);
w = exp(-t*0.1);
v = y.*z;
hold on; % superponer las gráficas siguientes
plot(t,y,'r.');
plot(t,z,'b-') ;
plot(t,w,'g*') ;
plot(t,v,'k+'), grid % presentadas con grillas rectangulares

Para desactivar la superposición, se emplea el comando “ hold off “, de


forma que una nueva gráfica ó dibujo borrará los anteriores.

D) Comando SUBPLOT (subplot(m,n,i)), Una ventana gráfica se puede


dividir en m particiones horizontales y n verticales, con el objetivo de
representar múltiples gráficas en ella. Cada una de estas
subventanas tiene sus propios ejes, aunque otras propiedades son
comunes a todas las gráficas. La sintaxis básica de este comando se
indica entre paréntesis, donde m y n indican el número de subdivisiones
en filas y columnas, respectivamente, i es la subdivisión que se convierte
en activa indicando la posición de la gráfica. Las subdivisiones se
enumeran en forma consecutiva empezando en la primera fila
FIEE 15
______________________________________________________________________
Ejemplo # 5: grafiquemos en cuatro ventanas diferentes

t = 0 : pi/100 : 6*pi; % definimos t desde 0 a 2π


y = sin(t);
z = cos(t);
w = exp(-t*0.1);
v = y.*z;
subplot(2,2,1), plot(t,y);
subplot(2,2,2), plot(t,z);
subplot(2,2,3), plot(t,w);
subplot(2,2,4), plot(t,v);

Un programa un poco más elaborado que aplica subplot y que añade


características que se quieren resaltar como: ancho del trazo (linewidth) y
tamaño de la letra (fontsize). Se aplica a continuación:

Ejemplo # 6: grafiquemos en cuatro ventanas diferentes

t = 0 : pi/100 : 6*pi; % definimos t desde 0 a 2π


y = sin(t);
z = cos(t);
w = exp(-t*0.1);
v = y.*z;
subplot(221), plot(t,y, 'linewidth',4); title('sin( t )', 'fontsize',8); grid
subplot(222), plot(t,z, 'linewidth',3); title('cos( t )', 'fontsize',10); grid
subplot(223), plot(t,w, 'linewidth',2); title('exp( -t*0.1 )', 'fontsize',12); grid
subplot(224), plot(t,v, 'linewidth',1); title('0.5 sin( 2t )', 'fontsize',14); grid
FIEE 16
______________________________________________________________________

Donde debe notarse:

- Que el contenido del comando subplot, ya no esta separado con paréntesis, lo


que indica que no es necesario. ∴ subplot(1,2,3) = subplot(123)

- Que se ha jugado con diferentes anchos de línea y tamaño de letra, con el


único propósito de visualizar las diferencias de tamaño.

Se ha agregado grilla rectangular a cada gráfico para una mejor presentación.

Tarea para desarrollar por el estudiante:

Si se tienen tres gráficos que por alguna razón deben presentarse por
separado, ¿cuáles serían los comando para presentarlos en forma
vertical?, referirse a las funciones y = sen(t), z = cos(t), además de w =
sen(t).cos(t)
FIEE 17
______________________________________________________________________

“GRÁFICOS EN 3D “

Al igual que en el caso de gráficos en 2D, incluiremos aquí algunas instrucciones ó


comandos relativos al trazado de curvas ó superficies en 3D, no sin antes indicar que
una gran posibilidad que brinda el MatLab en los gráficos en 3D, es la manipulación en la
rotación de los objetos graficados, ello permite una mejor visualización desde algún
punto de observación deseado.

Entre los comandos para gráficos en tres dimensiones, podemos mencionar:

A) Comando PLOT3 (plot3(x,y,z,S)), Es la más empleada y cuya sintaxis


básica se indica en paréntesis, recordando que el S indica la posibilidad
de manipular algunas características, igual como la manejadas en 2D.

Ejemplo #1: demos una aplicación

t = linspace(0,4,100); % genera 100 puntos entre 0 y 4


x = exp(-t) ;
y = cos(2*pi*t) ;
plot3(x,y,t, 'r-', 'linewidth',2) % marca una línea roja de ancho 2
title('aplicación del comando plot3', 'fontsize',14)
xlabel('exp( -t )', 'fontsize',14)
ylabel('cos( 2*pi*t )', 'fontsize',14)
zlabel(' t ', 'fontsize',14)
grid

ROTACION

Presionando el icono de ROTACION, se podrá girar ó rotar la figura como desee.


FIEE 18
______________________________________________________________________
B) Comando SURF (surf(x,y,z)), dibuja superficies en el espacio y su
sintaxis básica se indica entre paréntesis, donde x e y especifican una
malla en el plano y z la altura correspondiente. El color que se da a
cada punto es por defecto, igual que a la altura.
Para construir la malla, aplicaremos el comando de MatLab meshgrid,
así, si x e y son dos vectores, este comando devuelve dos vectores que
contienen la información de la malla.

Ejemplo #2: aplicación del meshgrid, en z = x2 – y2

x = linspace(-4,4,40);
y = linspace(-4,4,40);
[X,Y] = meshgrid(x,y); % crea la malla en xy
Z = X.^2 - Y.^2;
surf(X,Y,Z)

C) Comando SURFL (surfl(x,y,z)), dibuja superficies en el espacio y su


sintaxis básica se indica entre paréntesis, donde x e y especifican una
malla en el plano y z la altura correspondiente. Su diferencia con surf,
es que en surfl , la “l” involucra iluminación:

Ejemplo #3: aplicación del meshgrid, en z = x2 – y2

x = linspace(-4,4,40);
y = linspace(-4,4,40);
[X,Y] = meshgrid(x,y); % crea la malla en xy
Z = X.^2 - Y.^2;
surfl(X,Y,Z)
FIEE 19
______________________________________________________________________

En 3D, tenemos además (ya para la investigación de parte del alumno):


FIEE 20
______________________________________________________________________

LABORATORIO Nº 4
“SEÑALES DE PRUEBA Y SISTEMAS DE SEGUNDO ORDEN”
Objetivos: - Aplicar el MatLab en la generación de señales de prueba y aplicar
los comandos que se usan para tal fin.
- Emplear las señales de prueba en aplicaiones de sistemas de
segundo orden.

SEÑALES DE PRUEBA

Ejemplo #1: Impulso Unitario

% Primero definimos el sistema


clf %Borrado de posibles gráficos
a=1;
b=2;
s=zpk('s');
sys=1/((s+a)*(s+b));
figure(1)
impulse(sys) %Sintaxis básica para respuesta impulsional
% Ahora variaremos el tiempo hasta 12 seg.
t=0:0.1:12;
figure(2) % lo representamos en otro grafico
impulse(sys,t) %Sintaxis de la función impulso definiendo el tiempo
% Ahora realizaremos una comparación entre la función impulse
% y la respuesta temporal
y=impulse(sys,t); %Guardamos la salida en el vector y
figure(3)
plot(t,y,'g:') %Representamos la respuesta con el comando plot
f=(exp(-a*t)-exp(-b*t))/(b-a); %Respuesta temporal
hold on
plot(t,f,'r-.')
xlabel('Tiempo en segundos');
ylabel('Respuesta impulsional');
title('Respuesta impulsional y funcion temporal');

Ejemplo #2: Escalón Unitario

% Definición de los dos sistemas con que trabajaremos:


sys1=tf([1],[1 0.5 1]);
sys2=tf([1],[1 0.5 4]);
% Representación de la respuesta:
t=0:0.01:30; %Respuesta hasta los 30 s.
step(sys1,'r', sys2,'g',t); %Representacion en la misma grafica
% Aplicaremos rejilla y pondremos un titulo con text:
grid
text(5, 1.4,'Respuesta de dos sistemas','FontSize',13);
% Representación de la entrada
t0 = -2.0:0.01:-0.01; % definición u(t)=0, -2 ≤ t ≤ -.01
u0 = zeros(size(t0));
t1 = 0:0.01:30; % definición u(t)=1, 0 ≤ t ≤ 25
FIEE 21
______________________________________________________________________
u1 = ones(size(t1));
t = [t0 t1]; % creamos t and u(t)
u = [u0 u1];
hold on
plot(t,u);
legend('Sistema 1','Sistema 2','Escalon unitario');

Ejemplo #3: Rampa Unitaria

% La respuesta a una entrada unitaria en rampa se obtiene como la respuesta


% a un salto unitario de G(s)/s
% Primero introducimos el numerador y denominador de G(s)/s
num=[1];
den=[1 1 1 0];
% Creamos el sistema
sys=tf(num,den);
% Especificamos el tiempo de calculo en 7 s.
t=0:0.1:7;
% Guardamos la respuesta en un vector c
c=step(sys,t)
% Al representar la respuesta a una rampa, añadimos la entrada de referencia
% La entrada de referencia es t. El comando plot es:
plot(t,c,'ro',t,t,'g-');
% Introducimos la rejilla y las etiquetas:
grid
title('Respuesta ante una rampa unitaria del sistema G(s)=1/(s^2+s+1)');
xlabel('t seg');ylabel('Amplitud');

Ejemplo #4: Sistema de segundo orden:

Y(s) ωn2
F.T. = =
R(s) s 2 + 2 ξ ω + ω 2
n n
En este ejemplo, trabajaremos con un ωn constante e igual a 1 (uno) y variaremos el
valor del Factor de Amortiguamiento (ξ), con valores de 0.0, 0.5, 1.0 y 2.0.
La señal de prueba a utilizar será un “escalón unitario”.

%En este ejemplo variaremos el parámetro zeta (ξ) en un sistema de Segundo Orden
clear all;
% Declaración de los parámetros:
wn=1; % la frecuencia será fija
zeta=[0 0.5 1 2]; % Variaremos zeta
t=0:15/200:(15-15/200);
% Por cada parámetro zeta almacenaremos la respuesta
% del sistema en una matriz y:
for n=1:length(zeta)
num=wn^2;
den=[1 2*zeta(n)*wn wn^2];
W=tf(num,den);
y(:,n)=step(W,t);
end;
% Representación en 2D de la respuesta
FIEE 22
______________________________________________________________________
figure(1)
plot(t,y);xlabel('tiempo');ylabel('y(t)');
title('Respuesta de un sistema de segundo orden variando \zeta');
legend('\zeta=0 (sin amortiguamiento)',...
'\zeta=0.5 (Subamortiguado)',...
'\zeta=1 (Criticamente Amortiguado)','\zeta=2 (Sobreamortiguado)');
grid;

LABORATORIO Nº 5

“RESPUESTA TEMPORAL EN SISTEMAS DE SEGUNDO ORDEN”


La representación genérica de un sistema de segundo orden, tiene el siguiente diagrama
de bloques y Función de transferencia:

R(s)+ wn
2 Y(s)
s ( s + 2 ξ wn )
-

Y(s) wn 2
=
R(s) s 2 + 2 ξ wn s + wn 2

Donde: ξ es el factor de amortiguamiento


wn es la frecuencia natural no amortiguada

Para obtener la ubicación de los polos del sistema, analizamos la ecuación


característica, es decir:
s2 + 2ξwn s + wn2 = 0

las raíces de esta ecuación son: s1,2 = – ξwn ± j wn 1 − ξ 2

de aquí se pueden distinguir cuatro casos, respecto a la ubicación de los polos y ele
sistema será probado con una entrada en escalón unitario:

Caso I) Si: ξ=0 ⇒ s1,2 = ± j wn

Que como se observa se obtienen polos imaginarios puros, en este caso


la respuesta temporal es oscilatoria y de amplitud constante.
FIEE 23
______________________________________________________________________
% prueba en MatLab con una entrada en escalón unitario:
clear all;
% Declaración de los parámetros:
t = [0:0.2:20];
wn = 1; % la frecuencia será fija, sin perder generalidad
e = 0;
num = [wn^2];
den = [1 2*e*wn wn^2];
y = step (num,den,t);
plot(t,y);
title('Sistemas de segundo orden (\zeta = 0): Respuesta temporal a un escalón unitario');
xlabel('t (seg)');
ylabel('y(t)');
grid;

Caso II) Si: ξ=1 ⇒ s1,2 = – ξwn

En este caso los polos obtenidos son reales e iguales, a este tipo de
sistema se le denomina críticamente amortiguado y la respuesta temporal
no es oscilatoria.

% prueba en MatLab con una entrada en escalón unitario:


clear all;
% Declaración de los parámetros:
t = [0:0.2:20];
wn = 1; %la frecuencia será fija, sin perder generalidad
e = 1;
FIEE 24
______________________________________________________________________
num = [wn^2];
den = [1 2*e*wn wn^2];
y = step (num,den,t);
plot(t,y);
title('Sistemas de segundo orden (\zeta = 1): Respuesta temporal a un escalón unitario');
xlabel('t (seg)');
ylabel('y(t)');
grid;

Caso III) ξ>1 ⇒ s1,2 = – ξwn ± wn ξ 2 − 1

Aquí se obtienen polos reales y diferentes, a este tipo de sistema se le


denomina sobre amortiguado y la respuesta temporal tampoco es
oscilatoria.

% prueba en MatLab con una entrada en escalón unitario:


clear all;
% Declaración de los parámetros:
t = [0:0.2:20];
wn = 1; % la frecuencia será fija, sin perder generalidad
e = 2;
num = [wn^2];
den = [1 2*e*wn wn^2];
y = step (num,den,t);
plot(t,y);
title('Sistemas de segundo orden (\zeta = 2): Respuesta temporal a un escalón unitario');
xlabel('t (seg)');
ylabel('y(t)');
grid;
FIEE 25
______________________________________________________________________

Caso IV) 0<ξ<1⇒ s1,2 = – ξwn ± j wn 1 − ξ 2

En este caso, los polos obtenidos son complejos conjugados y al sistema


se el denomina sub amortiguado

% prueba en MatLab con una entrada en escalón unitario:


clear all;
% Declaración de los parámetros:
t = [0:0.2:20];
wn = 1; %la frecuencia será fija, sin perder generalidad
e = 1/2;
num = [wn^2];
den = [1 2*e*wn wn^2];
y = step (num,den,t);
plot(t,y);
title('Sistemas de segundo orden (\zeta = 1/2): Resp. temporal a un escalón unitario');
xlabel('t (seg)');
ylabel('y(t)');
grid;
FIEE 26
______________________________________________________________________

Pero podemos representar en un solo gráfico, las diferentes respuestas para el caso
subamortiguado, cuando el factor de amortiguamiento varía en ξ = 0; 1/2; 1y 2

% En el siguiente ejemplo variaremos “ξ


ξ” en los valores 0, 0.5, 1 y 2:
clear all;
% Declaración de los parámetros:
wn=1; %la frecuencia será fija, sin perder generalidad
e=[0 0.5 1 2]; % Variamos ξ
t=0:15/200:(15-15/200);
% Por cada parámetro “e” almacenaremos la respuesta
% del sistema en una matriz y:
for n=1:length(e)
num=wn^2;
den=[1 2*e(n)*wn wn^2];
y(:,n)=step(num,den,t);
end;
% Representación en 2D de la respuesta
figure(1)
plot(t,y);
xlabel('t (seg)');
ylabel('y(t)');
title('Respuesta de un sistema de segundo orden variando \zeta');
legend('\zeta=0 (sin amortiguamiento)',...
'\zeta=0.5 (Subamortiguado)',...
'\zeta=1 (Criticamente Amortiguado)','\zeta=2 (Sobreamortiguado)');
grid;
FIEE 27
______________________________________________________________________

Finalmente, realizaremos un gráfico, cuando el factor de amortiguamiento varía entre


valores de 0.1 a 0.9, en pasos de 0.1:

% En el siguiente ejemplo variaremos “ξ ξ” en los valores 0, 0.2, 0.4, 0.6, 0.8 y 1


clear all;
% Declaración de los parámetros:
wn=1; %la frecuencia será fija, sin perder generalidad
e=[0:0.2:1]; % Variamos ξ
t=0:15/200:(15-15/200);
% Por cada parámetro “e” almacenaremos la respuesta
% del sistema en una matriz y:
for n=1:length(e)
num=wn^2;
den=[1 2*e(n)*wn wn^2];
y(:,n)=step(num,den,t);
end;
% Representación en 2D de la respuesta
figure(1)
plot(t,y);
xlabel('t (seg)');
ylabel('y(t)');
title('Respuesta de un sistema de segundo orden variando \zeta');
grid;
FIEE 28
______________________________________________________________________

Envolventes de la respuesta temporal

Para finalizar este análisis de los sistemas de segundo orden, involucraremos a las
envolventes de la respuesta temporal, es decir a las referidas por la atenuación.
Por lo visto en clases, a partir de la Función de transferencia, se determinó la respuesta
temporal para un sistema de segundo orden subamortiguado:

 
e − ξ wn t 1− ξ2
y(t) = 1 − sen  wn 1 − ξ 2  t + arctan  (t ≥ 0)
  ξ 
1− ξ2  

Donde: wd = wn 1 − ξ 2 (wd, es la frecuencia natural


amortiguada)
σ = ξ wn (σ, es la atenuación)

Además las envolventes de la respuesta temporal, están dadas por:

e − ξ wn t e − ξ wn t
1− y 1+
1− ξ2 1− ξ2
FIEE 29
______________________________________________________________________
% Gráfico que agrega a la respuesta temporal, las envolventes de atenuación
clear all
% Declaración de los parámetros:
t = [0:0.2:20];
wn=1;
e = 0; % se agregará ξ=0, sólo para notar la diferencia entre wn y wd
num=wn^2;
den=[1 2*e*wn wn^2];
y1=step(num,den,t);
e = 0.2; % se probará para ξ = 0.2
num=wn^2;
den=[1 2*e*wn wn^2];
y2=step(num,den,t);
% envolventes referidas al ξ = 0.2
env1 = 1 + ((exp(-e*wn*t)/(sqrt(1-e^2))));
env2 = 1 - ((exp(-e*wn*t)/(sqrt(1-e^2))));
plot(t,y1,t,y2,t,env1,t,env2);
title('Resp. temporal y envolventes referidas a la atenuación')
xlabel('t (seg) ') ;
ylabel('y(t)') ;
grid ;
FIEE 30
______________________________________________________________________
LABORATORIO Nº 6

“ANALISIS DE LA RESPUESTA TEMPORAL PARA UN


SISTEMA DE SEGUNDO ORDEN”

Sea la respuesta temporal siguiente:

1.-Tiempo de crecimiento, (tr ): Es el tiempo requerido para que la respuesta


aumente del 10 al 90%, del 5% al 95%,o del 0% al 100% de su valor final. Para sistemas
de su segundo orden subamortiguados se utiliza normalmente el tiempo crecimiento de
0% a 100%. Para sistemas sobreamortiguados se acostumbra usar el tiempo de
crecimiento de 10% a 90%.
El tiempo de crecimiento tr se obtiene haciendo c(tr) = 1,entonces

 ξ 
c(tr ) = 1 = 1 − e −ξ wn tr  cos wd tr + senwd tr 
 1− ξ 2 
 
Luego:

 ξ 
0 = e −ξ wnt  cos wd tr + senwd tr 
 1−ξ 2 
 
como e−ξ wnt ≠ 0 entonces:

 ξ 
0 =  cos wd tr + senwd tr 
 1− ξ 2 
 
FIEE 31
______________________________________________________________________

senwd tr 1− ξ 2  wn  wd
tgwd tr = =−  =−
cos wd tr ξ  wn  σ
1  w  π −φ
entonces tr: tr = arctan  − d  =
wd  σ  wd
ξω n
Donde φ se muestra en la figura: cos(φ ) = =ξ ⇒ φ = arccos (ξ )
ωn

ωn 1 − ξ 2

φ
-ξωn σ

2.-Tiempo de pico, (tp): Es el requerido para que la respuesta alcance el primer pico
de sobreimpulso. Para hallar el tiempo derivamos c(t) e igualamos a cero para obtener
un máximo, luego:

dc(t ) −ξ w t
 ξ  −ξ w t  ξ wd 
= −ξ wn e n p  cos wd t p + senwd t p  + e n p  wd senwd t p + cos wd t p  = 0
dt t p  1− ξ 2   1−ξ 2 
   
dc(t ) −ξ w t
 w 
=e np  n
senwd t p  = 0
dt t p  1− ξ 2 
 

−ξ wn t
como e y _ wn ≠ 0

senwd t p = 0 ⇒ wd t p = nπ ⇒ t p =
wd
Como el tiempo pico corresponde al primer pico de sobreimpulso (n=1), por lo tanto:


tp =
wd

3.-Sobreimpulso máximo (porcentual), Mp: Es el valor pico máximo de al curva de


respuesta medido desde la unidad. Si el valor final estabilizado de la respuesta difiere de
la unidad, se suele utilizar el sobreimpulso porcentual porcentual máximo. Esta definido
por:
c(t p ) − c(∞)
Sobrempulsoporcentual max imo = x100%
c (∞ )
FIEE 32
______________________________________________________________________
El sobreimpulso máximo corresponde al tiempo pico (tp),luego evaluando Mp(tp)

−ξ wnt p
 ξ  −ξ w t
 ξ 
M p = c(t p ) −1 = 1 − e  cos wd t p + senwd t p  −1 = −e n p  cos wd t p + senwd t p 
 1− ξ 2   1− ξ 2 
   
π
como _ t p = , reemplazando :
wd
−ξ wn
π
 ξ  −ξ wn wπ
M p = −e wd
 cos π + senπ  = e d

 1− ξ 2 
 

Por lo tanto el Mp será:


π σ
−ξ wn −π
wd wd
Mp = e =e
σ
−π
wd
M p (%) = e × 100

4.-Tiempo de establecimiento, (ts): Es el que la curva de respuesta requiere


alcanzar y mantenerse en un rango alrededor del valor final con una magnitud especifica
por el porcentaje absoluto del valor final (habitualmente 2% o 5%). El tiempo de
establecimiento esta relacionado con la constante tiempo mayor del sistema de control.
El criterio para fijar el porcentaje de error a utilizar depende de los objetivos de diseño del
sistema en cuestión.
e −ξ wnt
Las curvas 1 ± son las curvas envolventes de la respuesta transitoria a una
1−ξ 2
entrada escalón unitario. La curva de respuesta se mantiene dentro del par de curvas
1
envolventes, la constante de tiempo de estas curvas envolventes es .
ξ wn
La velocidad de propagación de la respuesta transitoria depende del valor de la
1
constante de tiempo . Para un valor dado, el tiempo de establecimiento ts es una
ξ wn
función de la relación de amortiguamiento ξ.

El tiempo de establecimiento correspondiente a una banda de tolerancia del ±2% o ±5%


1
se puede medir en terminos de la constante de tiempo T= .
ξ wn
Para el criterio del ±2%, tenemos:

e−ξ wnts = ±2% ⇒ e −ξ wn ts = ±0.02 ⇒ −ξ wn t s = ln(0.02)

3.912 4
ts (2%) = ≈
ξ wn ξ wn

Similarmente para el criterio del ±5%, tenemos:

e−ξ wnts = ±5% ⇒ e −ξ wnts = ±0.05 ⇒ −ξ wn ts = ln(0.05)

2.9957 3
ts (5%) = ≈
ξ wn ξ wn
FIEE 33
______________________________________________________________________
LABORATORIO Nº 7

“ANALISIS DE SISTEMAS DE TERCER ORDEN CON SIMULINK”


Objetivos: - Confirmar el efecto de un tercer polo en un sistema de segundo
orden.
- Verificar el concepto de polos dominantes en la respuesta
temporal.

Analizaremos el efecto del tercer polo, en el caso de los sistemas de Tercer Orden
aplicando SIMULINK, es decir el procedimiento será el siguiente:

- Ubicaremos dos polos complejos conjugados, mismos que fijaremos como


referencia.
- Agregaremos un tercer polo (real) y lo desplazaremos, para verificar como afecta
la respuesta temporal de acuerdo a su posición con respecto a los polos
conjugados complejos.
1 3
Asumamos que los polos complejos conjugados son: s1,2 = − ±j
2 2

jw

s1

-σ1 σ
-p

s2

Construyamos el sistema en Simulink, asi:


1.- Ingresemos a Simulink
FIEE 34
______________________________________________________________________
2.- Una vez dentro de simulink, se nos presenta:

3.- Debemos abrir un nuevo modelo, que es la ventana donde elaboraremos nuestro
sistema a probar, es así que se nos presentará:
FIEE 35
______________________________________________________________________

4.- A partir de este momento, ya podemos implementar nuestro diagrama de


bloques, así que requerimos una señal de excitación, que para nuestros caso
emplearemos un escalón unitario, mismo que se obtendrá de la familia
“SOURCES”.

Es así que cogeremos al “bloque escalón” y lo arrastramos con ayuda del mouse
hasta insertarlo en nuestro diseño nuevo, y nos quedará así:

Luego agregaremos el bloque que representará al sistema de segundo orden,


que lo obtendremos de la familia “CONTINUOUS”, con el nombre de TF (Transfer
Function). Finalmente para la observación de la respuesta temporal agregaremos
un SCOPE que se obtiene de la familia “SINKS”, quedando ya unidos así:
FIEE 36
______________________________________________________________________

5.- El siguiente paso será cambiar de posición el polo del bloque “SIST. DE 1º
ORDEN” en una de tres ubicaciones independientemente, así:
a) s=-5 Para que el comportamiento sea como un sistema de 2º orden
b) s = - 0.5 Para comprobar como se atenúa el sobrepico
c) s = - 0.05 Para que el comportamiento sea como un sistema de 1º orden

NOTAS FINALES:
- para variar la Función de Transferencia a cualquiera deseada, se debe
hacer doble clic en el bloque respectivo y aparecerá la siguiente
ventana:
FIEE 37
______________________________________________________________________

- para variar los parámetros del escalón, hacer doble clic en él y


aparecerá:

- si se desea variar la escala de tiempo, de la muestra en el SCOPE,


ingresar a la opción “SIMULATION” y dentro en la opción “SIMULATION
PARAMETERS”, que presentará la siguiente ventana:

Donde se puede ajustar el tiempo de inicio (“start time”) y de final (“stop


time”) de la simulación.

Finalmente, entonces ¿CÓMO AFECTA ESTE TERCER POLO EN LA RESPUESTA


TEMPORAL DEL SISTEMA? , apliquemos lo indicado anteriormente y de de acuerdo a
lo observado, pero aplicando MatLab:
Entonces tendremos la siguiente función de transferencia:
FIEE 38
______________________________________________________________________

Y (s) wn2 25
= 2 2
= 2
R( s ) s + 2ξ wn s + wn s + 4s + 25

Donde la respuesta a un escalón unitario es:

Veamos como afecta un tercer polo:

Y (s) wn2 p 25 p
= 2 2
= 2
R( s ) ( s + 2ξ wn s + wn )( s + p) ( s + 4s + 25)( s + p)

1er caso): σ = 0.4 *5 = 2 ,entonces p>2 (estamos usando atenuación de 0.4)


FIEE 39
______________________________________________________________________
2do caso): p=2

3er caso): p<2

OBSERVACIONES:

- En el caso 1 se nota con la ayuda de Matlab, que a medida que el polo real se aleja
del eje jw, el sistemas comporta como uno de 2do orden. Dominando los polos
conjugados.
- En el caso 2, el sistema se comporta como uno de 3er orden, aquí no se puede
hablar de los polos dominantes ya que son muy próximos, el polo agregado
obviamente producen otros términos de la respuesta en estado estable en la
solución, el polo real introduce términos exponenciales en la respuesta transitoria
- En el caso 3, con la ayuda del Matlab, a medida que el polo real se aleja mas de los
polos conjugados (se acerca al eje jw), el sistema se comporta como uno de 1er
orden ya que ahora el polo dominante es el polo real.
FIEE 40
______________________________________________________________________
LABORATORIO Nº 8

“ERROR EN ESTADO ESTABLE (ess), EMPLEANDO SIMULINK”

Objetivos: - Confirmar mediante la aplicación de simulink, la magnitud del


error en estado estable para diferentes tipos de sistemas y
diferentes señales de prueba.

Un parámetro importantísimo en la teoría de control es el error en estado estable, quien


esta íntimamente ligado a la ubicación de los polos, en el diagrama zero-polar.
En esta experiencia, haremos una serie de pruebas a sistemas tipo 0, tipo 1 y tipo 2, con
señales de prueba que serán específicamente escalón y rampa unitarias.
Las simulaciones las aplicaremos a la Función de Transferencia en Lazo Abierto
siguientes y empleando el SIMULINK:

1.06
- sistema tipo 0: G(s) =
(s + 1)(s + 2)

1.06
- sistema tipo 1: G(s) =
s (s + 1)(s + 2)

1.06
- sistema tipo 2: G(s) =
2 (s + 1)(s + 2)
s

Procedimiento general:

- Ingresar al ambiente de SIMULINK y abrir una hoja nueva donde


implementaremos nuestro diagrama de bloques.
- Se implementará el siguiente diagrama de bloques:

R(s)+ Y(s)
G(s)
-

1.- Prueba con escalón unitario

1.- Implementar el esquema siguiente con el sistema tipo 0:


FIEE 41
______________________________________________________________________

2.- Realizar la simulación y medir el ess.


3.- Repetir los pasos 1 y 2 para los sistemas tipo 1 y tipo 2, experimentar la
variación que se produce en error en estado estable.
4.- Los resultados eran ¿fueron los esperados por Ud.?

2.- Prueba con rampa unitaria

1.- Implementar el esquema siguiente con el sistema tipo 0:

2.- Realizar la simulación y medir el ess.


3.- Repetir los pasos 1 y 2 para los sistemas tipo 1 y tipo2, experimentar la
variación que se produce en error en estado estable.
4.- Los resultados ¿fueron los esperados por Ud.?, indique sus
observaciones y conclusiones.

También podría gustarte