Está en la página 1de 27

TAREA 5-CONSULTA SISTEMA DE ESPACIO DE ESTADOS

Por:

Sebastián Gaviria Agudelo


Edny Jhoan Restrepo Madrid
Santiago González Suaza

Sistemas automáticos de control

Jorge Alberto Londoño

Instituto Tecnológico Metropolitano

Medellín-Antioquia

2021
Speed motor
PID
A partir del problema principal, las ecuaciones dinámicas en el dominio de Laplace y la función de
transferencia de bucle abierto del motor de CC son las siguientes.

La estructura del sistema de control tiene la forma que se muestra en la figura siguiente.

Para una referencia de paso de 1 rad / seg, los criterios de diseño son los siguientes.

-Tiempo de estabilización inferior a 2 segundos.

-Sobrepasar menos del 5%

-Error de estado estable inferior al 1%


Ahora diseñemos un controlador usando los métodos presentados en la página Introducción:
Diseño de controlador PID. Cree un nuevo archivo-m y escriba los siguientes comandos.

Primero intentemos emplear un controlador proporcional con una ganancia de 100, es decir
C (s) = 100. Para determinar la función de transferencia de lazo cerrado, usamos el comando de
retroalimentación. Agregue el siguiente código al final de su archivo-m.

Ahora examinemos la respuesta al escalón de circuito cerrado. Agregue los siguientes comandos al
final de su archivo-m y ejecútelo en la ventana de comandos. Debe generar el gráfico. Puede ver
algunas de las características del sistema haciendo clic con el botón derecho en la figura y
seleccionando Características en el menú resultante. En la siguiente figura, se han agregado
anotaciones específicamente para el tiempo de establecimiento, la respuesta máxima y el estado
estable.
En el gráfico anterior, vemos que tanto el error de estado estable como el sobreimpulso son
demasiado grandes.

Recuerde de la página Introducción: Diseño del controlador PID que el aumento de la ganancia
proporcional K_p reducirá el error de estado estable. Sin embargo, recuerde también que
aumentar K_p a menudo da como resultado un mayor sobre impulsó, por lo tanto, parece que no
todos los requisitos de diseño se pueden cumplir con un controlador proporcional simple.

Este hecho se puede verificar experimentando con diferentes valores de K_p. Específicamente,
puede emplear Control System Designer ingresando el comando controlSystemDesigner (P_motor)
o yendo a la pestaña APPS y haciendo clic en el ícono de la aplicación en Control System Design
and Analysis y luego abriendo un gráfico de respuesta de paso de ciclo cerrado desde el New Plot
pestaña de la ventana del Diseñador del sistema de control como se muestra a continuación.

Después de eso, puede hacer clic con el botón derecho en el gráfico y seleccionar Editar
compensador. A continuación, puede variar la ganancia de control en la ventana del editor del
compensador y ver el efecto resultante en la respuesta al paso de bucle cerrado como se muestra
a continuación.
Un poco de experimentación verifica lo que anticipamos, un controlador proporcional es
insuficiente para cumplir con los requisitos de diseño dados; Se deben agregar términos derivados
y / o integrales al controlador.

Diseño del controlador PID

agregar un término integral eliminará el error de estado estable a una referencia de paso y un
término derivado a menudo reducirá el sobreimpulso. Probemos con un controlador PID con K_i
y K_d pequeños. Modifique su archivo-m para que las líneas que definen su control sean las
siguientes. La ejecución de este nuevo archivo-m le proporciona el gráfico que se muestra a
continuación.
La inspección de lo anterior indica que el error de estado estable va de hecho a cero para una
entrada escalonada. Sin embargo, el tiempo que se tarda en alcanzar el estado estable es mucho
mayor que el tiempo de estabilización requerido de 2 segundos.

Afinando las ganancias


En este caso, la cola larga en el gráfico de respuesta al escalón se debe al hecho de que la ganancia
integral es pequeña y, por lo tanto, se necesita mucho tiempo para que la acción integral se
acumule y elimine el error de estado estable. Este proceso se puede acelerar aumentando el valor
de K_i . Regrese a su archivo-m y cambie K_i a 200 como se muestra a continuación. Vuelva a
ejecutar el archivo y debería obtener el gráfico que se muestra a continuación. Nuevamente, las
anotaciones se agregan haciendo clic con el botón derecho en la figura y seleccionando
Características en el menú resultante.
Como era de esperar, el error de estado estable ahora se elimina mucho más rápido que antes. Sin
embargo, los grandes K_i han aumentado considerablemente el sobreimpulso. Aumentemos K_d
en un intento de reducir el sobreimpulso. Vuelva al archivo-m y cambie K_d a 10 como se muestra
a continuación. Vuelva a ejecutar su archivo-m y se debería generar el gráfico que se muestra a
continuación.
Como esperábamos, el aumento de K_d redujo el sobreimpulso resultante. Ahora sabemos que si
usamos un controlador PID con K_p = 100, K_i = 200 y K_d = 10, se cumplirán todos nuestros
requisitos de diseño.
State space
Del problema principal, las ecuaciones dinámicas en forma de espacio de estados se dan a
continuación.

