Está en la página 1de 41

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

Pag.14

3. Programacin del autmata


3.1 Especificaciones del PLC .........................................................Pag. 15 3.2 Configuracin en Unity ............................................................Pag. 15 3.3 Vista general del programa.......................................................Pag. 21 3.4 Escalado....................................................................................Pag. 22 3.5 Seleccin de salida....................................................................Pag. 27 3.6 Estados y transiciones...............................................................Pag. 31 3.7 Procedimientos en caso de emergencia ....................................Pag. 36 3.8 Algoritmos propios ...................................................................Pag. 43

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

Pag.15

3.1 Especificaciones del PLC


Para el control de la planta se utiliza un PLC M340 de Modicom. El autmata est formado por mdulos o tarjetas con diversas funciones: entradas, salidas, comunicacin, CPU Estos mdulos se distribuyen a lo largo del bastidor, que cuenta con su fuente de alimentacin. Es posible (aunque no es necesario para este proyecto) utilizar ms de un bastidor, conectndolos travs de sus mdulos de ampliacin. Cada bastidor incluye su propia fuente de alimentacin, pero slo el principal necesitar el mdulo de la CPU. Esta estructura de bastidor y tarjetas (tipo armario) hace del autmata un elemento compacto y fcil de alojar en el cuadro de mandos. Para la presente aplicacin se requieren como mnimo los siguientes mdulos en el bastidor: CPU con conexin a red Mdulo para, al menos, 9 entradas digitales Mdulo para, al menos, 4 salidas digitales a rels Mdulo para, al menos, 5 entradas analgicas de termopares tipo J Mdulo para, al menos, 6 entradas analgicas de propsito general Mdulo para, al menos, 3 salidas analgicas de propsito general.

El autmata del que se dispone en el laboratorio cuenta con un bastidor BMX XBP de 12 ranuras con las siguientes tarjetas (por orden numrico): 0. BMX P34 2020 que alberga la CPU, y permite comunicaciones va Modbus, o por conexin Ethernet TCPIP. 1. BMX DDI 3202 K para 32 entradas digitales a 24V de tensin continua con positivo comn. 2. BMX DDO 3202 K para 32 salidas digitales a transistor con negativo comn. 3. BMX ART 0414 para 4 entradas TC/RTD con separacin de potencial compatible con termopares tipo J. 4. BMX ART 0414 igual al mdulo nmero 3. 5. BMX AMI 0410 para 4 entradas analgicas U/I con separacin de potencial de alta velocidad. 6. BMX AMI 0410 igual al mdulo nmero 5. 7. BMX AMO 0210 para 2 salidas analgicas U/I con separacin de potencial. 8. BMX AMO 0210 igual al mdulo nmero 7. 9. Libre 10. Libre 11. Libre La fuente de alimentacin del bastidor es de la gama BMX CPS 3500, diseada para alimentar todos los mdulos del bastidor.

3.2 Configuracin de Unity


Para la programacin del autmata se utiliza Unity Pro XL, un software de programacin diseado por Schneider Electric compatible con varios tipos de PLCs.

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

Pag.16

Unity Pro permite usar hasta 5 lenguajes de programacin: lista de instrucciones (IL), lenguaje estructurado (ST), grafcet (SFC), lenguaje de contactos (LD) y flujo de datos (FBD). Antes de poder usar ninguno de ellos, es necesario establecer la configuracin de Unity, indicndole qu tipo de PLC estamos usando, cmo nos conectamos a l, etc. En primer lugar se debe crear un nuevo proyecto para lo cual se debe hacer clic en el men Fichero -> Nuevo. Aparecer la siguiente ventana, en la que se pide escoger el PLC que se programar.

Fig. 3.1: Configuracin del PLC.

En este caso, el PLC es el Modicom M340, con CPU BMX P34 2020. Una vez seleccionado aparecer en la parte izquierda de la pantalla el explorador de proyectos. Como se puede observar, el proyecto de Unity se estructura en: 9 9 9 9 9 9 Configuracin Variables y tipos de datos Movimiento Comunicacin El propio programa Tablas de animacin y pantallas de operacin 9 Documentacin El siguiente paso es indicarle al programa qu mdulos de entrada y salida tiene instalado el PLC. Para ello se debe desplegar toda la carpeta de configuracin, y hacer doble clic en 0: Bus PLC. La ventana que aparece muestra un esquema del PLC y de sus ranuras. Fig. 3.2: Explorador de proyectos. Por defecto se considera que el PLC slo dispone de 8 ranuras. Para cambiar este valor, se hace doble clic en el bastidor del PLC, y se selecciona BASTIDOR PRINCIPAL DE 12 SLOTS.

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

Pag.17

Fuente de alimentacin Bastidor del PLC

Fig. 3.3: Configuracin del bastidor del PLC.

Tambin es necesario cambiar el tipo de fuente de alimentacin. Esto se consigue haciendo clic con el botn derecho sobre la fuente y seleccionando Eliminar mdulo. A continuacin, se hace doble clic sobre el espacio libre que queda y se selecciona BMX CPS 3500. Por ltimo, se debe hacer clic sobre cada uno de los mdulos en las ranuras de la 1 a la 8 para indicar el mdulo que est instalado en cada una. En la ventana que aparecer en cada caso, se escoge segn la siguiente tabla: Mdulo 1 2 3-4 5-6 7-8 Tipo Binario Binario Analgico Analgico Analgico Referencia BMX DDI 3202K BMX DDO 3202K BMX ART 0414 BMX AMI 0410 BMX AMO 0210 Comentario 32 entradas digitales de 24 VCC comn negativo 32 salidas digitales transistor comn negativo 4 entradas TC/RTD con separacin de potencial 4 entradas analgicas U/I con separacin de potencial de alta velocidad 2 salidas analgicas U/I con separacin de potencial

En el caso de los mdulos 3 y 4, adems es necesario indicar el tipo de termopar utilizado. Esto se hace seleccionando los mdulos (doble clic sobre ellos) y seleccionando Termo J en el rango.

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

Pag.18

Fig. 3.4: Seleccin de mdulos o tarjegas.

Fig. 3.5: Tipos de termopares.

Una vez configurado el PLC, se debe configurar la red. Para esto se despliega la carpeta de comunicaciones (en el explorador de proyectos), se hace clic con el botn derecho sobre redes y se selecciona la opcin nueva red. En la lista de redes disponibles se escoge (para este PLC) Ethernet, y se elije un nombre para la red. Luego, haciendo doble clic sobre el icono de la nueva red, se hacen los cambios

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

Pag.19

pertinentes. En el caso de la red del laboratorio, slo hay que cambiar la IP y la mscara de subred.

La direccin IP asociada al autmata es 843-54-82. La mscara de subred que debe emplearse es 255-255-255-0. Para terminar con la configuracin del autmata, an deben que asociarse las direcciones de lectura y escritura con las variables correspondientes a sensores y actuadores. Por ejemplo, si un termopar del mdulo 3 mide la temperatura del agua caliente y su direccin Fig. 3.6: Configuracin de la red. es %IW0.3.0, se deber aadir una variable conla direccin %IW0.3.0 llamada Temperatura_agua_caliente o con un nombre similar y en cualquier caso fcil de reconocer. Esto se hace abriendo la ventana de variables (doble clic en variables elementales) y escribiendo los nombres, direcciones y tipos de datos en la tabla que aparece.

Fig. 3.7: Ventana de variables.

El campo nombre sirve para dar un nombre a cada variable (no puede haber dos variables con nombres iguales), el campo tipo, indica el tipo de variable (entera, binaria, real) y en el direccin se asigna una direccin de lectura, escritura o marca a la variable (si no se indica nada, se trata como una marca interna). En la columna valor se puede aadir un valor inicial para esa variable, y la columna comentario, cualquier comentario de inters. Las variables de entrada y salida para este proyecto son:

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

Pag.20

Nombre
RESISTENCIA_DISPARO

Tipo
EBOOL

Direccin
%I0.1.0

TERMO_DISP

EBOOL

%I0.1.1

GRUPO_FRIO_DISP

EBOOL

%I0.1.2

BOMBA_RECIR_DISP

EBOOL

%I0.1.3

BOMBA_RECIR_CONF

EBOOL

%I0.1.4

BOMBA_ALIM_DISP

EBOOL

%I0.1.5

BOMBA_ALIM_CONFM TERMO_TERMOS BOMBA_RECIR_MARCHA BOMBA_ALIM_MARCHA RESISTENCIA_MARCHA TERMO_MARCHA TEM_CIRCUITO_AGUA_CALIENTE TEM_CIRCUITO_AGUA_FRIA TEM_CIRCUITO_SALIDA_DEPOSITO TEM_RECIRCULACION TEM_INTERIOR_DEPOSITO CAUDAL_CIRCUITO_AGUA_CALIENTE CAUDAL_CIRCUITO_AGUA_FRIA CAUDAL_CIRCUITO_SALIDA_DEPOSITO

