Está en la página 1de 22

UNIVERSIDAD NACIONAL DE SAN AGUSTIN

FACULTAD DE INGENIERIA DE PRODUCCION Y


SERVICIOS
ESCUELA PROFESIONAL DE INGENIERIA ELECTRONICA

LABORATORIO DE TEORÍA DE CONTROL AUTOMÁTICO 1

PRÁCTICA 1 : Respuesta Temporal de los SCA.

ALUMNO: PAZ MONTALVO, ANGEL FRANCISCO

DOCENTE: ING. DANIEL YANYACHI

AREQUIPA-PERU

Martes 11 de marzo del 2008


Respuesta Temporal de los SCA.

1. Controlador PID: Repita las siguientes instrucciones y tome atención en cada


uno de los resultados obtenidos. le permitirá conocer la acción proporcional
(P), Integral (I) y derivativa (D), de los controladores. Estructura mayormente
usada en la industria.

(1)
(2)

(3)

La función de transferencia de nuestro controlador PID es de la forma:

Para resolver este problema, crearemos un file pidmotor.m donde introduciremos


lo siguiente:

function [h]=pidmotor(kp,ki,kd)
% Modelo del motor G(s)
J=3.2284e-6;
b=3.5077e-6;
K=0.0274;
R=4;
L=2.75e-6;
num=K;
den=[(J*L) ((J*R)+(L+b)) ((b*R)+K^2) 0];
% TF del controlador PID(s)
kp=kp;
ki=ki;
kd=kd;
numpid=[kd kp ki];
denpid=[1 0];
% TF en lazo abierto F(s)=G(s)*PID(s)
numf=conv(num,numpid);
denf=conv(den,denpid);
[af,bf,cf,df]=tf2ss(numf,denf)
sysf=ss(af,bf,cf,df)
% TF en lazo cerrado H(s)= F(s)/(1+F(s))
h=feedback(sysf,1)

Teniendo ya la estructura del sistema controlado, procedemos a sintonizar (tunning)


los parámetros del PID ( Ecuación (4) )
a) Acción proporcional (P ).
clear all
h=pidmotor(1.79,0,0);
t=0:0.001:0.3; % tiempo de la simulación.
step(h,t)
xlabel('Tiempo (s)')
ylabel('Posición (rad)')
gris
af =
1.0e+007 *
-0.2159 -8.6144 0 0
0.0000 0 0 0
0 0.0000 0 0
0 0 0.0000 0
bf =
1
0
0
0
cf =
1.0e+009 *
0 0 5.5244 0
df =
0
a =
x1 x2 x3 x4
x1 -2.159e+006 -8.614e+007 0 0
x2 1 0 0 0
x3 0 1 0 0
x4 0 0 1 0
b =
u1
x1 1
x2 0
x3 0
x4 0
c =
x1 x2 x3 x4
y1 0 0 5.524e+009 0

d =
u1
y1 0

Continuous-time model.
a =
x1 x2 x3 x4
x1 -2.159e+006 -8.614e+007 -5.524e+009 0
x2 1 0 0 0
x3 0 1 0 0
x4 0 0 1 0
b =
u1
x1 1
x2 0
x3 0
x4 0
c =
x1 x2 x3 x4
y1 0 0 5.524e+009 0
d =
u1
y1 0
Continuous-time model.

Observe: cual es el efecto de la accion proporcional?


Al observar la gráfica, se tiene un porcentaje de sobreimpulso, en apariencia el valor
en la que la función alcanza estabilizarse en el valor de “1” es en 0.3s.

b) Acción Proporcional Integral ( PI ).


clear all
h=pidmotor(1.79,20,0);
t=0:0.001:0.3; % tiempo de la simulación.
step(h,t)
xlabel('Tiempo (s)')
ylabel('Posición (rad)')
grid
Al observar la gráfica el porcentaje de sobreimpulso se incrementa y se observa en
el gráfico la respuesta temporal.
clear all
h=pidmotor(1.79,50,0);
t=0:0.001:0.3; % tiempo de la simulación.
step(h,t)
xlabel('Tiempo (s)')
ylabel('Posición (rad)')
grid

