Subido por Franco Terrades

Programacion del automata

Anuncio
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
3. Programación del autómata
3.1 Especificaciones del PLC .........................................................Pag. 15
3.2 Configuración en Unity ............................................................Pag. 15
3.3 Vista general del programa.......................................................Pag. 21
3.4 Escalado....................................................................................Pag. 22
3.5 Selección 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
Pag.14
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
3.1 Especificaciones del PLC
Para el control de la planta se utiliza un PLC M340 de Modicom. El autómata
está formado por módulos o tarjetas con diversas funciones: entradas, salidas,
comunicación, CPU… Estos módulos se distribuyen a lo largo del bastidor, que cuenta
con su fuente de alimentación. Es posible (aunque no es necesario para este proyecto)
utilizar más de un bastidor, conectándolos través de sus módulos de ampliación. Cada
bastidor incluye su propia fuente de alimentación, pero sólo el principal necesitará el
módulo de la CPU. Esta estructura de bastidor y tarjetas (tipo armario) hace del
autómata un elemento compacto y fácil de alojar en el cuadro de mandos.
Para la presente aplicación se requieren como mínimo los siguientes módulos en
el bastidor:
¾
¾
¾
¾
¾
¾
CPU con conexión a red
Módulo para, al menos, 9 entradas digitales
Módulo para, al menos, 4 salidas digitales a relés
Módulo para, al menos, 5 entradas analógicas de termopares tipo J
Módulo para, al menos, 6 entradas analógicas de propósito general
Módulo para, al menos, 3 salidas analógicas de propósito general.
El autómata del que se dispone en el laboratorio cuenta con un bastidor BMX
XBP de 12 ranuras con las siguientes tarjetas (por orden numérico):
0. BMX P34 2020 que alberga la CPU, y permite comunicaciones vía Modbus, o
por conexión Ethernet TCPIP.
1. BMX DDI 3202 K para 32 entradas digitales a 24V de tensión continua con
positivo común.
2. BMX DDO 3202 K para 32 salidas digitales a transistor con negativo común.
3. BMX ART 0414 para 4 entradas TC/RTD con separación de potencial
compatible con termopares tipo J.
4. BMX ART 0414 igual al módulo número 3.
5. BMX AMI 0410 para 4 entradas analógicas U/I con separación de potencial de
alta velocidad.
6. BMX AMI 0410 igual al módulo número 5.
7. BMX AMO 0210 para 2 salidas analógicas U/I con separación de potencial.
8. BMX AMO 0210 igual al módulo número 7.
9. Libre
10. Libre
11. Libre
La fuente de alimentación del bastidor es de la gama BMX CPS 3500, diseñada
para alimentar todos los módulos del bastidor.
3.2 Configuración de Unity
Para la programación del autómata se utiliza Unity Pro XL, un software de
programación diseñado por Schneider Electric compatible con varios tipos de PLCs.
Pag.15
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
Unity Pro permite usar hasta 5 lenguajes de programación: 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 configuración
de Unity, indicándole qué tipo de PLC estamos usando, cómo 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: Configuración 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
Configuración
Variables y tipos de datos
Movimiento
Comunicación
El propio programa
Tablas de animación y
pantallas de operación
9 Documentación
El siguiente paso es indicarle
al programa qué módulos de entrada
y salida tiene instalado el PLC. Para
ello se debe desplegar toda la
carpeta de configuración, 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
sólo 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”.
Pag.16
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
Fuente de alimentación
Bastidor del PLC
Fig. 3.3: Configuración del bastidor del PLC.
También es necesario cambiar el tipo de fuente de alimentación. Esto se
consigue haciendo clic con el botón derecho sobre la fuente y seleccionando “Eliminar
módulo”. A continuación, 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 módulos en las ranuras de la
1 a la 8 para indicar el módulo que está instalado en cada una. En la ventana que
aparecerá en cada caso, se escoge según la siguiente tabla:
Módulo
1
Tipo
Binario
Referencia
BMX DDI 3202K
2
Binario
BMX DDO 3202K
3-4
Analógico
BMX ART 0414
5-6
Analógico
BMX AMI 0410
7-8
Analógico
BMX AMO 0210
Comentario
32 entradas digitales de 24 VCC común
negativo
32 salidas digitales transistor común
negativo
4 entradas TC/RTD con separación de
potencial
4 entradas analógicas U/I con separación
de potencial de alta velocidad
2 salidas analógicas U/I con separación de
potencial
En el caso de los módulos 3 y 4, además es necesario indicar el tipo de termopar
utilizado. Esto se hace seleccionando los módulos (doble clic sobre ellos) y
seleccionando “Termo J” en el rango.
Pag.17
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
Fig. 3.4: Selección de módulos 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 botón
derecho sobre redes y se selecciona la opción “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
Pag.18
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
pertinentes. En el caso de la red del laboratorio, sólo hay que cambiar la IP y la máscara
de subred.
La dirección IP
asociada al autómata es 843-54-82. La máscara de
subred que debe emplearse
es 255-255-255-0.
Para terminar con la
configuración del autómata,
aún deben que asociarse las
direcciones de lectura y
escritura con las variables
correspondientes a sensores
y actuadores. Por ejemplo, si
un termopar del módulo 3
mide la temperatura del
agua caliente y su dirección
Fig. 3.6: Configuración de la red.
es %IW0.3.0, se deberá
añadir una variable conla dirección %IW0.3.0 llamada “Temperatura_agua_caliente” o
con un nombre similar y en cualquier caso fácil 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 dirección se asigna una dirección 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 añadir un valor inicial para esa variable, y la columna “comentario”, cualquier
comentario de interés. Las variables de entrada y salida para este proyecto son:
Pag.19
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
Nombre
Tipo
Dirección
RESISTENCIA_DISPARO
EBOOL
%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
EBOOL
%I0.1.6
TERMO_TERMOS
EBOOL
%I0.1.8
BOMBA_RECIR_MARCHA
EBOOL
%Q0.2.0
BOMBA_ALIM_MARCHA
EBOOL
%Q0.2.1
RESISTENCIA_MARCHA
EBOOL
%Q0.2.14
TERMO_MARCHA
EBOOL
%Q0.2.15
TEM_CIRCUITO_AGUA_CALIENTE
INT
%IW0.3.0
TEM_CIRCUITO_AGUA_FRIA
INT
%IW0.3.1
TEM_CIRCUITO_SALIDA_DEPOSITO
INT
%IW0.3.2
TEM_RECIRCULACION
INT
%IW0.3.3
TEM_INTERIOR_DEPOSITO
INT
%IW0.4.0
CAUDAL_CIRCUITO_AGUA_CALIENTE
INT
%IW0.5.0
CAUDAL_CIRCUITO_AGUA_FRIA
INT
%IW0.5.1
CAUDAL_CIRCUITO_SALIDA_DEPOSITO
INT
%IW0.5.2
Comentario
Disparo de las
protecciones de la
resistencia
Disparo de las
protecciones del grupo
caliente
Disparo de las
protecciones del grupo
frío
Disparo de las
protecciones de la
bomba de recirculación
Confirmación de
marcha de la bomba de
recirculación
Disparo de las
protecciones de la
bomba de alimentación
Confirmación de
marcha de la bomba de
alimentación
Termostato del grupo
caliente
Orden de marcha de la
bomba de recirculación
Orden de marcha de la
bomba de alimentación
Orden de marcha de la
resistencia del depósito
Orden de marcha del
grupo caliente
Temperatura del agua
del circuito caliente
Temperatura del agua
del circuito frío
Temperatura del agua
del circuito de salida
Temperatura del agua
del circuito de
recirculación
Temperatura del agua
del depósito
Caudal de agua caliente
de entrada
Caudal de agua fría de
entrada
Caudal de agua de
salida
Pag.20
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
NIVEL_AGUA_INTERIOR_DEPOSITO
INT
%IW0.5.3
PRESION_INTERIOR_DEPOSITO
INT
%IW0.6.0
CAUDAL_CIRCUITO_RECIRCULACION
INT
%IW0.6.3
VAL_AGUA_CALIENTE
INT
%Q0.7.0
VAL_AGUA_FRIA
INT
%Q0.7.1
VAL_CIRCUITO_RECIRCULACION
INT
%Q0.8.0
Nivel de agua del
depósito
Presión del interior del
depósito
Caudal de agua de
recirculación
Apertura de la válvula
de agua caliente
Apertura de la válvula
de agua fría
Apertura de la válvula
de recirculación
Esta configuración es propia de la planta, y será la misma sea cual sea el
programa. Por lo tanto en caso de reprogramación del autómata, se puede copiar la
configuración de esta aplicación o de cualquier otra que se haya usado en la misma
planta.
3.3 Vista general del programa
A continuación se describe la programación del autómata, detallando las tareas
que éste llevará a cabo y la forma en que lo hará. En el anejo 1 se adjunta todo el código
del programa.
El programa del autómata 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 demás están en lenguaje de contactos
(LD). La tarea maestra se repite periódicamente cada 10ms, aunque no todas las
secciones se ejecutan en todos los ciclos. Las secciones se ejecutan en el orden que se
ha considerado más lógico. Aunque es posible alterar este orden, hacerlo podría
provocar comportamientos no deseados al cambiar el estado o la configuración 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
2
Este comportamiento estará limitado a los 2 ó 3 ciclo inmediatamente posteriores al cambio de estado o
de configuración.
Pag.21
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
14. Control_nivel_temperatura
15. Seleccion_de_salida
16. PWM_Resistencia
17. Escalado_var_salida
A lo largo de la tarea maestra, el autómata 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
relación lineal entre las magnitudes reales y las variables de entrada y salida. Estas
secciones también permiten hacer una distinción entre las simulaciones y el
funcionamiento real de la aplicación.
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, Automático en Parada, Automático en
Marcha y Emergencia. El autómata se inicia siempre en el estado “Listo”, lo que lleva
todas las bombas, válvulas y resistencias a un estado conocido. A lo largo de la
ejecución del programa, el usuario podrá cambiar a los modos “Manual”, “Automático
en Parada” y “Automático 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 específicas de cada modo de funcionamiento.
Las secciones 11 a 14 ejecutan distintos algoritmos de control cuando se ha
seleccionado el modo automático. Nunca se ejecuta más de una en el mismo ciclo de la
tarea. En función de cómo 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, válvulas y resistencias. El autómata registra 3 variables para cada
actuador: una para MATLAB otra para la aplicación 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 depósito) que permiten escoger cuál de los
tres métodos se utilizará. En el caso de la resistencia del depósito, se puede escoger
también controlar con una modulación por ancho de pulsos (PWM).
3.4 Escalado
Escalado de variables analógicas
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 división en dos secciones está en la primera ejecución de la tarea maestra: Si todo el
escalado se hace al empezar el programa, estaremos dando una salida indeterminada
Pag.22
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
durante la primera ejecución 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 contarán con la información necesaria para ejecutarse durante el primer
ciclo. Así pues las variables de entrada se interpretan en la primera sección
(“Escalado_var_entrada”) y las de salida, en la última (“Escalado_var_salida”).
El escalado de variables analógicas 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), dónde se va a guardar el resultado (OUT) y
cuál es la relación entre ambas (PARA). Opcionalmente se
puede guardar una palabra de estado (STATUS) que indicará
si la conversión se está ejecutando de forma correcta y, en
caso contrario, qué error se está produciendo. IN y OUT son
variables reales, lo cuál no coincide con las variables de entrada y salida definidas para
los sensores (que se interpretan como números enteros). Para solventar este problema,
se usa un bloque de conversión de tipo. De esta forma el cálculo 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 parámetros indicados en ParaScCaudalCaliente, y
el resultado (que es una variable real) se guarda en caudal_caliente.
De forma similar, el cálculo de las actuaciones de salida se hace así:
Fig. 3.9: Escalado variables de salida (ejemplo con la apertura de la válvula de agua caliente).
En este segundo ejemplo la variable real val_caliente se escala según los
parámetros de ParaScValvulas, y el resultado (real) se pasa a entero para guardarlo en
VAL_AGUA_CALIENTE, que corresponde con el actuador de válvula del circuito de
agua caliente.
Pag.23
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
Pag.24
Así pues, a cada variable entera de entrada y salida le corresponde una variable
real interna, y una estructura de parámetros de acuerdo con la siguiente tabla. Las
flechas indican las variables de origen y destino de cada conversión.
Variable entera o salida (transductor o
actuador)
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
Estructura de parámetros
ParaScCaudalCaliente
ParaScCaudalFrio
ParaScCaudalSalida
ParaScCaudalRecirculacion
ParaScNivel
ParaScPresion
ParaScValvulas
ParaScValvulas
ParaScValvulas
Cada estructura de parámetros 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 función lineal: out_min es la salida más baja, in_min es la entrada
asociada a esta salida y out_max e in_max son las correspondientes variables para la
salida más 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 saturación. Los valores que se
han tomado para estas variables son los de la siguiente tabla, en la que también 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 módulos ART realizan la conversión
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 décimas 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.
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
En este caso, las variables intermedias que se corresponden con las originales
son las siguientes:
Variable entera (transductor)
Variable real (interna)
TEM_CIRCUITO_AGUA_CALIENTE
TEM_CIRCUITO_AGUA_FRIA
TEM_CIRCUITO_SALIDA_DEPOSITO
TEM_CIRCUITO_RECIRCULACION
TEM_INTERIOR_DEPOSITO
tem_caliente
tem_fria
tem_salida
tem_recirculacion
tem_deposito
Siguiendo este procedimiento se puede hacer todo el escalado de variables
analógicas
correspondiente
a
las
secciones
“Escalado_var_entrada”
y
“Escalado_var_salida”.
Copia de variables digitales
Además de escalar las variables de entrada, la sección “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
Variable interna
RESISTENCIA_DISPARO
TERMO_DISP
GRUPO_FRIO_DISP
BOMBA_RECIR_DISP
BOMBA_RECIR_CONF
BOMBA_ALIM_DISP
BOMBA_ALIM_CONFM
disp_resistencia
disp_grupo_caliente
disp_grupo_frio
disp_bomba_R
conf_bomba_A
disp_bomba_A
conf_bomba_R
Simulación
Existe una sección más (“Simulacion”) que da un valor a las variables de entrada
cuando los sensores no están activados (es decir, cuando se está ejecutando una
simulación del programa en lugar de usar el propio autómata). En el caso de que el
autómata no esté conectado, pero aún así se deba realizar una simulación del programa,
se deberá poner a 0 la variable “SimEstandar”, inhabilitando así la ejecución de
Pag.25
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
“Escalado_var_entrada”. Al hacer esto, los valores de las variables intermedias no se
actualizarán, y podrán ser forzadas desde una pantalla de operador.
La sección “Simulación” y la pantalla de operador fueron creadas en un
principio para la depuración del código. Sin embargo, más tarde se decidió dejarlas en el
programa para permitir la ejecución de simulaciones del código. Durante una
simulación, la pantalla “Entradas_simulador” podrá poner a uno o a cero las señales de
alarma (disparo de las protecciones) y dar cualquier valor a las señales analógicas. La
sección “Simulacion” simulará la señal de confirmación 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 programación del autómata, se consideró que el sensor de
nivel se encontraba conectado al mismo. Sin embargo, algo más tarde, se supo que este
sensor estaba desconectado (estando el escalado de su señal ya programada). Puesto que
algunos algoritmos propios del autómata requieren el uso de este sensor, se ha añadido
la opción 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: Simulación de nivel del depósito.
Por otro lado, en la documentación del proyecto anterior, el termostato del grupo
caliente se consideraba una señal para desconectar la resistencia de dicho grupo. Sin
Pag.26
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
embargo, aparentemente, la resistencia se conecta y desconecta automáticamente sin
necesidad de intervención por parte del autómata. Ante la duda, se han dado las dos
opciones añadiendo una casilla más a la pantalla de operador. Si se marca la casilla
“Forzar TERMO”, se ignorará el comportamiento de esta señal y se bloqueará la salida
a esta resistencia.
3.5 Selección de salida
Uno de los cambios fundamentales de este proyecto frente a su predecesor es la
posibilidad de controlar diferentes dispositivos por métodos distintos simultáneamente.
En concreto, es posible controlar cada una de las bombas, válvulas 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
válvula de recirculación desde MATLAB, mientras las otras válvulas se regulan de
forma automática para mantener un nivel determinado de agua en el depósito de trabajo.
Con este motivo se ha añadido al programa la sección 15 (Seleccion_de_salida).
La sección de selección de salida está pensada para ejecutarse después de que se
escoja el valor de cada variable de salida, y por lo tanto debe estar cerca del final.
Colocar esta sección antes de las secciones correspondientes a los algoritmos de control
producirá retardos en la actuación de los mismos. Tampoco se debería emplazar esta
sección después del escalado de variables de salida, ya que en este caso las órdenes de
apertura de las válvulas se ejecutarían un ciclo más tarde que las de las bombas.
Para cada bomba y para cada válvula se han creado dos variables de tipo BOOL
en las que se indica qué aplicación 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 aplicación 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
Válvula de agua caliente
Válvula de agua fría
Válvula de recirculación
Bomba de alimentación
Bomba de recirculación
Bit 1
Bit 2
VAL_CALIENTE_BIT1
VAL_FRIA_BIT1
VAL_RECIRCULACION_BIT1
BOMBA_A_BIT1
BOMBA_R_BIT1
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 aplicación
SCADA siempre que las salidas no se encuentren bloqueadas. En determinados estados,
o ante la presencia o ausencia de alguna alarma, estos valores podrán ser modificados
por el propio autómata. Por ejemplo, si el proceso se encuentra en el estado de
emergencia, todas las salidas se codificarán como BLQD, si se pasa al estado manual,
todas las variables pasarán a MAN, etc.
Pag.27
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
En el caso de las variables analógicas (las válvulas), es necesario crear dos
variables más, en las que se almacenen los valores dictados respectivamente por VIJEO
y por MATLAB:
Salida
Válvula de agua caliente
Válvula de agua fría
Válvula de recirculación
VIJEO
MATLAB
VAL_CALIENTE_VIJEO
VAL_FRIA_VIJEO
VAL_RECIRCULACION_VIJEO
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 sección 15 es asociar a la
variable de salida el valor de una de las anteriores (o ninguna) según su configuración.
Así pues, si la válvula de agua caliente (por ejemplo) está configurada como MAN, en
la sección 15, el valor de “VAL_CALIENTE_VIJEO” se copiará sobre “val_caliente”,
que una vez escalada en la sección 17 se enviará a la válvula de agua caliente. De forma
similar, cuando la válvula esté configurada como MAT, será VAL_CALIENTE_MAT
la que se copie sobre “val_caliente”.
Fig. 3.14: Selección de salida para la válvula 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 sección que la bloqueó la que seleccione un valor para esta
variable (por lo general 0). Lo mismo se repite con las otras dos válvulas.
Para el control de las bombas, las variables intermedias serán de tipo EBOOL en
lugar de analógicas, y los resultados se enviarán directamente a las bombas (ya que las
variables binarias no se escalan), pero el procedimiento de selección de salida será el
mismo:
Salida
Bomba de alimentación
Bomba de recirculación
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 alimentación. El de la
bomba de recirculación es idéntico.
Pag.28
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
Fig. 3.14: Selección de salida para la bomba de alimentación.
El control de salida de las resistencias es similar al de las bombas, pero en este
caso hay que tener en cuenta también factores como las alarmas de temperatura (por las
que deben desconectarse las resistencias) y la posibilidad de modulación 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 depósito
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 señal de
alarma del termostato (AA_alarma_termostato), pero mientras esta señal no esté activa,
seguirá cumpliendo con su configuración de MAN, MAT, AUTO o BLQD.
Fig. 3.15: Selección de salida para la resistencia del grupo caliente.
Para la resistencia del depósito, ante la posibilidad de emplear una modulación
PWM, se hacen necesarias más opciones de configuración, por lo que se añade un tercer
bit:
Bit 1
RESISTENCIA_BIT1
Bit 2
RESISTENCIA_BIT2
Bit 3
RESISTENCIA_BIT3
El tercer bit habilita o no la modulación PWM:
3
Como ya se mencionó en la sección de escalado, esta resistencia puede autorregularse en función 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.
Pag.29
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
Bit 1 Bit 2 Bit 3 Abreviatura
Origen del control
MAT PWM PWM con parámetros escogidos desde MATLAB
1
1
1
MAT
Todo-Nada controlado desde MATLAB
1
1
0
MAN PWM PWM con parámetros 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 ocurría con la resistencia del grupo caliente, existe una alarma que
prohíbe el uso de la resistencia del depósito (“AA_alarma_nivel_res”). En este caso la
alarma se activa cuando el nivel de agua del depósito no cubre la resistencia. Si no hay
modulación PWM, la selección de salida es similar a la de la resistencia del grupo
caliente:
Si, por el contrario, sí hay modulación por ancho de pulsos, se pondrá a 1 la
variable “PWM_RES_Conf” (confirmación de PWM en la resistencia). Siempre que
esta variable está a 1, se ejecuta la sección 16: “PWM_Resistencia”. Cuando la
resistencia se encuentre en el modo AUTO PWM, será la sección del algoritmo
correspondiente la que active o desactive la variable “PWM_RES_Conf”.
Fig. 3.16: Selección de salida para la resistencia del depósito de trabajo.
Una vez confirmado que se está modulando con la resistencia, el siguiente paso
es obtener el tiempo de encendido. Al igual que ocurría con las válvulas, esta variable
debe obtenerse de MATLAB, de VIJEO o de un algoritmo propio. Según el caso, se
escogerá una u otra.
Variable entera
VIJEO
MATLAB
PWM_RESISTENCIA
PWM_RESISTENCIA_VIJEO
PWM_RESISTENCIA_MAT
Es necesario recalcar que la variable entera “PWM_RESISTENCIA” representa
el tiempo de encendido de la resistencia como una fracción del periodo. Esta variable
almacena el valor de esta fracción 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.
Pag.30
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
Fig. 3.17: Tiempo de encendido de la modulación PWM.
Conocido el tiempo de encendido, sólo falta aplicar la modulación. Para ello se
emplea el módulo PWM_INT.
INP es una variable entera con la
fracción de tiempo de encendido en tanto
por
mil
(“PWM_RESISTENCIA”).
PW_O es la salida binaria del módulo,
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 modulación en centésimas de
segundo. Este periodo debe ser un múltiplo entero de la tarea maestra. Se ha escogido
un periodo de la tarea maestra de 10ms. El periodo de la modulación será de 1 segundo,
con lo que la resolución máxima será del 1%. A pesar de ello, en VIJEO y en MATLAB
se aceptará una precisión 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
Máquina de estados
El funcionamiento del autómata se rige por una máquina de estado. Existen 5
estados posibles en los que puede encontrarse el autómata siempre que el programa esté
Pag.31
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
en ejecución. Estos estados son: “Listo”, “Manual”, “Automático en Parada”,
“Automático en Marcha” y “Emergencia”. A continuación se describe el
comportamiento del autómata en cada estado.
¾ Listo: Éste es el estado de inicio, y también aquel al que se vuelve al cambiar
entre manual y automático o al salir del estado de emergencia. Mientras el
sistema está “Listo”, las bombas las resistencias permanecen paradas y las
válvulas se mantienen cerradas. Desde el estado “Listo” se puede pasar a
“Manual” o a “Automático en Parada”.
¾ Manual: En el estado manual todas las variables de salida (bombas, válvulas y
resistencias) pueden ser modificadas desde la pantalla de Vijeo Citect. No se
pueden iniciar ningún algoritmo de control propio del programa, ni tampoco
modificar las variables desde MATLAB. Desde el estado manual sólo se puede
volver al estado “Listo”.
¾ Automático en Parada: Este estado es parecido al “Manual” en lo que respecta
a los algoritmos de control propios del autómata (que se mantienen parados).
Una vez en este estado se puede escoger el programa que controla cada variable
de salida. Cada válvula, bomba y resistencia puede controlarse desde la pantalla
de Vijeo Citect, desde MATLAB o desde un lazo automático de control (ver 3.5
selección de salida). Además, se puede escoger cuál 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 “Automático en Marcha”. Los algoritmos de
control no se pondrán en marcha hasta que se pase a “Automático en Marcha”,
pero las salidas configuradas como MAN o MAT pueden modificarse desde
Vijeo o desde MATLAB4.
¾ Automático en Marcha: Al llegar a este estado se activan los PIDs y demás
algoritmos de control de salida. Las variables que estén en configuradas para
ello, se pueden seguir controlando desde MATLAB o desde la aplicación
SCADA. Cuando el usuario lo considere oportuno, puede volver al estado
“Automático 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 condición de
alarma que requiera parar la planta o ejecutar una rutina de emergencia. Cuando
la condición de alarma deje de darse, se indicará en la pantalla de Vijeo Citect y
el usuario podrá volver al modo “Listo”. Mientras haya alguna condición de
alarma que active el estado de emergencia, el autómata 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”
actúa como la seta o botón de pánico de otros dispositivos, forzando a que éste
se pare inmediatamente. En el PLC no existe como tal un botón de emergencia,
4
Aunque la programación del autómata permite la modificación de una variable desde MATLAB en este
estado, la interfaz gráfica programada en MATLAB no hará modificaciones en las bombas, válvulas y
resistencias hasta que se pase a “Automático en Marcha”. Sí es posible modificar el estado de estos
dispositivos de forma manual desde la pantalla de comando de MATLAB.
Pag.32
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
pero en todas las pantallas de Vijeo Citect aparecerá el símbolo del pulsador con
la misma función.
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 Guía Gemma
de la planta. Cada lugar corresponde con un estado y tiene asociada una variable, y de la
misma forma cada transición 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 aplicación SCADA pone a 1 la variable asociada a la transición
correspondiente (ver figura), una vez que el cambio se ha hecho efectivo la sección
“Transiciones” pone a 0 la misma variable. De esta manera se evita que el usuario deje
una transición a 1 por descuido.
Fig. 3.19: Grafcet de la Guía Gemma..
Pag.33
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
La sección “Transiciones”, por lo tanto, debe poner a 0 el valor de cualquier
transición 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
Listo
Manual
Libre
Libre
0
0
Libre
0
Libre
0
Libre
Libre
0
0
Libre
Libre
0
0
Libre
0
Cond_Emergencia
Cond_Emergencia_2
Cond_Manual
Cond_Auto
Boton_Modo
Boton_Auto_Marcha
A.
Parada
Libre
Libre
0
0
Libre
Libre
A.
Marcha
Libre
Libre
0
0
0
Libre
Fig. 3.20: Desactivación de las transiciones.
La sección “Transiciones” también se usa para la detección de alarmas, por lo
que debería ejecutarse antes de la sección “GuiaGemma” para así asegurar que se pasa
al estado de emergencia en el mismo ciclo en que se detecta.
Detección de alarmas
La sección transiciones también debe identificar las situaciones de emergencias
y gestionar la variable “Cond_Emergencia”. Para ello, además de las entradas asociadas
al disparo de las protecciones y de la marca “Pulsador_Emergencia”, se comprueban
diversas alarmas que requieren ejecutar alguna subrutina después de entrar en el estado
“Emergencia”. Más información 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 señales de salida, es decir, a permitir a Vijeo o a MATLAB usar estas
Pag.34
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
variables. Sin embargo, las acciones propias del estado de emergencia son bastante más
diversas, ya que en la sección “Transiciones” se definen varias formas de llegar a este
estado. Cada estado tiene asociada una sección (salvo en el caso de “Automático 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 después de la sección
“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, válvulas 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 están desconectadas, mientras que para las
válvulas indica que están cerradas a tope.
x
Manual: En este estado todas las salidas deben ser modificables desde la
aplicación 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 depósito 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 también se
quedará bloqueada.
x
Automático en Parada: Las acciones de este estado son algo más complejas
que las anteriores. En primer lugar, se paran las bombas que se hayan dejado en
AUTO, ya que ningún algoritmo está en funcionamiento. Lo mismo ocurre con
la resistencia del depósito, aunque no con la del grupo caliente. En segundo
lugar se actualizan los parámetros de los PIDs. Esta operación consiste en recibir
o enviar a Vijeo los parámetros actuales de estos módulos, 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 envían del
PLC al SCADA. La misma operación se repite con cada parámetro 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 más algoritmos seleccionados
simultáneamente 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.
x
Automático en Marcha: Como en el estado anterior, cualquier salida
configurada como BLQD (excepto las resistencias) se pasa a MAN. También
hay que garantizar que no se activa más de un algoritmo. Si se detectan 2 ó más
algoritmos activos, se desactivan todos menos uno, ya que no hacerlo causaría
interferencias entre ellos. En este estado no se puede recibir la configuración de
los PIDs (puesto que ya están en marcha) de modo que la variable “PidConfig”
se pone a 0. Aún así, no se podrán recibir desde Vijeo los parámetros de los
PIDs. Por último, si no hay activo ningún algoritmo, y aún así se han
Pag.35
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
configurado las bombas o la resistencia del depósito 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 continuación se trata la alarma correspondiente.
Ver 3.6 Procedimientos en caso de emergencia para más detalle.
3.7 Procedimientos en caso de emergencia
A lo largo de la ejecución 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 detección se lleva a cabo en la sección 3, “Transiciones”, mientras que
el procedimiento de emergencia se lleva a acabo en la sección 5, “EMERGENCIA”.
Alarmas y prioridades
En la planta se prevén las siguientes situaciones que se consideran motivo de
alarma:
1º. Salto en las protecciones: En el cuadro de control existen varios dispositivos de
protección. Si cualquiera de ellos corta la corriente, la planta debe pararse
inmediatamente. A estos efectos el símbolo del pulsador de emergencia (en las
pantallas de Vijeo Citect) se considera una protección más.
2º. Temperatura excesiva: La temperatura y la presión del depósito de trabajo no
deben ser superiores a los valores máximos que los sensores pueden medir. Aún
cuando el depósito aguantaría varios grados más, 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 máximo valor de
temperatura o de presión, se iniciará una rutina de refrigeración.
3º. Bombas y caudales: En ocasiones, por descuido, el operario podría poner en
marcha una bomba sin abrir la válvula correspondiente. Para el caso de la bomba
de recirculación, esta situación se puede detectar. En caso de que esto ocurra la
bomba debe pararse. También deben pararse las bombas si los caudales
sobrepasan los valores máximos que los caudalímetros pueden detectar. Esto
último es poco probable si el caudalímetro se ha seleccionado bien, y se podrá
considerar como un fallo en el propio caudalímetro o en el escalado.
4º. Nivel: El depósito de trabajo tiene una altura de 1 metro y puede almacenar
hasta 30 litros5 de agua. Sin embargo sólo es posible medir la el nivel de agua
cuando éste está a una altura de entre 10 y 90 centímetros desde la base. Si el
nivel del depósito 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 vacíe un poco
el depósito.
5
Valor aproximado.
Pag.36
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
5º. Resistencias: La resistencia del depósito 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 estén realizando sobre la planta. Bastará con bloquear las
variables.
En el caso de que dos o más alarmas se dieran simultáneamente, se atenderá a la
más prioritaria (ignorando las otras). Una vez que la alarma más 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 detección 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
acción 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.
6
Las alarmas del termostato y de la resistencia del grupo caliente no se tendrán en cuenta si el grupo se
autorregula. En este caso, bastará con marcar la casilla “Forzar TERMO” en la pantalla de operador.
Pag.37
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
Fig. 3.22: Procedimiento en caso de disparo de protecciones (primera parte).
En caso de alarma debido a las protecciones, se pararán todas las bombas y
resistencias, y se cerrarán las válvulas a tope. Además se activará la señal
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 podría abrir la válvula de salida del depósito, también será necesario comprobar
si el nivel del depósito 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 mínimo, ya que esto sigue detectándose en la sección 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 condición de vuelta al estado “Listo”.
Temperaturas
Pag.38
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
La detección de una temperatura excesiva se hace en la sección “Transiciones”
comparando la temperatura del depósito con una temperatura máxima de 80 ºC. Por
seguridad, también se comprueba si la presión llega a 5 bares.
Fig. 3.23: Comprobación de temperatura y presión del depósito 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 depósito. A continuación se cierran las
válvulas de entrada de agua fría y caliente (para que no entre más agua en el tanque, que
podría producir más vapor de agua) y se abre al máximo la válvula de agua de
recirculación. Se compara la presión y la temperatura con unos niveles de seguridad a
los que se pretende llegar (definidos como 4 bar y 50ºC) y se mantienen ambas bombas
encendidas hasta que se alcance esa situación. Una vez que se llega a 50ºC (ó menos) y
4 bares (ó menos), se paran las bombas. Una vez comprobado que las bombas están
paradas y que la presión y temperatura del depósito son aceptables, se desactiva la
alarma.
Fig. 3.24: Procedimiento en caso de temperatura o presión excesiva en el depósito.
Cuando la alarma se haya desactivado, el usuario deberá dar la señal de pasar al
modo “Listo” desde la pantalla de Vijeo Citect para salir del estado de emergencia.
Si durante el enfriamiento del depósito se produjera un fallo en las protecciones
(o si el usuario pulsara el botón de pánico) se suspendería esta secuencia de
enfriamiento. Una vez que las protecciones se hubieran rearmado, se reanudaría el
enfriamiento del depósito (incluso cuando éste ya no se encuentre a 80ºC ó 5 bares). Si
Pag.39
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
por algún motivo fuera necesario abortar el algoritmo de enfriamiento (bajo la
responsabilidad del usuario), se deberá hacer lo siguiente.
1º. Pulsar el botón de pánico en la aplicación SCADA.
2º. Entrar en la pantalla de operador de Unity Pro.
3º. Desmarcar la casilla “Modo estándar” (este paso no es necesario durante una
simulación).
4º. Bajar los controles analógicos de “P Depósito” y “T Depósito” hasta unos
valores inferiores a 4 bar y 50 ºC respectivamente.
5º. Volver a la aplicación SCADA y pulsar el botón de rearme de protecciones.
6º. Esperar aproximadamente 1 segundo hasta que aparezca el botón de pasar al
estado “Listo”, pero no pasar a este estado todavía.
7º. Volver a la pantalla de operador de Unity Pro y marcar la casilla “Modo
estándar” (este paso debe omitirse durante una simulación).
8º. Volver una vez más a la aplicación SCADA y pasar al estado “Listo”.
Bombas y caudales
La detección de caudales excesivos se hace comparando los caudales con los
máximos valores posibles que los caudalímetros pueden medir. Si alguno de los 4
caudales (caliente, frío, de salida o de recirculación) llega al máximo, se da la alarma de
caudales.
Fig. 3.25: Detección de caudales excesivos.
Para la bomba de recirculación, se considera que hay una alarma si la bomba
permanece encendida durante 1 segundo mientras la apertura de la válvula de
recirculación es menor del 1%.
Fig. 3.26: Comprobación de bomba de recirculación.
En ambos casos se pararán todas las bombas y resistencias, y se cerrarán las tres
válvulas automáticas:
Pag.40
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
Fig. 3.27: Procedimiento en caso de caudales excesivos o bomba bloqueada
Las alarmas se desactivarán cuando todas las bombas y resistencias se hayan
cerrado además se confirme que el caudal de agua de salida es menor que el máximo
posible. No es necesario comprobar los otros tres caudales, ya que las válvulas se han
cerrado. Si la alarma persistiera durante varios ciclos del programa, estando cerrada la
válvula de salida de agua del depósito (o sabiendo que este caudal es normal) se podrá
asumir que los caudalímetros no están bien configurados.
IMPORTANTE: Con las señales que llegan al autómata no es posible saber si la
bomba de alimentación está bloqueada o no. Por seguridad, se aconseja mantener las
válvulas V1, V2 y V3 abiertas.
Nivel
El nivel de agua del depósito debe encontrarse entre 60 y 90cm para un
funcionamiento normal. Si el nivel de agua baja de 60cm, la resistencia del depósito
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 sección de transiciones.
Fig. 3.28: Comprobación del nivel del depósito.
Pag.41
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
En caso de que el nivel sea mayor al máximo o menor al mínimo, 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 llevarán 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 válvula de
agua fría y se mantiene encendida la bomba de alimentación hasta que el nivel sube por
encima de 30cm. En el segundo caso, se deja la válvula cerrada y se envía un mensaje al
usuario para que la válvula V6 hasta que el nivel baje de 70cm. En ambos casos, se
mantienen las otras bombas, válvulas y resistencias paradas o cerradas según
corresponda. Una vez que el nivel es aceptable, se desactiva la alarma, y se espera a que
el usuario de la señal de pasar al estado “Listo”.
Si durante el llenado o vaciado del depósito se diera otra alarma más prioritaria
(fallo en las protecciones, exceso de temperatura o bloqueo de la bomba de
recirculación), 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 depósito incluso si el
nivel de agua está entre 10 y 90cm. Si por algún motivo fuera necesario abortar el
algoritmo de llenado o vaciado del depósito (bajo la responsabilidad del usuario), se
deberá hacer lo siguiente.
1º. Pulsar el botón de pánico en la aplicación SCADA.
2º. Entrar en la pantalla de operador de Unity Pro.
3º. Desmarcar la casilla “Modo estándar” (este paso no es necesario durante una
simulación).
4º. Ajustar el control analógico “L Depósito” a un valor entre 30 y 60 (valores
superiores a 60 podrían permitir el uso de la resistencia del depósito sin que el
agua la cubriera totalmente).
5º. Volver a la aplicación SCADA y pulsar el botón de rearme de protecciones.
6º. Esperar aproximadamente 1 segundo hasta que aparezca el botón de pasar al
estado “Listo”, pero no pasar a este estado todavía.
Pag.42
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
7º. Volver a la pantalla de operador de Unity Pro y marcar la casilla “Modo
estándar” (este paso debe omitirse durante una simulación).
8º. Volver una vez más a la aplicación SCADA y pasar al estado “Listo”.
Resistencias
Cuando se recibe la señal del termostato, se bloquea la resistencia del mismo
grupo. Una vez que el termostato deja de enviar la señal, se esperan 5 minutos antes de
volver desactivar la alarma. Las secciones correspondientes a los estados “Manual”,
“Automático en Parada” y “Automático 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 señal no es tanto una alarma como una manera de
mantener la temperatura del agua en el grupo caliente.
Fig. 3.30: Detección y procedimiento en caso de disparo del termostato.
Cuando el nivel de agua es menor de 60cm, la sección transiciones activa la
alarma “AA_alarma_nivel_res” y bloquea la resistencia del depósito y la desconecta.
Las secciones correspondientes a los estados “Manual”, “Automático en Parada” y
“Automático 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 programación de la planta son los
algoritmos propios del autómata. En ocasiones el usuario podría estar interesado sólo en
parte de la planta (como el depósito o el intercambiador de calor), pero aún necesitar
que otros dispositivos de la misma entren en funcionamiento. Por ejemplo: un
determinado ensayo podría estar enfocado en el depósito de la planta, sin tener en
cuenta las válvulas, pero el ensayo podría 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 autómata para regular el caudal de entrada en el depósito.
Para este propósito se han programado 4 algoritmos que controlan los caudales
de agua fría, caliente y de recirculación, la temperatura del depósito, su nivel, o alguna
combinación de los anteriores.
Pag.43
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
Cada algoritmo tiene asociada una sección que se ejecuta sólo cuando el
algoritmo ha sido seleccionado. Se puede seleccionar el algoritmo desde el estado
“Automático en Parada”, pero no se llevará a cabo ninguna acción hasta que se pase a
“Automático en Marcha”. Las 4 secciones pueden ubicarse en cualquier posición entre
el escalado de variables de entrada y el escalado de variables de salida. Se ha preferido
colocarlas después 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 básico, y su propósito es controlar el caudal de cada circuito
de agua a partir de la válvula asociada. Adicionalmente, también se puede utilizar la
resistencia del depósito (con o sin modulación PWM) para controlar la temperatura del
depósito. É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 válvula)
durante un ensayo. La posibilidad de mantener el depósito a una temperatura
determinada (sin variar su nivel) permite también hacer ensayos que tengan como
escenario el intercambiador de calor, ya que la temperatura de entrada de agua será
constante.
Variable en AUTO
Válvula de agua caliente
Válvula de agua fría
Válvula de recirculación
Resistencia del depósito
Magnitud controlada
Caudal de agua caliente
Caudal de agua fría
Caudal del circuito de recirculación
Temperatura del depósito
El control de caudales se realiza mediante un PID para cada caudal:
Ref Caudal
Válvula
-
PID
Caudal
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 presión que el caudal
de agua caliente pueda producir sobre el caudal de agua fría y viceversa.
Pag.44
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
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 añadir una acción de Feed Foreward, OUT es la salida
del PID (en este caso la apertura de la válvula) y PARA es una estructura de parámetros
de configuración para el PID. El resto de las entradas y salidas permiten añadir
funciones extra que no se necesita utilizar en este proyecto. Para desactivarlas es
necesario conectar un 1 lógico en MAN_AUTO (para desactivar el modo manual) y un
0 en TR_S (para indicar que no copie los parámetros de inicialización).
Pag.45
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
Fig. 3.32: Conexión del bloque PIDFF (ejemplo con la válvula de recirculación).
Los valores para los parámetros de PARA que se han tomado han sido los
siguientes:
Parámetro
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
(Automático)
0
máximo valor que el
caudalímetro puede medir
0 (1 para la válvula de
recirculación)
100
0
0
0
0
(A determinar por el
usuario)
0 ó 1 según el algoritmo
1
0
1
0
0
0 (1 para la válvula de
recirculación)
Significado del valor seleccionado
Identificación de la estructura.
Valores mínimo y máximo que el proceso
puede tomar.
Valores mínimo y máximo que la salida del
PID puede tomar.
Realimentación negativa.
Estructura del PID.
Filtro de contención deshabilitado.
RCPY deshabilitado.
Parámetros de sintonización: ganancia total,
tiempo integral, tiempo derivativo y ganancia
diferencial.
Derivada de la salida o derivada del error
respectivamente.
Transición bumpless desactivada.
Zona muerta desactivada.
Ganancia en zona muerta.
Sin reducción de desborde.
Sin compensación manual.
Valores límite mínimo y máximo que puede
tomar la salida antes de compensación
Pag.46
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
out_max
outrate
ff_inf
ff_sup
otff_inf
otff_sup
100
100
0
1
0
1
manual.
Máxima variación de la salida en un ciclo
Valores máximo y mínimo que pueden tomar
las entrada de feed foreward.
Valores escalados máximo y mínimo
asociados a la entrada de feed foreward.
Para este algoritmo, puesto que las referencias en caudales son proporcionadas
por el usuario, la acción 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 histéresis o con una estructura
PID-PWM. Se escoge una o la otra dependiendo de si se ha habilitado la función PWM
en la selección de salida (ver 3.5 selección de salida).
En el caso de control todo o nada con histéresis, se actúa de una u otra manera
según la temperatura T del depósito.
a) T es mayor que la referencia más 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 histéresis.
Si por el contrario se habilita la modulación PWM, se utilizará un bloque de PID
para regular el tiempo de encendido. El bloque PWM_INT utilizado en la selección de
salida indica que está preparado para funcionar con un bloque PID_INT que tenga por
tiempo de muestreo el periodo de modulación. Por este motivo se ha escogido el bloque
Pag.47
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
PID_INT para la resistencia (en lugar del bloque de PID completo utilizado para las
válvulas).
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 sólo
utiliza valores enteros (por lo que será necesaria una conversión de tipo). AUTO debe
recibir un 1 lógico en formato EBOOL para funcionar de forma automática (un 0 deja al
bloque en manual). PARA es una matriz de 43 enteros (numerados de 0 a 42) con los
parámetros del bloque y el espacio suficiente para que éste haga sus cálculos
intermedios. Los primeros valores de estos parámetros son:
#
0
1
2
3
4
5
Parámetro
SP
OUT_MAN
KP
TI
TD
TS
Valor
Valor de referencia
0
(A determinar por el
usuario)
100
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
Significado del valor seleccionado
Valor de referencia (Set Point).
Valor de salida en manual.
Parámetros de sintonización: ganancia total
(en tanto por ciento) y tiempos integral y
derivativo (en décimas de segundo).
Tiempo de muestreo en centésimas de
segundo. Debe coincidir con el periodo de
la modulación PWM.
Salidas máxima y mínima del bloque PID.
Otros parámetros (ver bajo la tabla).
0
0
0
Valores relacionados con la interfaz
hombre máquina de este bloque. Estos
parámetros no se usan en esta aplicación.
0
El registro “Config” es un número de 16 bits que establece la configuración de
la derivada (bit 0), el modo bumpless (bit 4) y la interfaz hombre máquina (bit 8). La
derivada se hace sobre la variable del proceso cuando el bit 0 está a 0, y sobre el error
Pag.48
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
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-máquina 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 precisión, las temperaturas se envían al PID en décimas de grado.
Como puede observarse el PID recibe la temperatura del depósito 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 válvulas en modo manual.
Fig. 3.37: Toma de decisiones para las bombas.
Se recomienda dejar la bomba de alimentación en manual o controlada por
MATALB a no ser que las dos válvulas de agua de entrada (fría y caliente) estén en
AUTO.
Nivel
El algoritmo de control de nivel está pensado para ensayos que requieran
mantener un determinado nivel de agua en el depósito de trabajo. Se incluye la
posibilidad de renovación de agua del depósito, lo que permite ensayar controladores
Pag.49
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
para mantener la temperatura de un sistema abierto (con renovación de agua). Esta es
una situación común en un reactor de tipo tanque.
Este algoritmo es una modificación del anterior en la que se asignan las
referencias de caudal de entrada (frío y caliente) para mantener un nivel en el depósito.
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 proporción de agua caliente
en el caudal de entrada, el primer PID genera una referencia en caudal, a la que se añade
como Feed Foreward el caudal de salida. Una vez hecho esto se divide el caudal de
entrada entre las entradas de agua fría y caliente según la proporción 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 parámetros del PID de nivel son idénticos a los de caudales, excepto por los
valores límites del valor del proceso, la salida del PID y la entrada de Feed Foreward,
que corresponden a respectivamente a los límites del sensor de nivel, las sumas de los
caudales máximos y mínimos de entrada, y los límites del caudal de salida.
Pag.50
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
Fig. 3.40: Conexión del bloque PID para el control de nivel.
En caso de que una de las válvulas 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 válvula caliente está en MAN, y el caudal de agua caliente Q1, el caudal frío que se
tomará como referencia será el total menos Q1. En este caso se ignorará la referencia de
proporción.
Fig. 3.41: Proporción de caudales de entrada.
Pag.51
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
Los bloques de PID de caudales de agua fría 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 válvula de recirculación y de la resistencia del depósito 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 proporción de
caudales frío 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 algún motivo) no se
pueda usar la resistencia del depósito.
Fig. 3.43 y 3.44: Esquemas del algoritmo.
Pag.52
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
En este caso el usuario proporciona la consigna de temperatura para el depósito
y un PID ajusta la proporción de caudales frío y caliente. Puesto que el caudal de
entrada es variable, la ganancia de este PID se autoajusta de acuerdo con la siguiente
fórmula:
K
K0·
Q
L
Donde K es la ganancia del controlador, Q es el caudal total de entrada, L es el
nivel de agua del depósito (que al ser cilíndrico 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, centímetro y grado kelvin.
K0 son l
min·cm·K
A diferencia del algoritmo de nivel, éste sólo puede aplicarse cuando ambas
válvulas están configuradas como AUTO. Además, para que el algoritmo funcione
correctamente, la válvula de salida de agua (V6) debe estar abierta, de modo que el agua
del depósito se renueve constantemente.
La válvula de recirculación, 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 depósito usando la resistencia para calentarla. Sin embargo, ninguno de
ellos es capaz de enfriar el agua del depósito 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 más fría en la situación 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 fría y caliente se regulan igual que en el algoritmo de
control de caudales. El caudal de agua de recirculación, por el contrario, se calcula para
mantener una consigna de temperatura en el depósito. La resistencia del depósito
también puede usarse para alcanzar la referencia de temperatura (cuando ésta es mayor
que la actual). La resistencia y el circuito de recirculación no deben emplearse
simultáneamente para mantener una determinada temperatura, ya que la acción de cada
una cancelaría (en parte) la de la otra, lo que podría dar lugar a una saturación de una de
las dos acciones de control. Para evitar que esto ocurra, se pone en marcha la bomba de
recirculación o la resistencia en función de la desviación 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
Pag.53
Programación y Supervisión de Planta Piloto Utilizada como Plataforma de Ensayo de Controladores Diseñados en MATLAB
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 histéresis.
Fig. 3.45: Esquema del algoritmo.
Cuando se regula con la resistencia, ésta puede mantenerse encendida de forma
fija, o con modulación PWM (igual que en los algoritmos anteriores). En cuanto al
circuito de recirculación, la válvula 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 más o menos la válvula. 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 recirculación.
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: Cálculo de las derivadas en el altorirmo.
Pag.54
Descargar