EBOOL EBOOL EBOOL EBOOL EBOOL EBOOL INT INT INT INT INT INT INT INT

%I0.1.6 %I0.1.8 %Q0.2.0 %Q0.2.1 %Q0.2.14 %Q0.2.15 %IW0.3.0 %IW0.3.1 %IW0.3.2 %IW0.3.3 %IW0.4.0 %IW0.5.0 %IW0.5.1 %IW0.5.2

Comentario Disparo de las protecciones de la resistencia Disparo de las protecciones del grupo caliente Disparo de las protecciones del grupo fro Disparo de las protecciones de la bomba de recirculacin Confirmacin de marcha de la bomba de recirculacin Disparo de las protecciones de la bomba de alimentacin Confirmacin de marcha de la bomba de alimentacin Termostato del grupo caliente Orden de marcha de la bomba de recirculacin Orden de marcha de la bomba de alimentacin Orden de marcha de la resistencia del depsito Orden de marcha del grupo caliente Temperatura del agua del circuito caliente Temperatura del agua del circuito fro Temperatura del agua del circuito de salida Temperatura del agua del circuito de recirculacin Temperatura del agua del depsito Caudal de agua caliente de entrada Caudal de agua fra de entrada Caudal de agua de salida

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

Pag.21

NIVEL_AGUA_INTERIOR_DEPOSITO PRESION_INTERIOR_DEPOSITO CAUDAL_CIRCUITO_RECIRCULACION VAL_AGUA_CALIENTE VAL_AGUA_FRIA VAL_CIRCUITO_RECIRCULACION

INT INT INT INT INT INT

%IW0.5.3 %IW0.6.0 %IW0.6.3 %Q0.7.0 %Q0.7.1 %Q0.8.0

Nivel de agua del depsito Presin del interior del depsito Caudal de agua de recirculacin Apertura de la vlvula de agua caliente Apertura de la vlvula de agua fra Apertura de la vlvula de recirculacin

Esta configuracin es propia de la planta, y ser la misma sea cual sea el programa. Por lo tanto en caso de reprogramacin del autmata, se puede copiar la configuracin de esta aplicacin o de cualquier otra que se haya usado en la misma planta.

3.3 Vista general del programa


A continuacin se describe la programacin del autmata, detallando las tareas que ste llevar a cabo y la forma en que lo har. En el anejo 1 se adjunta todo el cdigo del programa. El programa del autmata se consta de una nica tarea (la tarea maestra) que se estructura en 17 secciones. Una de estas secciones (la llamada GuiaGemma) est programada en Grafcet, mientras que todas las dems estn en lenguaje de contactos (LD). La tarea maestra se repite peridicamente cada 10ms, aunque no todas las secciones se ejecutan en todos los ciclos. Las secciones se ejecutan en el orden que se ha considerado ms lgico. Aunque es posible alterar este orden, hacerlo podra provocar comportamientos no deseados al cambiar el estado o la configuracin de las variables2. Estas secciones son las siguientes: 1. Escalado_var_entrada 2. Simulacion 3. Transiciones 4. GuiaGemma 5. EMERGENCIA 6. LISTO 7. MANUAL 8. AUTO_P1 9. AUTO_P2 10. AUTO_M 11. Control_de_caudales 12. Control_de_nivel 13. Control_de_temperatura
Este comportamiento estar limitado a los 2 3 ciclo inmediatamente posteriores al cambio de estado o de configuracin.
2

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

Pag.22

14. Control_nivel_temperatura 15. Seleccion_de_salida 16. PWM_Resistencia 17. Escalado_var_salida A lo largo de la tarea maestra, el autmata lleva a cabo distintas acciones. La primera de estas acciones es escalar las variables de entrada y de salida, de modo que la lectura de los sensores y las rdenes de los actuadores se traduzcan a una medida del sistema internacional. Este es el objetivo de las secciones 1, 2 y 17, que establecen una relacin lineal entre las magnitudes reales y las variables de entrada y salida. Estas secciones tambin permiten hacer una distincin entre las simulaciones y el funcionamiento real de la aplicacin. La segunda de estas acciones consiste en identificar el modo de funcionamiento en el que se encuentra el proceso. Existen 5 modos de funcionamiento (o estados) en los que el proceso puede encontrarse: Listo, Manual, Automtico en Parada, Automtico en Marcha y Emergencia. El autmata se inicia siempre en el estado Listo, lo que lleva todas las bombas, vlvulas y resistencias a un estado conocido. A lo largo de la ejecucin del programa, el usuario podr cambiar a los modos Manual, Automtico en Parada y Automtico en Marcha. En caso de emergencia, se pasar al estado Emergencia, y una vez resuelto el fallo, se volver al estado Listo. Las secciones 3 y 4 controlan el paso de un estado a otro, mientras que las funciones 5 a 10, llevan a cabo las acciones especficas de cada modo de funcionamiento. Las secciones 11 a 14 ejecutan distintos algoritmos de control cuando se ha seleccionado el modo automtico. Nunca se ejecuta ms de una en el mismo ciclo de la tarea. En funcin de cmo se configuren las variables de salida, se pueden desconectar partes de estos algoritmos de control, o combinarlos con funciones de MATLAB programadas por el usuario. Por ltimo, las secciones 15 y 16 permiten al usuario escoger la forma en que se controlan las bombas, vlvulas y resistencias. El autmata registra 3 variables para cada actuador: una para MATLAB otra para la aplicacin SCADA (en donde se configura manualmente) y otra con el valor real que se le da. sta ltima recibir su valor de una de las anteriores o bien de los algoritmos de control. Para cada salida existen dos variables binarias (tres para la resistencia del depsito) que permiten escoger cul de los tres mtodos se utilizar. En el caso de la resistencia del depsito, se puede escoger tambin controlar con una modulacin por ancho de pulsos (PWM).

3.4 Escalado
Escalado de variables analgicas
Las secciones de escalado se utilizan para interpretar las medidas de los transductores. Se han creado dos secciones para escalar variables (una para las variables de entrada y otra para las de salida) ambas en lenguaje de contactos LD. El motivo de esta divisin en dos secciones est en la primera ejecucin de la tarea maestra: Si todo el escalado se hace al empezar el programa, estaremos dando una salida indeterminada

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

Pag.23

durante la primera ejecucin del programa (ya que no se ha escogido ninguna). Si por el contrario se escalan todas las variables al final de cada ciclo de la tarea maestra, los algoritmos no contarn con la informacin necesaria para ejecutarse durante el primer ciclo. As pues las variables de entrada se interpretan en la primera seccin (Escalado_var_entrada) y las de salida, en la ltima (Escalado_var_salida). El escalado de variables analgicas se hace mediante el bloque SCALING de Unity. Una vez colocado y habilitado este bloque en el programa, se le debe indicar qu variable se va a escalar (IN), dnde se va a guardar el resultado (OUT) y cul es la relacin entre ambas (PARA). Opcionalmente se puede guardar una palabra de estado (STATUS) que indicar si la conversin se est ejecutando de forma correcta y, en caso contrario, qu error se est produciendo. IN y OUT son variables reales, lo cul no coincide con las variables de entrada y salida definidas para los sensores (que se interpretan como nmeros enteros). Para solventar este problema, se usa un bloque de conversin de tipo. De esta forma el clculo de todas las medidas de entrada (excepto las de temperatura) se hace as:

Fig. 3.8: Escalado de variables de entrada (ejemplo con el caudal de agua caliente).

En este ejemplo la variable entera CAUDAL_CIRCUITO_AGUA_CALIENTE se pasa a real, se escala siguiendo los parmetros indicados en ParaScCaudalCaliente, y el resultado (que es una variable real) se guarda en caudal_caliente. De forma similar, el clculo de las actuaciones de salida se hace as:

Fig. 3.9: Escalado variables de salida (ejemplo con la apertura de la vlvula de agua caliente).

En este segundo ejemplo la variable real val_caliente se escala segn los parmetros de ParaScValvulas, y el resultado (real) se pasa a entero para guardarlo en VAL_AGUA_CALIENTE, que corresponde con el actuador de vlvula del circuito de agua caliente.

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

Pag.24

As pues, a cada variable entera de entrada y salida le corresponde una variable real interna, y una estructura de parmetros de acuerdo con la siguiente tabla. Las flechas indican las variables de origen y destino de cada conversin. Variable real (interna) CAUDAL_CIRCUITO_AGUA_CALIENTE caudal_caliente CAUDAL_CIRCUITO_AGUA_FRIA caudal_frio CAUDAL_CIRCUITO_SALIDA_DEPOSITO caudal_salida CAUDAL_CIRCUITO_RECIRCULACION caudal_recirculacion NIVEL_AGUA_INTERIOR_DEPOSITO niv_deposito PRESION_INTERIOR_DEPOSITO presion_deposito VAL_AGUA_CALIENTE val_caliente VAL_AGUA_FRIA val_fria VAL_CIRCUITO_RECIRCULACION val_recirculacion Variable entera o salida (transductor o actuador) Estructura de parmetros ParaScCaudalCaliente ParaScCaudalFrio ParaScCaudalSalida ParaScCaudalRecirculacion ParaScNivel ParaScPresion ParaScValvulas ParaScValvulas ParaScValvulas

