You are on page 1of 9

Programacin y Supervisin de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseados en MATLAB

Pag.78

5. Interfaz Grfica de MATLAB


5.1 Introduccin a MATLAB .........................................................Pag. 79 5.2 Conexin con OPC ...................................................................Pag. 79 5.3 Interfaz grfica..........................................................................Pag. 82 5.4 Programacin............................................................................Pag. 84

Programacin y Supervisin de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseados en MATLAB

Pag.79

5.1 Introduccin a MATLAB


Si bien las pantallas de Vijeo Citect son una herramienta adecuada para el manejo de la planta por parte del usuario, no es por ello menos cierto que la programacin en Vijeo de un algoritmo de control es difcil y problemtica. Por ello, se ha aadido a la aplicacin la posibilidad de programar los algoritmos de control en MATLAB para su posterior ensayo en la planta. MATLAB es una herramienta de clculo, considerablemente flexible y de amplia utilidad. MATLAB cuenta con una gran variedad de herramientas para distintas aplicaciones (toolbox) y tambin permite al usuario crear las suyas propias en un lenguaje sencillo. Como contrapartida, MATLAB es lento al ejecutar estas funciones. Puesto que los tiempos caractersticos de la planta no son particularmente cortos, se ha considerado que la velocidad de MATLAB ser suficiente para la aplicacin. Para este proyecto en concreto se necesitarn tres toolbox en particular: el de OPC, que servir para conectar con el autmata; el de GUIDE, gracias al cual se ha desarrollado una aplicacin grfica, y el de funciones de entradas y salidas, con el que se crearn histricos en Excel. Estas herramientas pueden encontrarse en las siguientes carpetas: C:\Archivos de programa\MATLAB\R2007a\toolbox\opc\opc7 C:\Archivos de programa\MATLAB\R2007a\toolbox\matlab\guide C:\Archivos de programa\MATLAB\R2007a\toolbox\matlab\iofun Se recomienda utilizar la versin 7.4.0 de MATLAB (tambin llamada versin 2007) por haber sido programada la aplicacin sobre dicha versin.

5.2 Conexin con OPC


Para la conexin de MATLAB con OPC, deben haberse seguido los primeros 5 pasos indicados en la seccin 4.1 (conexin con OPC). Por comodidad, tambin se resumen aqu. 1 Abrir la pantalla de variables de Unity y seleccionar todas las variables que se deseen exportar. Hacer clic sobre ellas con el botn derecho y escoger Exportacin seleccionada en el men. 2 Exportar las variables a un archivo de tipo XVM. 3 Abrir la aplicacin OFS Configuration Tool y crear un nuevo alias (si es que no est creado ya). En este proyecto el alias debe llamarse Planta_. 4 Comprobar (y en su caso rectificar) que las siguientes propiedades del alias Planta_: Device address: 84.3.54.82 (para el autmata) 127.0.0.1 (para el simulador)
Sustituir C:\Archivos de programa\MATLAB\R2007a por el directorio de instalacin. Para la versin 7.4.0 de MATLAB, ste es el directorio de instalacin por defecto.
7

Programacin y Supervisin de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseados en MATLAB

Pag.80

Symbol table file: El nombre del archivo al que se exportaron las variables en el segundo paso. Preload settings: Device Consistency level: Debug Guardar la configuracin y salir. 5 Volver a Unity Pro, conectar con el autmata o con el simulador y transferir el programa.

No es necesario seguir con los otros pasos, ya que el acceso de MATLAB a las variables del autmata no depende de la conexin entre OPC y Vijeo. Una vez que las variables de Unity estn exportadas a OPC, se deben importar desde MATLAB. La aplicacin creada en este proyecto puede hacer esto, pero se detallan aqu los pasos a seguir para futuros proyectos.
1 Declarar una variable global por cada variable que se vaya a importar. Por ejemplo, para importar la variable asociada a la vlvula de recirculacin creamos una variable global llamada ValvulaRecir:

