Saltar al contenido

Control Predictivo Basado en Modelo – DMC

En la entrada del dia de hoy vamos a ver como funciona un control predictivo basado en modelo MPC, y para eso vamos a comenzar entendiendo el algoritmo más simple conocido como control predictivo DMC, control por matriz dinámica o simplemente Dinamic Matrix Control. Para entender más otros algoritmos de este tema dele un vistazo a nuestra categoría: Control Predictivo Basado en Modelo MPC.

Introducción de Control Predictivo MPC – Algoritmo DMC

Para dar una introducción en lo que consiste el control predictivo DMC, preparé unas video aulas para que puedas entender mejor el concepto del controlador. Estas video aulas estan en Español y también en Portugues (Controle Preditivo DMC – Controle por Matriz Dinâmica)

Video en EspañolVideo em Português

Si deseas la presentación del video puedes descargarla aquí:
CONTROL PREDICTIVO

Que es un Control Predictivo

El control predictivo es una estrategia de control ampliamente utilizada por su característica de ser un control óptimo, y por lo tanto permite tener en consideración las restricciones del proceso además de poder involucrar dentro de la ley de control diversos objetivos, incluso objetivos económicos que la gerencia de alguna industria esta interesada en alcanzar.

Una acción predictiva en un controlador, es la forma de generar una acción que pueda prever un determinado efecto en la respuesta y asi poderlo evitar o por lo menos disminuirlo. En resumen el controlador actúa en el instante actual, basándose en la predicción del comportamiento futuro del proceso.

Característica de un Control Predictivo MPC

Veamos algunos aspectos claves presentes en todo algoritmo de control MPC

IDEAS DEL MPC

  1. Utiliza un modelo explicito
  2. Minimiza un Objetivo
  3. Horizonte Deslizante

ELEMENTOS DEL MPC

  1. Modelo de Predicción
  2. Modelo del proceso
  3. Modelo de las perturbaciones
  4. Función objetivo
  5. Método para obtener la ley de control

ALGORITMOS MPC

  1. DMC
  2. GPC
  3. UPC
  4. NMPC

Control Predictivo DMC – Dinamic Matrix Control

El Control predictivo DMC se basa en la respuesta del modelo lineal ante una entrada escalón, para poder predecir el comportamiento futuro que tendrá el sistema y de esa forma poder cumplir con las especificaciones de proyecto del ingeniero de control.

La respuesta de un sistema dinámico lineal ante una entrada del tipo escalón, puede ser representada como el siguiente producto de convolución.

y(t)=\sum_{i=1}^{\infty}g_i\Delta u(t-i)

Donde y(t) es la respuesta de mi planta, g_i son los coeficientes a la respuesta escalón y \Delta U son los incrementos de control.

Realizando todo el procedimiento matemático (explicado detalladamente en los videos) se puede llegar al modelo completo de predicción del sistema dado por:

y(t+k/t)=\sum_{i=1}^{k}g_i\Delta u(t+k-i)+y_m(t)+\sum_{i=1}^{M}(g_{i+k}-g_i)\Delta u(t-i)

o representado matricialmente como

\textbf{y=Gu+f}

Función Objetivo Control Predictivo DMC

La función objetivo estándar de un control predictivo DMC es igual para cualquier otro algoritmo de MPC, y viene dado por una función multi-objetivo que busca en el primer sumatorio minimizar el error cuadrático provocado por la diferencia entre el setpoint y la salida del proceso. El segundo sumatorio busca minimizar el esfuerzo de control aplicado sobre el sistema con el fin de gastar menos energia para llegar al punto deseado.

J=\sum_{i=1}^{P}\delta[y(t+i)-w(t+i)]^2+\sum_{i=1}^{N}\lambda[\Delta u(t+i-1)]^2

P es conocido como el horizonte de predicción, y es la salida del proceso, w es la referencia, \delta es una matriz que pondera la importancia que deseo darle a la minimización del error, N es el horizonte de control, u es la acción de control,\lambda es una matriz que pondera la importancia que deseo darle al esfuerzo de control.

Control Predictivo DMC Ejemplos y Códigos MATLAB

Veremos como podemos llevar a la practica con un ejemplo sin restricciones este tipo de controlador usando ejemplos para entender mucho mejor el concepto.

Video en Español

Ejemplo Control Predictivo Basado en Modelo MATLAB

Diseñar un control predictivo DMC para el siguiente proceso.

G(s)=\dfrac{e^{-0.41s}}{0.1s^{2}+ 1.1 s + 1}

[sociallocker id=948]

%% CONTROL DMC
% Dinamic Matrix Control
% Baseada en la respuesta al Escalón
% Sergio Andres Castaño Giraldo

clc
clear all
close all
%% Modelo  de  Sistema
T=0.5;                          %Tempo de muestreo
num=1;                          %Numerador Continuo
den=[0.1 1.1 1];                %Denominador Continuo
ret=0.41;                       %Retardo del sistema
gp=tf(num,den);                 %Funcion de transferencia
gp.outputdelay=ret;
ftz=c2d(gp,T);                  %Planta Discreta
[B,A]=tfdata(ftz,'v');        %Divide Numerador en B y denominador en A
d=1;   % atraso de tiempo discreto

%% Define los ajustes del Control Preditivo
P=15;                   %Horizonte de prediccion (2 constantes de tiempo puede ser)
N=8;                    %Horizonte de controle (5 - 10)
lamda=10;               %(Grande control é pequeno; Pequeno o control é livre)
delta=1*eye(P);         %Matriz de ponderacion del error 

%% Vector de coeficientes Gi
gi=step(ftz);           %Guardo la respuesta al escalón
Nm=length(gi)-1;        %Valor donde trunco la sumatoria para la predicción del modelo completo "M"