Cada estructura de parmetros PARA es del tipo Para_SCALING, que contiene 5 variables: in_min, in_max, out_min, out_max y clip. Las 4 primeras representan dos puntos de una funcin lineal: out_min es la salida ms baja, in_min es la entrada asociada a esta salida y out_max e in_max son las correspondientes variables para la salida ms alta. La ltima variable, clip, es del tipo BOOL, y cuando est a 1 evita que la variable de salida quede fuera de rango mediante una saturacin. Los valores que se han tomado para estas variables son los de la siguiente tabla, en la que tambin se muestran las unidades de las variables internas (las reales). Estructura
ParaScCaudalCaliente ParaScCaudalFrio ParaScCaudalSalida ParaScCaudalRecirculacion ParaScNivel ParaScPresion ParaScValvulas

in_min in_max out_min out_max clip Unidades


0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 10000.0 10000.0 10000.0 10000.0 10000.0 100.0 0.0 0.0 0.0 0.0 10.0 0.0 0.0 20.0 16.5 19.8 10.6 90.0 5.0 10000.0 0 0 0 0 0 0 1 l/min l/min l/min l/min cm bar %

Para el caso de la temperatura, los propios mdulos ART realizan la conversin por s solos (siempre que el termopar se haya configurado correctamente). Para los termopares tipo J, el valor de las variables de entrada es la temperatura en dcimas de grado Celsius (1/10 C). Sabiendo esto, basta dividir las variables entre 10 para obtener el resultado en C.

Fig. 3.10: Escalado de temperaturas.

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

Pag.25

En este caso, las variables intermedias que se corresponden con las originales son las siguientes: Variable entera (transductor)
TEM_CIRCUITO_AGUA_CALIENTE TEM_CIRCUITO_AGUA_FRIA TEM_CIRCUITO_SALIDA_DEPOSITO TEM_CIRCUITO_RECIRCULACION TEM_INTERIOR_DEPOSITO

Variable real (interna)


tem_caliente tem_fria tem_salida tem_recirculacion tem_deposito

Siguiendo este procedimiento se puede hacer todo el escalado de variables analgicas correspondiente a las secciones Escalado_var_entrada y Escalado_var_salida.

Copia de variables digitales


Adems de escalar las variables de entrada, la seccin Escalado_var_entrada y Simulacion copian el estado de las entradas binarias a variables intermedias que se puedan exportar a MATLAB:

Fig. 3.11: Copia de variables digitales.

Las variables intermedias que se corresponden con las entradas digitales son: Variable de entrada
RESISTENCIA_DISPARO TERMO_DISP GRUPO_FRIO_DISP BOMBA_RECIR_DISP BOMBA_RECIR_CONF BOMBA_ALIM_DISP BOMBA_ALIM_CONFM

Variable interna
disp_resistencia disp_grupo_caliente disp_grupo_frio disp_bomba_R conf_bomba_A disp_bomba_A conf_bomba_R

Simulacin
Existe una seccin ms (Simulacion) que da un valor a las variables de entrada cuando los sensores no estn activados (es decir, cuando se est ejecutando una simulacin del programa en lugar de usar el propio autmata). En el caso de que el autmata no est conectado, pero an as se deba realizar una simulacin del programa, se deber poner a 0 la variable SimEstandar, inhabilitando as la ejecucin de

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

Pag.26

Escalado_var_entrada. Al hacer esto, los valores de las variables intermedias no se actualizarn, y podrn ser forzadas desde una pantalla de operador. La seccin Simulacin y la pantalla de operador fueron creadas en un principio para la depuracin del cdigo. Sin embargo, ms tarde se decidi dejarlas en el programa para permitir la ejecucin de simulaciones del cdigo. Durante una simulacin, la pantalla Entradas_simulador podr poner a uno o a cero las seales de alarma (disparo de las protecciones) y dar cualquier valor a las seales analgicas. La seccin Simulacion simular la seal de confirmacin de las bombas cuando se les da la orden de marcha.

Fig. 3.12: Pantalla de operador.

Termostato y sensor de nivel


Al comienzo de la programacin del autmata, se consider que el sensor de nivel se encontraba conectado al mismo. Sin embargo, algo ms tarde, se supo que este sensor estaba desconectado (estando el escalado de su seal ya programada). Puesto que algunos algoritmos propios del autmata requieren el uso de este sensor, se ha aadido la opcin de ignorar o no la lectura de este sensor en lugar de eliminarla por completo. La variable asociada puede manipularse desde la pantalla de operador.

Fig. 3.13: Simulacin de nivel del depsito.

Por otro lado, en la documentacin del proyecto anterior, el termostato del grupo caliente se consideraba una seal para desconectar la resistencia de dicho grupo. Sin

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

Pag.27

embargo, aparentemente, la resistencia se conecta y desconecta automticamente sin necesidad de intervencin por parte del autmata. Ante la duda, se han dado las dos opciones aadiendo una casilla ms a la pantalla de operador. Si se marca la casilla Forzar TERMO, se ignorar el comportamiento de esta seal y se bloquear la salida a esta resistencia.

3.5 Seleccin de salida


Uno de los cambios fundamentales de este proyecto frente a su predecesor es la posibilidad de controlar diferentes dispositivos por mtodos distintos simultneamente. En concreto, es posible controlar cada una de las bombas, vlvulas y resistencias por separado bien de forma manual, bien mediante un algoritmo propio o bien desde MATLAB, sin influir en las otras. As pues, es posible (por ejemplo) controlar la vlvula de recirculacin desde MATLAB, mientras las otras vlvulas se regulan de forma automtica para mantener un nivel determinado de agua en el depsito de trabajo. Con este motivo se ha aadido al programa la seccin 15 (Seleccion_de_salida). La seccin de seleccin de salida est pensada para ejecutarse despus de que se escoja el valor de cada variable de salida, y por lo tanto debe estar cerca del final. Colocar esta seccin antes de las secciones correspondientes a los algoritmos de control producir retardos en la actuacin de los mismos. Tampoco se debera emplazar esta seccin despus del escalado de variables de salida, ya que en este caso las rdenes de apertura de las vlvulas se ejecutaran un ciclo ms tarde que las de las bombas. Para cada bomba y para cada vlvula se han creado dos variables de tipo BOOL en las que se indica qu aplicacin tendr el control sobre la variable: Bit 1 Bit 2 Abreviatura Origen del control MAT Salida controlada desde MATLAB. 1 1 MAN Salida controlada desde la aplicacin SCADA. 1 0 AUTO Salida controlada mediante un lazo de control interno. 0 1 BLQD Dispositivo bloqueado. Generalmente debido a una 0 0 alarma o al estado de emergencia. Los nombres de estas variables binarias son: Salida Vlvula de agua caliente Vlvula de agua fra Vlvula de recirculacin Bomba de alimentacin Bomba de recirculacin Bit 1
VAL_CALIENTE_BIT1 VAL_FRIA_BIT1 VAL_RECIRCULACION_BIT1 BOMBA_A_BIT1 BOMBA_R_BIT1

Bit 2
VAL_CALIENTE_BIT2 VAL_FRIA_BIT2 VAL_RECIRCULACION_BIT2 BOMBA_A_BIT2 BOMBA_R_BIT2

El valor de estas variables puede modificarse desde la pantalla de la aplicacin SCADA siempre que las salidas no se encuentren bloqueadas. En determinados estados, o ante la presencia o ausencia de alguna alarma, estos valores podrn ser modificados por el propio autmata. Por ejemplo, si el proceso se encuentra en el estado de emergencia, todas las salidas se codificarn como BLQD, si se pasa al estado manual, todas las variables pasarn a MAN, etc.

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

Pag.28

En el caso de las variables analgicas (las vlvulas), es necesario crear dos variables ms, en las que se almacenen los valores dictados respectivamente por VIJEO y por MATLAB: Salida Vlvula de agua caliente Vlvula de agua fra Vlvula de recirculacin VIJEO
VAL_CALIENTE_VIJEO VAL_FRIA_VIJEO VAL_RECIRCULACION_VIJEO

MATLAB
VAL_CALIENTE_MAT VAL_FRIA_MAT VAL_RECIRCULACION_MAT

