densim=poly2sym(den);
GsNoComp=x*numsim/densim;
KVnc=limit(GsNoComp,x,0);
KVnc=double(KVnc);
disp('
Polos
Wn
Z')
disp([P1,Wn1,Z1])
figure (1), rlocus(PlantaLA),grid ,title('Lugar de Raices: SIN
COMPENSAR')
figure (2), step(PlantaLC),grid, title('Respuesta ante Entrada
Escalon: SIN COMPENSAR')
figure (3)
a1=[1];
a2=[1 0]
cer=tf(a1,a2);
hold off
a=0:1:100; plot(a,a,'r'),grid,hold on,
step(series(PlantaLC,cer)),grid, hold off , axis([0 100 0 100]),
legend('Entrada','Salida')
disp('Parametros Deseados: Compensado
')
disp('
Polos
Wn
Z')
disp([sd,Wn,Z;conj(sd),Wn,Z])
figure (1), hold on, plot(sd,'or')
axis auto
hold off
disp('PASO 3: Deficiencia Angular:
')
[z,p,k]=tf2zp(num,den);
disp('ANGULOS CON LOS CEROS
')
SumAngCeros=0; % Suma de los angulos con los ceros (inicializacion)
for g=1:length(z)
th=angle(sd-z(g))*180/pi;
disp([' theta=', num2str(th)]);
SumAngCeros=SumAngCeros+th;
end
disp(['phiC=', num2str(SumAngCeros)]);
disp('ANGULOS CON LOS POLOS
')
SumAngPolos=0; % Suma de los angulos con los polos (inicializacion)
for h=1:length(p)
Th=angle(sd-p(h))*180/pi;
disp(['
theta=', num2str(Th)]);
SumAngPolos=SumAngPolos+Th;
end
disp('
-----------------')
disp(['
phiP =', num2str(SumAngPolos)]);
disp('DEFICIENCIA ANGULAR: ')
phi=-180-(SumAngCeros-SumAngPolos)
MPS=Inf;
if and(-270<=SumAngCeros-SumAngPolos,SumAngCeros-SumAngPolos<-180)
dsz=imag(sd)/tand(phi); SZERO=real(sd)-abs(dsz);
numc=[1 -SZERO]; denc=[1];
Kcz=deconv(conv(denc,den),conv(numc,num)); Kcz=abs(polyval(Kcz,sd));
numco=conv(numc,num); denco=conv(denc,den);
PlantaCZLA=Kcz*tf(numco,denco); PlantaCZLC=feedback(PlantaCZLA,1);
escalsz=stepinfo(PlantaCZLC); % informacion de la entrada escalon
Mpsz=escalsz.Overshoot; MPS=Mpsz;
tsssz=escalsz.SettlingTime;
figure (8)
rlocus(PlantaLA,PlantaCZLA), legend('SIN
COMPENSAR','COMPENSADO'),sgrid(Z,Wn)
title('GRAFICAS COMPENSANDO SOLO CON UN CERO')
figure (9)
step(PlantaLC,PlantaCZLC), legend('SIN
COMPENSAR','COMPENSADO'),grid
title('Entrada Escalon')
figure (10)
step(series(PlantaLC,cer),series(PlantaCZLC,cer)),hold
on,a=0:0.1:10;plot(a,a,'r'),grid,axis([0 40 0 40]),hold off,
legend('SIN COMPENSAR','COMPENSADO', 'ENTRADA RAMPA')
title('Entrada Rampa')
end
if abs(SumAngCeros-SumAngPolos)==180
disp('El Polo Deseado YA PASA POR El LUGAR DE RAICES')
end
if sign(phi)==1
disp('ESTA FUNCION DE TRANSFERENCIA SE COMPENSARA POR ADELANTO')
a=[]; % Matriz de Overshoots, para escojer el menor
b=[]; % Matriz de Settlingtimes, para escojer el menor
z=[]; % Zeros
p=[]; % Polos
for c=0.1:0.1:10 % VALOR PARA "EL" O LOS CEROS desde 0.1 hasta 10
zero=-c;
thz=180-angle(sd-zero)*180/pi; % ANGULO DENTRO DEL TRIANGULO
thp=180-(phi+thz);
dz=abs(sd-zero);
dpz=sind(phi)*dz/(sind(thp));
if abs(dpz)+c<abs(real(sd))
polo=real(sd)-c;
zero=polo+dpz;
else
zero=-c;
polo=zero-dpz;
end
numc=[1 -zero]; denc=[1 -polo];
Kc=deconv(conv(denc,den),conv(numc,num));
Kc=abs(polyval(Kc,sd));
Transfer function:
2 s + 0.1
------------------s^3 + 0.1 s^2 + 4 s
Transfer function:
2 s + 0.1
------------------------s^3 + 0.1 s^2 + 6 s + 0.1
Wn
0.0167
1.0000
0.0170
0.0170
a2 =
Wn
Z
0.5000
0.5000
phi =
73.3546