Вы находитесь на странице: 1из 13

SIMULACIN ARCHIVO ZN1.

m
1.-DESCRIPCIN DEL PROBLEMA
En el informe siguiente describe la sintonizacin de un controlador
mediante primer mtodo de ZIEGLER-NICHOLS (LAZO ABIERTO). En el
archivo ZN1.m se define una curva que se tomar como la respuesta a una
entrada en escaln de una desconocida planta proceso.
La respuesta obtenida de la supuesta planta de proceso a una entrada
escaln es la siguiente:

Una curva de respuesta en S puede caracterizarse por 2 constantes: el


tiempo de retardo L y la constante de tiempo T. As, la funcin de
transferencia del sistema se aproxima por una funcin de primer orden con
una ganancia esttica K y una constante de tiempo T con un tiempo de
retraso L, de la forma:

C ( s ) Ke Ls

U ( s ) Ts 1
Con las siguientes rectas se puede obtener las constantes.

Se puede aproximar las constantes segn la grfica:


L=0.25 Y T=1.3
Con estos valores se puede calcular las constantes de Kp, Ti Y Td.
Kp= 1.2*T/L, Ti= 2*L
Kp=6.24;

Ti=0.5

Y Td= 0.5*L
y Td=0.65

Con estos valores se puede sintonizar el controlador PID para la planta


de proceso para ver su respuesta en el programa siguiente del archivo
Z1N.m
2.-PROGRAMA DE SINTONIZACIN EN LAZO ABIERTO.
% Fichero de ajuste emprico de reguladores PID
% (c) David Huarac Rojas
% Departamento de Electricidad y Electrnica. UNCP
% Pulse una tecla para continuar
pause
clc
echo on
% En esta prctica se va a sintonizar un regulador PID
% segn el PRIMER METODO de ZIEGLER-NICHOLS (LAZO ABIERTO).
% Se trata controlar rpidamente una planta de la que se desconoce
% su dinmica, por no disponer de una identificacin previa.
% En los dos mtodos de Ziegler-Nichols se pretende obtener
% un sobreimpulso mximo del 25 % ante una entrada escaln
% En el primer mtodo de Ziegler-Nichols, se obtiene
% de manera experimental la respuesta de la planta a una
% entrada en escaln. Si la planta no tiene integradores
% ni polos complejos dominantes ( lo que es frecuente en
% procesos qumicos, que suelen estar constituidos por
% factores de primer orden en serie ) entonces la respuesta
% tiene forma de una S.
%
%
PLANTA
%
________
%
Escaln
|
| Respuesta
%
-------> |
?
|-------->
%
|
|
%
--------

% Pulse una tecla para continuar


