% scrip to design the controller % Primero, leer los datos y agregar integrador load datos.dat F=datos; %si el archivo no es datos.dat cambie el nombre Mag=F(:,1); %la magnitud esta en la primera columna Fase=F(:,2);% la fase esta en la segunda W=F(:,3); % la frecuencia en rad/seg esta en la tercera % el margen de fase actual, sin integrador es de aproximadamane 120 grados % % se agrega el integrador [Mag2,Fase2,W]=bode(1,[1 0], W); %se calcula la respuesta de frecuencia del integrador MagT1=Mag.*Mag2; %se multiplican las magnitudes FaseT1=Fase+Fase2;% se suman las fases % Despues de agregar el integrador, el margen de fase es de 30.42 grados % se debe agregar un cero para llevar MF a 60 grados. % la formula a usar es fase(s+a)= 29.58 por lo tanto atan(6.51/a)=29.58 % grados. a=6.51/tan(29.58) a=6.51/tand(29.58); % el valor de a es de 11.46 %se agrega el cero [MagT2,FaseT2,W]=bode([1 a],1,W); MagT3=MagT2.*MagT1; FaseT3=FaseT1+FaseT2; %el margen de fase ya esta listo. Ahora se debe agregar la ganancia %K=1/0.1491. MagT=MagT3/0.1491; FaseT=FaseT3; % el controlador completo queda como 6.71x(s+11.46)/s % ahora se obtiene la respuesta a lazo cerrado. % si se asume retroalimentacion unitaria, la funcion de transferencia es % G(s)/(1+G(s)). La respuesta de frecuencia se obtiene por operación de % numeros complejos j=sqrt(-1); Tcloop=MagT.*(cosd(FaseT)+j*sind(FaseT))./(1+MagT.*(cosd(FaseT)+j*sind(FaseT))); Mcloop=abs(Tcloop); Fcloop=angle(Tcloop)*180/pi; %el comando angle trabaja en radianes y se convierte a grados. figure(1) subplot(2,1,1);plot(W,20*log10(Mcloop));axis([0 39.5 -30 5]);grid on; title('Bode a Lazo cerrado (punto b)');xlabel('frecuencia Rad/seg');ylabel('db') subplot(2,1,2);plot(W,Fcloop);grid on;xlabel('frecuencia Rad/seg'); ylabel('fase en grados'); %Se agrega el retardo de 0.05seg, la fase cambia a: T=0.05; FaseT=FaseT3-W*T*180/pi; % se disminuye el margen de fase %MF es de 41.3524 grados. Faltan 18.6476 grados. Se agrega una red en adelanto con diseño optimo % es decir PhiMax=18.6476 grados y Wmx=6.51 rad/seg. Las formulas de diseño % se discuten en las diapositiva y tambien en el libro de D'azzo and Houpis % (entre otros) Phi_mx=18.6476; Wmx=6.51; Alpha=(1-sind(Phi_mx))/(1+sind(Phi_mx)); Tmx=1/(Wmx*sqrt(Alpha)); Cero=1/Tmx; Polo=1/(Alpha*Tmx); %la respuesta de frecuencia de la nueva malla en adelanto queda como: [Mlead,Flead,W]=bode([1 Cero],[1 Polo],W); MT=MagT.*Mlead; FT=FaseT+Flead; % se logro el margen de fase de 60 grados. Ahora se calcula la ganancia % Se debe agregar una Ganancia adicional de K2=1/0.66510=1.5035 % el controlador de diseño optimo queda 1.5035x(s+4.67)/(s+9.076). MT=MT/0.6651; %se grafica la nueva respuesta de frecuencia a lazo abierto % Se considera la planta (datos.dat)+PI+retardo+malla en adelanto % Se puede verificar que el margen de fase es 60 grados cuando la amplitud % es 0db figure(2) subplot(2,1,1);plot(W,20*log10(MT));grid on; title('Bode a Lazo Abierto con Controlador Optimo'); xlabel('frecuencia Rad/seg');ylabel('db'); subplot(2,1,2);plot(W,FT+180);grid on;xlabel('frecuencia Rad/seg'); ylabel('Margen de fase en grados')