%------------------------------------------------------------
\documentclass[conference,letterpaper]{IEEEtran}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage[usenames]{color}
\usepackage[pdftex]{graphicx}
\usepackage{tcolorbox}
\usepackage[colorlinks, linkcolor=black]{hyperref}
\tcbuselibrary{listingsutf8}
%------------------------------------------------------------
\graphicspath{{../pdf/}{../jpeg/}}
\DeclareGraphicsExtensions{.pdf,.jpeg,.png}
%------------------------------------------------------------
\hyphenation{op-tical net-works semi-conduc-tor}
%------------------------------------------------------------
\definecolor{Fucsia}{RGB}{193,124,250}
\definecolor{Azul}{RGB}{20,80,200}
%------------------------------------------------------------
\DeclareRobustCommand*{\IEEEauthorrefmark}[1]{\raisebox{0pt}[0pt][0pt]{\textsuperscript{\footnotesize #1}}}
%------------------------------------------------------------
% Definir cuadro de ancho del texto
\newtcolorbox{mybox}[1]{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,title=#1}
%------------------------------------------------------------
% Cuadro estrecho
\newtcbox{cuadro}[1]{colback=blue!5!white,colframe=blue!75!black,fonttitle=\bfseries,title=#1}
%------------------------------------------------------------
% Cuadro numerado para ejemplos
\newtcolorbox[auto counter,number within=section]{example}[2][]
{colback=green!5!white,colframe=green!75!black,fonttitle=\bfseries, title=Ejemplo~\thetcbcounter: #2,#1}
%------------------------------------------------------------
\begin{document}
\title
{
Diseño e Implementación de un Sistema de Control utilizando MATLAB enlazado a un Autómata Programable
}
\author
{
\IEEEauthorblockN
{
Uribe A.\IEEEauthorrefmark{1},
Gutiérrez W.\IEEEauthorrefmark{2}
}
\IEEEauthorblockA
{
auribec@sena.edu.co \IEEEauthorrefmark{1},
william.gutierrez@sena.edu.co \IEEEauthorrefmark{2}
}
\IEEEauthorblockA
{
Centro de Electricidad y Automatización Industrial, SENA, Regional Valle, Santiago de Cali, Colombia}
}
\maketitle
\begin{abstract}
En la actualidad, el estudio y análisis de los sistemas de control automático representan un campo de aplicación bastante extendido, esto debido a las imperantes necesidades por mejorar los procesos productivos, optimizar los recursos e incluso para predecir comportamientos, desde entornos educativos, investigativos o industriales, hasta entornos económicos, sociales y demás. En efecto, esto ha impulsado a los desarrolladores a buscar herramientas o alternativas que permitan aumentar las capacidades de cómputo al momento de desarrollar un sistema de control automático. Ahora bien, la instrumentación industrial desde hace muchos años viene comandada por los Autómatas Programables (PLC), dispositivos útiles e ideales para ejecutar las tareas de control de una planta, independientemente de la escala.
El presente documento presenta el diseño e implementación de un controlador PID en una planta didáctica conformada con equipos industriales, haciendo uso de OPC y algunos conceptos de la teoría de control.
Mediante la herramienta computacional MATLAB se realiza la identificación de la planta obteniendo su función de transferencia, y haciendo uso de algunas herramientas disponibles en este software, se determinan los parámetros de sintonía de un controlador tipo PID, para posteriormente sintonizar la estrategia de control implementada en un autómata programable de gama alta.
\end{abstract}
{\smallskip \keywords controlador PID, estándar OPC, función de transferencia.}
\IEEEpeerreviewmaketitle
\vspace{7pt}
\section{Introducción}
En la actualidad, existen numerosas estrategias y maneras de realizar control sobre variables físicas, ejemplo de esto, tenemos controladores mecánicos como los vetustos trenes de la revolución industrial, que basaban el control del flujo del combustible mediante la manipulación de una válvula conectada a uno de los ejes del motor y mediante el efecto centrífugo, se realizaba el control en la velocidad; de otro lado, controladores eléctricos de dos posiciones como los que realizan los termostatos de los antiguos sistemas de aire acondicionado o neveras; y finalmente, controladores realimentados, cuyo propósito consiste en cerrar el lazo de control, obteniendo una lectura permanente de las variables controladas, y mediante la ejecución de un algoritmo o ecuación matemática, establecen una señal de control sobre actuadores.\\
Existen numerosas estrategias de control, sin embargo, en los entornos industriales, este tipo de controladores, denominados en algunas ocasiones como continuos, análogos, o de lazo cerrado, usualmente son basados en estrategias como PID, el cual se calcula matemáticamente a través de la diferencia entre la consigna (SetPoint) y el valor medido de la variable, donde se tiene en cuenta la proporcionalidad, el error estacionario y el error transicional, esto traducido matemáticamente como un valor proporcional al error, su integral y su derivada.\\
Algunos PLC tienen ya incorporados módulos especiales como el PID y mediante interfaces análogas, ejecutan el control sobre actuadores, con base en la medición de variables físicas del proceso, a través de transmisores industriales. Ahora bien, para obtener una respuesta de control satisfactoria, el PID debe sintonizarse previamente, es decir, deben establecerse sus parámetros principales: constante proporcional, constante integral y constante derivativa (kp, ki, kd). Estas dependen directamente del comportamiento de la planta y los requerimientos de control, como tiempos de estabilización, sobre impulso y demás. (Leonardo F. Lozano Valencia - 2014).\\
El proceso de sintonía es fundamental para el éxito de un buen controlador PID; existen diferentes maneras de realizarlo, bien sea analítica o matemáticamente o mediante ensayos empíricos. Ziegler-Nichols sugieren una metodología muy sencilla, la cual consiste en obtener la respuesta de la planta ante un escalón y a través de una serie de simples cálculos, se obtienen los parámetros del controlador. Este método puede ser funcional y arrojar en algunas ocasiones, buenos resultados, sin embargo, en todos los casos no es posible hacer ensayos, sobre todo cuando se trata de entornos industriales (Víctor M. Alfaro Ruíz – 2002).\\
Una solución eficaz a esto es pues, destinar la mirada a software tipo CAE -ingeniería asistida por computador- y existe una portentosa aplicación computacional que integra herramientas de cálculo y simulación, capaz de seducir al buen desarrollador mediante sus innumerables módulos funcionales. MATLAB es un software que, entre sus tantas funcionalidades, contiene módulos que podrían estimar la función de transferencia, el ADN de una planta; permitiría también calcular su respuesta ante diferentes entradas, y estimar las constantes de un controlador PID, dependiendo de un par de parámetros.\\
Teniendo en cuenta lo anterior, surge la enorme cuestión: ¿cómo conectar esta herramienta a un autómata programable? Pues de esta manera ¿se imagina usted las incontables aplicaciones que podrían realizarse? Este documento presenta una solución y un ejemplo de aplicación. A continuación, se expone una manera de realizarlo a través del estándar OPC (Ole for Process Control).
\section{Metodología}
OPC es el método de conectividad de datos basado en los estándares más populares del mundo. Es utilizado para responder a uno de los mayores retos de la industria de la automatización: cómo comunicar dispositivos, controladores y/o aplicaciones sin caer en los problemas habituales de las conexiones basadas en protocolos propietarios.\\
OPC no es un protocolo, sino más bien un estándar para la conectividad de datos que se basa en una serie de especificaciones OPC gestionadas por la OPC Foundation. Cualquier software que sea compatible con estas especificaciones OPC proporciona a usuarios e integradores conectividad abierta e independiente tanto del fabricante del dispositivo como del desarrollador de la aplicación Cliente. (Darek Kominek, P. Eng. Alberta, Canada – 2009).\\
La metodología de comunicación entre dos dispositivos a través de OPC se basa en la filosofía Cliente-Servidor. Las figuras 1 y 2 ilustran las capas de este concepto.
\begin{figure}[thpb]
\centering
\includegraphics[width=0.55\linewidth]{aa}
\caption{Anatomía conceptual de un Servidor OPC.}
\label{fig:OPC_Server}
\end{figure}
\begin{figure}[thpb]
\centering
\includegraphics[width=0.55\linewidth]{bb}
\caption{Anatomía conceptual de un Cliente OPC.}
\label{fig:OPC_Server}
\end{figure}
MATLAB a su vez, posee una ToolBox, dedicada al uso del estándar OPC, a través de la cual, una vez configurados los clientes/servidores OPC, y establecida la conexión, se hace posible controlar las variables o TAGS del PLC en todo momento. La gran ventaja de esto es que, bajo este estándar de conexión, no se aísla el hilo comunicación, permitiendo así el multi-enlace. Esto es útil cuando los dispositivos están dentro de una red de comunicación, sistema SCADA o sistema de control distribuido.
\subsection{Conexión MatLab - Servidor OPC}
Como se mencionó, la herramienta computacional MATLAB contiene una toolbox con funcionalidades de Cliente, la cual permite establecer conexión a uno o varios servidores OPC y mediante el uso de TAGS se puede interactuar con estos.\\
\subsubsection{Registro de OPC en MAtLab}
Para registrar OPC en MATLAB, se ingresa el siguiente comando:\\
\textcolor{Azul}{\textgreater\textgreater opcregister(install)}\\
Una vez registrado, se podrá hacer uso de la herramienta, a través de la cual será primordial tener en cuenta los nombres de los servidores OPC con los que se trabajará. Para el presente estudio, se trabaja con el módulo OPC del software RSLinx Classic Gateway v2.51, cuyo servidor OPC por defecto está denominado como: “RSLinx OPC Server”.
A continuación, se ejecuta en el entorno de MATLAB, esta ToolBox, escribiendo el comando:\\
\textcolor{Azul}{\textgreater\textgreater opctool()}\\
Se despliega la siguiente ventana:
\begin{figure}[thpb]
\centering
\includegraphics[width=1\linewidth]{cc}
\caption{Ventana principal de la ToolBox: OPC Tool.}
\label{fig:OPC_Server}
\end{figure}
En dicha ventana se puede establecer conexión al servidor OPC, mediante la configuración del cliente y posteriormente, a manera de prueba, se pueden leer o escribir TAGS, sin mayor inconveniente, sin embargo, el potencial de esta herramienta se puede obtener mediante el uso de scripts. A continuación, se ilustra un ejemplo de conexión, lectura y escritura a dos variables.\\
\begin{tcblisting}{listing only, listing options={language=matlab}, title=Código}
canal=opcda('localhost','RSLinx OPC
Server');
connect(canal);
grp=addgroup(canal);
in=additem(grp,'[TOPICO]Entrada');
out=additem(grp,'[TOPICO]Salida');
lectura=read(in);
write(out,50);
\end{tcblisting}
Esta rutina muestra la configuración de dos TAGS en el entorno de MATLAB.
\section{Obtención del Modelo de la Planta}
Se implementó el desarrollo mediante una planta didáctica (ver figura 4) de control de procesos que dispone de actuadores y transmisores que trabajan en el estándar 4-20mA.
\begin{figure}[thpb]
\centering
\includegraphics[width=0.8\linewidth]{dd}
\caption[Long caption]{Planta didáctica remota para control de procesos.}
\label{fig:OPC_Server}
\end{figure}
\vspace{7pt}
Esta planta posee un proceso a lazo cerrado, donde se emula mediante dos tanques, un procedimiento de mezcla o llenado. Para efectos didácticos, se trabaja con agua. (Victoria, C. Mantilla, W, y Gutiérrez W – 2005).\\
Los dispositivos a tener en cuenta son:\\
Transmisores:\\
FT100 (A) Transmisor de flujo\\
LT101 (A) Transmisor de nivel\\
Actuadores:\\
LCV100 (A) Válvula proporcional\\
LAV102 (A) Válvula proporcional\\
P100 (D) Bomba\\
A=Análogo D=Digital.\\
\begin{figure}[thpb]
\centering
\includegraphics[width=0.9\linewidth]{ee}
\caption[Long caption]{Diagrama P\&ID de la planta.}
\label{fig:OPC_Server}
\end{figure}
Teniendo en cuenta lo anterior, se procede a realizar la programación del PLC. En la figura 6, se ilustran 4 líneas de programación mediante lenguaje Ladder. La primera línea corresponde a la activación de la bomba P100; la segunda corresponde a la lectura de los transmisores, la tercera a la escritura sobre los actuadores y la última, captura el valor del SetPoint y lo guarda sobre el bloque PID. Cabe destacar que la válvula LCV102 permite simular una carga al sistema, permitiendo generar perturbaciones y así determinar el comportamiento del sistema de control.\\
Es importante aclarar que los módulos análogos I/O, previamente han sido configurados para trabajar con valores escalados de 0\% como valor mínimo, hasta 100\% como valor máximo.\\
\textit{\small{*El software de programación del PLC es RSLogix5000 (v16).}}\\
La figura 7 ilustra la programación del bloque PID. Cabe destacar que el PLC que se está trabajando (AllenBradley ControlLogix L55) posee este módulo y viene pre-configurado, por tanto, es importante revisar las variables de control que, para este caso, son:\\ \\
Process Variable: FT100.\\
Control Variable: LCV100.
En dicho bloque debe, además configurarse otros parámetros como escalas, saturaciones, tiempo de muestreo, tipo de control, entre otros.\\
\begin{figure}[thpb]
\centering
\includegraphics[width=0.9\linewidth]{ff}
\caption[Long caption]{Programación Ladder del lazo principal.}
\label{fig:OPC_Server}
\end{figure}
\begin{figure}[thpb]
\centering
\includegraphics[width=0.9\linewidth]{gg}
\caption[Long caption]{Programación Ladder del lazo PID.}
\label{fig:OPC_Server}
\end{figure}
El PID a trabajar es de tipo Independiente-Paralelo con un tiempo de muestreo a es de 100mS.\\
Una vez ejecutada la programación sobre el PLC, se configura sobre el software RSLinx (v2.51) el servidor OPC. Para esto, se crea el Tópico, que el presente caso, se ha llamado PLC\_REMOTO.\\
La figura 8 muestra cómo debería quedar establecido el tópico. Para llegar a él, dentro del software RSLinx se debe escoger la CPU, se oprime clic derecho y se selecciona la opción: \textit{Configure new DDE/OPC Topic.}\\
\begin{figure}[thpb]
\centering
\includegraphics[width=1\linewidth]{hh}
\caption[Long caption]{Configuración del Tópico OPC.}
\label{fig:OPC_Server}
\end{figure}
Para obtener el modelo de la planta, se aplica un escalón de la forma:
\[u(t)=\begin{Bmatrix} 0 & t<0\\ 50 & t\geq 0 \end{Bmatrix}\]
El tiempo de toma de datos se estableció a 50 segundos, espacio necesario para obtener un buen resultado.\\
Con todo lo anterior, se procede a enlazar el software MATLAB y se ejecuta una rutina que realiza la siguiente secuencia:\\
\begin{enumerate}
\item Configuración el objeto OPC.
\item Creación de los TAGS.
\item Se enciende la Bomba.
\item Se aplica un escalón sobre la válvula LCV100.
\item Se inicia la captura de los datos durante 50s.
\item Se apaga la Bomba.
\item Se cierra la válvula LCV100.
\end{enumerate}
Con lo anterior, se grafican los datos obtenidos de la variación del flujo (ver figura 9).
\begin{figure}[thpb]
\centering
\includegraphics[width=0.8\linewidth]{ii}
\caption{Respuesta al escalón.}
\label{fig:OPC_Server}
\end{figure}
\vspace{7pt}
Se observa que se han tomado 500 muestras, y esto debido a que el tiempo de captura de datos corresponde a 50 segundos, pero el muestreo es de 0.1 segundos, por tanto, por cada segundo, se obtienen 10 muestras. Otro factor importante al visualizar la respuesta, es que la planta presenta un retardo, y esto debe tenerse en cuenta al momento de realizar la identificación de la planta.\\
Finalmente, se estima la función de transferencia a través del comando: \textcolor{Azul}{tfest}. Este comando recibe como parámetros, la información obtenida, el número de polos, número de ceros y el retardo calculado. Ejemplo:
\begin{tcblisting}{listing only, listing options={language=matlab}, title=Código}
data = iddata(FLUJO,ESCALON,muestreo);
polos=1;
ceros=0;
sistema=tfest(data,polos,ceros,retardo);
\end{tcblisting}
\vspace{5pt}
De esta manera, se obtiene que la función de transferencia estimada es:
\[\frac{0.2848}{s+0.1567}e^{_{-8.9}}\]
{\centering Fit toestimation data: 80.39\%}
\begin{figure}[thpb]
\centering
\includegraphics[width=0.9\linewidth]{jj}
\caption{Comparación entre FDT estimada y respuesta real del sistema.}
\label{fig:OPC_Server}
\small (Azul: real – Rojo: estimada)
\end{figure}
Se procede a realizar otra estimación, esta vez con 1 polo y 1 cero y se obtiene:
\[\frac{PV(s)}{MV(s))}=\frac{0.524s+0.2848}{s+0.1567}e^{-8.9}\]
Este último resultado se acerca mucho más a la respuesta real obtenida, con un ajuste de estimación de 95.67\%.
{\centering Fit to estimation data: 95.67\%}
\begin{figure}[thpb]
\centering
\includegraphics[width=0.9\linewidth]{kk}
\caption{Comparación entre FDT estimada y respuesta real del sistema.}
\label{fig:OPC_Server}
\small (Azul: real – Rojo: estimada)
\end{figure}
\section{Diseño del Controlador}
Se toma como referencia el formato del controlador PID paralelo-independiente como lo ilustra la figura 12. Cabe destacar que el uso óptimo de este tipo de controladores está en las plantas cuyos modelos son lineales, o altamente linealizables.
\begin{figure}[thpb]
\centering
\includegraphics[width=0.9\linewidth]{ll}
\caption{Anatomía del controlador PID.}
\label{fig:OPC_Server}
\end{figure}
La función de transferencia de este controlador es la siguiente:
\[\frac{PID(s)}{E(s)}=\frac{Kds+Kps+Ki}{s}\]
Tomando como referencia la ecuación 3, la función de transferencia del sistema resulta ser la realimentación de estas dos funciones, quedando de la siguiente manera:
\[\frac{F(s)}{U(s))}=\frac{\frac{0.524s+0.2848}{s+0.1567}e^{-8.9s}*\frac{Kds+Kps+Ki}{s}}{1+\frac{0.524s+0.2848}{s+0.1567}e^{-8.9s}*\frac{Kds+Kps+Ki}{s}}\]
\[P=E(t)+5*3+2\]
Siendo:\\
F(s) Salida del sistema = Flujo.\\
U(s) Entrada del sistema = SetPoint.\\
Este controlador se puede estimar con MATLAB a través de la herramienta PID Tuner (en algunas versiones, se puede encontrar como pidTuner o pidtool), de la siguiente manera:
\textcolor{Azul}{\textgreater \textgreater [PID Info] = pidtune(sistema,'PID');}\\
Esto arroja como resultado, la función de transferencia del PID con sus constantes Kp, Ki y Kd, debidamente sintonizadas. Es importante aclarar que los parámetros como tiempo de respuesta, frecuencia de cruce y margen de fase, pueden ser modificados y son visualizados de la propiedad \textit{Info}.\\ \\
Con lo anterior, se obtiene como resultado:\\
Kp=0.3002\\
Ki=0.0382\\
Kd=0.3138\\
Se simula el controlador y se grafica el resultado, ilustrado en la figura 13.
\begin{figure}[thpb]
\centering
\includegraphics[width=0.8\linewidth]{mm}
\caption{Respuesta del sistema controlado.}
\label{fig:OPC_Server}
\end{figure}
\section{Resultados}
Se realizaron dos pruebas de validación; la primera a modo de simulación bajo el software MATLAB, con la cual se establecen diferentes frecuencias de corte como se ilustra en la figura 14.
\begin{figure}[thpb]
\centering
\includegraphics[width=0.8\linewidth]{nn}
\caption{Respuesta del sistema controlado ante diferentes \textit{wc}.}
\label{fig:OPC_Server}
\end{figure}
Finalmente se selecciona la respuesta ilustrada en color verde (ver figura 14) cuyo valor wc es 0.075 rad.
Para una frecuencia de corte de wc=0.075 rad, se obtienen las siguientes constantes.\\
Kp = 0.34, Ki = 0.0401, Kd = 0.377\\
Estas a su vez, son enviadas desde MATLAB vía OPC al PLC (como se manifiesta en el apartado 2.1), y se realiza una la segunda prueba, donde se valida el funcionamiento real de la planta, obteniendo un resultado como se observa en la figura 15, donde se ilustra en color rojo, el establecimiento del SetPoint; en fucsia el esfuerzo de control, es decir, la manipulación de la válvula LCV100; y en azul, la respuesta de la planta o variable de proceso, es decir, el transmisor de flujo FT100.\\
Un detalle a considerar, es que el esfuerzo de control presenta cambios bruscos, y esto es debido al efecto de la acción derivativa, en el momento donde se aplica un escalón en el SetPoint y durante la etapa transicional.
\begin{figure}[thpb]
\centering
\includegraphics[width=0.9\linewidth]{oo}
\caption{Respuesta de la planta.}
\small{SP=Rojo=50\% - PV=Azul – MV=Fucsia}
\label{fig:OPC_Server}
\end{figure}
En esta prueba, el escalón se considera para un valor inicial del 20\% y un valor final del 60\%.\\
Con lo anterior, se abre la puerta a la posibilidad de calcular controladores de tipo adaptativo, tomando como base, la idea de obtener al instante, datos del comportamiento de la planta, de tal modo que a medida que se capturan los datos, se podría aprovechar el potencial de MATLAB para calcular en tiempo real, los parámetros del controlador.
\section{Conclusiones}
Mediante el estándar OPC, se consiguió enlazar el software MATLAB a un autómata programable, permitiendo enviar y recibir datos en tiempo real, visualizados en el PLC a través del software de programación RSLogix5000.\\
Se logró obtener la función de transferencia de la planta, mediante la estimación a través de MATLAB tomando como referencia los datos obtenidos en tiempo real vía OPC.\\
Se desarrolló un script que permitió realizar el proceso de enlace al PLC, identificación del modelo de la planta, estimación del controlador PID, envío de las constantes proporcional, integral y derivativa al PLC y puesta en marcha de un ensayo. Todo esto sin ninguna intervención y de manera automática.
\begin{thebibliography}{1}
\normalsize
\bibitem{}
William Gutiérrez, \emph{Estudio de diferentes técnicas de inteligencia computacional para sintonía de acciones de control PID}, Tesis para optar al grado de Magister en Ingeniería con énfasis en Automática, Santiago de Cali, Colombia: Abril, 2009.
\\
\bibitem{}
Miguel Mato, Alberto Herreros, \emph{Aplicaciones en MATLAB y Simulink para el Modelado y control del movimiento de una Estacion ABB IRB-120}, Valladolid, España, 2014.\\ Disponible en:
\url{http://www.ja2014.upv.es/wp-content/uploads/papers/paper_32.pdf}
\\
\bibitem{}
César Reyes, \emph{Control de la planta de los cuatro tanques mediante la realización de una pasarela matlab-http-opc}, Sevilla, España: 2006.\\ Disponible en:
\url{https://www.researchgate.net/publication/228855217}
\\
\bibitem{}
Leonardo F. Lozano Valencia, Alberto Herreros, \emph{Diseño, Implementación y Validación de un Controlador PID Autosintonizado}, Pereira, Colombia, 2012.\\ Disponible en:
\url{http://www.scielo.org.co/pdf/teclo/n28/n28a03.pdf}
\\
\bibitem{}
César Victoria, William Mantilla y William Gutiérrez, \emph{Diseño e implementación de una planta didáctica para la Formación Remota en Control de Procesos}, SENA, Regional Valle, Santiago de Cali, Colombia: 2005.
\\
\bibitem{}
Víctor M. Alfaro Ruíz, \emph{Métodos de sintonización de controladores PID que operan como reguladores}, San José, Costa Rica, 2002.\\ Disponible en:
\url{http://eie.ucr.ac.cr/uploads/file/documentos/pub_inv/articulos/valfaro02B.pdf}
\end{thebibliography}
\end{document}