Maltab
Enviado por maryo489 • 8 de Octubre de 2015 • Síntesis • 2.410 Palabras (10 Páginas) • 113 Visitas
clear all
close all
clc
s=tf('s');
Gs=input('ingrese planta == ');
Hs=input('ingrese valor de sensor == ');
[A,Tm]=step(feedback(Gs,Hs));
step(Gs);
grid
figure
step(feedback(Gs,Hs));
title('Planta');
grid
[num,den]=tfdata(Gs,'v');
[numr,denr]=tfdata(feedback(Gs,Hs),'v');
Cont=menu('Que tipo de controlador necesita implementar','P','PI','PID','Ragazzini');
switch Cont
case 1
disp('');
disp('Controlador Proporcional');
if length(den)==2
disp('De primer orden ')
if pole(Gs)>=-0.9
kc=-den(end)/Hs;
disp('Kc >= ')
disp(kc)
Kp=0.5*abs(kc);
Cs=pid(Kp);
hold on
step(feedback(Cs*Gs,Hs),'r')
legend('planta', 'planta controlada')
grid
hold off
else
pp=pole(Gs);
dt=0.05;
t=0:dt:max(Tm);
y=step(Gs,t);
dy=diff(y)/dt;
[m,p]=max(dy);
d2y=diff(dy)/dt;
yi=y(p);
ti=t(p);
L=ti-yi/m;
if L==0
L=0.005;
end
Tu=(y(end)-yi)/m+ti-L;
figure
plot(t,y,'b',[0 L L+Tu t(end)],[0 0 y(end) y(end)],'k')
title('respuesta escalon')
ylabel('amplitud')
xlabel ('tiempo sg')
grid
Kp=Tu/L;
Cs=pid(Kp);
figure
step(feedback(Gs,Hs));
hold on
step(feedback(Cs*Gs,Hs),'r')
legend('planta','planta controlada')
grid
hold off
end
else
disp('De segundo orden ')
if real(max(pole(Gs)))>=-0.9 %% cerca a 0
kc=abs(-(denr(end)));
Ret=feedback(Gs,1);
[numret,denret]=tfdata(Ret,'v');
wn=sym('Wn');
eq=0;
for i=2:2:length(denret)
eq=eq+(denret(i)*((1j*wn)^(length(denret)-i)));
end
d=solve(eq);
Wc=d(1);
Pc=2*pi/Wc;
Cs=pid(0.5*kc);
figure
step(feedback(Cs*Gs,Hs),'r')
...