OBJETIVO
Realizar un control proporcional 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 en el microcontrolador.
Realizar un control proporcional 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 en el microcontrolador.
DESARROLLO
El modelo
implementado en Simulink es el siguiente.
Figura 1. Lazo de control para el modelo
de un motor DC.
El subsistema contiene el modelo
para un motor DC.
Figura 2. Subsistema del modelo para un
motor DC.
Los bloques de
envío y recepción son configurados a 115200 Baudios, y direccionados hacia el
COM 4, los bloques que no son continuos son configurados por la variable Ts
dentro de su parámetro de tiempo de muestreo. La variable Ts es necesaria
definirla en el espacio de trabajo del MatLab. Para este caso el tiempo de
muestreo utilizado fue
. Las figuras siguientes muestran tales
configuraciones.
(a)
(b)
Figura 3. Configuración de
bloques de envío (a) y recepción (b) en Simulink.
El terminador para el bloque de
recepción es el carácter ‘U’ (0x55) y
el ‘\n’. El cuál es configurado en la pestaña Query correspondiente al bloque Query instrument.
En la figura 1 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 una acción proporcional. De esta forma, el programa se basa en
la interacción entre una tarea del tipo Autostart con prioridad 8 y 3 eventos,
mismos descritos en la tablas siguientes.
Name
|
Stack
Size
|
Priority
|
MQX_AUTO_START_TASK
|
Task1
|
512
|
8
|
ENABLE
|
Tabla 1. Lista de eventos para la práctica
2 y 3.
Name
|
Description
|
AD1_OnMeasurementComplete
|
Evento que es invocado cuando una medición ha
sido realizada.
|
AS1_OnRxChar
|
Evento que es invocado cuando un carácter ha sido recibido correctamente.
|
AS1_OnTxChar
|
Evento que es invocado después que un
carácter ha sido transmitido.
|
Tabla 2. Lista de eventos para la práctica
2 y 3.
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 aplicación de la acción proporcional es sencilla e implica
multiplicar por una ganancia, asi entonces la salida del controlador
proporcional resulta:
Donde Y es la salida de la acción de control,
Kp es la ganancia proporcional, la cual fue sintonizada en base a la respuesta
al tiempo del modelo.
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 eve nto 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 P, mediante la multiplicación por una ganancia Kp, 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