Cada una de estas dos aplicaciones podr modificar el valor de su variable asociada, pero no la variable final de salida. El trabajo de la seccin 15 es asociar a la variable de salida el valor de una de las anteriores (o ninguna) segn su configuracin. As pues, si la vlvula de agua caliente (por ejemplo) est configurada como MAN, en la seccin 15, el valor de VAL_CALIENTE_VIJEO se copiar sobre val_caliente, que una vez escalada en la seccin 17 se enviar a la vlvula de agua caliente. De forma similar, cuando la vlvula est configurada como MAT, ser VAL_CALIENTE_MAT la que se copie sobre val_caliente.

Fig. 3.14: Seleccin de salida para la vlvula de agua caliente.

En caso de que la salida se configure como AUTO, ser el mismo algoritmo seleccionado el que modifique la variable val_caliente. Por ltimo, si la salida se encuentra bloqueada, ser la seccin que la bloque la que seleccione un valor para esta variable (por lo general 0). Lo mismo se repite con las otras dos vlvulas. Para el control de las bombas, las variables intermedias sern de tipo EBOOL en lugar de analgicas, y los resultados se enviarn directamente a las bombas (ya que las variables binarias no se escalan), pero el procedimiento de seleccin de salida ser el mismo: Salida Bomba de alimentacin Bomba de recirculacin VIJEO BOMBA_ALIM_VIJEO BOMBA_RECIR_VIJEO MATLAB BOMBA_ALIM_MAT BOMBA_RECIR_MAT

En la siguiente figura se observa el caso de la bomba de alimentacin. El de la bomba de recirculacin es idntico.

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

Pag.29

Fig. 3.14: Seleccin de salida para la bomba de alimentacin.

El control de salida de las resistencias es similar al de las bombas, pero en este caso hay que tener en cuenta tambin factores como las alarmas de temperatura (por las que deben desconectarse las resistencias) y la posibilidad de modulacin por ancho de pulsos (PWM). Al igual que con las bombas, existen variables binarias con las rdenes de VIJEO y de MATLAB: Salida Resistencia del depsito Resistencia del grupo caliente VIJEO RESISTENCIA_VIJEO TERMO_VIJEO MATLAB RESISTENCIA_MAT TERMO_MAT

La resistencia del grupo caliente3 debe ser desconectada si se activa la seal de alarma del termostato (AA_alarma_termostato), pero mientras esta seal no est activa, seguir cumpliendo con su configuracin de MAN, MAT, AUTO o BLQD.

Fig. 3.15: Seleccin de salida para la resistencia del grupo caliente.

Para la resistencia del depsito, ante la posibilidad de emplear una modulacin PWM, se hacen necesarias ms opciones de configuracin, por lo que se aade un tercer bit: Bit 1 RESISTENCIA_BIT1 Bit 2 RESISTENCIA_BIT2 Bit 3 RESISTENCIA_BIT3

El tercer bit habilita o no la modulacin PWM:


3

Como ya se mencion en la seccin de escalado, esta resistencia puede autorregularse en funcin del termostato. En caso de estar autorregulada, se configurar como BLQD y se inhabilitar la alarma. Para esto debe marcarse la casilla Forzar TERMO en la pantalla de operador.

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

Pag.30

Bit 1 Bit 2 Bit 3 Abreviatura Origen del control MAT PWM PWM con parmetros escogidos desde MATLAB 1 1 1 MAT Todo-Nada controlado desde MATLAB 1 1 0 MAN PWM PWM con parmetros escogidos desde VIJEO 1 0 1 MAN Todo-Nada controlado desde VIJEO 1 0 0 AUTO PWM Lazo de control interno con PWM 0 1 1 AUTO Control interno del tipo Todo-Nada 0 1 0 BLQD Bloqueado 0 0 0/1 Al igual que ocurra con la resistencia del grupo caliente, existe una alarma que prohbe el uso de la resistencia del depsito (AA_alarma_nivel_res). En este caso la alarma se activa cuando el nivel de agua del depsito no cubre la resistencia. Si no hay modulacin PWM, la seleccin de salida es similar a la de la resistencia del grupo caliente: Si, por el contrario, s hay modulacin por ancho de pulsos, se pondr a 1 la variable PWM_RES_Conf (confirmacin de PWM en la resistencia). Siempre que esta variable est a 1, se ejecuta la seccin 16: PWM_Resistencia. Cuando la resistencia se encuentre en el modo AUTO PWM, ser la seccin del algoritmo correspondiente la que active o desactive la variable PWM_RES_Conf.

Fig. 3.16: Seleccin de salida para la resistencia del depsito de trabajo.

Una vez confirmado que se est modulando con la resistencia, el siguiente paso es obtener el tiempo de encendido. Al igual que ocurra con las vlvulas, esta variable debe obtenerse de MATLAB, de VIJEO o de un algoritmo propio. Segn el caso, se escoger una u otra. Variable entera
PWM_RESISTENCIA

VIJEO
PWM_RESISTENCIA_VIJEO

MATLAB
PWM_RESISTENCIA_MAT

Es necesario recalcar que la variable entera PWM_RESISTENCIA representa el tiempo de encendido de la resistencia como una fraccin del periodo. Esta variable almacena el valor de esta fraccin en tanto por mil, mientras que las variables flotantes PWM_RESISTENCIA_VIJEO y PWM_RESISTENCIA_MAT lo hacen en tanto por ciento. As pues ser necesario multiplicar las variables flotantes por 10 y pasarlas a enteros.

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

Pag.31

Fig. 3.17: Tiempo de encendido de la modulacin PWM.

Conocido el tiempo de encendido, slo falta aplicar la modulacin. Para ello se emplea el mdulo PWM_INT. INP es una variable entera con la fraccin de tiempo de encendido en tanto por mil (PWM_RESISTENCIA). PW_O es la salida binaria del mdulo, que debe conectarse directamente a la variable del dispositivo (en este caso, a la resistencia). PARA es una tabla de 5 enteros en los que el primero contiene el periodo de modulacin en centsimas de segundo. Este periodo debe ser un mltiplo entero de la tarea maestra. Se ha escogido un periodo de la tarea maestra de 10ms. El periodo de la modulacin ser de 1 segundo, con lo que la resolucin mxima ser del 1%. A pesar de ello, en VIJEO y en MATLAB se aceptar una precisin del uno por mil por si fuera posible bajar el periodo de la tarea maestra.

Fig. 3.18: Uso del bloque PWM_INT.

3.6 Estados y transiciones


Mquina de estados
El funcionamiento del autmata se rige por una mquina de estado. Existen 5 estados posibles en los que puede encontrarse el autmata siempre que el programa est

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

Pag.32

en ejecucin. Estos estados son: Listo, Manual, Automtico en Parada, Automtico en Marcha y Emergencia. A continuacin se describe el comportamiento del autmata en cada estado. Listo: ste es el estado de inicio, y tambin aquel al que se vuelve al cambiar entre manual y automtico o al salir del estado de emergencia. Mientras el sistema est Listo, las bombas las resistencias permanecen paradas y las vlvulas se mantienen cerradas. Desde el estado Listo se puede pasar a Manual o a Automtico en Parada. Manual: En el estado manual todas las variables de salida (bombas, vlvulas y resistencias) pueden ser modificadas desde la pantalla de Vijeo Citect. No se pueden iniciar ningn algoritmo de control propio del programa, ni tampoco modificar las variables desde MATLAB. Desde el estado manual slo se puede volver al estado Listo. Automtico en Parada: Este estado es parecido al Manual en lo que respecta a los algoritmos de control propios del autmata (que se mantienen parados). Una vez en este estado se puede escoger el programa que controla cada variable de salida. Cada vlvula, bomba y resistencia puede controlarse desde la pantalla de Vijeo Citect, desde MATLAB o desde un lazo automtico de control (ver 3.5 seleccin de salida). Adems, se puede escoger cul de los algoritmos de control se utilizar al pasar a marcha. ste es el nico estado desde el que se pueden configurar los PIDs para los algoritmos de control. De este estado se puede volver a Listo o se puede pasar a Automtico en Marcha. Los algoritmos de control no se pondrn en marcha hasta que se pase a Automtico en Marcha, pero las salidas configuradas como MAN o MAT pueden modificarse desde Vijeo o desde MATLAB4. Automtico en Marcha: Al llegar a este estado se activan los PIDs y dems algoritmos de control de salida. Las variables que estn en configuradas para ello, se pueden seguir controlando desde MATLAB o desde la aplicacin SCADA. Cuando el usuario lo considere oportuno, puede volver al estado Automtico en Parada, pero no se puede volver directamente a Listo hasta detener el algoritmo de control. Emergencia: Este ltimo estado se activa cuando se da cualquier condicin de alarma que requiera parar la planta o ejecutar una rutina de emergencia. Cuando la condicin de alarma deje de darse, se indicar en la pantalla de Vijeo Citect y el usuario podr volver al modo Listo. Mientras haya alguna condicin de alarma que active el estado de emergencia, el autmata ignorar la orden de volver al modo Listo. El usuario puede activar este estado poniendo a 1 la variable Pulsador_Emergencia. Una vez hecho esto, la variable debe ponerse a 0 antes de intentar volver al modo Listo. La variable Pulsador_Emergencia acta como la seta o botn de pnico de otros dispositivos, forzando a que ste se pare inmediatamente. En el PLC no existe como tal un botn de emergencia,
4

