laboratorio n3 de control

12
Diseño por Lugar de Raíces para el Control Digital de Posición de un Motor de CC 1. OBJETIVOS: Practicar las técnicas de diseño de un controlador digital. Utilización del lugar geométrico de raíces discreto como herramienta matemática básica para el diseño de un motor de CC Aprender los comandos fundamentales de MATLAB par control digital. En esta versión digital del control de un motor de CC, el controlador será diseñado por un método del Lugar de Raíces. 2. INTRODUCCION: En este laboratorio se desarrollan los principales conceptos de control digital. En concreto se puede mostrar cómo puede hacerse uso de la información proporcionada por el lugar de las raíces para poder determinar cuál será la respuesta la respuesta de un sistema en bucle cerrado a partir de la localización de polos y ceros del sistema en bucle abierto. Para familiarizarse con el diseño utilizando el lugar de las raíces se usan los comandos básicos que dispone MATLAB para este diseño. El lugar de las raíces es el lugar de los puntos correspondientes a las posibles raíces de la ecuación característica que pueden encontrarse para los diferentes valores de la ganancia K (desde cero al infinito). La ecuación característica con una realimentación unitaria es la siguiente:

Upload: jorge-garcia

Post on 28-Dec-2015

22 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Laboratorio N3 de Control

Diseño por Lugar de Raíces para el Control Digital de Posición de un Motor de

CC

1. OBJETIVOS:

Practicar las técnicas de diseño de un controlador digital.

Utilización del lugar geométrico de raíces discreto como herramienta matemática básica para el diseño de un motor de CC

Aprender los comandos fundamentales de MATLAB par control digital.

En esta versión digital del control de un motor de CC, el controlador será diseñado por un método del Lugar de Raíces.

2. INTRODUCCION:

En este laboratorio se desarrollan los principales conceptos de control digital. En concreto se puede mostrar cómo puede hacerse uso de la información proporcionada por el lugar de las raíces para poder determinar cuál será la respuesta la respuesta de un sistema en bucle cerrado a partir de la localización de polos y ceros del sistema en bucle abierto. Para familiarizarse con el diseño utilizando el lugar de las raíces se usan los comandos básicos que dispone MATLAB para este diseño.

El lugar de las raíces es el lugar de los puntos correspondientes a las posibles raíces de la ecuación característica que pueden encontrarse para los diferentes valores de la ganancia K (desde cero al infinito). La ecuación característica con una realimentación unitaria es la siguiente:

Donde Gc (z) es el regulador implementado en el controlador digital y G (z) es la función de transferencia de la planta en el plano Z.

Los mecanismos de dibujo del lugar de las raíces son exactamente los mismos en el plano Z que en el plano s. Para el lugar de las raíces continuo se utiliza en MATLAB la función sgrid para encontrar la región del lugar de las raíces que obtiene una ganancia aceptable. Para el lugar de las raíces discreto se utilizara la función zgrid que tiene las mismas características

Page 2: Laboratorio N3 de Control

que sgrid. El comando zgrid dibuja las líneas de constante coeficiente de amortiguamiento y frecuencia natural.

Se va a diseñar un controlador utilizando el lugar de las raíces. Se puede obtener un modelo digital de un motor de corriente continua realizando la conversión a partir del modelo analógico de dicho motor como se describirá a continuación. La función de transferencia en bucle abierto para control en posición de un motor de corriente continua es la que muestra a continuación:

La función de transferencia de un Motor de CC en el modelo analógico es:

3. DISENO DEL PROBLEMA:

Despejando resulta:

Llevando a la transformada s, se obtiene pata Tp=0.

Y para V=0.

Page 3: Laboratorio N3 de Control

Los datos necesarios son los siguientes:

*resistencia eléctrica (R) = 4 ohm*inductancia eléctrica (L) = 2.75E-6 H*constante de fuerza electromotriz (K=Ke=Kt) = 0.0274 Nm/Amp*momento de inercia del rotor (J) = 3.2284E-6 kg*m^2/s^2*coeficiente de amortiguamiento del sistema mecánico (b) = 3.5077E-6 Nms*entrada (V): Fuente de Tensión*Se asume que el rotor y el eje son rígidos

