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ñol | Video 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
- 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 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:
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.
Mi nombre es Sergio Andres Castaño Giraldo, y en este sitio web voy a compartir una de las cosas que mas me gusta en la vida y es sobre la Ingeniería de Control y Automatización. El sitio web estará en constante crecimiento, voy a ir publicando material sobre el asunto desde temas básicos hasta temas un poco más complejos. Suscríbete al sitio web, dale me gusta a la página en Facebook y únete al canal de youtube. Espero de corazón que la información que comparto en este sitio, te pueda ser de utilidad. Y nuevamente te doy las gracias y la bienvenida a control automático educación.