En este caso el porcentaje de sobreimpulso aunmenta, también existen diferencias


en los tiempos de levantamiento.
clear all
h=pidmotor(17,200,0);
t=0:0.001:0.3; % tiempo de la simulación.
step(h,t)
xlabel('Tiempo (s)')
ylabel('Posición (rad)')
grid

Si es constante la acción proporcional, y aumenta la acción integral lo que se


obtiene es una respuesta inestable del sistema, ahora variando y ,
tenemos una respuesta más rápida en cuanto al tiempo de asentamiento en paración con
los parámetros y definidos anteriormente. La gráfica es la
siguiente:
c) Acción Proporcional Integral Derivativo ( PID ).
En el último caso obtuvimos una respuesta rápida, pero el overshoot incrementó
demasiado. Por tanto, para reducir este efecto, introduciremos la acción
derivativa. con los datos , y obtenemos:
clear all
h=pidmotor(17,200,0.15);
t=0:0.001:0.3; % tiempo de la simulación.
step(h,t)
xlabel('Tiempo (s)')
ylabel('Posición (rad)')
grid

La grafica es mas estable que los anteriores, como se puede observar, se tiene
un porcentaje de sobreimpulso bajo, tiempo de asentamiento muy bueno que es menor
que en los anteriores casos, tiene un tiempo pico y un tiempo de levantamiento.

2. Dado el sistema de segundo orden descrito en la Ec. 5.

Grafique el mapa de polos y la respuesta temporal para los siguientes casos.

i) y
for w=[0:0.25:4];
z=0.7
t=0:0.001:5
num=[w.^2]
den=[1 2.*z.*w w.^2]
h=tf(num,den)
hold on
step(h,t)
title('Respuesta del primer sistema')
end

for w=[0:0.25:4];
z=0.7
num=[w.^2]
den=[1 2.*z.*w w.^2]
h=tf(num,den)
hold on
pzmap(h)
title('Respuesta de polos del primer sistema')
end

ii) y
for w=[0:0.25:4];
z=0.5
t=0:0.001:5
num=[w.^2]
den=[1 2.*z.*w w.^2]
h=tf(num,den)
hold on
step(h,t)
title('Respuesta del segundo sistema')
end

for w=[0:0.25:4];
z=0.5
num=[w.^2]
den=[1 2.*z.*w w.^2]
h=tf(num,den)
hold on
pzmap(h)
title('Respuesta de polos del segundo sistema')
end
Respuesta de polos del segundo sistema
4
4
0.4 0.28 0.2 0.14 0.09 0.04 3.5
3
3 0.56
2.5
2
2
1.5
0.8
1
1
0.5
Imaginary Axis

0.5
-1
1
0.8
1.5
-2
2
2.5
-3 0.56
3
0.4 0.28 0.2 0.14 0.09 0.04 3.5
-4
-2 -1.8 -1.6 -1.4 -1.2 -1 -0.8 -0.6 -0.4 -0.2 40
Real Axis

iii) y

for z=[0:0.25:3]
w=2;
t=0:0.001:5
num=w^2
den=[1 2.*z.*w w^2]
h=tf(num,den)
hold on
step(h,t)
title('Respuesta del tercer sistema')
end
Respuesta del tercer sistema
2

1.8

1.6

1.4

1.2
Amplitude

0.8

0.6

0.4

0.2

0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Time (sec)

for z=[0:0.25:3]
w=2;
num=w^2
den=[1 2.*z.*w w^2]
h=tf(num,den)
hold on
pzmap(h)
title('Respuesta de polos del tercer sistema')
end
Respuesta de polos del tercer sistema
2.5
0.972 0.945 0.89 0.8 0.64 0.4
2
0.988
1.5

1 0.997

0.5
Imaginary Axis

12 10 8 6 4 2
0

-0.5

-1 0.997

-1.5
0.988
-2
0.972 0.945 0.89 0.8 0.64 0.4
-2.5
-12 -10 -8 -6 -4 -2 0
Real Axis

