presentacion medidas de seguridad riesgo eléctrico
Control pid de una planta de segundo orden usando el metodo de ann backpropagation
1. 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
2. UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
2
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;
3. UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
3
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.
4. UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
4
Fig3: Recta Tangente de aproximación para determinación de los parámetros K, tau y L.
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
5. UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
5
disp('parametros deseados de Ziegler-Nichols')
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)')
6. UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
6
title('Salida Planta controlada')
Resultados:
Ploteos:
Entrenamiento:
Fig4: ANN entrenando.
Figure:
Fig5: Graficas de los ploteos.
7. UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA
7
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.