Aunque la programacin del autmata permite la modificacin de una variable desde MATLAB en este estado, la interfaz grfica programada en MATLAB no har modificaciones en las bombas, vlvulas y resistencias hasta que se pase a Automtico en Marcha. S es posible modificar el estado de estos dispositivos de forma manual desde la pantalla de comando de MATLAB.

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

Pag.33

pero en todas las pantallas de Vijeo Citect aparecer el smbolo del pulsador con la misma funcin. Para controlar los cambios entre estos 5 estados se utilizan dos secciones consecutivas. La primera se denomina Transiciones, y est programada en lenguaje de contactos. La segunda recibe el nombre de GuiaGemma, y est programada en grafcet. En GuiaGemma se ha programado la red de Petri asociada a la Gua Gemma de la planta. Cada lugar corresponde con un estado y tiene asociada una variable, y de la misma forma cada transicin tiene asociada una variable. Todas estas variables se exportan a Vijeo para que el usuario pueda conocer el estado actual y escoger el siguiente. El procedimiento para cambiar entre estados distintos del de emergencia es el siguiente: Primero la aplicacin SCADA pone a 1 la variable asociada a la transicin correspondiente (ver figura), una vez que el cambio se ha hecho efectivo la seccin Transiciones pone a 0 la misma variable. De esta manera se evita que el usuario deje una transicin a 1 por descuido.

Fig. 3.19: Grafcet de la Gua Gemma..

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

Pag.34

La seccin Transiciones, por lo tanto, debe poner a 0 el valor de cualquier transicin que no parta del lugar asociado al estado actual. Por ejemplo: si estamos en el estado Listo, deben ponerse a 0 las variables Cond_Emergencia_2, Boton_Modo y Boton_Auto_Marcha, pero deben dejarse libres (para que el usuario las modifique) las variables Cond_Manual y Cond_Auto. En la siguiente tabla se muestran las variables que se deben modificar en cada estado: Emergencia Cond_Emergencia Cond_Emergencia_2 Cond_Manual Cond_Auto Boton_Modo Boton_Auto_Marcha Libre Libre 0 0 Libre 0 Listo Libre 0 Libre Libre 0 0 Manual Libre Libre 0 0 Libre 0 A. Parada Libre Libre 0 0 Libre Libre A. Marcha Libre Libre 0 0 0 Libre

Fig. 3.20: Desactivacin de las transiciones.

La seccin Transiciones tambin se usa para la deteccin de alarmas, por lo que debera ejecutarse antes de la seccin GuiaGemma para as asegurar que se pasa al estado de emergencia en el mismo ciclo en que se detecta.

Deteccin de alarmas
La seccin transiciones tambin debe identificar las situaciones de emergencias y gestionar la variable Cond_Emergencia. Para ello, adems de las entradas asociadas al disparo de las protecciones y de la marca Pulsador_Emergencia, se comprueban diversas alarmas que requieren ejecutar alguna subrutina despus de entrar en el estado Emergencia. Ms informacin en 3.6 Procedimientos en caso de emergencia.

Acciones asociadas a los estados


Hay ciertas acciones que deben llevarse a cabo siempre que se est en determinados estados. En general estas acciones se limitan a restablecer los permisos de uso de las seales de salida, es decir, a permitir a Vijeo o a MATLAB usar estas

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

Pag.35

variables. Sin embargo, las acciones propias del estado de emergencia son bastante ms diversas, ya que en la seccin Transiciones se definen varias formas de llegar a este estado. Cada estado tiene asociada una seccin (salvo en el caso de Automtico en Parada, que tiene asociadas dos secciones), que lleva a cabo los cambios pertinentes. Las secciones asociadas a estos estados pueden colocarse en cualquier orden entre ellas (ya que nunca se ejecutan a la vez) pero se aconseja colocarlas despus de la seccin GuiaGemma para que sus acciones asociadas se ejecuten lo antes posible. Las acciones propias de cada estado son las siguientes: x Listo: Este estado representa la parada del sistema en el estado inicial, por lo que debe asegurarse que todos los dispositivos de salida (bombas, vlvulas y resistencias) se encuentren en un estado conocido. Para ello, se configuran todas las salidas como BLQD y se les asigna un valor de 0. Para las bombas y resistencias esto significa que estn desconectadas, mientras que para las vlvulas indica que estn cerradas a tope. Manual: En este estado todas las salidas deben ser modificables desde la aplicacin SCADA, por lo que lo nico que debe hacerse es configurarlas como MAN. Hay dos excepciones que corresponden a las resistencias. Si el nivel de agua del depsito no cubre totalmente la resistencia del mismo, sta se quedar bloqueada. De igual manera, si salta el termostato del grupo caliente (o si se ha marcado la casilla Forzar TERMO), la resistencia de ste grupo tambin se quedar bloqueada. Automtico en Parada: Las acciones de este estado son algo ms complejas que las anteriores. En primer lugar, se paran las bombas que se hayan dejado en AUTO, ya que ningn algoritmo est en funcionamiento. Lo mismo ocurre con la resistencia del depsito, aunque no con la del grupo caliente. En segundo lugar se actualizan los parmetros de los PIDs. Esta operacin consiste en recibir o enviar a Vijeo los parmetros actuales de estos mdulos, para lo cual se usa una marca auxiliar: PidConfig. Si esta marca se encuentra a 1, los valores pasan de la pantalla del SCADA al PLC, mientras que si est a 0, se envan del PLC al SCADA. La misma operacin se repite con cada parmetro de cada PID, transmitiendo un total de 31 variables. En tercer lugar, se configura como MAN cualquier salida que estuviera configurada como BLQD. Al igual que en el modo manual, las resistencias pueden dejarse bloqueadas si hay alarma. En este caso, una salida que se configure como AUTO o MAT se mantendr como tal. Por ltimo se comprueba si hay dos o ms algoritmos seleccionados simultneamente y, en caso de que los haya, se selecciona uno solo. Al haber tantas acciones previstas para este estado, se necesitan 2 secciones en lugar de una sola. Automtico en Marcha: Como en el estado anterior, cualquier salida configurada como BLQD (excepto las resistencias) se pasa a MAN. Tambin hay que garantizar que no se activa ms de un algoritmo. Si se detectan 2 ms algoritmos activos, se desactivan todos menos uno, ya que no hacerlo causara interferencias entre ellos. En este estado no se puede recibir la configuracin de los PIDs (puesto que ya estn en marcha) de modo que la variable PidConfig se pone a 0. An as, no se podrn recibir desde Vijeo los parmetros de los PIDs. Por ltimo, si no hay activo ningn algoritmo, y an as se han

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

Pag.36

configurado las bombas o la resistencia del depsito como AUTO (o AUTO PWM), estos dispositivos se paran. x Emergencia: En el estado de emergencia todas las salidas se bloquean y todos los algoritmos se detienen. A continuacin se trata la alarma correspondiente. Ver 3.6 Procedimientos en caso de emergencia para ms detalle.

3.7 Procedimientos en caso de emergencia


A lo largo de la ejecucin del programa pueden darse diversos problemas o pueden alcanzarse situaciones peligrosas. Para todos los casos conocidos existe una rutina en dos etapas: Detectar el fallo (alarma) y Eliminarlo (procedimiento de emergencia). La deteccin se lleva a cabo en la seccin 3, Transiciones, mientras que el procedimiento de emergencia se lleva a acabo en la seccin 5, EMERGENCIA.

Alarmas y prioridades
En la planta se prevn las siguientes situaciones que se consideran motivo de alarma: 1. Salto en las protecciones: En el cuadro de control existen varios dispositivos de proteccin. Si cualquiera de ellos corta la corriente, la planta debe pararse inmediatamente. A estos efectos el smbolo del pulsador de emergencia (en las pantallas de Vijeo Citect) se considera una proteccin ms. 2. Temperatura excesiva: La temperatura y la presin del depsito de trabajo no deben ser superiores a los valores mximos que los sensores pueden medir. An cuando el depsito aguantara varios grados ms, y aunque los sensores no se estropearan, trabajar con temperaturas o presiones desconocidas es un peligro que debe evitarse. Por este motivo, cuando se alcance el mximo valor de temperatura o de presin, se iniciar una rutina de refrigeracin. 3. Bombas y caudales: En ocasiones, por descuido, el operario podra poner en marcha una bomba sin abrir la vlvula correspondiente. Para el caso de la bomba de recirculacin, esta situacin se puede detectar. En caso de que esto ocurra la bomba debe pararse. Tambin deben pararse las bombas si los caudales sobrepasan los valores mximos que los caudalmetros pueden detectar. Esto ltimo es poco probable si el caudalmetro se ha seleccionado bien, y se podr considerar como un fallo en el propio caudalmetro o en el escalado. 4. Nivel: El depsito de trabajo tiene una altura de 1 metro y puede almacenar hasta 30 litros5 de agua. Sin embargo slo es posible medir la el nivel de agua cuando ste est a una altura de entre 10 y 90 centmetros desde la base. Si el nivel del depsito baja de 10 cm, se deber activar una rutina de llenado, y si sube de 90 cm, se deber parar la planta e indicar al operario que vace un poco el depsito.
5

