1. CONTROL INTELIGENTE
CONTROL PID DE UNA PLANTA DE SEGUNDO ORDEN -
BACKPROPAGATION
UNIVERSIDAD NACIONAL DEL CALLAO
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA
CONTROL INTELIGENTE
TURNO 01E
INTEGRANTES
CORDERO BOCANEGRA CRISTHIAN
SANCHEZ MOSAYHUATE JOSEPH K
TIPO ZUNATA LUIS
VASQUEZ SUAZO EDSON JHON
YANCE PATRICIO GERSON
090044C
090629A
090635A
090641A
090608D
2013
2. UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
PROFESOR: Ing. Ricardo Rodríguez Bustinza, M.Sc SEMESTRE 2013-B
2
CONTROL PID DE UNA PLANTA DE SEGUNDO ORDEN USANDO EL
METODO DE ANN BACKPROPAGATION
.
Objetivos.-
Reconocer los criterios para controlar una planta de segundo orden.
Reconocer los métodos de sintonía (Ziegler-Nichols) para un control PID, PD o PD.
Comparar los dos métodos del backpropagation con el de sintonización de Ziegler-Nichols.
Control de la planta de segundo orden.-
Función de transferencia de segundo orden :
Datos del profesor:
wn=1.2;zeta1=1;zeta2=0.4;
G1=tf(wn^2,[1 2*zeta1*wn wn^2]); %GRUPO MARTES
G2=tf(wn^2,[1 2*zeta2*wn wn^2]); %GRUPO MIERCOLES
t=0:0.001:10;
u=ones(size(t));
y1=lsim(G1,u,t);
y2=lsim(G2,u,t);
subplot(211),plot(t,y1)
title('Planta de Segundo Orden - Grupo Martes')
subplot(212),plot(t,y2)
title('Planta de Segundo Orden - Grupo Miercoles')
Fig1: Plantas de Segundo orden
3. UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
PROFESOR: Ing. Ricardo Rodríguez Bustinza, M.Sc SEMESTRE 2013-B
3
Código:
clear all; close all; clc
% FUNCION DE TRANSFERENCIA IDENTIFICADA
% 1.2^2
% -------------------------
% s^2 + 2*1.2*0.4 s + 1.2^2
% numerador y denominador para la F.T.
n = 1.4400;
d = [1 0.9600 1.4400];
% grafica de la respuesta del sistema
% para una entrada escalón unitario
sys = tf(n,d);
Gp = tf(n,d);
t = 0:0.001:10;
y = step(sys,t);
plot(t,y,'b','linewidth',2)
axis([0 8 0 1.4])
e = title('bf respuesta de la planta subamortiguada');
set(e,'fontname','courier','fontsize',14);
xlabel('bf t(seg)');
ylabel('bf amplitud');
grid
% OBTENCION DE LA PENDIENTE MAXIMA
% gráficamente podemos ver que el
% tiempo de establecimiento es:
t1 = 0:0.001:10;
y = step(sys,t1);
% calculo de una pendiente
t = t1 - t1(1);
y = y - y(1);
% BUSQUEDA DE LA MAXIMA PENDIENTE
% hallamos la pendiente desde un t = 0 hasta
% un t = 0.12 pero escogemos la de mayor pendiente,
% realizando una comparación entre estas.
N = length(t1);
Pmax = 0; %pendiente (max) = 0
imax = 0; %posición(max) = 0
% comparación de pendientes
for i = 1:N-1
P = (y(i+1)-y(i))/(t1(i+1)-t1(i));
if P>Pmax;
Pmax = P;
imax = i;
end
end
% ubicación de dos puntos para hallar la recta
% tangente con pendiente máxima
ymax = [y(imax) y(imax+1)];
tmax = [t1(imax) t1(imax+1)];
% OBTENCION DE LOS PARAMETROS K, L y T
% obtención de la respuesta
K = median (y(N-3:N));
% trazando recta de mayor pendiente
P = polyfit(tmax,ymax,1);
R = polyval(P,t1);
%calculo del parámetro L
L = roots(P);
%calculo del parámetro T
Tx = roots(P - [0 K]);
T = Tx - L;
4. UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
PROFESOR: Ing. Ricardo Rodríguez Bustinza, M.Sc SEMESTRE 2013-B
4
figure
plot (t1,y,'b','linewidth',2);
hold
plot (t1,R,'r--','linewidth',2);
axis([0 10 -0.3 1.4]);
h=title('bf curva teoría de reaccion');
set(h,'fontname','courier','fontsize',14)
xlabel('bf t(seg)');
ylabel('bf amplitud');
grid
% CONTROLADOR Ziegler-Nichols
Tc = 4*L;
m = K*L/T;
a = K*L/T;
Kc = 2/(m*L);
Kp = 0.6/a
Ti = T;
Td = 0.5*L;
Ki = Kp/Ti
Kd = Kp*Td
Fig2: Parámetros PID.
Fig3: Recta Tangente de aproximación para determinación de los parámetros K, tau y L.
5. UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
PROFESOR: Ing. Ricardo Rodríguez Bustinza, M.Sc SEMESTRE 2013-B
5
Programación:
Código en Matlab:
clear all; close all; clc
%creando nuestra DATA Pm entradas(k,tau,L)
k=1:0.5:10; %ganancia de dimension [1x21]
tau=0.5:0.5:10; %constante de tiempo dim [1x11]
L=0.5:0.5:5; %Delay de dimension [1x10]
Pm=combvec(k,tau,L); %3x3800 combn. de [k,tau,L]
Q=length(Pm); %dimension de Pm
Tm=zeros(1,3); %target inicial
% Creando target según Ziegler-Nichols
for i=1:Q
a=Pm(:,i); %parámetros metodo Ziegler-Nichols para calcular
Tc=4*a(3); %Tc=4*L
m=a(1)*a(3)/a(2); %m=K*L/tau
kc=2/(m*a(3)); %kc=2/(m*L)
kp=0.6*kc; %parametro kc=kp (ganancia) de ZN PID no interactivo
Ti=0.5*Tc; %parametro Ti(tiempo integral) de ZN PID no interactivo
Td=0.125*Tc; %parametro Td(tiempo derivati) de ZN PID no interactivo
Tm(i,:)=[kp Ti Td]; %vector target de Ziegler-Nichols
end
Tm=Tm'; %3x3800 combinaciones de [k,tau,L]
% creando modelo neuronal RED FF(FeedForward)Alg. Backpropagation
S1=10; %neuronas de la capa oculta
[S2,Q]=size(Tm); %3x3800
net=newff(minmax(Pm),[S1 S2],{'tansig','purelin'},'trainlm');%RED Objeto FF
% Parámetros de la RED
net.trainParam.epochs=500; % numero de epocas
net.trainParam.goal=1e-5; % objeto de error
net.trainParam.lr=0.01; % learning rate
net.trainParam.show=100; % muestra evolucion de epocas/100
%entrenando la RED
net=train(net,Pm,Tm);
%simulando a la RED
a=sim(net,Pm); % salida de la red
%calculo del Error MSE (Mean Square Error)
error=Tm-a;
E=zeros(1,1); % condicion inicial
for i=1:Q;
e=mse(error(:,i)); % error mse
E(i)=e; % almacena error mse
end
%Error del modelo neuronal
disp('Error al final del entrenamiento')
disp(e)
i=1:Q;
figure
subplot(311),plot(i,E,'k')
xlabel('k')
ylabel('Error')
title('Error Cuadratico Medio')
%Validacion (prueba del algoritmo en la red)
Pv1=[1;1.2;0.4]; % Pv1=[K Wn zeta2]
%simulacion de la salida de la red
a1=sim(net,Pv1);
%salida deseada para la validacion
m1=Pv1(1)*Pv1(3)/Pv1(2);% m1:criterio arbitrario en busca del target
Tc1=4*Pv1(3); % Tc1:criterio arbitrario en busca del target
kc1=2/(m*Pv1(3)); % kc1:criterio arbitrario en busca del target
disp('parametros deseados de Ziegler-Nichols')
6. UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
PROFESOR: Ing. Ricardo Rodríguez Bustinza, M.Sc SEMESTRE 2013-B
6
kpz1=0.6*kc1; % parametros del ZN
Tiz1=0.5*Tc1;
Tdz1=0.125*Tc1;
Tv1=[kpz1 Tiz1 Tdz1]; % vector de parametros de ZN
%salida del entrenamiento
disp('')
disp('Ctes Hallada por el BP')
kpb1=a1(1);
Tib1=a1(2);
Tdb1=a1(3);
disp('Error de validacion == 0?')
errorv1=Tv1'-a1;
disp(errorv1)
% Construyendo el prototipo de orden 2
syms s
K1=Pv1(1);
Wn1=Pv1(2);
zeta1=Pv1(3);
Gp1=K1*(Wn1.^2)/((s.^2)+(2*Wn1*zeta1*s)+(Wn1.^2));
[n1,d1]=numden(Gp1);
n1=sym2poly(n1);
d1=sym2poly(d1);
% TF Objeto
Gp1=tf(n1,d1);
% Respuesta debido a una entrada escalón en lazo abierto
tmax=8;
t=0:0.001:tmax;
y1=step(Gp1,t);
subplot(312)
plot(t,y1)
xlabel('bf t(seg)')
ylabel('bf y_{1a}(t)')
title('Planta de Segundo Orden')
% Evaluación de la planta mas el controlado BP dado por la FT.
Kp1=a1(1);
Ti1=a1(2);
Td1=a1(3);
M1=tf([Ti1*Td1*Kp1 Kp1*Ti1 Kp1],[Ti1 0]);
Gp1=ss(Gp1);
L1=M1*Gp1;
GLC1=feedback(L1,1);
% Evaluación de la respuesta de la planta mas el control PID ZN.
Kp2=Tv1(1);
Ti2=Tv1(2);
Td2=Tv1(3);
M2=tf([Ti2*Td2*Kp2 Kp2*Ti2 Kp2],[Ti2 0]);
L2=M2*Gp1;
GLC2=feedback(L2,1);
% Ploteando los resultados
subplot(313)
N=length(t)-1;
u=[zeros(1,N/4) ones(1,N/4) zeros(1,N/4) ones(1,N/4+1)];
y1=lsim(GLC1,u,t);
y2=lsim(GLC2,u,t);
plot(t,y1,'k')
hold
plot(t,y2,'b--')
legend('PID-BP','PID-ZN',-1)
xlabel('bf t(seg)')
ylabel('bf y_{lc}(t)')
title('Salida Planta controlada')
7. UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
PROFESOR: Ing. Ricardo Rodríguez Bustinza, M.Sc SEMESTRE 2013-B
7
Resultados:
Ploteos:
Entrenamiento:
Fig4: ANN entrenando.
Figure:
Fig5: Graficas de los ploteos.
8. UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
PROFESOR: Ing. Ricardo Rodríguez Bustinza, M.Sc SEMESTRE 2013-B
8
Conclusiones y Observaciones.-
Como se observa en la salida del control la sintonización de Ziegler-Nichols no es eficiente para
una planta de segundo orden sub-amortiguada, para ello se tiene que tener otros criterios de
control (Gallier Otto IAE).
El control del Backpropagation es muy eficiente que si aproxima a un control PID para una
entrada escalón, solo falta ajustar los rangos de los parámetros de entrenamiento.
Se aprendió a encontrar los parámetros de control del PID (Kp, Ti y Td) haciendo uso del Matlab.
Bibliografia.-
TUTORIAL DE ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB / MANUEL VARGAS
VILLANUEVA, Libro en PDF.
SINTONIA DE REGULADORES PID / SEBASTIAN MARCOS LOPEZ - Docente de la Universidad de
Salamanca, Libro en PDF.