programas y ejercicios matlab

96
CONTROL II . Jean Carlos Aquino Quispe function ejemplo1 %programa para una red de adelanto n=input('ingrese el numerador n=') d=input('ingrese el denominador d=') wn=input('ingrese el deseado la wn=') e=input('ingrese el factor e=') %sistema sin compensar %cuando te dan POLO DESEADO PA METER WN Y E %sigma=2 %wd=2*sqrt(3) %s1=-sigma+j*wd %wn=sqrt((sigma^2)+(wd^2)) %e=sigma/wn %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:') UNIVERSIDAD NACIONAL DE SAN AGUSTIN Página 1

Upload: angel-fuller

Post on 14-Sep-2015

32 views

Category:

Documents


0 download

DESCRIPTION

Programas y Ejercicios Matlab

TRANSCRIPT

CONTROL II

CONTROL II . Jean Carlos Aquino Quispe

function ejemplo1%programa para una red de adelanton=input('ingrese el numerador n=')d=input('ingrese el denominador d=')wn=input('ingrese el deseado la wn=')e=input('ingrese el factor e=')%sistema sin compensar%cuando te dan POLO DESEADO PA METER WN Y E%sigma=2%wd=2*sqrt(3)%s1=-sigma+j*wd%wn=sqrt((sigma^2)+(wd^2))%e=sigma/wn%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/wndisp('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 ftp=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 deseadosdisp(' los polos deseados son:')pd1=-1*e*wn+wn*(sqrt(1-(e)^2))*ipd2=conj(pd1)% APLICAR CONDICION DE ANGULO %hallando zeros y polos en lazo abiertoz1=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)enddisp('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 compensardisp('funcion de transferencia con kc')disp('funcion de transferencia con el compensador en lazo abierto')sc1=kc*scdisp('funcion de transferencia con el compensador en lazo cerrado')sct=feedback(sc1,1)figure(3)step(sct,lc)%sitema compensado con el sistema no compensadolegend('sc','snc')title('sitema compensado con el sistema no compensado')hold off%hallamos para el sistema compensadofigure(4)sla=la;rlocus(sla,sc1,'r')%sistema sin compensarlegend('snc','sc')title('sitema compensado con el sistema no compensado')grid

EN COMAND WINDOW:EJEMPLO DE DIAPOSITIVASingrese el numerador n=[4]n = 4ingrese el denominador d=[1 2 0]d = 1 2 0

ingrese el deseado la wn=4

wn =

4

ingrese el factor e=0.5

e =

0.5000

funcion de transferencia a lazo abierto Transfer function: 4---------s^2 + 2 s funcion de transferencia a lazo cerrado Transfer function: 4-------------s^2 + 2 s + 4

p =

-1.0000 + 1.7321i -1.0000 - 1.7321i

p0 =

2

z =

Empty matrix: 0-by-1

z0 =

0

Wn =

2.0000 2.0000

Z =

0.5000 0.5000

observara el LGR del sistema sin compensar en figure(1)observara rspta en el tiempo del sistema sin compensar en figure(2) los polos deseados son:

pd1 =

-2.0000 + 3.4641i

pd2 =

-2.0000 - 3.4641i

z1 =

Empty matrix: 0-by-1

p2 =

0 -2

angsp =

120.0000 90.0000

angsz =

Empty matrix: 0-by-1

sumang =

120.0000

sumang =

210

sumangla contribucion angular es:

def =

30

localizacion del polo

pca =

-5.4641

localizacion del zero

zca =

-2.9282

funcion de transferencia a lazo abierto sin kc Transfer function: 4 s + 11.71-------------------------s^3 + 7.464 s^2 + 10.93 s la ganancia es kc=

kc =

4.7321

funcion de transferencia con kcfuncion de transferencia con el compensador en lazo abierto Transfer function: 18.93 s + 55.43-------------------------s^3 + 7.464 s^2 + 10.93 s funcion de transferencia con el compensador en lazo cerrado Transfer function: 18.93 s + 55.43---------------------------------s^3 + 7.464 s^2 + 29.86 s + 55.43

PROBLEMA N7.7 LIBRO DE OGATA

ingrese el numerador n=10

n =

10

ingrese el denominador d=[1 1 0]

d =

1 1 0

ingrese el deseado la wn=3

wn =

3

ingrese el factor e=0.5

e =

0.5000

funcion de transferencia a lazo abierto Transfer function: 10-------s^2 + s funcion de transferencia a lazo cerrado Transfer function: 10------------s^2 + s + 10

p =

-0.5000 + 3.1225i -0.5000 - 3.1225i

p0 =

2

z =

Empty matrix: 0-by-1

z0 =

0

Wn =

3.1623 3.1623

Z =

0.1581 0.1581

observara el LGR del sistema sin compensar en figure(1)observara rspta en el tiempo del sistema sin compensar en figure(2) los polos deseados son:

pd1 =

-1.5000 + 2.5981i

pd2 =

-1.5000 - 2.5981i

z1 =

Empty matrix: 0-by-1

p2 =

0 -1

angsp =

120.0000 100.8934

angsz =

Empty matrix: 0-by-1

sumang =

120.0000

sumang =

220.8934

sumangla contribucion angular es:

def =

40.8934

localizacion del polo

pca =

-4.6458

localizacion del zero

zca =

-1.9373

funcion de transferencia a lazo abierto sin kc Transfer function: 10 s + 19.37-------------------------s^3 + 5.646 s^2 + 4.646 s la ganancia es kc=

kc =

1.2292

funcion de transferencia con kcfuncion de transferencia con el compensador en lazo abierto Transfer function: 12.29 s + 23.81-------------------------s^3 + 5.646 s^2 + 4.646 s funcion de transferencia con el compensador en lazo cerrado Transfer function: 12.29 s + 23.81---------------------------------s^3 + 5.646 s^2 + 16.94 s + 23.81

Ejemp`lo :3.2 Considere el sistema de control con realimentacin unitaria. Disee un compensador de atraso tal que la constante de error esttico de velocidad sea 50 seg sin modificar notablemente la ubicacin de los polos en lazo cerrado originales, que estn en s=-2+j2.45

ingrese el numerador n=10

n =

10

ingrese el denominador d=[1 4 0]

d =

1 4 0

ingrese la cte. error estatico k^v=50

kv =

50

funcion de transferencia a lazo abierto Transfer function: 10---------s^2 + 4 s funcion de transferencia a lazo cerrado Transfer function: 10--------------s^2 + 4 s + 10

p =

-2.0000 + 2.4495i -2.0000 - 2.4495i

z =

Empty matrix: 0-by-1

Wn =

3.1623 3.1623

Z =

0.6325 0.6325

funcion de transferencia a lazo cerrado Transfer function: 10--------------s^2 + 4 s + 10 ingrese el denominador en lazo cerrado con rampa[1 4 10 0]

denr =

1 4 10 0

p =

0 -4

lp =

2

p2 =

4

multilpik =

4

am =

4

kv1 =

2.5000

kc*B*kv1=k^veliga B=20

B =

20

Elegimos el cero y el polo del compensador de atraso (cercanos,cerca al origen y T grandeingrese (1/T) del compensador atraso n1=0.1

n1 =

0.1000

T =

10

d2 =

0.0050

poner el polo domante pdomLC

pdomLC =

-4

angp =

180

angz =

180

def =

0

la deficiencia esta correcta es pequea

nsc =

0 0 10 1

dsc =

1.0000 4.0050 0.0200 0

funcion de transferencia a lazo abierto sin kc Transfer function: 10 s + 1------------------------s^3 + 4.005 s^2 + 0.02 s funcion de transferencia a lazo cerrado sin kc Transfer function: 10 s + 1-----------------------------s^3 + 4.005 s^2 + 10.02 s + 1

pols =

-1.9505 + 2.4104i -1.9505 - 2.4104i -0.1040

polo dominante nuevo

pdompols =

-1.9505 - 2.4104i

la ganancia es kc=

kc =

1.0000

funcion de transferencia con el compensador en lazo abierto Transfer function: 10 s + 1------------------------s^3 + 4.005 s^2 + 0.02 s funcion de transferencia con el compensador en lazo cerrado Transfer function: 10 s + 1-----------------------------s^3 + 4.005 s^2 + 10.02 s + 1 ingrese el num ft con el compensador sctn=[10 1]

stn =

10 1

ingrese el den ft con el compensador con rampa sctr=[1 4.005 10.02 1 0]

sctr =

1.0000 4.0050 10.0200 1.0000 0

Ejemplo 3.1Se requiere que la constante de error esttico de velocidad este cerca de 5 seg^-1

ingrese el numerador n=1.06

n =

1.0600

ingrese el denominador d=[1 3 2 0]

d =

1 3 2 0

ingrese la cte. error estatico k^v=5

kv =

5

funcion de transferencia a lazo abierto Transfer function: 1.06-----------------s^3 + 3 s^2 + 2 s funcion de transferencia a lazo cerrado Transfer function: 1.06------------------------s^3 + 3 s^2 + 2 s + 1.06

p =

-2.3386 -0.3307 + 0.5864i -0.3307 - 0.5864i

z =

Empty matrix: 0-by-1

Wn =

0.6732 0.6732 2.3386

Z =

0.4912 0.4912 1.0000

funcion de transferencia a lazo cerrado Transfer function: 1.06------------------------s^3 + 3 s^2 + 2 s + 1.06 ingrese el denominador en lazo cerrado con rampa[1 3 2 1.06 0]

denr =

1.0000 3.0000 2.0000 1.0600 0

p =

0 -2 -1

lp =

3

p2 =

2 1

multilpik =

2

multilpik =

2

am =

2

kv1 =

0.5300

kc*B*kv1=k^veliga B=10

B =

10

Elegimos el cero y el polo del compensador de atraso (cercanos,cerca al origen y T grandeingrese (1/T) del compensador atraso n1=0.05

n1 =

0.0500

T =

20

d2 =

0.0050

poner el polo domante pdomLC

pdomLC =

-2

angp =

180

angz =

180

def =

0

la deficiencia esta correcta es pequea

nsc =

0 0 0 1.0600 0.0530

dsc =

1.0000 3.0050 2.0150 0.0100 0

funcion de transferencia a lazo abierto sin kc Transfer function: 1.06 s + 0.053------------------------------------s^4 + 3.005 s^3 + 2.015 s^2 + 0.01 s funcion de transferencia a lazo cerrado sin kc Transfer function: 1.06 s + 0.053--------------------------------------------s^4 + 3.005 s^3 + 2.015 s^2 + 1.07 s + 0.053

pols =

-2.3339 -0.3082 + 0.5657i -0.3082 - 0.5657i -0.0547

polo dominante nuevo

pdompols =

-0.3082 + 0.5657i

la ganancia es kc=

kc =

1.0000

funcion de transferencia con el compensador en lazo abierto Transfer function: 1.06 s + 0.053------------------------------------s^4 + 3.005 s^3 + 2.015 s^2 + 0.01 s funcion de transferencia con el compensador en lazo cerrado Transfer function: 1.06 s + 0.053--------------------------------------------s^4 + 3.005 s^3 + 2.015 s^2 + 1.07 s + 0.053 ingrese el num ft con el compensador sctn=[1.06 0.053]

stn =

1.0600 0.0530

ingrese el den ft con el compensador con rampa sctr=[1 3.005 2.015 1.07 0.053 0]

sctr =

1.0000 3.0050 2.0150 1.0700 0.0530 0

function ejemplo3%programa para hacer funcion atraso-adelanton=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 ftp=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)endam=multilpikkv1=(n/am)%paso N01 hallamos los polos deseados del sistema:e y wn%para poder hallar el sistema compensado hallar los polos deseadosdisp('hallando los polos deseados')pd1=-1*e*wn+wn*(sqrt(1-(e)^2))*ipd2=conj(pd1)% APLICAR CONDICION DE ANGULO %hallando zeros y polos en lazo abiertoz1=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)enddisp('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 compensardisp('funcion de transferencia con kc')disp('funcion de transferencia con el compensador en lazo abierto')sc1=kc*scdisp('funcion de transferencia con el compensador en lazo cerrado')sct=feedback(sc1,1)%rlocus(sc1,'g');%sistema compensado con adelanto%hallando kv error estaticodisp('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 Tdisp('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 tenemossigma=-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-angpwhile def