Valor aproximado.

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

Pag.37

5. Resistencias: La resistencia del depsito no debe ponerse en marcha si el nivel de agua del mismo no la cubre completamente. De forma similar, la resistencia del grupo caliente no debe encenderse mientras el termostato indique que la temperatura del tanque es muy alta6. Estas alarmas no requieren parar los ensayos que se estn realizando sobre la planta. Bastar con bloquear las variables. En el caso de que dos o ms alarmas se dieran simultneamente, se atender a la ms prioritaria (ignorando las otras). Una vez que la alarma ms prioritaria se haya neutralizado, se comprobar si persiste alguna otra alarma y se proceder de igual manera. El orden de prioridad es el expuesto anteriormente: Protecciones > Temperaturas > Bombas y caudales > Nivel > Resistencias.

Protecciones
La deteccin de un fallo en las protecciones se realiza a partir de las variables digitales de disparo: disp_bomba_A, disp_bomba_R, disp_grupo_frio, disp_grupo_caliente y disp_resistencia. El pulsador de emergencia realiza la misma accin que cualquiera de estas alarmas. Puesto que todas las variables de disparo son activas a nivel bajo, se considera que hay alarma cuando alguna de estas variables est a 0:

Fig. 3.21: Situaciones que provocan el estado de emergencia.

Las alarmas del termostato y de la resistencia del grupo caliente no se tendrn en cuenta si el grupo se autorregula. En este caso, bastar con marcar la casilla Forzar TERMO en la pantalla de operador.

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

Pag.38

Fig. 3.22: Procedimiento en caso de disparo de protecciones (primera parte).

En caso de alarma debido a las protecciones, se pararn todas las bombas y resistencias, y se cerrarn las vlvulas a tope. Adems se activar la seal correspondiente al pulsador de emergencia (as se asegura la permanencia en el estado de emergencia cuando se rearmen las protecciones). Puesto que durante esta parada el usuario podra abrir la vlvula de salida del depsito, tambin ser necesario comprobar si el nivel del depsito baja lo bastante como para desactivar una alarma de nivel que se hubiera dado con anterioridad. No es necesario comprobar aqu si el nivel de agua baja del mnimo, ya que esto sigue detectndose en la seccin de transiciones.

Fig. 3.22: Procedimiento en caso de disparo de protecciones (segunda parte) .

Una vez rearmadas las protecciones, se saldr de este estado desactivando el pulsador de emergencia y activando la condicin de vuelta al estado Listo.

Temperaturas

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

Pag.39

La deteccin de una temperatura excesiva se hace en la seccin Transiciones comparando la temperatura del depsito con una temperatura mxima de 80 C. Por seguridad, tambin se comprueba si la presin llega a 5 bares.

Fig. 3.23: Comprobacin de temperatura y presin del depsito de trabajo.

Una vez que se ha dado la alarma de temperatura, se procede a enfriar el tanque. En primer lugar se desconecta la resistencia del depsito. A continuacin se cierran las vlvulas de entrada de agua fra y caliente (para que no entre ms agua en el tanque, que podra producir ms vapor de agua) y se abre al mximo la vlvula de agua de recirculacin. Se compara la presin y la temperatura con unos niveles de seguridad a los que se pretende llegar (definidos como 4 bar y 50C) y se mantienen ambas bombas encendidas hasta que se alcance esa situacin. Una vez que se llega a 50C ( menos) y 4 bares ( menos), se paran las bombas. Una vez comprobado que las bombas estn paradas y que la presin y temperatura del depsito son aceptables, se desactiva la alarma.

Fig. 3.24: Procedimiento en caso de temperatura o presin excesiva en el depsito.

Cuando la alarma se haya desactivado, el usuario deber dar la seal de pasar al modo Listo desde la pantalla de Vijeo Citect para salir del estado de emergencia. Si durante el enfriamiento del depsito se produjera un fallo en las protecciones (o si el usuario pulsara el botn de pnico) se suspendera esta secuencia de enfriamiento. Una vez que las protecciones se hubieran rearmado, se reanudara el enfriamiento del depsito (incluso cuando ste ya no se encuentre a 80C 5 bares). Si

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

Pag.40

por algn motivo fuera necesario abortar el algoritmo de enfriamiento (bajo la responsabilidad del usuario), se deber hacer lo siguiente. 1. Pulsar el botn de pnico en la aplicacin SCADA. 2. Entrar en la pantalla de operador de Unity Pro. 3. Desmarcar la casilla Modo estndar (este paso no es necesario durante una simulacin). 4. Bajar los controles analgicos de P Depsito y T Depsito hasta unos valores inferiores a 4 bar y 50 C respectivamente. 5. Volver a la aplicacin SCADA y pulsar el botn de rearme de protecciones. 6. Esperar aproximadamente 1 segundo hasta que aparezca el botn de pasar al estado Listo, pero no pasar a este estado todava. 7. Volver a la pantalla de operador de Unity Pro y marcar la casilla Modo estndar (este paso debe omitirse durante una simulacin). 8. Volver una vez ms a la aplicacin SCADA y pasar al estado Listo.

Bombas y caudales
La deteccin de caudales excesivos se hace comparando los caudales con los mximos valores posibles que los caudalmetros pueden medir. Si alguno de los 4 caudales (caliente, fro, de salida o de recirculacin) llega al mximo, se da la alarma de caudales.

Fig. 3.25: Deteccin de caudales excesivos.

Para la bomba de recirculacin, se considera que hay una alarma si la bomba permanece encendida durante 1 segundo mientras la apertura de la vlvula de recirculacin es menor del 1%.

Fig. 3.26: Comprobacin de bomba de recirculacin.

En ambos casos se pararn todas las bombas y resistencias, y se cerrarn las tres vlvulas automticas:

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

Pag.41

Fig. 3.27: Procedimiento en caso de caudales excesivos o bomba bloqueada

Las alarmas se desactivarn cuando todas las bombas y resistencias se hayan cerrado adems se confirme que el caudal de agua de salida es menor que el mximo posible. No es necesario comprobar los otros tres caudales, ya que las vlvulas se han cerrado. Si la alarma persistiera durante varios ciclos del programa, estando cerrada la vlvula de salida de agua del depsito (o sabiendo que este caudal es normal) se podr asumir que los caudalmetros no estn bien configurados. IMPORTANTE: Con las seales que llegan al autmata no es posible saber si la bomba de alimentacin est bloqueada o no. Por seguridad, se aconseja mantener las vlvulas V1, V2 y V3 abiertas.

Nivel
El nivel de agua del depsito debe encontrarse entre 60 y 90cm para un funcionamiento normal. Si el nivel de agua baja de 60cm, la resistencia del depsito debe pararse (ya que el agua no la cubre completamente). Si el nivel se sale del rango medible (10 a 90cm) debe corregirse este nivel. Para comprobar en qu rango se encuentra el nivel se usan comparaciones en la seccin de transiciones.

Fig. 3.28: Comprobacin del nivel del depsito.

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

Pag.42

En caso de que el nivel sea mayor al mximo o menor al mnimo, se declarar el estado de emergencia, no as cuando el nivel no sea suficiente para cubrir la resistencia. Dependiendo de si el nivel es muy alto o muy bajo se llevarn a cabo unas acciones u otras.

Fig. 3.29: Procedimiento en caso de nivel insuficiente (izquierda) o excesivo (derecha).

