Upload
zabdiel-marin
View
218
Download
1
Embed Size (px)
DESCRIPTION
Polos complejos
Citation preview
Ingeniería Mecatrónica
DISEÑO DE CONTROL AUTOMATICO
Sección: 001
ASIGNACION DE POLOS
Profesor: JUAN MANUEL SOLIS SALAZAR
Alumno: Marín Ortega Zabdiel Jesahías
3 de Marzo de 2013
Página 1 de 8
Facultad de Ciencias de la Electrónica
BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA
Índice:
Marco teórico___________________________________________________3
Desarrollo del Programa___________________________________________4
Ejemplo y análisis________________________________________________7
Conclusiones___________________________________________________8
Bibliografía_____________________________________________________8
Página 2 de 8
Marco teórico
El método de Asignación de Polos es algo análogo al método del Lugar Geométrico de las Raíces ya que se colocan los polos en lazo cerrado en las posiciones deseadas. La diferencia básica es que en el Lugar Geométrico de las Raíces se sitúan los polos en lazo cerrado dominantes, mientras que el diseño por Asignación de Polos se colocan todos los polos de lazo cerrado en las posiciones que se deseen. Este diseño ubica los polos de lazo cerrado de modo que las condiciones transitorias sean llevadas a cero de forma preestablecida.
Sin embargo hay un costo asociado con colocar todos los polos en lazo cerrado, porque para realizarlo se requiere tener buenas medidas de todas las variables de estado.
Existe un requisito por parte del sistema para poder realizar la asignación de polos en forma arbitraria, esta exigencia es que el sistema sea de estado completamente controlable.
Pasos para determinar la matriz K utilizando el método de sustitución directa:
1. Verificar que el sistema sea de estado completamente controlable.
2. Determinar el polinomio del sistema deseado.
3. Determinar el polinomio característico de la matriz A-BK.
4. Igualar los polinomios (sistema deseado y el polinomio característico de A-BK).
5. Determinar los valores de la matriz K.
6. Establecer la ley de control u=-Kx.
Página 3 de 8
Desarrollo del Programa
function asigpoloop= menu ('eliga la opción que desea','sistema nuevo','abrir un archivo');if op==1 a=input('Ingrese la matriz a'); b=input('Ingrese el vector b'); z=size(a); z=z(1); for i=1:1:z if i==1 c(i)=1; else c(i)=0; end end polos=input('Ingrese los polos deseados'); salvar=menu('desea guardar el ejemplo realizado?', 'si', 'no');if salvar ==1preal=real(polos);pima=imag(polos);T=(length(a))*(ones([length(a) 1]));M=[a b' c' preal' pima' T];archivo=input('ingrese el nombre del archivo (entre comillas simple)');archivo=[archivo,'.txt'];ident=fopen(archivo,'w');fwrite(ident, M, 'double');fclose(ident);elseend else archivo=input('Ingrese el nombre del archivo entre comillas'); archivo=[archivo,'.txt']; ident=fopen(archivo,'r');AR=fread(ident,'*double');tamar=size(AR);Y=tamar(1);X=AR(Y);fclose(ident);ident=fopen(archivo,'r');a=fread(ident, [X,X],'*double');b=fread(ident, [1,X],'*double');c=fread(ident, [1,X],'*double');preal=fread(ident, [1,X],'*double');
Página 4 de 8
pima=fread(ident, [1,X],'*double');polos=preal+pima*1i;fclose(ident); endtam=size(a);while(tam(1,1)~=tam(1,2)) disp('El tamaño de la matriz es incorrecto') a=input('Escriba una matriz de tamaño nxn:'); tam=size(matrizA);endlonga=length(a);longb=length(b);longc=length(c);while(longa~=longb) disp('El tamaño del vector b es incorrecto') b=input('Escriba una vector de tamaño nx1:'); longb=length(b);endwhile(longc~=longb) disp('El tamaño del vector c es incorrecto') b=input('Escriba una vector de tamaño nx1:'); longb=length(b);endwhile(length(polos)~=longa) disp('El número de polos escritos es incorrecto') polos=input('Escriba el número correcto de polos:');endb=b';d=0;CO=ctrb(a,b);gradoco=rank(CO);gradoa=rank(a); if gradoco==gradoa k=place(a,b,polos); SISA=ss(a,b,c,d); figure(1); anueva=a-b*k;SISB=ss(anueva, b, c, d);g_dc=dcgain(a, b, c, d );g_dc_n=dcgain(anueva, b, c, d );ganancia=g_dc/g_dc_n;cnueva=ganancia*c;SISC=ss(anueva,b,cnueva,d);step(SISA,'r:',SISB,'b--',SISC,'g')
Página 5 de 8
title('comparación de la respuesta al impulso del sistema');legend('sistema original', 'sistema con los polos asignados', 'sistema con la ganacia
ajustada');else SISA=ss(a,b,c,d); step(SISA); title('respuesta al impulso del sistema'); display('no es controlable el sistema')enddisplay(k)
Página 6 de 8
Ejemplo de segundo orden.
a= [-1, 0; -1, -1]
b= [1, 1]
c= [1, 0]
polos= [-2. + 0.1i, -2 - 0.1i]
Matriz definida positivamente
La matriz de Lyapunov es estable
k = 3.0100 -1.0100
P = 0.5000 -0.2500
-0.2500 0.7500
Página 7 de 8
Conclusión:
En conclusión este método puede ser utilizado para identificar si un sistema es controlable o no, para realizar la asignación de polos de manera arbitraria y visualizar si la respuesta del sistema es la deseada. Este método es muy útil para la el diseño de sistemas de control donde se tiene el nivel de información de las variables de estado.
Bibliografía:
OGATA, KATSUHIKO. Ingeniería de Control Moderna. 3ª edición. Prentice-Hall Hispanoamericana, S.A. 1998.
KUO, BENJAMIN. Sistemas de control Automático. 7ª edición. Prentice-Hall Hispanoamericana, S.A. 1996.
OGATA, KATSUHIKO. Problemas de Ingeniería de Control utilizando MATLAB. Prentice-Hall Iberia 1999.
Página 8 de 8