programas y ejercicios matlab
DESCRIPTION
Programas y Ejercicios MatlabTRANSCRIPT
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