iiii) y
for z=[0:0.25:3]
w=3;
t=0:0.001:5
num=w^2
den=[1 2.*z.*w w^2]
h=tf(num,den)
hold on
step(h,t)
title('Respuesta del cuarto sistema')
end
Respuesta del cuarto sistema
2

1.8

1.6

1.4

1.2
Amplitude

0.8

0.6

0.4

0.2

0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Time (sec)

for z=[0:0.25:3]
w=3;
num=w^2
den=[1 2.*z.*w w^2]
h=tf(num,den)
hold on
pzmap(h)
title('Respuesta de polos del cuarto sistema')
end
Respuesta de polos del cuarto sistema
3
0.982 0.962 0.925 0.86 0.72 0.45

0.992
2

0.998
1
Imaginary Axis

18 16 14 12 10 8 6 4 2
0

-1
0.998

-2
0.992

0.982 0.962 0.925 0.86 0.72 0.45


-3
-18 -16 -14 -12 -10 -8 -6 -4 -2 0
Real Axis

3. Grafique la respuesta temporal del sistema:

Identifique y etiquete los valores en el gráfico: , , y . Use la


notación
adoptado por OGATA, 1998 , 3ra Edición.
 : Tiempo de levantamiento (rise time), es le tiempo requerido para que la
respuesta pase del 10% al 90%, del 5% al 95% o del 0% al 100% de su
valor final.
 : Tiempo de pico (peak time), es el tiempo requerido para que la respuesta
alcance el primer pico máximo.
 : Tiempo de asentamiento (settling time), es el tiempo requerido para que la
respuesta entre en la barrera de “tolerancia permisible”.Dicha barrera está
por lo general, entre 2 a 5% del valor final.
 : Sobrepaso máximo (overshoot), es el valor de la respuesta en su pico
máximo, generalmente expresado en % de acuerdo a la relación siguiente:

Respuesta a escalón del sistema G(s)


1.4 System: sys
Peak amplitude: 1.12
Overshoot (%): 12
1.2 At time (sec): 2.23
System: sys System: sys
Settling Time (sec): 3.4 Final Value: 1
1

System: sys
0.8
Rise Time (sec): 1
Amplitude

0.6

0.4

0.2

0
0 1 2 3 4 5 6 7
Time (sec)

Los parámetros de la respuesta temporal del sistema son:

, , y

4. Considere el sistema de la ecuación (5), determine los valores de y para


que el sistema responda a una entrada escalón con sobrepaso de
aproximadamente 5% y con un tiempo de asentamiento de ,(Use el
criterio de 2% para la tolerancia permisible, compare con los resultados
analíticos).

Para encontrar el valor del sobrepaso máximo utilizamos la ecuación:

Reemplazando valores tenemos:


Ahora para hallar el tiempo de asentamiento con tolerancia de 2%, aplicamos la
relación:

En Matlab el comando que utilizamos para obtener la respuesta temporal es:

>> t=0:0.001:10;
>> step([2.164^2],[1 2*0.9242*2.164 2.164^2],t)
>>

Y obtenemos la siguiente gráfica:


Step Response
1.4

1.2
System: sys System: sys
Settling Time (sec): 2.3 Final Value: 1
1
System: sys
Peak amplitude: 1
System: sys Overshoot (%): 0.0499
0.8
Rise Time (sec): 1.38
Amplitude

At time (sec): 3.8

0.6

0.4

0.2

0
0 1 2 3 4 5 6 7 8 9 10
Time (sec)

De donde podemos observar una variación ligera en los valores de porcentaje de


sobrepaso y tiempo de asentamiento respectivamente, pero que se aproximan a los
valores obtenidos analíticamente; comprando tenemos:

Porcentaje de sobrepaso indicado en Matlab = 4.999%.


Mientras que se dio como condición un porcentaje de sobrepaso 5%.
la diferencia entre estas dos es de 0.001%.

Tiempo de asentamiento indicado en Matlab =2.3s.