Para la configuración del problema original y la derivación de las ecuaciones anteriores, consulte la
página Velocidad del motor de CC: Modelado del sistema. Estas ecuaciones de espacio de estado
tienen la forma estándar que se muestra a continuación, donde el vector de estado

Para una referencia de paso de 1 rad / seg, los criterios de diseño son los siguientes.

-Tiempo de estabilización inferior a 2 segundos.

-Sobrepasar menos del 5%

-Error de etapa estable inferior al 1%

Ahora diseñemos un controlador usando los métodos presentados en la página Introducción:


Métodos de espacio de estado para el diseño de controladores. Cree un nuevo archivo-m y escriba
los siguientes comandos.

J = 0.01;

b = 0.1;

K = 0.01;

R = 1;

L = 0.5;
A = [-b/J K/J

-K/L -R/L];

B = [0

1/L];

C = [1 0];

D = 0;

sys = ss(A,B,C,D);

Diseño del controlador de retroalimentación de estado completo

Dado que ambas variables de estado en nuestro problema son fáciles de medir (simplemente
agregue un amperímetro para la corriente y un tacómetro para la velocidad), podemos diseñar un
controlador de retroalimentación de estado completo para el sistema sin preocuparnos por tener
que agregar un observador. La ley de control para un sistema de retroalimentación de estado
completo tiene la forma u = r - Kc x y el esquema asociado se muestra a continuación.

Recuerde que el polinomio característico de este sistema de circuito cerrado es el determinante


de sI - (A - BKc) donde s es la variable de Laplace. Dado que las matrices A y BKc son matrices 2x2,
debe haber 2 polos para el sistema. Este hecho se puede verificar con el orden de comandos de
MATLAB. Si el sistema dado es controlable, entonces al diseñar un controlador de
retroalimentación de estado completo podemos mover estos dos polos a cualquier lugar que
queramos. Si el sistema dado es controlable o no se puede determinar verificando el rango de la
matriz de controlabilidad [B AB A^2 B ….] . El comando ctrb de MATLAB construye la matriz de
controlabilidad dadas las matrices A y B. Además, el rango de mando determina el rango de una
matriz dada. Los siguientes comandos ejecutados en la línea de comandos verificarán el orden del
sistema y si el sistema es controlable o no.

sys_order = order(sys)

sys_rank = rank(ctrb(A,B))

Por lo anterior, sabemos que nuestro sistema es controlable ya que la matriz de controlabilidad es
de rango completo. Primero colocaremos los polos en -5 + i y -5-i (tenga en cuenta que esto
corresponde a un C = 0.98 que da cerca del 0% de sobreimpulso y un sigma = 5 que proporciona
un asentamiento de 0.8 segundos tiempo). Una vez que hemos determinado las ubicaciones de los
polos que deseamos, podemos usar los comandos de MATLAB place o acker para determinar la
matriz de ganancia del controlador, Kc , para lograr estos polos. Usaremos el comando place ya
que numéricamente está mejor condicionado que acker. Sin embargo, si quisiéramos colocar un
poste con multiplicidad mayor que el rango de la matriz B, entonces tendríamos que usar el
comando acker. Agregue el siguiente código al final de su archivo-m. La ejecución en la ventana de
comandos generará la salida de matriz de ganancia de retroalimentación a continuación.

p1 = -5 + 1i;

p2 = -5 - 1i;

Kc = place(A,B,[p1 p2])

Kc =

12.9900 -1.0000

Volviendo a las ecuaciones del espacio de estados en la parte superior de la página, vemos que al
sustituir la ley de retroalimentación de estados u = r - Kcx por u se obtiene la siguiente expresión.
Luego podemos ver la respuesta de ciclo cerrado simplemente agregando las siguientes líneas al
final de su archivo-m. Ejecutar su archivo-m en la ventana de comandos le dará el gráfico que se
muestra a continuación.

t = 0:0.01:3;

sys_cl = ss(A-B*Kc,B,C,D);

step(sys_cl,t)

grid

title('Step Response with State-Feedback Controller')


Agregar un compensador
De esta gráfica vemos que el error de estado estable es demasiado grande. Un enfoque para
eliminar el error de estado estable es simplemente escalar la entrada para que la salida, a su vez,
se escale al nivel deseado. Esto es un poco desafiante en nuestro ejemplo porque tenemos dos
estados a considerar. Por lo tanto, necesitamos calcular cuáles deberían ser los valores de estado
estable de ambos estados, multiplicarlos por la ganancia elegida Kc y usar el resultado como
nuestra "referencia" para calcular la entrada u. Esto se puede hacer en un paso agregando un pre
compensador de ganancia constante N después de la referencia como se muestra en el siguiente
esquema.

Podemos encontrar este factor N empleando la función definida por el usuario rscale.m como se
muestra a continuación.

Nbar = rscale(sys,Kc)

Nbar =

13.0000

Ahora puede trazar la respuesta al paso agregando las líneas de código anteriores y siguientes a su
archivo-m y volviendo a ejecutarlo en la línea de comando.

t = 0:0.01:10;

step(sys_cl*Nbar,t)

grid

title('Step Response with State-Feedback Controller and Precompensator')


Esta vez, el error de estado estable es mucho menor al 1% y también se han cumplido todos los
demás criterios de diseño.
Tenga en cuenta que el precompensador N empleado anteriormente se calcula en función del
modelo de la planta y, además, el precompensador se encuentra fuera del circuito de
retroalimentación. Por lo tanto, si hay errores en el modelo (o perturbaciones desconocidas), el
precompensador no los corregirá y habrá un error de estado estable. Tal vez recuerde que la
adición de control integral también se puede utilizar para eliminar el error de estado estable,
incluso en presencia de incertidumbre del modelo y perturbaciones escalonadas. Para obtener un
ejemplo de cómo implementar el control integral en la configuración del espacio de estado,
consulte el ejemplo de Posición del motor de CC: Métodos de espacio de estado para el diseño del
controlador. La compensación con el uso del control integral es que el error debe desarrollarse
primero antes de que pueda corregirse, por lo tanto, el sistema puede tardar en responder. El
precompensador, por otro lado, puede anticipar la compensación de estado estacionario
utilizando el conocimiento del modelo de la planta. Una técnica útil es combinar el
precompensador con el control integral para aprovechar las ventajas de cada enfoque.
Simscape
Configuración física
En esta sección, mostramos cómo construir el modelo de motor de CC utilizando los
bloques de modelado físico de la extensión de Simscape a Simulink. Los bloques de la
biblioteca de Simscape representan componentes físicos reales; por lo tanto, se pueden
construir modelos complejos de múltiples dominios sin la necesidad de construir
ecuaciones matemáticas a partir de principios físicos como se hizo anteriormente
aplicando las leyes de Newton y las leyes de Kirchhoff para generar el modelo
implementado en DC Motor Speed: Simulink Modeling.

La siguiente figura muestra un esquema del sistema de motor de CC que modelaremos en


esta página.

Los parámetros del sistema son los siguientes:


(R) Resistencia del inducido 1 ohmios
(L) Inductancia de la armadura 0.5 H
(K) Constante de par / constante de fem inversa 0,01 Nm / A o Vs / rad
(J) Inercia del rotor 0,01 kgm ^ 2
(b) Amortiguación del rotor 0,1 Nms / rad
Abra un nuevo modelo de Simscape escribiendo ssc_new en la ventana de comandos de
MATLAB. Se abrirá un nuevo modelo, que se muestra a continuación, con algunos bloques
de uso común que ya están en el modelo. Los bloques PS-Simulink y Simulink-PS definen el
límite entre los modelos de entrada / salida de Simulink donde los bloques se evalúan
secuencialmente y los modelos de Simscape donde las ecuaciones se evalúan
simultáneamente.

Crea el modelo de motor


Para crear el modelo de motor, se deben agregar varios bloques al modelo.
Consejos para agregar bloques:
Use Quick Insert para agregar los bloques. Haga clic en el diagrama y escriba el nombre del
bloque (use las letras en negrita a continuación). Aparecerá una lista de bloques y podrá
seleccionar el bloque que desee de la lista.
Después de ingresar el bloque, aparecerá un mensaje para que ingrese el parámetro.
Ingrese los nombres de las variables como se muestra a continuación.
Para rotar un bloque o voltear bloques, haga clic con el botón derecho en el bloque y
seleccione la opción deseada en el menú Rotar y voltear.
Para mostrar el parámetro debajo del nombre del bloque, consulte Establecer
propiedades de anotación de bloque en la documentación de Simulink.
Agregue los siguientes bloques:
* Bloque de motor DC
* Bloque de sensor de corriente
* Bloque de fuente de voltaje controlado
* Bloque de referencia eléctrica
* Bloque de sensor de movimiento rotacional ideal
* Bloque de referencia de rotación mecánica
* Paso
El bloque de motor de CC modela las características eléctricas y mecánicas del motor.

Haga doble clic en el bloque Motor de CC, asegúrese de que la parametrización del
modelo esté configurada en "Por parámetros de circuito equivalentes"
Establezca la resistencia del inducido en "1 ohmio"
Establezca la inductancia de la armadura en "0.5 H"
Establezca Definir back-emf o torque constante en "Specify back-emf constant"
Establezca la constante Back-emf en "0.01 V / (rad / s)"
En la pestaña Mecánica, establezca la inercia del rotor en "0,01 kg * m ^ 2" y la
amortiguación del rotor en "0,1 N * m / (rad / s)".
Tenga en cuenta que dado que la constante de par del motor y la constante de fem
inversa son iguales si las unidades son consistentes, solo necesitamos definir una de las
dos.

Necesitamos medir la posición, la velocidad y la corriente consumida por el motor.

Conecte el puerto R del sensor de movimiento rotacional ideal al puerto R del motor de CC
Conecte el puerto C del motor de CC a la referencia de rotación mecánica
Conecte el puerto C del sensor de movimiento de rotación ideal a la referencia de rotación
mecánica
Conecte el puerto - del sensor de corriente al puerto + del motor de CC
Conecte el puerto + del sensor de corriente al puerto + de la fuente de voltaje controlado
Conecte el puerto - de la fuente de voltaje controlado a la referencia eléctrica
Conecte el puerto - del motor de CC a la referencia eléctrica
A continuación, tenemos que conectar las señales de entrada y las medidas a los bloques
de entrada y salida. Esto nos permitirá controlar el motor usando Simulink.

Conecte el bloque Simulink-PS a la entrada de fuente de voltaje controlado


Haga doble clic en esa conexión de señal y establezca el nombre de la señal en "Voltaje".
Haga doble clic en el bloque Simulink-PS y configure las unidades de señal de entrada en
"V"
Conecte el bloque Step al bloque Simulink-PS
Haga doble clic en el bloque de pasos y establezca el tiempo del paso en "0".
Conecte el puerto W del bloque del sensor de movimiento rotacional ideal al bloque PS-
Simulink (ya en el diagrama, conectado a un osciloscopio)
Haga doble clic en la señal conectada al osciloscopio y establezca el nombre de la señal en
"Velocidad".
Haga dos copias adicionales del bloque PS-Simulink (necesita 3 en total)
Haga doble clic en el bloque PS-Simulink original y establezca las unidades de señal de
salida en "rad / s".
Conecte el sensor de corriente a un bloque PS-Simulink, luego haga doble clic en ese
bloque PS-Simulink y configure las unidades de señal de salida en "A"
Conecte el puerto A del bloque del sensor de movimiento rotacional ideal a un bloque PS-
Simulink, luego haga doble clic en ese bloque PS-Simulink y configure las unidades de
señal de salida en "rad"
Copie y pegue el bloque de alcance
Conecte las salidas PS-Simulink para las señales de corriente y velocidad al osciloscopio y
nombre las señales "Corriente" y "Posición".
El bloque de configuración de Solver define cómo se manejan las ecuaciones de una red
Simscape. Conéctelo a cualquier conexión eléctrica. No necesitamos modificar los
parámetros; utilizaremos los valores predeterminados.
Ejecutar la simulación (CTRL-T o presionar el botón de ejecución de la flecha verde)
producirá el siguiente gráfico
Crea un subsistema
Ahora colocaremos el motor en un subsistema.

Haga clic una vez en el diagrama (pero no en un bloque) y presione CTRL-A para
seleccionar todos los bloques
Mantenga presionada la tecla Shift y haga clic en el bloque de paso y el alcance de la señal
de velocidad para deseleccionar esos bloques
Presione CTRL-G para crear un subsistema
Cambiar el nombre del subsistema "Subsistema de modelo de motor"

Configurar el controlador: compensación de retraso


Para generar la respuesta de paso de lazo cerrado con el modelo actual, agregaremos un
compensador de retardo en serie con el subsistema del motor y retroalimentaremos la
velocidad del motor para compararlo con una referencia deseada. El diseño del
compensador se detalla en la página DC Motor Speed: Root Locus Controller Design.
Inserte los siguientes bloques:
Restar bloque
Transferir bloque Fcn
Realice los siguientes ajustes para modelar el compensador de retraso:

