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:
Sabiendo
que
Sustituyendo
Finalmente sustituyendo esta última
ecuación en la original, resulta
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:
- 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.
- 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.
- 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