Icono del sitio Control Automático Educación

Control Predictivo Basado en Modelo – DMC

DMC Controller

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  es la respuesta de mi planta,  son los coeficientes a la respuesta escalón y  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, 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, 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

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.

Citar este Artículo

📌 Selecciona el formato:
Giraldo, S. A. C. (2015). Control Predictivo Basado en Modelo – DMC. Control Automático Educación. https://controlautomaticoeducacion.com/control-predictivo/dmc/
Salir de la versión móvil