Los requerimientos de diseño son Tiempo de establecimiento: Menor que 0.04 segundos Sobrepico: Menor que el 16% error de estado estacionario: 0 con un escalón de entrada de perturbación

Sabemos por teoría que:

Donde la función de transferencia es la siguiente:

Page 4: Laboratorio N3 de Control

Conversión de Continuo a Discreto.

El primer paso en el diseño de un sistema de tiempo discreto es convertir una función de transferencia continua a una función de transferencia discreta. Puede usarse Matlab para convertir la función de transferencia anterior a función de transferencia discreta usando el comando c2dm. El comando c2dm requiere cuatro argumentos: el polinomio numerador (num), el polinomio denominador (den), un tiempo de muestreo (T) y el tipo de mantenedor. En este ejemplo usaremos el mantenedor de orden cero (zoh). Refiérase a la página Tutoriales de Control Digital para más información.

Creemos un nuevo archivo-m y agreguemos el siguiente código de Matlab:

Primero Hallamos la Función de transferencia en S:

R=4;L=2.75*10^-6;K=0.0274;J=3.2284*10^-6;B=3.5077*10^-6;sys=tf([K],[J*L,B*L+R*J,R*B+K^2,0])

Transfer function: 0.0274---------------------------------------------8.878e-012 s^3 + 1.291e-005 s^2 + 0.0007648 s

-100

-50

0

50

Magnitude (

dB

)

100

101

102

103

104

-180

-135

-90

Phase (

deg)

Bode Diagram

Frequency (rad/sec)

Según el teorema de Nysquist:

Donde y

Donde fs: es la frecuencia de muestreof: la frecuencia de la señal a muestrear más alta.

El periodo de muestreo será: Ts=0.001segLuego

Page 5: Laboratorio N3 de Control

R=4;L=2.75E-6;K=0.0274;J=3.2284E-6;b=3.5077E-6;

num = K;den = [(J*L) (J*R)+(L*b) (R*b)+(K^2) 0];

T = 0.001;[numd,dend] = c2dm(num,den,T,'zoh')

Matlab debería devolver la siguiente:

num = 0 0.0010 0.0010 0.0000

den = 1.0000 -1.9425 0.9425 0.0000

Como vió en resultados previos, tanto el numerador cuanto el denominador de la función de transferencia discreta tienen una raíz extra en z = 0. Además, tenemos que librarnos del cero principal en el numerador. Para hacerlo agregue el siguiente código para cancelar estas raíces adicionales y así evitar problemas numéricos en Matlab. De otro modo considerará numerador y denominador como si fueran polinomios de cuarto orden.

numd = numd(2:3);dend = dend(1:3);

Por lo tanto, la función de transferencia de tiempo discreto de la salida posición a la tensión de entrada es:

Nos gustará ver cómo se ve la respuesta del sistema a lazo cerrado cuando no se agrega ningún controlador. Primero, tenemos que cerrar el lazo de la función de transferencia usando el comando cloop. Luego de cerrar el lazo, observemos cómo evoluciona la respuesta tipo escalera a lazo cerrado usando los comandos dstep y stairs. El comando dstep proveerá el vector de señales discretas y el comando stairs conectará estas señales discretas (pinche aquí para más información). Agregue el siguiente código de Matlab al final del archivo-m anterior y ejecútelo nuevamente.

[numd_cl,dend_cl] = cloop(numd,dend);[x1] = dstep(numd_cl,dend_cl,501);t=0:0.001:0.5;stairs(t,x1)xlabel('Tiempo (segundos)')ylabel('Posición (rad)')title('Respuesta tipo escalera:Original')

Debería verse la figura siguiente:

Page 6: Laboratorio N3 de Control

Diseño por Lugar de Raíces.

