clear close all s=tf('s'); t=0:0.001:8; Gp=10/(s*(s+5)*(s+2)); figure; rlocus(Gp) K=0:0.1:10; figure; rlocus(Gp,K) r=rlocus(Gp,K); % rlocfind(Gp) figure; plot(r,'x') grid K=1; Glc=feedback(K*Gp,1); figure; step(Glc) % sisotool(Gp,1,1,1) close all %% ----------------------- Mp=5/100; ts=4; tr=0.2; % Calculo la parte real de los polos en base al tiempo de asentamiento sigma = 4.5/ts; % Calculo la parte imaginaria de los polos en base al sobrepaso % Mp = exp(-pi*sigma/wd) wd = -pi*sigma/log(Mp); % Calculo factor de amortiguamiento relativo en base al sobrepaso xita = -log(Mp)/sqrt(log(Mp)^2 + pi^2); % Calculo wn en base al tiempo de subida y xita wn_1 = (0.8 + 2.5*xita)/tr; % wn_1 = 1.8/tr; % Calculo wn en base a xita y wd: wd = wn*sqrt(1 - xita^2) % wn_2 = wd/sqrt(1 - xita^2); % Calculo wd en base a xita y wn_1: wd = wn*sqrt(1 - xita^2) % wd = wn_1*sqrt(1 - xita^2); % Obtengo los polos deseados de LC dominantes s1d=sigma + 1i*wd; s2d=sigma - 1i*wd; % Obtengo el polinomio caracteristico deseado Pcd=(s + s1d)*(s + s2d); % Obtengo la FT de LC deseada [num,den]=tfdata(Pcd,'v'); wnd_cuadrado=num(3); Glcd=wnd_cuadrado/Pcd; figure; step(Glcd,t) figure; pzmap(Glcd) %% Selecciono los polos mas adentro de la region deseada de polos de LC % Selecciono la parte real sigma_rd = 1.5; % Calculo la parte imaginaria de los polos en base al sobrepaso y la nueva parte real wd_rd = -pi*sigma_rd/log(Mp); % Obtengo los polos deseados de LC dominantes s1d2=sigma_rd + 1i*wd_rd; s2d2=sigma_rd - 1i*wd_rd; % Obtengo el polinomio caracteristico deseado Pcd_rd=(s + s1d2)*(s + s2d2); % Obtengo la FT de LC deseada [num,den]=tfdata(Pcd_rd,'v'); wnd_rd=num(3); Glcd_rd=wnd_rd/Pcd_rd; figure; step(Glcd_rd,t) figure; pzmap(Glcd_rd) % Selecciono las partes real e imaginaria sigma_rd = 1.5; wd_rd = 1.1; % Obtengo los polos deseados de LC dominantes s1d3=sigma_rd + 1i*wd_rd; s2d3=sigma_rd - 1i*wd_rd; % Obtengo el polinomio caracteristico deseado Pcd_rd=(s + s1d3)*(s + s2d3); % Obtengo la FT de LC deseada [num,den]=tfdata(Pcd_rd,'v'); wnd_rd=num(3); Glcd_rd2=wnd_rd/Pcd_rd; figure; step(Glcd_rd2,t) figure; pzmap(Glcd_rd2) % Comparacion de los tres casos figure; step(Glcd,Glcd_rd,Glcd_rd2); grid legend('Glcd 1','Glcd 2','Glcd 3') figure; pzmap(Glcd,Glcd_rd,Glcd_rd2); grid legend('Glcd 1','Glcd 2','Glcd 3') axis([-1.8 -1 -2 2]);