global ValvulaRecir; Se deben declarar tambin como globales las variables de la conexin y del grupo de trabajo que se vayan a usar: global da grupo;
2 Definir una conexin con OPC y conectar. En general el identificador del servidor de OPC es para Unity es Schneider-Aut.OFS.2. La conexin se hace as:

da=opcda('127.0.0.1','Schneider-Aut.OFS.2'); %definir conexin da connect(da); %conectar a la conexin da Si el identificador del servidor fuera otro, se podra conocer el nombre de ste as: servidores = opcserverinfo('127.0.0.1'); %buscar todos los servidores de OPC allservers=cliente.ServerID %(sin ;) Al hacer esto se mostrar la lisa de servidores de OPC. De entre todos ellos se deber identificar el de la aplicacin.
3 Crear un grupo de trabajo y definir las variables del mismo. Las variables del grupo son estructuras en las que se guardan los valores de las variables importadas.

grupo = addgroup(da); %Aadir conexin da al grupo de trabajo grupo ValvulaRecir=additem('127.0.0.1', 'planta_!VAL_RECIRCULACION_MAT'); En este ejemplo se asocia la variable VAL_RECIRCULACION_MAT (de Unity) a la estructura ValvulaRecir de MATLAB. Como la estructura es una variable global, cualquier funcin de MATLAB podr tener acceso a ella. No se pueden

Programacin y Supervisin de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseados en MATLAB

Pag.81

asociar a MATLAB las variables de entrada o salida del autmata, sino solamente las marcas internas. Para leer y escribir en estas variables, se usan las funciones read y write. Por ejemplo, si se desea leer el valor de la vlvula de recirculacin, se ejecuta lo siguiente: ValorLeido=read(ValvulaRecir); ValorLeido ser una estructura con los campos ItemID, Value, Quality, TimeStamp y Error. El valor se almacena en Value. El instante de lectura se almacena en TimeStamp (lo cual es til si se desea historiar el tiempo de ejecucin de un algoritmo). Quality y Error indican la calidad de lectura y los errores producidos. ItemID contiene el nombre de la variable original (con el prefijo de OPC y un signo de exclamacin). As pues, en este ejemplo la apertura de la vlvula de recirculacin es: V8=ValorLeido.Value; Si por el contrario se quiere escribir un valor en una variable, slo es necesario proporcionar este valor (no se necesita el resto de la estructura): write(ValvulaRecir, 30); Para desconectar MATLAB de OPC de forma segura antes de cerrar la aplicacin, se debe utilizar la funcin disconect: disconnect(da); Una vez hecho esto, se recomienda eliminar las variables globales: clear global ValvulaRecir da grupo; Para agilizar el proceso de conexin y desconexin, se han creado las funciones conectar y desconectar, que pueden ejecutarse desde la pantalla de comando o desde cualquier otra funcin. Las variables creadas para las comunicaciones son las siguientes:
Nombre BombaAlim BombaAlimConf BombaRecir BombaRecirConf CaudalCaliente CaudalFrio CaudalSalida CaudalRecir NivelDeposito PresionDeposito Resistencia ResistenciaPWM ResTermo ValvulaCaliente Descripcin Orden de marcha de la bomba de alimentacin Seal de confirmacin de la bomba de alimentacin Orden de marcha de la bomba de recirculacin Seal de confirmacin de la bomba de recirculacin Caudal del circuito de entrada de agua caliente Caudal del circuito de entrada de agua fra Caudal del circuito de salida de agua Caudal del circuito recirculacin Nivel de agua del interior del depsito de trabajo Presin del interior del depsito de trabajo Orden de marcha de la resistencia del depsito de trabajo Porcentaje de tiempo de encendido de la modulacin PWM Orden de marcha de la resistencia del grupo caliente Apertura de la vlvula del circuito de entrada de agua caliente

Programacin y Supervisin de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseados en MATLAB

Pag.82

