viernes, 24 de enero de 2014

Control Proporcional Integral de un modelo en Simulink.

OBJETIVO

Realizar un control proporcional-integral (PI) discreto en lazo cerrado de un modelo en Simulink,  utilizando comunicación serial entre el Simulink y el Kinetis KL25Z, de forma tal que el algoritmo de control discreto y ajuste de la referencia sea ejecutado por microcontrolador.

DESARROLLO

El modelo implementado en Simulink y las configuraciones son en forma idéntica al utilizado en la practica del control proporcional. 

En la figura22 el lazo de control se encuentra abierto entre los bloques to instrument y Query Instrument, el microcontrolador es el encargado de cerrar ese lazo mediante la aplicación de un control discreto tipo PI (proporcional – integral). El programa se basa en la interacción entre una tarea del tipo Autostart con prioridad 8 y 3 eventos, mismos descritos en lastablas 7 y 8. El programa básicamente lee el valor de referencia (setpoint) mediante un Potenciómetro en el puerto del ADC, el cual es controlado por un temporizador que actúa cada 10ms. La tarea 1 es la encargada de la inicialización de los periféricos, y de realizar el control PI, para ello genera una señal de error definida como:


Donde el valor real es la respuesta del modelo de MatLab recibida a través del puerto serie. La fórmula discreta para el control PI se obtiene como sigue:


Para una muestra anterior tenemos:


De aquí


Sabiendo que

Sustituyendo

Finalmente sustituyendo esta última ecuación en la original, resulta


Y factorizando, tenemos 



Donde  es la salida de la accion de control PI, Kp y Ki las ganancias proporcional e integral respectivamente, las cuales fueron sintonizadas en base a la respuesta al tiempo del modelo, (k) y (k-1) se refieren al valor actual y anterior de la variable en cuestión.
El algoritmo sigue los pasos siguientes:
  1. El evento de recepción de datos se encarga de recibir los caracteres en formato ASCII y almacenarlos en un buffer circular de 16 posiciones, este evento habilita la tarea 1 mediante una bandera verdadera.
  2. La tarea por su parte llama a la función Str2Int para convertir la cadena recibida a un valor entero, genera el error, aplica la acción de control PI, llama a la función Int2Str para convertir el dato entero obtenido de la acción de control en cadena ASCII con el correspondiente terminador,  envía el primer carácter por el puerto serie.
  3. Posteriormente el evento de transmisión sea el encargado de continuar el envío de datos. De esta forma el lazo de control PI es realizado por el microcontrolador.

Para poder tener mejor precisión en las operaciones y en base a que el microcontrolador es de punto fijo. La señal de respuesta del modelo en el MatLab antes de ser enviada por el puerto serie es multiplicada por una ganancia, la cual debe ser compensada por otra en forma inversa al momento recibir los datos en el MatLab y poder darle entrada al modelo.

No hay comentarios:

Publicar un comentario