pause
%
echo off
nump=27;
denp=[1 9 27 27];
t=[0:0.01:5];
% La respuesta al escaln en lazo abierto ser
clf
step(nump,denp,t);grid; title ('Resp escaln lazo abierto')
disp(' ')
disp(' ')
disp('Vea la respuesta en lazo abierto al escaln en la Figura del men
WINDOWS')
disp(' ')
disp(' ')
echo on
% La curva de respuesta de la planta tiene forma de S y puede
% caracterizarse por 2 constantes:
% - un retraso puro , L
% - una constante de tiempo, T
% Para determinar ambas constantes tmese grficamente
% la recta tangente a la curva de respuesta en el punto de inflexin.
% La funcin de transferencia del sistema se aproxima, pues,
% por una funcin de primer orden con una ganancia esttica K y
% una constante de tiempo T con un tiempo de retraso L , de la forma
%
-Ls
%
e
%
G(s)= K --------%
Ts + 1
% Pulse una tecla para continuar
pause
% Sobre la grfica de la respuesta anterior debe obtener los valores
% de T y L ( Ntese que la ganancia esttica es K=1 )
% Con estos valores, los parmetros del controlador PID sugeridos por
% Ziegler-Nichols son:
%

Kp= 1.2*T/L Ti= 2*L

Td= 0.5*L

para un regulador PID de funcin de transferencia :

Gc(s)= Kp(1 + Tds + 1/ Ti s) = (KpTdTi s^2 + KpTi s + Kp) / Tis

% Calcule los parmetros del regulador y obtendremos la respuesta al


escaln
% para el sistema en lazo cerrado
%
%
CONTROL
PLANTA
%
___
________
%
+
|
|
|
|
%
--->( )--->|PID|--->| G(s) |---->
%
- ^
|___|
|
| |
%
|
-------|
%
|
|
%
|
|
%
|
|

%
-------------------------echo off
Kp=input('Introduzca la constante proporcional Kp = ');
Ti=input('Introduzca el tiempo integral Ti = ');
Td=input('Introduzca el tiempo derivativo Td = ');
% La funcin de transferencia del regulador es
numc=[Kp*Td*Ti, Kp*Ti, Kp] ;
denc=[Ti, 0];
% La funcin de transferencia en lazo abierto ser
numg=conv(numc,nump);
deng=conv(denc,denp);
% Y la funcin de transferencia del sistema en lazo cerrado
[num,den]=feedback(numg,deng,1,1,-1);
disp(' ')
disp(' ')
disp('La funcin de transferencia del sistema realimentado es')
printsys(num,den)
clf
% La respuesta al escaln ser
step(num,den,t);grid; title ('Respuesta al escaln')
disp(' ')
disp(' ')
disp('Para ver la respuesta al escaln abra la Figura en el menu
WINDOWS')
disp(' ')
disp(' ')
disp('Pulse una tecla para continuar')
pause
%
%
%
clg
subplot(2,2,1)
% La entrada es un escaln
escalon=ones(1,length(t)); plot(t,escalon);grid;title('Entrada escaln')
subplot(2,2,2)
% La respuesta al escaln ser
respesc=step(num,den,t); plot(t,respesc);grid; title ('Resp escaln')
subplot(2,2,3)
% La seal de error
error=escalon-respesc';
plot(t,error);grid;title('Seal de error')
derivada= diff(error)./diff(t);
derivada(length(t))=derivada(length(t)-1);
i=0; integral=[];integral(1)=1*0.1;
for i=1:length(t)-1
integral(i+1)= integral(i) + error(i+1)*0.1;
end
manipp= Kp*error;
manipd= Kp*Td*derivada;
manipi= (Kp/Ti)*integral;
manip=manipp + manipd + manipi ;
subplot(2,2,4)
plot(t,manip);grid;title('Seal de control')
disp(' ')
clc

disp(' ')
disp(' ')
disp('Vea en la Figura la evolucin de la seal de error')
disp('y la seal de salida del controlador')
disp(' ')
disp(' ')
echo on
% Bastantes reguladores industriales (Honeywell, Foxboro, Siemens,...)
% llevan este ajuste (o uno de Ziegler-Nichols modificado) de manera
% automtica
% Obsrvese que sin tener ningn conocimiento previo de la planta
% se regula razonablemente bien. No es posible conseguir un ajuste
% perfecto, ya que la identificacin hecha de la planta es bastante
% rupestre.
% Hasta luego, Lucas !

3.- EJECUCIN DEL PROGRAMA CON LOS VALORES CALCULADOS PARA EL PID
Con los valores calculados de Kp, Ti y Td se ingresaran al ejecutar el
programa anterior, que mostraran los resultados siguientes:

La respuesta a valores calculados sera las siguientes grficas

SIMULACIN ARCHIVO ZN2.m


1.-DESCRIPCIN DEL PROBLEMA
En el informe siguiente describe la sintonizacin de un controlador
mediante el segundo mtodo de ZIEGLER-NICHOLS (LAZO CERRADO). En el
archivo ZN2.m se define una funcin de transferencia: G(s)=
400/s(s^2+30 s+200) que se tomar como un funcin de transferencia
desconocida de la planta de proceso.
Para la sintonizacin se buscar un valor de ganancia proporcional,
que provoque la oscilacin del sistema a dicho valor se le conoce como
ganancia crtica Kcr con Ti=Inf y Td=0.
Vamos a tantear valores:
Kcr=20

Kcr=50

Kcr=10

Kcr=15

Con Kcr=15 se puede notar, que empieza a oscilar la respuesta y se puede


aproximar que el periodo Pcr=0.58seg.
Con las siguientes ecuaciones se obtendr las constantes de ganancia
proporcional, constante tiempo de derivacin y constante de tiempo de
integracin de un CONTROLADOR PID.
Kp= 0.6*Kc
Kp=9

Ti=0.5*Tc
Ti=0.29

Td= 0.125*Tc
Td=0.0725

Con estos constantes calculadas se obtendr la respuesta de un del PID


con el archivo ZN2.m
2.-PROGRAMA DE SINTONIZACIN EN LAZO CERRADO (ZN2.m)
% Fichero de ajuste emprico de reguladores PID
% (c) David Huarac Rojas
% Departamento de Electricidad y Electronica. UNCP
% Pulse una tecla para continuar
pause
clc
echo on
% En esta prctica se va a sintonizar un regulador PID
% segn el SEGUNDO METODO de ZIEGLER-NICHOLS (estabilidad
% lmite en lazo cerrado)
% Se trata controlar una planta complicada, ya que es
% inestable en lazo abierto
% La planta tiene una funcin de transferencia
% G(s)= 400 / s ( s^2 + 30 s + 200)
%
nump=400;
denp=[ 1 30 200 0];
printsys(nump,denp)
%
%
% Pulse una tecla para continuar
pause
%
clc
% Partiendo de un regulador PID , en la forma
% Gc(s)= Kp(1 + Tds + 1/ Ti s) = (KpTdTi s^2 + KpTi s + Kp) / Tis
% se anulan la accin integral ( Ti=inf ) y derivativa ( Td=0 ), y
% utilizando nicamente la accin proporcional, se aumenta la ganancia
% del controlador hasta que el sistema
% presente una oscilacin mantenida ante una entrada escaln.
% Esta ganancia es la ganancia crtica, Kc
%
%
CONTROL
PLANTA
%
___
______________
%
+
|
|
|
1
|
%
--->( )--->| P |--->|--------------|---->
%
- ^
|___|
|s(s^2+30s+200)| |
%
|
-------------|
%
|
|
%
|
|
%
|
|
%
---------------------------------%
% Pulse una tecla para continuar
pause
%
clc
% A continuacin, debe encontrar esta ganancia crtica, Kc ,
% de manera emprica y obtener de manera grfica el valor
% del perodo de la oscilacin lmite, Tc
%
echo off

K=0;
%
while K > 15 | K < 15
%
%
K=input('Introduzca la ganancia K = ');
numc=K;
denc=1;
% La funcin de transferencia en lazo abierto ser
[numg,deng]=series(numc,denc,nump,denp);
% Y la funcin de transferencia del sistema en lazo cerrado
[num,den]=feedback(numg,deng,1,1,-1);
disp(' ')
disp(' ')
disp('La funcin de transferencia del sistema realimentado es')
printsys(num,den)
%
clf
% La respuesta al escaln ser
t=[0:0.1:10];
step(num,den,t);grid; title ('Respuesta al escaln')
disp(' ')
disp(' ')
disp('Para ver la respuesta al escaln abra la Figura en el menu
WINDOWS')
disp(' ')
end
%
disp('Pulse una tecla para continuar')
pause
echo on
% Ahora que ya ha encontrado la oscilacin lmite, ajustaremos el
% controlador.
% Segn las frmulas de Ziegler-Nichols, los parmetros del controlador
PID
% sintonizado son:
%
Kp= 0.6*Kc
Ti=0.5*Tc
Td= 0.125*Tc
% Introduzca los parmetros del PID sintonizado y vea la respuesta al
% escaln que se obtiene.
%
Gc(s)= Kp(1 + Tds + 1/ Ti s) = (KpTdTi s^2 + KpTi s + Kp) / Tis
echo off
Kp=input('Introduzca la constante proporcional Kp = ');
Ti=input('Introduzca el tiempo integral Ti = ');
Td=input('Introduzca el tiempo derivativo Td = ');
% La funcin de transferencia del regulador es
numc=[Kp*Td*Ti, Kp*Ti, Kp] ;
denc=[Ti, 0];
% La funcin de transferencia en lazo abierto ser
numg=conv(numc,nump);
deng=conv(denc,denp);
% Y la funcin de transferencia del sistema en lazo cerrado
[num,den]=feedback(numg,deng,1,1,-1);
disp(' ')
disp(' ')
disp('La funcin de transferencia del sistema realimentado es')
printsys(num,den)
clf

% La respuesta al escaln ser


step(num,den,t);grid; title ('Respuesta al escaln')
disp(' ')
disp(' ')
disp('Para ver la respuesta al escaln abra la Figura en el menu
WINDOWS')
disp(' ')
disp(' ')
disp('Pulse una tecla para continuar')
pause
%
%
%
clf
subplot(2,2,1)
% La entrada es un escaln
escalon=ones(1,length(t)); plot(t,escalon);grid;title('Entrada escaln')
subplot(2,2,2)
% La respuesta al escaln ser
respesc=step(num,den,t); plot(t,respesc);grid; title ('Resp escaln')
subplot(2,2,3)
% La seal de error
error=escalon-respesc';
plot(t,error);grid;title('Seal de error')
derivada= diff(error)./diff(t);
derivada(length(t))=derivada(length(t)-1);
i=0; integral=[];integral(1)=1*0.1;
for i=1:length(t)-1
integral(i+1)= integral(i) + error(i+1)*0.1;
end
manipp= Kp*error;
manipd= Kp*Td*derivada;
manipi= (Kp/Ti)*integral;
manip=manipp + manipd + manipi ;
subplot(2,2,4)
plot(t,manip);grid;title('Seal de control')
disp(' ')
disp(' ')
disp(' ')
disp('Vea en la Figura la evolucin de la seal de error')
disp('y la seal de salida del controlador')
disp(' ')
disp(' ')
echo on
% Observar que la respuesta tiene un sobreimpulso elevado, pero
% el transitorio es breve y no existe error estacionario.
% No le pida peras al olmo, ya que en lazo abierto esta
% planta es imposible de controlar
%

3.-EJECUCIN DEL PROGRAMA CON LOS VALORES CALCULADOS PARA EL PID


Al ejecutar el programa anterior en matlab se ingresaran los valores
calculados de Kp, Ti y Td.

Las respuestas se pueden apreciar en la siguiente figura: