Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ELECTRÓNICO
Entregable1
A continuación obtenemos la respuesta del motor con ayuda del siguiente código:
Ts=0.005;
sim('Esquema1_a.mdl')
load('referencia1_a.mat');%Cargamos la variable creada al ejecutar
simulink en el espacio de trabajo
mat2c('referencia1_a.mat'); %Pasamos la referencia de .mat a .c
Ejecutamos el programa en Keil con la nueva referencia y guardamos la
respuesta del teraterm como un archivo .txt
salida=read_file('salida1_a.txt'); % convierte los datos obtenidos del
teraterm en la variable salida.mat
Página 1 de 22
La salida nos da la información de la velocidad del motor en rpm.
Retardo: se le aplica un cambio brusco a la señal de referencia y se observa cuánto tarda la respuesta en
seguir a la referencia:
Página 2 de 22
Vemos que el tiempo de retardo es de 0,01s=10ms, como Ts=5ms, tenemos que tiene 2 retardos, es
decir tarda dos muestras en responder. Esto se puede ver en matlab si representamos los datos en
función del nº de muestras en vez de en función del tiempo de ejecución
Este retardo viene producido por el tiempo de procesamiento de ambas placas, del protocolo de
transmisión tcp ip, por la resolución del encoder, pero sobre todo, por las características del propio
motor (inercias, holguras…)
Página 3 de 22
Zona muerta: la zona muerta está marcada por el mínimo nivel de excitación de entrada para el cual, el
valor de la salida no es nulo.
Página 4 de 22
A partir de las siguientes gráficas observamos que la zona muerta es aproximadamente está entre ±20.
Saturación: si la relación es 1:1000, al tener 1V tendríamos 1000 rpm y si tuviéramos 1000V tendríamos
1000000 de rpm (lo que es físicamente imposible, el motor llegaría al límite por saturación en algún
momento), es decir, la saturación es el valor de entrada a partir del cual la salida no varía.
Página 5 de 22
Cuantificación de entrada: en la entrada tenemos un paso de cuantificación de 1
= . . .
= , . . .
=11,278
Obtenemos los ficheros .mat con la respuesta de la planta real (y) ante la entrada (u) y la entrada a la
componente lineal de planta (û):
Página 6 de 22
Sabemos que la función de transferencia de nuestro modelo tendrá la forma:
Realizamos la identificación paramétrica con las funciones arx y oe de Matlab, tomando para ello los
datos de (û) y (y) correspondientes a los intervalos [7:19] segundos. Para ello creamos el siguiente
código en Matlab:
El error por el criterio de mínimos cuadrados (MSE) es menor según la estructura OE Por lo tanto
tenemos:
,
( )= . (Por lo tanto = 0,2535 ; = 0,8591)
,
0,2535
. á = lim ( ) = lim −1
− = 1− = = = 1,80
→ → 1− 1− 1 −1 1− 1 − 0,8591
Página 7 de 22
Para validar el modelo, comparamos la salida de este con la de la planta real para la entrada u para ello
creamos nuestro modelo completo en simulink:
Este error puede deberse a que al realizar la identificación paramétrica no hemos eliminado la no
linealidad de la cuantificación de salida, además del error debido al ruido al modelar el resto de no
linealidades.
Página 8 de 22
2.Control de velocidad
2.a.Control PI
Para el caso de sistema estable nos piden que la respuesta sea subamortiaguada, por lo que los polos
deben ser complejos conjugados, también nos piden que se tomen 8 muestras por periodo
amortiguado. por teoría sabemos que el número de muestras por segundo está marcado por la fase de
los polos dominantes, por lo tanto:
como tg45=1, nuestro polo dominante estará donde parte real=parte imaginaria
A continuación representamos el LGR con matlab y determinamos la ganancia que hace que nuestro
sistema tenga la dinámica deseada.
Para comprobar que el sistema cumple las especificaciones de diseño introducimos como entrada un
escalón unitario y analizamos la respuesta del sistema:
Página 9 de 22
Analizando un periodo de la respuesta podemos comprobar que toma 8 muestras por periodo:
La señal sigue bastante bien la referencia de velocidad introducida en el sistema. el ruido que aparece
en t=12 y t=20 se corresponde con los cambios bruscos de la perturbación del sistema, que introduce
ese ruido por muy poco tiempo hasta que el sistema reacciona para corregirlo
Página 10 de 22
Para el caso del sistema inestable, hemos cogido también c= y hemos aumentado la ganancia hasta
desplazar el pto de trabajo del sistema fuera del circulo unitario del plano z:
Observamos que la respuesta del sistema es inestable. Simulando el sistema completo con simulink
tenemos:
Página 11 de 22
Si simulamos el sistema completo en simulink para el caso estable (considerando las no linealidades de
la planta) tenemos:
203-191,7=11,3
127-103=24≈11,3 . 2
Página 12 de 22
La implementación de la solución estable en la planta real nos proporciona los siguientes resultados:
Comprobamos que los resultados obtenidos experimentalmente, se corresponden con los obtenidos en
simulación. La conclusión obtenida es que para el desarrollo de cualquier aplicación la simulación nos
proporciona unos datos correctos de forma más económica y menos tediosa.
2.b.Control anti-windup
Para ver el efecto de la saturación, quitamos del modelo completo el resto de no linealidades y lo
simulamos:
Página 13 de 22
Para una la perturbación -150 obtenemos los siguientes resultados:
Observamos que la perturbación no es lo suficientemente grande como para saturar nuestro sistema.
En este caso nuestro sistema tarda en volver a seguir a la referencia tras la perturbación un tiempo
td=13-10=3 seg
A la vista de estos resultados utilizaremos la perturbación de -350 para el diseño de la solución anti-
windup. Para ello creamos el esquema en simulink:
Página 14 de 22
Para Ka=0:
Para Ka=0,6:
La Ka es demasiado grande ya que las señales empiezan a oscilar lo que hace que nuestro sistema se
haga inestable.
Página 15 de 22
Para Ka=0,525:
Página 16 de 22
3.Control de posición
Se nos pide que el polo tenga una constante de tiempo τ ϵ{50ms, 100ms} y que la respuesta sea
sobreamortiguada, por lo que los polos deben ser reales.
| |=
Esto significa que nuestros polo dominante deben encontrase entre 0.904 y 0.951 en el plano z, sin
llegar a hacerse complejo.
Página 17 de 22
Para comprobar que la respuesta del sistema es sobreamortiguada, introducimos una entrada escalón
unitario (cogemos para ello una Kp=0,47):
Página 18 de 22
La perturbación provoca un error en la señal de salida que no se corrige. Si la perturbación fuera cte el
error también lo sería.
A continuación hacemos el diseño del control integral. (hemos cogido una c=0,95)
Página 19 de 22
En este caso la respuesta al escalón es subamortiguada.
Página 20 de 22
La diferencia con el control proporcional, es que el control integral tiene en cuenta los errores
anteriores y en consecuencia actuara para compensar ese error, que es lo que vemos en la gráfica
Página 21 de 22