En la (imagen) se observan las acciones tomadas ante un nivel demasiado bajo (a la izquierda) o demasiado alto (a la derecha). En el primer caso se abre la vlvula de agua fra y se mantiene encendida la bomba de alimentacin hasta que el nivel sube por encima de 30cm. En el segundo caso, se deja la vlvula cerrada y se enva un mensaje al usuario para que la vlvula V6 hasta que el nivel baje de 70cm. En ambos casos, se mantienen las otras bombas, vlvulas y resistencias paradas o cerradas segn corresponda. Una vez que el nivel es aceptable, se desactiva la alarma, y se espera a que el usuario de la seal de pasar al estado Listo. Si durante el llenado o vaciado del depsito se diera otra alarma ms prioritaria (fallo en las protecciones, exceso de temperatura o bloqueo de la bomba de recirculacin), se suspender el llenado o vaciado hasta que se haya atendido a esta otra alarma. Una vez hecho esto se continuar el llenado o vaciado del depsito incluso si el nivel de agua est entre 10 y 90cm. Si por algn motivo fuera necesario abortar el algoritmo de llenado o vaciado del depsito (bajo la responsabilidad del usuario), se deber hacer lo siguiente. 1. Pulsar el botn de pnico en la aplicacin SCADA. 2. Entrar en la pantalla de operador de Unity Pro. 3. Desmarcar la casilla Modo estndar (este paso no es necesario durante una simulacin). 4. Ajustar el control analgico L Depsito a un valor entre 30 y 60 (valores superiores a 60 podran permitir el uso de la resistencia del depsito sin que el agua la cubriera totalmente). 5. Volver a la aplicacin SCADA y pulsar el botn de rearme de protecciones. 6. Esperar aproximadamente 1 segundo hasta que aparezca el botn de pasar al estado Listo, pero no pasar a este estado todava.

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

Pag.43

7. Volver a la pantalla de operador de Unity Pro y marcar la casilla Modo estndar (este paso debe omitirse durante una simulacin). 8. Volver una vez ms a la aplicacin SCADA y pasar al estado Listo.

Resistencias
Cuando se recibe la seal del termostato, se bloquea la resistencia del mismo grupo. Una vez que el termostato deja de enviar la seal, se esperan 5 minutos antes de volver desactivar la alarma. Las secciones correspondientes a los estados Manual, Automtico en Parada y Automtico en Marcha se encargan de desbloquear la resistencia cuando la alarma se desactiva. Esta alarma no fuerza al sistema a pasar al estado de Emergencia, ya que esta seal no es tanto una alarma como una manera de mantener la temperatura del agua en el grupo caliente.

Fig. 3.30: Deteccin y procedimiento en caso de disparo del termostato.

Cuando el nivel de agua es menor de 60cm, la seccin transiciones activa la alarma AA_alarma_nivel_res y bloquea la resistencia del depsito y la desconecta. Las secciones correspondientes a los estados Manual, Automtico en Parada y Automtico en Marcha se encargan de desbloquearla igual que en el caso anterior. Tampoco aqu se pasa al estado de Emergencia, pues en muchos casos ser posible seguir trabajando sin necesidad de usar la resistencia.

3.8 Algoritmos propios


Uno de los cambios principales en la programacin de la planta son los algoritmos propios del autmata. En ocasiones el usuario podra estar interesado slo en parte de la planta (como el depsito o el intercambiador de calor), pero an necesitar que otros dispositivos de la misma entren en funcionamiento. Por ejemplo: un determinado ensayo podra estar enfocado en el depsito de la planta, sin tener en cuenta las vlvulas, pero el ensayo podra requerir un cierto caudal de agua de entrada o de salida neta. En este caso el usuario podr aplicar uno de los algoritmos programados en el autmata para regular el caudal de entrada en el depsito. Para este propsito se han programado 4 algoritmos que controlan los caudales de agua fra, caliente y de recirculacin, la temperatura del depsito, su nivel, o alguna combinacin de los anteriores.

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

Pag.44

Cada algoritmo tiene asociada una seccin que se ejecuta slo cuando el algoritmo ha sido seleccionado. Se puede seleccionar el algoritmo desde el estado Automtico en Parada, pero no se llevar a cabo ninguna accin hasta que se pase a Automtico en Marcha. Las 4 secciones pueden ubicarse en cualquier posicin entre el escalado de variables de entrada y el escalado de variables de salida. Se ha preferido colocarlas despus de las secciones asociadas a los estados para asegurar que se dejan de ejecutar en el mismo ciclo en que se cambia de estado.

Caudales
ste es el algoritmo bsico, y su propsito es controlar el caudal de cada circuito de agua a partir de la vlvula asociada. Adicionalmente, tambin se puede utilizar la resistencia del depsito (con o sin modulacin PWM) para controlar la temperatura del depsito. ste es algoritmo a emplear cuando se desee mantener un caudal constante durante un ensayo o cuando se pretenda usar el caudal (y no la apertura de una vlvula) durante un ensayo. La posibilidad de mantener el depsito a una temperatura determinada (sin variar su nivel) permite tambin hacer ensayos que tengan como escenario el intercambiador de calor, ya que la temperatura de entrada de agua ser constante. Variable en AUTO Vlvula de agua caliente Vlvula de agua fra Vlvula de recirculacin Resistencia del depsito Magnitud controlada Caudal de agua caliente Caudal de agua fra Caudal del circuito de recirculacin Temperatura del depsito

El control de caudales se realiza mediante un PID para cada caudal:


Ref Caudal Vlvula Caudal

PID

Planta

Fig. 3.31: Esquema del algoritmo utilizado para cada caudal.

Se considera que los tres caudales son suficientemente independientes como para controlarse por separado, es decir, se ignoran los cambios de presin que el caudal de agua caliente pueda producir sobre el caudal de agua fra y viceversa.

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

Pag.45

Fig. 3.31: Esquema del controlador.

El bloque que se utiliza como PID es el siguiente:

PV representa la medida del proceso (en este caso el caudal actual), SP es el valor de referencia, FF permite aadir una accin de Feed Foreward, OUT es la salida del PID (en este caso la apertura de la vlvula) y PARA es una estructura de parmetros de configuracin para el PID. El resto de las entradas y salidas permiten aadir funciones extra que no se necesita utilizar en este proyecto. Para desactivarlas es necesario conectar un 1 lgico en MAN_AUTO (para desactivar el modo manual) y un 0 en TR_S (para indicar que no copie los parmetros de inicializacin).

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

Pag.46

Fig. 3.32: Conexin del bloque PIDFF (ejemplo con la vlvula de recirculacin).

Los valores para los parmetros de PARA que se han tomado han sido los siguientes: Parmetro id pv_inf pv_sup out_inf out_sup rev_dir mix_par aw_type en_rcpy kp ti td kd pv_dev bump dband gain_kp ovs_att outbias out_min Valor (Automtico) 0 mximo valor que el caudalmetro puede medir 0 (1 para la vlvula de recirculacin) 100 0 0 0 0 (A determinar por el usuario) 0 1 segn el algoritmo 1 0 1 0 0 0 (1 para la vlvula de recirculacin) Significado del valor seleccionado Identificacin de la estructura. Valores mnimo y mximo que el proceso puede tomar. Valores mnimo y mximo que la salida del PID puede tomar. Realimentacin negativa. Estructura del PID. Filtro de contencin deshabilitado. RCPY deshabilitado. Parmetros de sintonizacin: ganancia total, tiempo integral, tiempo derivativo y ganancia diferencial. Derivada de la salida o derivada del error respectivamente. Transicin bumpless desactivada. Zona muerta desactivada. Ganancia en zona muerta. Sin reduccin de desborde. Sin compensacin manual. Valores lmite mnimo y mximo que puede tomar la salida antes de compensacin

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

Pag.47

out_max outrate ff_inf ff_sup otff_inf otff_sup

100 100 0 1 0 1

manual. Mxima variacin de la salida en un ciclo Valores mximo y mnimo que pueden tomar las entrada de feed foreward. Valores escalados mximo y mnimo asociados a la entrada de feed foreward.

Para este algoritmo, puesto que las referencias en caudales son proporcionadas por el usuario, la accin derivativa se calcular a partir del valor del proceso (no a partir del error).

Fig. 3.34: Calculo de la derivada para el algoritmo.

En lo que respecta a la resistencia, existen dos maneras de utilizarla para regular la temperatura: mediante un control todo-o-nada con histresis o con una estructura PID-PWM. Se escoge una o la otra dependiendo de si se ha habilitado la funcin PWM en la seleccin de salida (ver 3.5 seleccin de salida). En el caso de control todo o nada con histresis, se acta de una u otra manera segn la temperatura T del depsito. a) T es mayor que la referencia ms el margen de error: Se para la resistencia. b) T es menor que la referencia menos el margen de error: Se pone en marcha la resistencia. c) Ninguno de los casos anteriores es cierto: No se modifica la resistencia.

Fig. 3.35: Control todo o nada con histresis.

Si por el contrario se habilita la modulacin PWM, se utilizar un bloque de PID para regular el tiempo de encendido. El bloque PWM_INT utilizado en la seleccin de salida indica que est preparado para funcionar con un bloque PID_INT que tenga por tiempo de muestreo el periodo de modulacin. Por este motivo se ha escogido el bloque

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

Pag.48

PID_INT para la resistencia (en lugar del bloque de PID completo utilizado para las vlvulas).

