Anda di halaman 1dari 8

function ejemplo1 %programa para una red de adelanto n=input('ingrese el numerador n=') d=input('ingrese el denominador d=') %sistema sin

compensar %------------%cuando te dan POLO DESEADO PA METER WN Y E %sigma=1 %wd=1*sqrt(3) %s1=-sigma+j*wd %s2=-sigma-j*wd %wn=sqrt((sigma^2)+(wd^2)) %e=sigma/wn wn=input('ingrese el deseado la wn=') e=input('ingrese el factor e=') %-----------------------%cuando te da ts y mp %ts=4; %mp=0.2; %sigma=4/ts; %---%Mp =exp(-sigma*pi/wd) %wd=eval(solve('mp=exp(-sigma*pi/wd)')); %--%polos del sistema continuo %s1=-sigma+j*wd %wn=sqrt((sigma^2)+(wd^2)) %e=sigma/wn disp('funcion de transferencia a lazo abierto') la=tf(n,d) disp('funcion de transferencia a lazo cerrado') lc=feedback(la,1) %hallamos los polos y ceros dominantes de la ft p=pole(lc) p0=length(p) z=zero(lc) z0=length(z) %hallemos la frecuencia natural no mortiguada y factor de amortiguamiento [Wn,Z] = damp(lc) %Wn = abs(log(lambda))/Ts %Z = -cos(angle(log(lambda))) disp('observara el LGR del sistema sin compensar en figure(1)') figure(1) rlocus(la) title('sistema sin compensar') disp('observara rspta en el tiempo del sistema sin compensar en figure(2)') figure(2) step(lc) title('sistema sin compensar') %para poder hallar el sistema compensado hallar los polos deseados disp(' los polos deseados son:') pd1=-1*e*wn+wn*(sqrt(1-(e)^2))*i pd2=conj(pd1) % APLICAR CONDICION DE ANGULO %hallando zeros y polos en lazo abierto z1=roots(n) p2=roots(d) %hallamos la deficiencia angular,%sumatoria angulos de ceros - Sumatoria %angulos de polos = -180 [q,w]=size(p2);