%% Calculo de la Matriz G
G=zeros(P,N);
G(:,1)=gi(1+d:P+d);  %lleno la primera columna con los valores
                 %de la respuesta al escalon hasta el horizonte de
                 %predicion, quitando los retardos que pueda tener el sistema
 
 for i=2:N
     for j=2:P
        G(j,i)=G(j-1,i-1); 
     end
 end

 %% calcula matriz Mn Matriz 
Mn=inv(G'*delta*G + lamda*eye(N))*G'*delta;

%Calculo de controldor K1 (Primeira fila de Mn)
K1=Mn(1,:)

%% Loop de Control

% inicializa parametros
nit=230;
inc_u=0;
u_ant(1:10) = 0;
u(1:10) = 0; ym(1:10) = 0; r(1:10) = 0;
% Referência
r(9:80) = 2; r(81:140) = 3; r(141:180) = 2; r(181:nit) = 2;
do(1:179)= 0;do(180:nit) = 0.1;

duf=zeros(1,Nm); %Acao de controle livre (Delta U Free)

w=0; %Termino para colocar referencias futuras (Si colocas este valor igual a P)
     %Es como si supieras los valores del Set-Point, y el control va a comenzar
     %a actuar. Te invito a que lo hagas y veas como se comporta el sistema.
for k=9:nit-w
     % calcula salida de proceso
     ym(k)=B(1)*u(k-d)+B(2)*u(k-1-d)+B(3)*u(k-2-d)-A(2)*ym(k-1)-A(3)*ym(k-2)+do(k);
     
     %% CALCULO DE LA RESPUESTA LIBRE
     f=zeros(1,P); % Vetor f (free) Respuesta Libre
     

     for kk=1:P
% monta un vector con las gkk+i - gkk
         for i=1:Nm-P
             vect_g(i)=gi(kk+i)-gi(i);
         end
         for i=Nm-P+1:Nm
             vect_g(i)=gi(Nm)-gi(i);
         end
         f(kk)=ym(k)+vect_g*duf';  %Calculo da resposta livre
         %f= Vector de respuesta libre con tamaño P
         %duf= (du libre) es la u correspondiente a la respuesta libre
               %ese vector siempre esta en el pasado. Es cero en el futuro
               %y vale unicamente en el pasado
         %ym= Salida de la planta
     
    end   
     

     %Calculo de la ley de control
     %Proyecto donde no conozco las referencias (w=0)
     %Coloca el w=P, arriba antes de entrar al for, y analiza lo que sucede
     inc_u=K1*(r(k+w)-f');
     
     if k==1
        u(k)=inc_u;
     else
        u(k)=u(k-1)+ inc_u;
     end
     
     % actualiza vector de control
     aux_u=u_ant(1:length(B)-1);
     u_ant=[u(k) aux_u];

    %actualiza duf
    % duf= [du(k-1) du(k-2) ..... du(k-N)]

    aux_2=duf(1:Nm-1);
    duf=[inc_u aux_2];

end

nm=nit;
t = 0:T:(nm-1)*T;
figure
subplot(2,1,1),plot(t(1:nit-w),r(1:nit-w),'--k',t(1:nit-w),ym,'-r','Linewidth',3)
xlabel('Tempo (s)');
ylabel('Saida');
legend('y_r','y','Location','SouthEast')
grid on;
hold
subplot(2,1,2),plot(t(1:nit-w),u,'b','Linewidth',3)
xlabel('Tempo (s)');
ylabel('Controle');
legend('u')
grid on;

[/sociallocker]

Implementación del DMC en planta de Temperatura

Para este caso vamos a controlar con el controlador predictivo basado en modelo DMC una planta de temperatura conocida como el TCLAB cuyo modelo matemático fue explicado en detalle en la entrada de sistemas térmicos y su función de transferencia viene dado por:

G(s)=\dfrac{1.04}{160 s + 1}e^{-10s}

Los códigos de implementación pueden ser descargados a continuación:

La respuesta del control DMC – Dynamic matrix control de forma implementada en la vida real (izquierda) y de forma simulada (derecha) es mostrada a continuación:

Dynamic matrix control
Dynamic matrix control

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.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Comentarios (9)

Hola! Los videos me han ayudado mucho. Me gustaría saber dónde aprendiste esto, qué libros se recomiendan para estudiar específicamente DMC.

Responder

Hola Elena, mi curso de Control Predictivo Basado en Modelo que tengo aquí en el sitio web y en el canal de youtube está basado en el libro Model Predictive Control, Camacho and Bordons. Saludos.

Responder

Buenas tardes Sergio.
Como podria comunicarme con usted para una asesoria sobre el tema de control predictivo.

Gracias.

Responder

Daniel hay una sección de contacto en el menu superior del sitio web.

Responder

Sergio, muchas gracias por el tiempo que gastas con esmero en compartir tu inteligencia y conocimiento.

Responder

Gracias Daniel por el comentário, que bueno que te ha servido la pagina. Saludos.

Responder

Sergio como podemos las personas que no tenemos ningun metodo de pago colaborarte con un cafe.

Responder

Gracias Mauricio por tu comentario, veo que te han gustado los post del blog. Lo del cafe la verdad es que me ayuda bastante a mantener el sitio web, pues son varias horas que gasto preparando el material de la pagina. Lastimosamente no tengo otra forma de pedir colaboración. De todas maneras muchas gracias por la intención Mauricio, quizas en un futuro. Te mando un abrazo grande. Saludos.

Responder

Saludos Ing. estoy realizando mi tesis de magister en A&C, si usted desea ayudarme, estoy dispuesto a pagarle sus honorarios.

Espero su respuesta

Responder