ValvulaFria ValvulaRecir TempCaliente TempFria TempSalida TempRecir TempDeposito AuxMat1 AuxMat2 AuxMat3 AuxMat4 AuxMat5 RefCaudalCaliente RefCaudalFrio RefCaudalRecir RefNivel RefRatio RefTemp

Apertura de la vlvula del circuito de entrada de agua fra Apertura de la vlvula del circuito de recirculacin Temperatura del circuito de entrada de agua caliente Temperatura del circuito de entrada de agua fra Temperatura del circuito de salida de agua Temperatura del circuito de recirculacin Temperatura del agua del interior del depsito Variables auxiliares de propsito general. Sus valores se muestran en el mmico de Vijeo Citect, lo que permite al usuario cambiar parmetros sin necesidad de reprogramar todo el algoritmo. Referencia de caudal de agua caliente Referencia de caudal de agua fra Referencia de caudal de agua de recirculacin Referencia de nivel de agua del depsito Porcentaje de agua caliente de entrada para el algoritmo de nivel Referencia de temperatura del agua del depsito

5.3 Interfaz grfica


Como ya se ha mencionado, se ha creado una interfaz grfica en MATLAB para hacer ms intuitiva la labor del usuario. Esta interfaz consiste en una ventana creada con el toolbox GUIDE (GUI Design Environment) que consta de varios casilleros que el operario puede rellenar. Despus de que el usuario haya programado su algoritmo en una funcin de MATLAB, (ver programacin), podr abrir esta ventana ejecutando control_planta. Con esto, adems se establecer la conexin entre MATLAB y OPC y se crearn las variables globales. Una vez abierta la ventana, en el primer campo, el usuario debe indicar el nombre de la funcin que ejecuta su algoritmo. Esta funcin ser llamada una vez por cada ciclo de muestreo. Puesto que el tiempo de ejecucin del algoritmo puede ser muy variable, se debe indicar tambin (en el segundo casillero) la duracin en segundos del ciclo de control, es decir, el tiempo de muestreo.

Fig. 5.1: Interfaz grfica de MATLAB.

Programacin y Supervisin de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseados en MATLAB

Pag.83

El algoritmo esperar a que se cumpla el periodo de muestreo antes de volver a ejecutar la funcin. En cada ciclo de control, el programa hace las siguientes tareas: 1. 2. 3. 4. Leer las variables de la planta (tanto si se usan como si no) Ejecutar la funcin del usuario Escribir el nuevo valor de las variables de la planta Segn el caso, enviar a Excel el valor de las variables