La idea principal del diseño por lugar de raíces es obtener la respuesta a lazo cerrado a partir del diagrama del lugar de raíces a lazo abierto. Añadiendo polos y ceros al sistema original, el lugar de raíces se modificará lo cual lleva a una nueva respuesta a lazo cerrado. Primero observemos el lugar de raíces para el sistema superpuesto con un círculo unitario. En su archivo-m, Agregue los siguientes comandos y ejecútelo nuevamente. Debería obtenerse el gráfico de lugar de raíces como se muestra abajo.

rlocus(numd,dend)title('Lugar de Raíces del Sistema Original ')zgrid(0,0)

Para tener error de estado estacionario cero a partir de la respuesta a lazo cerrado, tenemos de agregar un control integral. Recordemos que el control integral en tiempo continuo es 1/s. Si usamos la aproximación por diferencias hacia atrás para el mapeo del plano s al plano z descrito por s = 1/(z-1), quedará adicionado un polo en 1 en el diagrama del lugar de raíces. Luego de agregar el extra polo en 1, el root locus tendrá tres polos cerca de 1, por lo tanto el lugar de raíces se moverá al semiplano derecho. La respuesta a lazo cerrado será más inestable. Por lo que debemos agregar un cero cerca de 1 y dentro del círculo unitario para cancelar con un polo y así forzar el lugar de raíces hacia adentro. Agregaremos un polo en z = 0.95. En general, debemos agregar al menos tantos polos como ceros para que el controlador sea causal. Ahora agregue los siguientes comandos Matlab en su archivo-m.

numi = [1 -0.95];deni = [1 -1];

Page 7: Laboratorio N3 de Control

numad = conv(numd,numi);denad = conv(dend,deni);

Recordemos de la página Tutorial de Control Digital , el comando zgrid debería usarse para hallar la región deseada, la cual satisface el requerimiento de diseño, en el diagrama del lugar de raíces discreto. El comando zgrid requiere dos argumentos: la frecuencia natural (Wn) y el coeficiente de amortiguamiento (zeta). Del requerimiento de diseño, el tiempo de establecimiento es menor que 0.04 segundos y el sobrepico porcentual es menor que el 16%. Conocemos las fórmulas para hallar el coeficiente de amortiguamiento y la frecuencia

natural:

Wn=4/(e*Ts)

Donde:OS: el sobrepico porcentualTs: el tiempo de establecimiento

Tomando: Mp=16% y Ts=0.04s

El coeficiente de amortiguamiento requerido es 0.5 y la frecuencia natural es 200 rad/seg., pero el comando zgrid requiere una frecuencia natural adimensional. Por lo tanto es Wn = 200*T = 0.2 rad/muestra. Agregue el siguiente código de Matlab al final de su archivo-m y ejecútelo nuevamente.

Figura: Diagrama de bloques del sistema de control sin perturbación.

Entonces los polos del sistema serán:

En Matlab.polos=[-100+i*173.21,-100-i*173.21];>> polosz=exp(0.001*polos)

polosz =

0.7701 + 0.2780i 0.7701 - 0.2780i

rlocus(numad,denad);zgrid(0.5,0.2)title ('Lugar de Raíces del sistema con control integral')

Debería obtenerse la figura siguiente:

+-

Gc(Z) Gp(z)V(z) Θ(z)

Page 8: Laboratorio N3 de Control

Del diagrama del lugar de raíces de arriba, podemos ver que el sistema es inestable con cualquier ganancia porque el lugar de raíces está fuera del círculo unitario. Más aún, el lugar de raíces debería estar en la región donde la línea del coeficiente de amortiguamiento y la frecuencia natural se cruzan para satisfacer los requerimientos de diseño. Por lo que primero tenemos que cancelar el cero en aproximadamente -0.98, para forzar el lugar de raíces, como este cero agregará sobrepico a la respuesta al escalón. Entonces tenemos que agregar un polo y dos ceros más cercanos a los polos deseados. Luego de algo de prueba y error para lograr que el lugar de raíces se encuentre en la región deseada, se adiciona un polo más en 0.61 y se adicionan dos ceros en 0.76. Copie el siguiente comando en su archivo-m y ejecútelo nuevamente en la ventana del Matlab.