[t,r]=size(z1); angsp=(180/pi)*angle(-e*wn-p2+wn*(sqrt(1-(e)^2))*i) angsz=(180/pi)*angle(-e*wn-z1+wn*(sqrt(1-(e)^2))*i) sumang=0; for a=1:q sumang=sumang+angsp(a,w) end disp('sumang') disp('la contribucion angular es:') def=sumang-180 % hallando por el compensador en adelanto, hallando la ubicacion de el zero % y el polo.por el metodo de la bisectriz hallaremos las ubicaciones del polo y zero %para el polo en controlador adelanto(pca) disp('localizacion del polo') angpca=(((180/pi)*angle(pd1))/2)-(def/2); pca=-1*((wn*(sqrt(1-(e)^2)))/(tan(angpca*pi/180))+1*e*wn) disp('localizacion del zero') anh=(((180/pi)*angle(pd1))/2)-(def/2); anj=((180/pi)*angle(pd1)-90); angzca=anj-anh; zca=-1*(1*e*wn-((wn*(sqrt(1-(e)^2)))*(tan(angzca*pi/180)))) %hallando la ganancia K, se tendra que realizar por medio de la condicion %de magnitud, se tiene, primero la nueva planta(funcion de transferencia % mas el compensador en adelando. n1=[1 -zca]; d1=[1 -pca]; [n2,d2]=series(n,d,n1,d1); disp('funcion de transferencia a lazo abierto sin kc') sc=tf(n2,d2) s=pd1; gla1=poly2sym(n2,'z')/poly2sym(d2,'z'); z=pd1; mag = abs(eval(gla1)); disp('la ganancia es kc= ') kc=1/mag %respuesta en el tiempo del sistema sin compensar disp('funcion de transferencia con kc') disp('funcion de transferencia con el compensador en lazo abierto') sc1=kc*sc disp('funcion de transferencia con el compensador en lazo cerrado') sct=feedback(sc1,1) figure(3) step(sct,lc)%sitema compensado con el sistema no compensado legend('sc','snc') title('sitema compensado con el sistema no compensado') hold off %hallamos para el sistema compensado figure(4) sla=la; rlocus(sla,sc1,'r')%sistema sin compensar legend('snc','sc') title('sitema compensado con el sistema no compensado') grid

function ejemplo2 % programa para resolver sistema compensado en atraso n=input('ingrese el numerador n=') d=input('ingrese el denominador d=') kv=input('ingrese la cte. error estatico k^v=') disp('funcion de transferencia a lazo abierto') la=tf(n,d) disp('funcion de transferencia a lazo cerrado') lc=feedback(la,1) %hallamos los polos y ceros dominantes de la ft p=pole(lc) z=zero(lc) %hallemos la frecuencia natural no mortiguada y factor de amortiguamiento [Wn,Z] = damp(lc) disp('funcion de transferencia a lazo cerrado') lc denr=input('ingrese el denominador en lazo cerrado con rampa') lc1=tf(n,denr); figure(1) rlocus(la) title('sistema no compensado') figure(2) step([1],[1 0]) legend('rampa') hold on step(lc1) title('sistema no compensado') hold off axis([0 40 0 40]) %calcular la cte de error estatico.sistema no compensado %kv=lim(s-0).(s*G(s)), la s se va con una s del G(s), p=pole(la) lp=length(p) p1=abs(p); p2=p1(2:(lp)) lp2=length(p2); multilpik=1; for k=1:lp2 multilpik=multilpik*p2(k) end am=multilpik kv1=(n/am) %ahora hallamos B y kc ,por parte del k^v y kv disp('kc*B*kv1=k^v') B=input('eliga B=') %ahora obtenida B,Elegimos el cero y el polo del compensador de atraso (cercanos, %cerca al origen y T grande) disp('Elegimos el cero y el polo del compensador de atraso (cercanos,cerca al origen y T grande') n1=input('ingrese (1/T) del compensador atraso n1=') %halla del cero el T T=(1/n1) %se obtiene ahora EL POLO DE(1/TB) d2=(1/(T*B)) disp('poner el polo domante pdomLC') %pdomLC=input('ingrese el polo dominante LC=')

pdomLC=p(2,1) sigma=-1*(real(pdomLC)); wd=imag(pdomLC); s1=-sigma+j*wd; wn=sqrt((sigma^2)+(wd^2)); e=sigma/wn; angp=(180/pi)*angle(-e*wn+d2+wn*(sqrt(1-(e)^2))*i) angz=(180/pi)*angle(-e*wn+n1+wn*(sqrt(1-(e)^2))*i) def=angz-angp while def<-5 'def es menor que -5' end disp('la deficiencia esta correcta es pequea') %de ahi llevamos kc con G(s)Gc(s) n3=[1 n1]; d3=[1 d2]; [nsc,dsc]=series(n,d,n3,d3) disp('funcion de transferencia a lazo abierto sin kc') sc=tf(nsc,dsc) disp('funcion de transferencia a lazo cerrado sin kc') scLC=feedback(sc,1) pols=pole(scLC) %pdompols=input('ingrese el polo dominante nuevo=') pdompols=pols(2,1) gla1=poly2sym(nsc,'z')/poly2sym(dsc,'z'); z=pdompols; mag = abs(eval(gla1)); disp('la ganancia es kc= ') %ganancia kc kc=1/mag disp('funcion de transferencia con el compensador en lazo abierto') sc1=kc*sc disp('funcion de transferencia con el compensador en lazo cerrado') sct=feedback(sc1,1) stn=input('ingrese el num ft con el compensador sctn=') sctr=input('ingrese el den ft con el compensador con rampa sctr=') ntc=[stn]; dtc=[sctr]; add=tf(ntc,dtc); %hallamos para el sistema compensado figure(4) sla=la; rlocus(sla,sc)%sistema sin compensar legend('snc','sc') title('sistema compensado y sin compensar') grid figure(5) sct1=add; step(sct1,'b',lc1,'r')%sitema compensado legend('sc','snc') title('sistema compensado y sin compensar') axis([0 40 0 40])

function ejemplo3 %programa para hacer funcion atraso-adelanto n=input('ingrese el numerador de G(s), n=') d=input('ingrese el denominador de G(s), d=') e=input('ingrese el factor de amortiguamiento deseado, e=') wn=input('ingrese la frecuencia natural no amortiguada, wn') kv=input('ingrese la constante de error estatico deseado, kv= ') disp('funcion de transferencia a lazo abierto') la=tf(n,d) disp('funcion de transferencia a lazo cerrado') lc=feedback(la,1) %hallamos los polos y ceros dominantes de la ft p=pole(lc) z=zero(lc) %hallemos la frecuencia natural no mortiguada y factor de amortiguamiento [Wn,Z] = damp(lc) %%%%%%%%%%%%%%%%%%% denr=input('ingrese el denominador en lazo cerrado con rampa') lc1=tf(n,denr); figure(1) rlocus(la,'b') legend('snc') title('sistema no compensado') %%%%%%%% figure(2) nr=[1]; dr=[1 0]; lar=tf(nr,dr); step(lar,lc1) legend('rampa','snc') axis([0 10 0 10]) %%%%%%%%% figure(3) step(lc) title('sistema no compensado') %%%%%%%%%%%% %calcular la cte de error estatico.sistema no compensado %kv=lim(s-0).(s*G(s)), la s se va con una s del G(s), p=pole(la) lp=length(p) p1=abs(p); p2=p1(2:(lp)) lp2=length(p2); multilpik=1; for k=1:lp2 multilpik=multilpik*p2(k) end am=multilpik kv1=(n/am) %paso N01 hallamos los polos deseados del sistema:e y wn %para poder hallar el sistema compensado hallar los polos deseados disp('hallando los polos deseados') pd1=-1*e*wn+wn*(sqrt(1-(e)^2))*i pd2=conj(pd1) % APLICAR CONDICION DE ANGULO %hallando zeros y polos en lazo abierto z1=roots(n)

p2=roots(d) %hallamos la deficiencia angular,%sumatoria angulos de ceros - Sumatoria %angulos de polos = -180 [q,w]=size(p2); [t,r]=size(z1); angsp=(180/pi)*angle(-e*wn-p2+wn*(sqrt(1-(e)^2))*i) angsz=(180/pi)*angle(-e*wn-z1+wn*(sqrt(1-(e)^2))*i) sumang=0; for a=1:q sumang=sumang+angsp(a,w) end disp('sumang') disp('deficiencia angular es:') def=sumang-180 %como corresponde el compensador de atraso adelanto, hallaremos el Gc(s),de %adelanto A partir de la FT en lazo abierto no compensado G(s), para %determinar la deficiencia angular _,. La parte de adelanto de fase del %compensador de atraso-adelanto debe contribuir con este ngulo phi. % hallando por el compensador en adelanto, hallando la ubicacion de el zero % y el polo.por el metodo de la bisectriz hallaremos las ubicaciones del polo y zero %para el polo en controlador adelanto(pca) disp('localizacion del polo') angpca=(((180/pi)*angle(pd1))/2)-(def/2); pca=-1*((wn*(sqrt(1-(e)^2)))/(tan(angpca*pi/180))+1*e*wn) disp('localizacion del zero') anh=(((180/pi)*angle(pd1))/2)-(def/2); anj=((180/pi)*angle(pd1)-90); angzca=anj-anh; zca=-1*(1*e*wn-((wn*(sqrt(1-(e)^2)))*(tan(angzca*pi/180)))) %hallando la ganancia K, se tendra que realizar por medio de la condicion %de magnitud, se tiene, primero la nueva planta(funcion de transferencia % mas el compensador en adelando. n1=[1 -zca]; d1=[1 -pca]; [n2,d2]=series(n,d,n1,d1); disp('funcion de transferencia a lazo abierto sin kc') sc=tf(n2,d2) s=pd1; gla1=poly2sym(n2,'z')/poly2sym(d2,'z'); z=pd1; mag = abs(eval(gla1)); disp('la ganancia es kc= ') kc=1/mag %respuesta en el tiempo del sistema sin compensar disp('funcion de transferencia con kc') disp('funcion de transferencia con el compensador en lazo abierto') sc1=kc*sc disp('funcion de transferencia con el compensador en lazo cerrado') sct=feedback(sc1,1) %rlocus(sc1,'g');%sistema compensado con adelanto %hallando kv error estatico disp('kc*B*kv1=k^v') %debemos preveeer que b >1; y=(pca/zca)

B=(kv*y/(kc*kv1)) %ahora obtenida B,Elegimos el cero y el polo del compensador de atraso (cercanos, %cerca al origen y T grande) disp('Elegimos el cero y el polo del compensador de atraso (cercanos,cerca al origen y T grande') zpc=input('ingrese (1/T) del compensador atraso zpc=') %halla del cero zpc ,el T disp('zero del compensado en atraso') T=(1/zpc) %se obtiene ahora EL POLO DE(1/TB) disp('polo del compensado en atraso') ppc=(1/(T*B)) %del polo deseado tenemos sigma=-1*(real(pd1)); wd=imag(pd1); s1=-sigma+j*wd; wn1=sqrt((sigma^2)+(wd^2)); e1=sigma/wn; angp=(180/pi)*angle(-e1*wn1+ppc+wn1*(sqrt(1-(e1)^2))*i) angz=(180/pi)*angle(-e1*wn1+zpc+wn1*(sqrt(1-(e1)^2))*i) def=angz-angp while def<(-5) 'def es menor que -5' end disp('la deficiencia esta correcta') % ahora tendria que realizarse control por magnitud deberia de ser igual a % a 1 HY=abs((s1+zpc)/(s1+ppc)) % ahora la funcion de transferencia tendria la sgte. forma: nzpa=[1 zpc] dzpa=[1 ppc] n3=kc*conv(n,n1) d3=conv(d,d1) num=conv(n3,nzpa) den=conv(d3,dzpa) disp('funcion de transferencia lazo abierto') scla=tf(num,den) disp('funcion de transferencia lazo cerrado') sclc=feedback(scla,1) denramp=input('ingrese el denominador sclc con rampa: denramp=') sclcr=tf(num,denramp); %%%%%%%%%%%%% figure(4) rlocus(scla,la) legend('sc','snc') title('sistema compensado') %%%%%%%%%%%% figure(5) step(sclc,lc) legend('sc','snc') title('sistema compensado') %%%%%%% figure(6) step(sclcr,lar,lc1) legend('sc','rampa','snc')

title('sistema compensado') axis([0 40 0 40])

Anda mungkin juga menyukai