TAG y UNIT son entradas opcionales para indicar las unidades y el nombre del PID. PV es la salida del proceso. A diferencia del bloque anterior, este bloque slo utiliza valores enteros (por lo que ser necesaria una conversin de tipo). AUTO debe recibir un 1 lgico en formato EBOOL para funcionar de forma automtica (un 0 deja al bloque en manual). PARA es una matriz de 43 enteros (numerados de 0 a 42) con los parmetros del bloque y el espacio suficiente para que ste haga sus clculos intermedios. Los primeros valores de estos parmetros son: # 0 1 2 3 4 5 Parmetro
SP OUT_MAN KP TI TD TS

Valor Valor de referencia 0 (A determinar por el usuario) 100

Significado del valor seleccionado Valor de referencia (Set Point). Valor de salida en manual. Parmetros de sintonizacin: ganancia total (en tanto por ciento) y tiempos integral y derivativo (en dcimas de segundo). Tiempo de muestreo en centsimas de segundo. Debe coincidir con el periodo de la modulacin PWM. Salidas mxima y mnima del bloque PID. Otros parmetros (ver bajo la tabla).

6 7 8 9 10 11 12 13 14 15 16

OUT_MAX OUT_MIN CONFIG PV_SUP PV_INF PV_MMI SP_MMI

1000 0 2#1111111100000000 0 0 0 0

Valores relacionados con la interfaz hombre mquina de este bloque. Estos parmetros no se usan en esta aplicacin.

El registro Config es un nmero de 16 bits que establece la configuracin de la derivada (bit 0), el modo bumpless (bit 4) y la interfaz hombre mquina (bit 8). La derivada se hace sobre la variable del proceso cuando el bit 0 est a 0, y sobre el error

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

Pag.49

cuando est a 1. El modo bumpless se activa cuando el bit 4 est a 1 (y se desactiva en caso contrario). Por ltimo, la interfaz hombre-mquina se activa poniendo el bit 8 a 0 o se inhibe poniendo este bit a 1. En caso de activarse, se debe configurar con los enteros 9 a 16. El resto de los enteros de la tabla no deben modificarse.

Fig. 3.36: Control con PID.

Para no perder precisin, las temperaturas se envan al PID en dcimas de grado. Como puede observarse el PID recibe la temperatura del depsito y su referencia como enteros. Por ltimo, las bombas se ponen en marcha cuando los caudales solicitados son mayores que 0, no reaccionando ante cambios de apertura de vlvulas en modo manual.

Fig. 3.37: Toma de decisiones para las bombas.

Se recomienda dejar la bomba de alimentacin en manual o controlada por MATALB a no ser que las dos vlvulas de agua de entrada (fra y caliente) estn en AUTO.

Nivel
El algoritmo de control de nivel est pensado para ensayos que requieran mantener un determinado nivel de agua en el depsito de trabajo. Se incluye la posibilidad de renovacin de agua del depsito, lo que permite ensayar controladores

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

Pag.50

para mantener la temperatura de un sistema abierto (con renovacin de agua). Esta es una situacin comn en un reactor de tipo tanque. Este algoritmo es una modificacin del anterior en la que se asignan las referencias de caudal de entrada (fro y caliente) para mantener un nivel en el depsito. La estructura de control es, por lo tanto, en cascada:

Fig. 3.38: Esquema de control de nivel en cascada.

El usuario proporciona una referencia de nivel y la proporcin de agua caliente en el caudal de entrada, el primer PID genera una referencia en caudal, a la que se aade como Feed Foreward el caudal de salida. Una vez hecho esto se divide el caudal de entrada entre las entradas de agua fra y caliente segn la proporcin dada por el usuario. Por ltimo se controlan estos caudales mediante los PIDs utilizados en el algoritmo de control de caudales.

Fig. 3.39: Esquema general del algoritmo.

Los parmetros del PID de nivel son idnticos a los de caudales, excepto por los valores lmites del valor del proceso, la salida del PID y la entrada de Feed Foreward, que corresponden a respectivamente a los lmites del sensor de nivel, las sumas de los caudales mximos y mnimos de entrada, y los lmites del caudal de salida.

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

Pag.51

Fig. 3.40: Conexin del bloque PID para el control de nivel.

En caso de que una de las vlvulas de agua de entrada est en AUTO y la otra en MAN o MAT (o BLQUD), el reparto se reajustar el reparto del caudal. Por ejemplo, si la vlvula caliente est en MAN, y el caudal de agua caliente Q1, el caudal fro que se tomar como referencia ser el total menos Q1. En este caso se ignorar la referencia de proporcin.

Fig. 3.41: Proporcin de caudales de entrada.

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

Pag.52

Los bloques de PID de caudales de agua fra y caliente se mantienen sin cambios, sin embargo ahora la derivada se hace sobre el error, ya que la referencia no es fija. El control de la vlvula de recirculacin y de la resistencia del depsito se mantiene igual que en el primer algoritmo.

Fig. 3.42: Calculo de la derivada.

Nivel y Temperatura
sta es una variante del algoritmo de control de nivel en la que la proporcin de caudales fro y caliente se decide para mantener una consigna de temperatura. Este nuevo algoritmo est pensado para ensayos que requieran una entrada de agua a temperatura constante en el intercambiador de calor cuando (por algn motivo) no se pueda usar la resistencia del depsito.

Fig. 3.43 y 3.44: Esquemas del algoritmo.

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

Pag.53

En este caso el usuario proporciona la consigna de temperatura para el depsito y un PID ajusta la proporcin de caudales fro y caliente. Puesto que el caudal de entrada es variable, la ganancia de este PID se autoajusta de acuerdo con la siguiente frmula:

K0

Q L

Donde K es la ganancia del controlador, Q es el caudal total de entrada, L es el nivel de agua del depsito (que al ser cilndrico es proporcional a la masa de agua que ste contiene) y K0 es la ganancia base proporcionada por el usuario. Las unidades de litros por minuto, centmetro y grado kelvin. K0 son l mincmK A diferencia del algoritmo de nivel, ste slo puede aplicarse cuando ambas vlvulas estn configuradas como AUTO. Adems, para que el algoritmo funcione correctamente, la vlvula de salida de agua (V6) debe estar abierta, de modo que el agua del depsito se renueve constantemente. La vlvula de recirculacin, la resistencia y las bombas se regulan igual que en el algoritmo de nivel.

Temperatura
Todos los algoritmos anteriores tienen la posibilidad de mantener la temperatura del agua del depsito usando la resistencia para calentarla. Sin embargo, ninguno de ellos es capaz de enfriar el agua del depsito sin vaciarlo. Puesto que es posible que varios ensayos consecutivos necesiten utilizar un mismo volumen de agua, y que sta se encuentre a una temperatura ms fra en la situacin inicial que en la final. Si varios de estos ensayos se hacen consecutivamente, se precisar un algoritmo para enfriar el agua entre un ensayo y el siguiente. ste es el motivo por el que existe este ltimo algoritmo. Los caudales de agua fra y caliente se regulan igual que en el algoritmo de control de caudales. El caudal de agua de recirculacin, por el contrario, se calcula para mantener una consigna de temperatura en el depsito. La resistencia del depsito tambin puede usarse para alcanzar la referencia de temperatura (cuando sta es mayor que la actual). La resistencia y el circuito de recirculacin no deben emplearse simultneamente para mantener una determinada temperatura, ya que la accin de cada una cancelara (en parte) la de la otra, lo que podra dar lugar a una saturacin de una de las dos acciones de control. Para evitar que esto ocurra, se pone en marcha la bomba de recirculacin o la resistencia en funcin de la desviacin en temperatura: TRef - M Bomba en parada Resistencia encendida Sin cambios en la resistencia TRef TRef + M Sin cambios en la bomba Bomba en marcha

Resistencia apagada

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

Pag.54

TRef es la temperatura de referencia, y M es un margen de temperatura proporcionado por el usuario. De esta forma se mantiene la temperatura mediante un control con histresis.

Fig. 3.45: Esquema del algoritmo.

Cuando se regula con la resistencia, sta puede mantenerse encendida de forma fija, o con modulacin PWM (igual que en los algoritmos anteriores). En cuanto al circuito de recirculacin, la vlvula puede dejarse con una apertura fija (configurada en MAN) o regular su apertura (en AUTO). En ste ltimo caso, se utilizan dos PIDs en cascada: uno regula la temperatura devolviendo una consigna de caudal, mientras el otro regula el caudal abriendo ms o menos la vlvula. Este segundo PID es el mismo que se utiliza para el control de caudales.

Fig. 3.46: Esquema del control de temperatura mediante el circuito de recirculacin.

Puesto que la consigna de caudal es ahora variable, en el PID de caudal se deber hacer la derivada en el error, no en la variable del proceso.

Fig. 3.47: Clculo de las derivadas en el altorirmo.