Saltar al contenido

MPC Toolbox Matlab Tutorial

Hola Controleras y Controleros, en esta entrada vamos a ver un tutorial con algunos conceptos básicos de como utilizar el MPC Toolbox MATLAB. Si todavía no has visto nuestro curso gratuito de MPC disponible en Español y Portugues te invito a que le des un vistazo a nuestra categoría –> MPC Control Predictivo.

Antes de comenzar te hago la invitación para que te suscribas al canal y continues aprendiendo más sobre los sistemas de control.

Para aprender a usar la herramienta vamos a utilizar como ejemplo algunos problemas clasicos de control. El primer ejemplo será una columna de destilación, que lo encontrarás al comienzo de esta publicación junto con sus videos en YouTube y el segundo ejemplo será un reactor CSTR en la parte de abajo de esta publicación junto con sus videos en YouTube.

Columna de Destilación de Wood & Berry

Esta columna de destilación separa metanol y agua, con dos variables de salida (y_1y_2, fracción molar de metanol en el tope y en el fondo respectivamente), dos variables de entrada (u_1, reflujo en el tope y u_2, flujo del rehervidor) y un distúrbio representado por el flujo de alimentación para a columna (q).

Wood and Berry Toolbox MPC Matlab

Al final de la página tendras disponible el código en MATLAB que coloca todas las matrices necesarias para la simulación de este modelo.

Videos de como usar MPC Toolbox Matlab/Simulink

A continuación preparé los siguientes videos en español y portugués de como usar esta herramienta.

EspañolPortugues

Lo primero que debemos hacer es crear el diagrama de bloques en Simulink. Para esto usamos los Bloques que se muestran a continuación.

El Proceso y la perturbación están definidos como matrices de funciones de transferencia en las variables Ps y Pq respectivamente, para llamar eso en simulink usamos el bloque LTI System.

El control MPC Toolbox de Matlab también es adicionado, donde mv son las variables manipuladas, mo son las variables de salida medidas del proceso, ref son las referencias y md son las perturbaciones medibles.

Model Predictive Control Toolbox

Las Referencias en el topo, fondo y perturbacion son definidas como 1, 0.5 y 0.3 respectivamente.

Una vez creado el diagrama de bloques se procede a realizar el diseño del controlador MPC usando el Toolbox de Simulink, para eso basta dar doble click al bloque MPC Controller y luego clic en el botón design.

MPC Simulink Toolbox

Lo primero es definir la estructura del MPC, para eso se coloca el numero de entradas, salidas y disturbios del proceso. Para el caso del ejemplo de Wood & Berry se tiene 2 entradas, 2 salidas y 1 entrada de perturbación.

MPCStructure

El MPC Toolbox de MATLAB posee una herramienta que permite linealizar el sistema en un punto de operación y obtener el modelo matemático del mismo. En algunas ocasiones esta herramienta no consigue linealizar adecuadamente el modelo, pero es importante recalcar que eso varia de proceso a proceso. En este punto se puede observar que existen 4 formas de obtener el modelo matemático, donde para ver más información sobre estos métodos se puede dar clic en el botón de ayuda de la parte inferior de la interfaz del toolbox.

Modelos MPC Toolbox Simulink

De igual forma, para arrancar es necesario escoger alguno de los métodos de linealización (sin importar si ya se tiene algun modelo ya listo). Para este tutorial se emplea el método Model Initial Condition donde el toolbox MPC de MATLAB estima un modelo para el Wood and Berry.

Una vez se tiene el modelo, es hora de sintonizar el controlador modificando los horizontes de predicción, colocando las restricciones del proceso, colocar los pesos de ponderación en la función objetivo y fuera de eso es posible utilizar la herramienta para hacer la sintonia más robusta o más agresiva en la acción de control.

Sintontonia MPC

Si se tiene el modelo del proceso, este puede ser ingresado manualmente en lugar de dejar que el Toolbox estime el modelo, para eso en la pestaña MPC DESIGNER se importa el modelo y luego se realiza la sintonia del mismo. El modelo de Funciones de Transferencia debe estar cargado previamente en el WorkSpace de Matlab para que el MPC Toolbox los detecte.

importar modelo MPC Toolbox MATLAB

Con eso es necesario decirle al Toolbox que utilice el modelo que fue importado.

MPC Toolbox

Podemos hacer pruebas de simulación con los escenarios del controlador y ver como el sistema responde con la sintonia realizada. Y al final se debe exportar esa sintonia al Simulink y ver si realmente controla el sistema real.

MPC Toolbox Scenarios

Con eso tenemos las nociones básicas para trabajar con el Toolbox MPC de matlab, cuando encontremos el control ideal en su sintonia, procedemos a exportar el controlador para tenerlo guardado para próximas simulaciones.

Reactor CSTR usando MPC de Simulink

A continuación vamos a usar el modelo No lineal de un reactor CSTR para construir nuestro controlador predictivo usando MATLAB. El modelo del reactor está totalmente explicado en esta otra publicación, da click aca.

Videos de como usar MPC Toolbox Matlab/Simulink en el Reactor CSTR

A continuación preparé los siguientes videos en español y portugués de como usar esta herramienta.

EspañolPortugues

Descargar los Códigos en Simulink y Matlab

A continuación te dejo los códigos en MATLAB y SIMULINK para que los descargues y los reproduzcas. Para verlos solo debes compartir el contenido de este post con alguno de los tres botones, asi ayudas a que este sitio web siga cresciendo.

[sociallocker id=948]

clc
close all
clear all
%load('mpc1.mat')
%% Define o processo da Coluna:
Ps=[tf(12.8,[16.7 1]) tf(-18.9,[21 1]);tf(6.6,[10.9 1]) tf(-19.4,[14.4 1])];
Ps.iodelay=[1 3;7 3]; %Define o Atraso

%% Define o modelo do processo da Coluna:
Pm= Ps;
Pm.iodelay=[1 3;7 3]+2; %Define o Atraso

%% Define a perturbacao
Pq=[tf(3.8,[14.9 1]);tf(4.9,[13.2 1])];
Pq.iodelay=[8.1;3.4]; %Define o Atraso

%% Define o modelo da perturbacao
Pmq=Pq;
Pmq.iodelay=[8.1;3.4]+1; %Define o Atraso

DC=[Pm Pmq];
DC.InputName = {'Reflux Rate', 'Steam Rate', 'Feed Rate'};
DC.OutputName = {'Distillate Purity', 'Bottoms Purity'};
DC = setmpcsignals(DC, 'MD', 3)

%% Parametros do Simulink
s1=1;     %SetPoint no Topo
s2=0.5;   %SetPoint no Fundo
q=0.3;    %Degrau na perturbacao

[/sociallocker]

Eso es todo por la entrada del dia de hoy, espero les haya gustado y hayan aprendido algo nuevo. Si te ha servido el contenido de esta entrada, de los videos y los códigos de implementación y deseas apoyar mi trabajo invitandome a un café super barato, puedes hacerlo en el siguiente link:

👉 Invitar a Sergio a un Café ☕️

Que esten muy bien, nos vemos en la siguiente entrada.