Anda di halaman 1dari 3

%Ingresar valores de R, C y L para la planta para PID clc close all clear all %R=2 C=0.0000000027 L=0.00056 wn=1/sqrt(C.

*L) Z=0.5 R=L.*2.*Z.*wn num=[1/(L*C)]; den=[1 R/L 1/(L.*C)]; G=tf(num,den) %sobre paso maximo Mp=exp(-Z.*pi/sqrt(1-Z.^2)); %tiempo pico tp=pi/(wn.*sqrt(1-Z.^2)); %tiempo levantamiento tr=(1-0.416.*Z+2.917.*Z.^2); %tiempo de asentamineto ts=4/(Z.*wn); M=feedback(G,1) hold on step(G) step(M) title('RESPUESTA AL ESCALON - PLANTA ') %figure(5) %bode(G) grid on /////////////////// &**************************8888 clc clear all close all s=tf('s'); %Valores de Capacitancia e Inductancia C=0.00000000027; L1=0.00056; % Diferentes valores de Zheta z1=0.5; %Calculo de Wn Wn=sqrt(1/(L1*C)); %Calculo de Valores de Resistencia para diferentes valores de Zheta R1=2*z1*sqrt(L1/C) %R1=1800 % Calculo de las diferentes funciones de transferencia G1=(1/(L1*C))/(s^2+(R1/L1)*s+1/(L1*C)) %Respuesta al escalon de c/u de las funciones de transferencia figure(1) step(G1) grid on % Calculo de los parametros de la planta segun las reglas de Ziegler Nichols% pp=pole(G1) dt=0.00000005; %Muestro los polos t=0:dt:0.000015; %Defino un avance de vector tiempo con el que voy a trabajar y=step(G1,t); %Pido que me guarde los valores del step en una matriz dy=diff(y)/dt; %Aproxima la Derivada [m,p]=max(dy); %Punto de Inflexin (Calculo el maximo de la derivada) d2y=diff(dy)/dt; %Aproxima la Segunda derivada

yi=y(p); %Magnitud en el que ocurre el maximo de la derivada ti=t(p); %Tiempo en el que ocurre el maximo de la derivada L=ti-yi/m %Retardo (m es la pendiente) Tiempo en el que ocurre la inflexin menos la magnitud de la inflexion sobre la pendiente Tau=(y(end)-yi)/m+ti-L %Constante de tiempo figure(2) plot(t,y,'b',[0 L L+Tau t(end)], [0 0 y(end) y(end)], 'k'); title('Respuesta al Escaln del sistema en lazo abierto') xlabel('Amplitud'); ylabel('Tiempo (s)'); legend('Exacta','Aproximacin Lineal'); grid on % Calculo del controlador segun las reglas de Ziegler Nichols% Kp=1.2*Tau/L Ti=2*L Td=0.5*L Ki=Kp/Ti Kd=Kp*Td GC1 = tf([Kd Kp Ki],[1 0]); %Controlador PID zero(GC1); %Estn en -1/L pole(GC1); %El polo est en el origen. %Sistema en Lazo Cerrado sin controlador %Retroalimentacin Unitaria del sistema controlado sin refinar M=feedback(GC1*G1,1) %Grafica del sitema retroalimentado figure(3) step(M); title('Sistema Controlado en Lazo Cerrado sin sintonizar') grid on %Polos y ceros del Sistema en lazo cerrado figure(4) pzmap(M); title('Polos y ceros del Sistema Controlado sin sintonizar en lazo cerrado') grid on %Refinamientos del controlador variando las constantes % Levantamiento rapido y sobrepaso minimo es bueno % Aumentar Kd hasta Kp max para reducir el sobrepaso % Kp1 = 0.5*Kp % Kd1 = 10*Kd % Ki1 = 1000*Kd Kp1 = 2.0*Kp Kd1 = 5*Kd Ki1 = 1.0*Ki GCR1 = tf([Kd1 Kp1 Ki1],[1 0]); %Controlador PID %Grafica del sistema en lazo cerrado refinado MR1=feedback(GCR1*G1,1); figure(5) step(M,MR1); title('Respuesta al Escalon del Sistema Controlado en Lazo cerrado'); legend('PID Z-N','controlador PID'); grid on %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Polos y ceros del Sistema en lazo cerrado Sin Refinar y Refinados figure(6) pzmap(M,MR1); title('Polos y ceros del Sistema Controlado Refinado en lazo cerrado') legend('PID Z-N','controlador PID') grid on

figure(7) step(G1,MR1) legend('Planta','controlador PID') grid on figure(8) rlocus(G1,MR1) legend('Planta LA','controlador PID') grid on

Anda mungkin juga menyukai