numc = conv([1 -0.76],[1 -0.76]);denc = conv([1 0.98],[1 -0.61]);

numoc = conv(numad,numc);denoc = conv(denad,denc);rlocus(numoc,denoc);zgrid(0.5,0.2)title('Lugar de Raíces del Sistema Compensado')

El denoc tendrá un polo en 0.61 en lugar de -0.98. Debería obtenerse el siguiente diagrama del lugar de raíces:

Del diagrama del lugar de raíces de arriba, el lugar de raíces se encuentra en la región deseada. Hallemos una ganancia, K, en el diagrama del lugar de raíces usando el comando rlocfind y obtengamos la respuesta tipo escalera con la ganancia seleccionada. Ingrese los siguientes comandos al final de su archivo-m y ejecútelo nuevamente.

K = rlocfind(numoc,denoc)[numd_cl,dend_cl] = cloop(K*numoc,denoc);

[x2] = dstep(numd_cl,dend_cl,251);t=0:0.001:0.25;stairs(t,x2)

Page 9: Laboratorio N3 de Control

xlabel('Tiempo (segundos)')ylabel('Position (rad)')title('Respuesta tipo escalera del Sistema Compensado')

En la ventana del Matlab, debería ver el comando que le solicita elegir el punto en el gráfico de lugar de raíces. Debería pinchar en el dibujo como sigue:

La ganancia elegida alrededor de 330, y se graficará la respuesta a lazo cerrado compensada como sigue.

De la respuesta a lazo cerrado de arriba, el tiempo de establecimiento es alrededor de 0.03 segundos lo que satisface el requerimiento, pero el sobrepico porcentual es 22% lo que es muy grande debido a los ceros. Si seleccionamos una ganancia mayor, se satisfacerá los requerimientos. Por otro lado, el problema no será realístico y será necesario un actuador muy grande, puede probarlo tomando una ganancia mayor en el diagrama del lugar de raíces previo, la cual arroja una muy repentina e irreal respuesta al escalón. Por lo que tenemos que mover ambos: un polo y dos ceros un poco más a la derecha para forzar el lugar de raíces un poco más, el nuevo polo se pondrá en 0.7 y los dos ceros deberían estar en 0.85. Regrese y cambie sólo numc y denc como se muestra abajo y ejecútelo nuevamente en la ventana del Matlab.

numc = conv([1 -0.85],[1 -0.85]);denc = conv([1 0.98],[1 -0.7]);

Debería ver el siguiente diagrama del lugar de raíces.

Page 10: Laboratorio N3 de Control

En el nuevo diagrama del lugar de raíces, pincharía en el gráfico para elegir una ganancia nueva como sigue:

La ganancia elegida debería ser de aproximadamente 450, y entonces ploteará la respuesta a lazo cerrado compensada como sigue:

Ahora vemos que el tiempo de establecimiento y el sobrepico porcentual cumplen los requerimientos del sistema. El tiempo de establecimiento es 0.04 segundos y el sobrepico porcentual es alrededor del 10%.

Hechemos entonces un vistazo a la respuesta del sistema a lazo cerrado frente a una perturbación cancelando la ganancia escogida, la función de transferencia integral, y la del controlador, en la función de transferencia a lazo cerrado. Así que agregue el siguiente código y ejecútelo nuevamente.

numcld = conv(numd_cl,conv(denc,deni));dencld = conv(dend_cl,conv(K*numc,numi));

Page 11: Laboratorio N3 de Control

[x4] = dstep(numcld,dencld,251);t=0:0.001:.25;stairs(t,x4)xlabel('Tiempo (segundos)')ylabel('Position (rad)')title('Respuesta tipo escalera del Sistema Compensado')

Matlab debería devolver la figura siguiente:

Podemos ver que la respuesta a la perturbación es pequeña (3.3% de la perturbación) y se sitúa entre el 2% de la perturbación luego de 0.04 segundos y eventualmente se anula.