Haga doble clic en el bloque de función de transferencia


Establezca los coeficientes del numerador en "[44 44]"
Establezca los coeficientes del denominador en "[1 0.01]"
Cambiar el nombre de este bloque a "Compensador de retraso"
Realice las siguientes conexiones para cerrar el bucle:

Eliminar la conexión entre el bloque de pasos y la entrada del subsistema de modelo de


motor
Conecte el bloque de pasos al puerto + del bloque de restar
Conecte la salida Restar a la entrada del Compensador de retraso
Conecte la salida del compensador de retardo al subsistema de modelo de motor
Conecte la salida de velocidad del subsistema de modelo de motor al puerto - del bloque
de sustracción
Conecte la salida Step al osciloscopio
Su modelo completo ahora debería tener el siguiente formulario.

Luego ejecute la simulación (presione CTRL-T o presione el botón de ejecución de flecha


verde). Al examinar el gráfico generado, que se muestra a continuación, esta respuesta de
paso coincide con el rendimiento de circuito cerrado observado en la página de Diseño de
controlador de lugar geométrico de velocidad del motor de CC, donde se diseñó
originalmente el compensador de retardo. Además, los resultados de simulación logrados
con este modelo de Simscape también concuerdan con el modelo de Simulink basado en
la física implementado en la página DC Motor Speed: Simulink Controller Design.
Configurar controlador: compensación de plomo
El compensador de retraso que hemos diseñado cumple con todos los requisitos de diseño
establecidos. En lugar de un compensador de retraso, también podríamos haber diseñado
un compensador de adelanto para cumplir con los requisitos dados. Más específicamente,
podríamos haber diseñado un compensador de adelanto para lograr una ganancia de CC y
un margen de fase similares a los logrados por el compensador de retraso, pero con una
frecuencia de cruce de ganancia mayor. Puede consultar la página Velocidad del motor de
CC: métodos de dominio de frecuencia para el diseño del controlador para obtener más
detalles sobre el diseño del compensador de retardo, pero el hecho de que las ganancias
de CC y los márgenes de fase sean similares indica que las respuestas bajo el control de
retardo y adelanto tienen cantidades similares de error en estado estacionario y
cantidades similares de sobreimpulso. La diferencia en la respuesta vendría en que la
frecuencia de cruce de ganancia más grande proporcionada por el compensador de
adelanto haría que la respuesta del sistema fuera más rápida que con el compensador de
retraso. Usaremos específicamente el compensador de adelanto que se usó en la página
DC Motor Speed: Simulink Controller Design.
Para ver el efecto preciso del compensador de adelanto en comparación con nuestro
compensador de retraso, realice los siguientes cambios en el modelo
Haga clic y arrastre para seleccionar los bloques del subsistema Restar, Compensador de
retardo y Modelo de motor, y todas las conexiones entre ellos.
Haga clic derecho en uno de los bloques seleccionados y arrastre para copiar estos
elementos
Conecte la entrada Step al puerto + del nuevo bloque Restar
Conecte la salida de velocidad del subsistema de modelo de motor 1 al osciloscopio
A continuación, modifique el compensador de la siguiente manera:

Haga doble clic en el bloque de función de transferencia copiado


Establezca los coeficientes del numerador en "[160000 5.6e6]"
Establecer coeficientes de denominador en "[1 1035]"
Su modelo debería aparecer como se muestra en la siguiente figura:

La ejecución de la simulación produce los siguientes gráficos. A partir de la inspección,


verá que ambas respuestas tienen un error de estado estable que se acerca a cero. Al
comparar los dos gráficos, la respuesta que pertenece al sistema de compensación de
adelanto tiene un tiempo de asentamiento mucho menor y un sobreimpulso ligeramente
mayor, pero similar, en comparación con la respuesta azul producida por el sistema de
compensación de retraso.

Compensación de ventaja frente a compensación de retraso


Generalmente se prefiere que un sistema responda rápidamente a un comando. Entonces,
¿por qué preferiríamos utilizar el compensador de retardo, aunque sea más lento que el
compensador de adelanto? La ventaja del compensador de retardo en este caso es que, al
responder más lentamente, requiere menos esfuerzo de control que el compensador de
adelanto. Menos esfuerzo de control significa que se consume menos energía y que los
diversos componentes se pueden dimensionar más pequeños, ya que no tienen que
suministrar tanta energía o soportar los voltajes y corrientes más altos requeridos por el
compensador de plomo.

También podría gustarte