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)
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
- Utiliza un modelo explicito
- Minimiza un Objetivo
- Horizonte Deslizante
ELEMENTOS DEL MPC
- Modelo de Predicción
- Modelo del proceso
- Modelo de las perturbaciones
- Función objetivo
- Método para obtener la ley de control
ALGORITMOS MPC
- DMC
- GPC
- UPC
- 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
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)]^2P es conocido como el horizonte de predicción, y es la salida del proceso, w es la referencia,
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.
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:
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
¡Hola! Soy Sergio Andrés Castaño Giraldo. Bienvenidos a Control Automático Educación, un espacio dedicado a una de mis grandes pasiones: la Ingeniería de Control y la Automatización.
Mi objetivo aquí es tender un puente entre la teoría académica y la práctica profesional. Como profesor e investigador, he tenido la oportunidad de trabajar en proyectos complejos —desde sistemas de compresión en plataformas offshore hasta modelos de control avanzado— y todo ese aprendizaje lo vuelco en este sitio.
Aquí encontrarás material que crece constantemente: desde fundamentos de instrumentación hasta estrategias de control avanzado y programación profesional. Mi meta es que la información que comparto te sea de utilidad real en tu carrera o formación.
Te invito a que te suscribas, te unas a nuestro canal de YouTube y formemos una comunidad de aprendizaje continuo. ¡Gracias por estar aquí!