El tiempo indicado por el usuario debe ser suficientemente largo como para realizar todas estas tareas. Si se cumple el tiempo de ciclo antes de terminar de ejecutar un ciclo de control, el programa terminar de ejecutar este ciclo (como normalmente) y empezar a ejecutar el siguiente inmediatamente despus. El tiempo de retraso no se acumula. Por ejemplo: si se ha impuesto un tiempo de ciclo de 3 segundos y el 2 ciclo tarda 4 segundos en ejecutarse, entonces se impondr un tiempo de ciclo de 2 segundos (en lugar de 3) para el 3er ciclo. De esta manera los retrasos no se acumularn como consecuencia de una duracin de ciclo excesiva. El usuario tambin debe proporcionar el tiempo de duracin del ensayo. Esto se hace introduciendo el nmero de ciclos en el tercer casillero. Por ejemplo, si el ciclo de control tiene una duracin de 5 segundos y el ensayo durar 10 minutos, se ejecutarn 120 ciclos de control. Si se desea generar un histrico en Excel del ensayo, la aplicacin puede tambin automatizar la escritura en el mismo. Basta con indicar el nombre de un fichero de Excel (previamente creado por el usuario) en el 4 campo. El fichero debe existir en el path de MATLAB, y el nombre proporcionado debe contener la extensin del mismo8. Probablemente no sea necesario mantener un registro de las variables en todos los tiempos de muestreo, sino slo cada cierto tiempo. En tal caso, el usuario puede indicar al programa que escriba en Excel slo cada cierto nmero de ciclos de control escribiendo este nmero en Nmero de ciclos entre muestras del histrico. La aplicacin crear una nueva hoja para el archivo especificado (de modo que se puedan hacer varios ensayos consecutivos y guardar los resultados en el mismo fichero. La cabecera de la nueva hoja tendr el siguiente aspecto:

Fig. 5.2: Fichero de Excel de salida.

Si no se da la extensin del archivo, MATLAB tratar de abrir el archivo del mismo nombre sin extensin. Si este archivo no existe, mostrar un mensaje de alerta (warning) e intentar abrir el archivo con el mismo nombre y la extensin xls. Si por el contrario existe un archivo con el nombre proporcionado por el usuario y sin extensin (y no es un archivo de Microsoft Excel), se abortar la ejecucin y aparecer un mensaje de error, ya que no se puede abrir el archivo.

Programacin y Supervisin de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseados en MATLAB

Pag.84

Puede observarse que se deja un espacio para el ttulo del ensayo, y que se indica la fecha y la hora a la que empez. En esta hoja se incluirn peridicamente los valores de las variables indicadas en las casillas de la parte inferior de la interfaz grfica. Si el nmero de muestras fuera demasiado alto como para llenar la hoja de Excel (el nmero mximo de filas es 65536, que es el mayor valor alcanzable por un entero sin signo de 16 bits), se crear una hoja ms, y se seguir escribiendo en ella. Para empezar el ensayo, el usuario debe llevar la planta al modo automtico, bien dejndola en Parada de configuracin o bien en Ensayo en marcha. Una vez en este estado, debe pulsarse el botn ejecutar de la interfaz grfica. Esto crear la nueva hoja en Excel y preparar el programa para su primer ciclo de control. Cuando se haya llegado a este estado, si el estado de la planta no es Ensayo en marcha, el programa esperar a que se alcance este estado (as se puede sincronizar con el inicio de algn algoritmo interno del autmata). Una vez en marcha, el programa puede ser detenido en cualquier momento haciendo que la planta salga del modo Ensayo en marcha. Por ejemplo, si salta una alarma o se pulsa el botn de pnico, la ejecucin del programa de MATLAB ser abortada. Este sistema tambin puede emplearse para ejecutar un nmero indeterminado de ciclos de control, haciendo una parada de configuracin para indicar a MATLAB que el algoritmo debe detenerse. La programacin completa de la interfaz grfica se encuentra en el anejo 2.

5.4 Programacin
La programacin de algoritmos en MATLAB puede hacerse de dos maneras: bien utilizando la interfaz grfica (por facilidad) o leyendo y escribiendo las variables de forma manual (por eficiencia). En cualquiera de los casos, se recomienda evitar los bucles de duracin indeterminada (tipo while) y la recursividad, ya que MATLAB es muy lento. Si se pretende trabajar de forma manual, el programa debe llamar al ejecutable conectar. Con esto se establecer la conexin con OPC y se crearn las variables globales expuestas en la tabla de la seccin 5.2 (conexin con OPC y Excel). Para leer el valor de las variables, sese la funcin read (recurdese que devuelve una estructura), y para escribir, la funcin write. Cuando se haya terminado de utilizar la conexin con OPC, debe lanzarse el ejecutable desconectar para cortar esta conexin. Aunque las variables utilizadas se declaran como globales, si todo el algoritmo se describe en la misma funcin (o si se pasan los valores como parmetros a las otras funciones), se podrn tratar como locales, y no ser necesario declararlas. La programacin de controladores preparada para ejecutarse con la interfaz grfica es ms intuitiva, ya que no requiere el uso de las funciones read ni write. En este caso el usuario programa una ley de control que se ejecuta peridicamente. La funcin puede tener una variable de entrada y devolver una variable de salida. La salida de la funcin en el ciclo n se tomar como entrada de la misma para el ciclo n+1. De esta forma se pueden almacenar valores intermedios entre un ciclo y otro. Para el primer ciclo, la entrada ser una cadena de caracteres con la palabra inicio, que puede utilizarse para hacer una inicializacin del controlador.

Programacin y Supervisin de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseados en MATLAB

Pag.85

Las instrucciones para los actuadores no se devuelven a la salida, ni tampoco se reciben como entrada. En lugar de eso, en la cabecera del programa deben declararse las variables globales que se vayan a usar para enviar estos valores. Por ejemplo, el caudal de agua de recirculacin se almacena en la variable FF4 (el valor directamente, no toda la estructura) y para usarlo, basta con escribir global FF4; en la cabecera de la funcin. Siguiendo con el ejemplo, si a la vista de este caudal se quiere dar una apertura del 60% a la vlvula de recirculacin, le asignamos este valor a la variable V8: V8=60. A continuacin se muestra una imagen para asociar las variables empleadas a sus respectivos sensores y actuadores. Las variables de los actuadores estn subrayadas. Si se escribe sobre la variable de un sensor, el valor permanecer en ella durante el resto del ciclo de control, pero ser reemplazado por la lectura del sensor en el ciclo siguiente.

Fig. 5.3: Esquema de la planta con las variables de MATLAB.

Variable FT1 FT2 FT3 FT4 LT1 TT1 TT2 TT3 TT4 TT5 V4 V5 V8 PWM

Tipo Slo lectura Slo lectura Slo lectura Slo lectura Slo lectura Slo lectura Slo lectura Slo lectura Slo lectura Slo lectura Lectura y escritura Lectura y escritura Lectura y escritura Lectura y escritura

Significado Caudal de entrada de agua caliente Caudal de entrada de agua fra Caudal de agua de salida Caudal de agua de recirculacin Nivel de agua del depsito Temperatura de agua caliente Temperatura de agua fra Temperatura de agua de salida Temperatura de agua de recirculacin Temperatura de agua del depsito Vlvula del circuito de agua caliente Vlvula del circuito de agua fra Vlvula del circuito de recirculacin Porcentaje de tiempo de encendido de la PWM

Programacin y Supervisin de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseados en MATLAB

Pag.86

PT1 B1 B2 RES TERMO AUX_A AUX_B AUX_C AUX_D AUX_E FC1 FC2 FC4 LC1 TC5 Ratio

Slo lectura Lectura y escritura Lectura y escritura Lectura y escritura Lectura y escritura Lectura y escritura Lectura y escritura Lectura y escritura Lectura y escritura Lectura y escritura Lectura y escritura Lectura y escritura Lectura y escritura Lectura y escritura Lectura y escritura Lectura y escritura

Presin del depsito Bomba de alimentacin Bomba de recirculacin Resistencia del depsito Resistencia del grupo caliente Variables definidas por el usuario para comunicaciones con Vijeo. Referencia de caudal de agua caliente Referencia de caudal de agua fra Referencia de caudal de recirculacin Referencia de nivel Referencia de temperatura del depsito Referencia de proporcin de agua caliente (porcentaje)

Tambin pueden declararse otras variables globales, que mantendrn su valor de una ejecucin de la funcin a la siguiente. Se adjunta una plantilla para la creacin de funciones de control aqu y en un archivo de MATLAB.
function Salida=probando(Entrada) %Variables de entrada (sensores) global FT1 FT2 FT3 FT4 LT1 PT1 TT1 TT2 TT3 TT4 TT5; %Variables de salida (actuadores) global B1 B2 V4 V5 V8 PWM RES TERMO; %Variables definidas por el usuario global AUX_A AUX_B AUX_C AUX_D AUX_E; if (ischar(Entrada)) %Entrada es una cadena de caracteres if(STRCMP(Entrada,'inicio')) %Inicializar el algoritmo aqu Salida=0; %Asociar un valor a Salida else error('Entrada no vlida'); end else %Escribir el algoritmo de control aqu %Dar valores a B1, B2, V4, V5, V8, RES, PWM y/o TERMO %Actualizar el valor de Salida para usarlo como siguiente Entrada end

You might also like