[adsense:responsibe:9545213979]
Nos es valido es menor que .
Como vamos a tener que meter una red de atraso podemos intentar hacer coincidir el cero del segundo compensador de adelanto con el cero de la red de atraso para cumplir . Vamos entonces a calcular la red de atraso:
Red de atraso para que la sea
Como vemos la red de atraso tiene que tener polo en el cero para verificar
Nos vale es menor que
s=%s; g=(s+2)/((s+1)*(s^2+1)); gs=syslin('c',g); //Calculo de los polos de g p=roots(denom(gs)) c=roots(numer(gs)); //Asintotas for i=0:1 aas=180*(2*i+1)/2 end; sas=(p(1)+p(2)+p(3)-c(1))/2 //Lugar de las raices de g clf; evans(gs) xgrid; mtlb_axis([-4 2 -4 4]); //Calculo de el polo dominante ts=5; mp=0.1; sig=4/ts; wd=-%pi*sig/log(mp) s1=-sig+%i*wd; //Angulo del sistema en s1 gs1=horner(gs,s1); angsgs1=atan(imag(gs1),real(gs1)); auxgs1=360*angsgs1/(2*%pi) //Angulo total del compensador de adelanto angc=180-aux //Angulo de s1 auxangs1=atan(imag(s1),real(s1)); angs1=360*auxangs1/(2*%pi) //Angulo de compensador adelanto 1 en s1 gc1=(s+1)/(s+2) gc1s1=horner(gc1,s1); agc1s1=atan(imag(gc1s1),real(gc1s1)); auxgc1s1=360*agc1s1/(2*%pi) //Angulo para el otro compensador de adelanto agc2=angc-auxgc1s1 //Angulo ceros PID acpids=agc2+angs1 acpid=acpids/2 axacpid=2*%pi*acpid/360 //Cero del PID a2=-real(s1)-(imag(s1)/tan(%pi-axacpid)) //Calculo del PID gc2=(s+a2)^2/s //Compensador sin la Kc gc=gc1*gc2 //Vamos a calcular la Kc del compensador gt=gc*g; gts=syslin('c',gt); aux3=abs(horner(gt,s1)); kc=1/aux3 //Vamos a comprobar que el resultado esta bien gt2=kc*gt; gcgs1=horner(gt2,s1) gt2s=syslin('c',gt2); //Calculo de los polos de gt pt=roots(denom(gt2s)) ct=roots(numer(gt2s)) //Angulo de la asintota de gt angast=(pt(1)+pt(2)+pt(3)-2*ct(1))/3 //Calculo de la derivada, para ptos ingreso de gt dk=derivat(-1/gt2s) ptsingreso=roots(numer(dk)) //Lugar de las raices de gt clf; evans(gt2s) xgrid; mtlb_axis([-3 2 -1.5 1.5]); //respuesta a un escalon de todo el sistema glc=gt2/. 1 ; glcs=syslin('c',glc); t=0:0.1:200; y=csim('step',t,glcs); clf subplot(2,1,1); xgrid; plot(t,y) xtitle('Respuesta a un escalon','t','y(t)') subplot(2,1,2); t2=0:0.1:20; y2=csim('step',t2,glcs); xgrid; plot(t2,y2)
Añadir nuevo comentario