Mientras que se estableció como condición un tiempo de 2s.
obteniéndose una diferencia de 0.3s
5. Implemente una nueva función (similar a la función del item 1). Usando esa
nueva función, encuentre los parámetros del controlador PID ( y )
para el sistema mecánico siguiente:

donde:

m = 2 Kg (masa del móvil)


b = 15 Ns/m (coef .del amortiguador)
k = 25 N/m (coef. del resorte)


bx
F

Recomendación: El sistema controlado deberá tener una respuesta rápida ( < 1 s),
un sobrepaso mínimo ( < 25%) y un error en régimen permanente nulo
( ).

El fichero o el archivo M-File es de la forma:


function [h]=pidresorte(kp,ki,kd)
% Modelo del Sistema X(s)/F(s)
m=2;
b=15;
k=25;
num=1;
den=[m b k];
% TF del controlador PID(s)
kp=kp;
ki=ki;
kd=kd;
numpid=[kd kp ki];
denpid=[1 0];
% TF en lazo abierto F(s)=G(s)*PID(s)
numf=conv(num,numpid);
denf=conv(den,denpid);
[af,bf,cf,df]=tf2ss(numf,denf)
sysf=ss(af,bf,cf,df)
% TF en lazo cerrado H(s)= F(s)/(1+F(s))
h=feedback(sysf,1)

Para lograr que los parámetros requeridos sean obtenidos en este caso se optó
por hacer la sintonización probando valores para cada uno de los componentes
del controlador PID, en este problema indicaremos cual es el sistema en espacio de
estados tal como muestra Matlab a diferencia de los problemas anteriores; y los
valores de los componentes del controlador para los cuales se obtiene una respuesta
que está entre los límites de las características requeridas por el sistema.

Aplicando los valores que se muestran a continuación obtenemos como dijimos


antes el sistema en espacio de estados:
>> h=pidresorte(500,2000,25)

af =

-7.5000 -12.5000 0
1.0000 0 0
0 1.0000 0

bf =

1
0
0

cf =

1.0e+003 *

0.0125 0.2500 1.0000

df =

a=
x1 x2 x3
x1 -7.5 -12.5 -0
x2 1 0 0
x3 0 1 0
b=
u1
x1 1
x2 0
x3 0

c=
x1 x2 x3
y1 12.5 250 1000

d=
u1
y1 0

Continuous-time model.

a=
x1 x2 x3
x1 -20 -262.5 -1000
x2 1 0 0
x3 0 1 0

b=
u1
x1 1
x2 0
x3 0

c=
x1 x2 x3
y1 12.5 250 1000

d=
u1
y1 0

Continuous-time model.

a=
x1 x2 x3
x1 -20 -262.5 -1000
x2 1 0 0
x3 0 1 0

b=
u1
x1 1
x2 0
x3 0

c=
x1 x2 x3
y1 12.5 250 1000

d=
u1
y1 0

Continuous-time model.

A continuación definimos un vector “t”, que será nuestro intervalo de tiempo


durante el cual se evaluará nuestra respuesta a escalón, y luego de esto graficamos
nuestra respuesta y luego le etiquetamos un título a nuestra gráfica.
>> t=0:0.0001:2;
>> step(h,t)
>> title('Tunning del sistema (masa-resorte) con un PID ')
>>

System: h
Tunning del sistema (masa-resorte) con un PID
Peak amplitude: 1.23
1.4
Overshoot (%): 23.2
At time (sec): 0.188

1.2
System: h System: h
Settling Time (sec): 0.544 Final Value: 1
1

System: h
0.8
Rise Time (sec): 0.0775
Amplitude

0.6

0.4

0.2

0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Time (sec)

Para finalizar este laboratorio podemos concluir que para valores cercanos de la
acción proporcional que están alrededor de 500 se logra un porcentaje de
sobrepaso menor al 25%, mientras que para valores de la acción integral que no
estén tan cerca del valor que elegimos y que es de 2000 en este caso, se obtiene un
error en régimen permanente igual a cero; y finalmente para valores de la acción
derivativa que estén alrededor del valor de 25 se obtiene un tiempo de respuesta
que es menor de 1seg.

También podría gustarte