scieee AI-readable full text Open interactive document viewer

Control y monitorizazción de una EDAR usando Codesys y Wonderware

Gómez Díaz, Álvaro

Abstract

Este proyecto se ha basado en el proceso de un sistema de una estación de aguas residuales, centrandose sobre todo en la parte primaria y secundaria de dicho proceso. Se ha intentado hacer un modelo lo más realista posible utilizando referencias desde para la implementación de sensores hasta para las ecuaciones de simulación en el desarrollo de algunos parametros tales como la evolución de bacterias. Se ha utilizado un mismo programa como controlador y simulador del proceso (Codesys) junto como un programa para hacer de HMI (AVEVA System Platform). Dichos programas han tenido poca interacción en conjunto mediante comunicación via OPC UA por lo que este proyecto puede ser considerado innovador al respecto de la comunicación entre ambos programas.

Full text

Proyecto Fin de Carrera Ingeniería de Telecomunicación Formato de Publicación de la Escuela Técnica Superior de Ingeniería Autor: F. Javier Payán Somet Tutor: Juan José Murillo Fuentes Dep. Teoría de la Señal y Comunicaciones Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2013 Trabajo Fin de Máster Ingeniería de Tecnologías Industriales Control y monitorizazción de una EDAR usando Codesys y Wonderware Autor: Álvaro Gómez Díaz Tutor: Francisco Salas Gómez Dpto. Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Trabajo Fin de Máster Ingeniería de Tecnologías Industriales Control y monitorizazción de una EDAR usando Codesys y Wonderware Autor: Álvaro Gómez Díaz Tutor: Francisco Salas Gómez Profesor Titular Dpto. Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Agradecimientos Cuando miro atrás y veo todo el camino que he recorrido me llena de orgullo saber lo que he podido hacer, estoy haciendo y muy probablemente seré capaz de hacer. Todo esto al fin y al cabo no es cosa solo de mi trabajo y esfuerzo, toda las personas que me han acompañado y apoyado han hecho que este camino haya sido mucho más fácil de recorrer. Es por eso que este proyecto se lo dedico a ellos. Álvaro Gómez Díaz Sevilla, 2023 I Resumen Este proyecto se ha basado en el proceso de un sistema de una estación de aguas residuales, centrandose sobre todo en la parte primaria y secundaria de dicho proceso. Se ha intentado hacer un modelo lo más realista posible utilizando referencias desde para la implementación de sensores hasta para las ecuaciones de simulación en el desarrollo de algunos parametros tales como la evolución de bacterias. Se ha utilizado un mismo programa como controlador y simulador del proceso (Codesys) junto como un programa para hacer de HMI (AVEVA System Platform). Dichos programas han tenido poca interacción en conjunto mediante comunicación via OPC UA por lo que este proyecto puede ser considerado innovador al respecto de la comunicación entre ambos programas. III Abstract This project has been based on the process of a wastewater station system, focusing mainly on the primary and secondary part of said process. An attempt has been made to make a model as realistic as possible using references from the implementation of sensors to the simulation equations in the development of some parameters such as the evolution of bacteria. The same program has been used as controller and process simulator (Codesys) together with a program to make HMI (AVEVA System Platform). These programs have had little interaction together through communication via OPC UA, so this project can be considered innovative in terms of communication between both programs. V 2 Sistema a controlar Para este proyecto se ha decidido controlar una estación de depuración de aguas residuales más conocido por la abreviatura EDAR. Estas estaciones como bien indica su nombre tienen como función la limpieza de aguas residuales y aprovechamiento de los posibles desechos tales como el fango seco para producir biogas). Todos estos procesos se pueden ver reflejados en la siguiente web certificada acerca del estudio de las EDAR. [3]. A continuación se muestra una figura con los procesos principales: Figura 2.1 Ejemplo de EDAR. En nuestro caso nos hemos centrado más concretamente en la depuración primaria y secundaria del proceso. Figura 2.2 Ejemplo específico de EDAR. 3 4Capítulo 2. Sistema a controlar 2.1 Descripción detallada Para este caso hemos tomado como referencia el siguiente sistema para simular un EDAR. Figura 2.3 Representación de sistema a controlar. Este sistema se compone de diferentes tipos de tanques: 1. Tanques decantadores: En estos tanques se filtrará el agua residual dejando en la parte inferior los sedimentos que pueda tener. Estos tanques se pueden ver representados en la figura 2.3 como V1 , V2 y V3 2. Tanque reactor: En este tanque se utilizarán bacterias para eliminar posibles materia orgánica que pueda existir en el agua residual (Nitrógeno, Carbono...). Este tanque se puede ver representado en la figura 2.3 como Vr. 3. Tanque digestor de lodos: En este tanque se calentará el fango para evaporar y conseguir biogás a partir de él. Este tanque se puede ver representado en la figura 2.3 como Vdig. 2.1.1 Tanques decantadores Como se observa en la imagen tendremos tres tanques decantadores los cuales tendrán una cantidad de agua residual sin sedimentos ( Va ) y una cantidad de sedimentos ( Vf ). Cada uno de estos tanques decantadores tendrá una entrada de agua residual y dos de salida (a excepción del tercer tanque que tendrá una posible salida adicional. El agua residual tendrá cierto porcentaje de agua sin sedimentos ( 1−X1 ) y otro porcentaje que será de sedimentos o fangos ( X1 ), este valor será variable en el primer tanque mientras que en los demás tendrá un valor de X1=0.2 . Por otro lado también se tendrá una válvula de salida para el agua sin sedimentos ( Qx ) y una válvula de salida para los sedimentos acumulados ( Qf ). Debido a que trataremos con sedimentos acumulados y con agua sin sedimentos diferenciaremos en dos volúmenes diferentes dentro de los tanques decantadores "Va"para volúmenes sin sedimentos y "Vf"para volúmenes de sedimentos acumulados. ∆V1=∆V1a+∆V1f(2.1) ∆V1a=Q1·(1−X1)−Q2(2.2) ∆V1f=Q1·X1−Q1f(2.3) 2.1 Descripción detallada 5 ∆V2=∆V2a+∆V2f(2.4) ∆V2a=Q2·0.8−Qr(2.5) ∆V2f=Q2·0.2−Q2f(2.6) ∆V3=∆V3a+∆V3f(2.7) ∆V3a=Q3·0.8−Qrio −Qterc (2.8) ∆V3f=Q3·0.2−Q3f(2.9) 2.1.2 Tanque reactor En este tanque reactor como bien se ha nombrado antes se llevará a cabo una descomposición de los elementos orgánicos que puedan existir en las aguas residuales. Para ello se usarán bacterias las cuales se introducirán en el tanque reactor y se alimentarán de estos elementos antes nombrados. Para la ecuación que nos indicara el crecimiento de las bacterias en función de la cantidad de oxigeno nos hemos basado en la ecuación de Monod 2.10, esta ecuación es un modelo matemático para el crecimiento de microorganismos [4]: λ=λmax · S Ks+S(2.10) Este modelo matemático nos da el crecimiento de dichas bacterias en función de la cantidad de sustrato limitante S, de la tasa máxima de crecimiento especifica λmax y la constante de media velocidad Ks. En nuestro modelo estas bacterias ven limitado su crecimiento en función de cantidad de oxigeno que se le inyecte para prosperar, basándonos en el mismo modelo matemático pero cambiando que las propias bacterias necesitan de oxigeno para seguir viviendo hemos obtenido la siguiente ecuación: ∆Bacterias =λmax · O2−0.1·Bacteriasactuales O2+Kb (2.11) Por otro lado, este tanque, al no ser decantador, solo nos servirá saber la cantidad de agua residual que se contiene dentro de él, sin diferenciar el porcentaje de sedimentos y agua. Por consiguiente tendríamos la siguiente función respecto a la variación de volúmenes: ∆Vr=Qr−Q3(2.12) 2.1.3 Tanque digestor de lodos Este tanque se llenará de los sedimentos o lodos provenientes de los tanques decantadores, una vez lo suficientemente lleno se empezará a calentar dicho lodo con un calentador el cual se irá regulando su temperatura para que la temperatura de los lodos se mantenga alrededor de 90ºC. La siguiente ecuación reflejará el cambio de temperatura global de dichos lodos en función de los lodos entrantes (que tendrán una temperatura aproximada de 20ºC), la temperatura de los lodos que se encuentre actualmente en el tanque y la temperatura del calentador. Tdigactual = K1·Tf·(Q1f+Q2f+Q3f)+Tdig·Vdig Q1f+Q2f+Q3f)+Vdig +K2·Tcal (K1+K2)(2.13) Reflejando las anteriores variables los siguientes valores: 1. Tdig : Esta variable hace referencia a la temperatura actual de los fangos que se encuentran en el tanque 6Capítulo 2. Sistema a controlar 2. Tf : Este es el valor de la temperatura a la cual entran los fangos provenientes de los tanques de decantación 3. Vdig: Es el volumen actual de los fangos que se encuentran en el tanque 4. Tcal : Temperatura actual del calentador que se encuentra dentro del tanque 5. K1: Constante que hace referencia a la cantidad de calor que transmiten los fangos al sistema global 6. K2 : Constante que hace referencia a la cantidad de calor que transmiten el calentador al sistema global Para la formula de esta transferencia de calor nos hemos basado en las ecuaciones dadas en el temario de transferencia de calor entre ellas la fórmula de temperatura de dos cuerpos en el estado estacionario: T=K1·T1·L2+K2·T2·L1 K1·L2+K2·L1 (2.14) Adicionalmente también se simulará el movimiento de los fangos dentro del tanque teniendo tres posibles válvulas de entradas (proveniente de los tres tanques de decantación) y una válvula de salida por donde saldrán el fango seco. ∆Vdig =Q1f+Q2f+Q3f−Qdig (2.15) Por último el biogás generado debido al calentamiento de estos fangos dentro del tanque será retirado del mismo una vez se sobre pase cierto umbral de presión dentro del propio tanque. Dicho biogás será expulsado del tanque mediante la apertura de una válvula incluida en la parte superior del tanque. Aquí se dispone las ecuaciones que se han usado para la simulación de ese incremento de gas y presión dentro del tanque. Vgas :=Vgas +Kg·dig ·Vdig ·0.1(2.16) P:= (Vgas/(13 −Vdig))·Kp(2.17) 2.1.4 Sensores Para el control de todo el sistema se han implementado una serie de sensores, los cuales se han dividido en función de su localización dentro del propio sistema Tanques decantadores Sensores de nivel: Estos sensores se activarán una vez el liquido del agua residual haya alcanzado cierto nivel en el tanque tendremos los siguientes sensores en los tanques decantadores. Hay que tener en cuenta que la letra X indicará al tanque en el que se encuentra el sensor pudiendo ser este 1, 2 o 3: • SXA: Este sensor se encuentra en la parte superior del tanque e indicará cuando el tanque esta lleno de liquido, siendo este limite 9 litros. • SXM: Este sensor se encuentra en la parte media del tanque e indicará cuando el liquido ha llegado al limite de 5 litros • SXB: Este sensor se encontrará en la parte baja del tanque y marcará cuando el liquido ha llegado al limite de 2 litros. Sensores de espesor: Estos sensores marcarán la cantidad de sedimentos que se encuentran en el agua residual frente a la cantidad de agua residual total [2]. Debido a que hay varios tanques decantadores se utilizará una X que se sustituirá en cada sensor en función del tanque donde se encuentre: • SXF: Este sensor de espesor se simulará en nuestro sistema dándonos un resultado de la cantidad de sedimentos entre la cantidad de agua residual total Tanque reactor Sensores de nivel: Al igual que en los sensores de altura de los tanques decantadores tendremos tres diferentes sensores en el tanque reactor • SRA: Este sensor se encontrará en el limite de 9 litros de tanque reactor por lo que una vez llegue a dicho limite el liquido se activará este sensor. 2.1 Descripción detallada 7 • SRM: Este sensor se encontrará en el limite de 5 litros de tanque por lo que una vez llegue a dicho limite el liquido se activará este sensor. • SRB: Este sensor se encontrará en el limite de 2 litros de tanque por lo que una vez llegue a dicho limite el liquido se activará este sensor. Sensor de bacterias: Este sensor medirá la cantidad de bacterias que se encuentran en el agua residual, midiéndolo a partir de la evolución de los sustratos que hay en el liquido. Tanque digestor Sensores de altura: Al igual que en los sensores de altura de los tanques decantadores tendremos tres diferentes sensores en el tanque reactor • SDig: Este sensor se encontrará en el limite de 9 litros de tanque por lo que una vez llegue a dicho limite el fango se activará este sensor. • SDigM: Este sensor se encontrará en el limite de 4 litros de tanque por lo que una vez llegue a dicho limite el fango se activará este sensor. • SDigB: Este sensor se encontrará en la parte más baja del tanque por lo que en cuanto detecte que hay algo de fango o sedimentos en el interior del tanque de digestión se activará el sensor. Sensor de temperatura: Este sensor de temperatura (el cual se llamará Tdig en nuestro programa) medirá la temperatura a la que se encuentre el fango almacenado en el tanque. Este sensor nos ayudará a controlar junto con el calentador la temperatura a la que queremos que llegue a estar el fango para poder secarlo y poder usarlo como abono. Sensor de presión: Este sensor (el cual será llamado en nuestro programa como P) medirá la presión a la que se encuentra el taque de digestión, si supera cierto umbral de presión debido a los gases generados en el calentamiento de los fangos, se podrá expulsar mediante una válvula que se encuentra en la parte superior del tanque. 3 Control del sistema Diferenciaremos dos tipos de modos diferentes de funcionamiento, teniendo otro modo de transición entre ellos obligatorio. Aquí una breve descripción de las especificaciones de control para cada uno de estos modos: 1. Automático: Este modo realizará un control automático de los actuadores, tanto de válvulas como del calentador o el inyector de bacterias, utilizando valores de referencia para estos dos últimos por parte del usuario y los sensores que se sitúan en todos los tanques. Este modo será el modo en el que prioritariamente estaría trabajando el sistema EDAR 2. Manual: Este modo hace que todos los actuadores queden a disposición del usuario desde la maquina HMI, ya que con un simple click puede abrir o cerrar válvulas, subir o bajar la temperatura del calentador o controlar la cantidad de oxigeno que le entra a las bacterias del reactor. 3. Reseteo: Este modo tiene como función restablecer el sistema para que pueda asegurarse el pleno funcionamiento del modo automático. 3.1 Modo automático En este modo se controlará de forma automática todas los actuadores que se han mencionado anteriormente. Para este control se puede dividir el sistema en tres subsistemas: válvulas (de liquido y de gas), calentador y válvula de oxigeno. 3.1.1 Control de válvulas Las válvulas a controlar en este caso son las siguientes que se muestran en esta imagen: 9 10 Capítulo 3. Control del sistema Figura 3.1 Válvulas del sistema. Valvula1: Esta válvula es la entrada de agua residual al primer tanque de decantación, en principio su apertura estará limitada solo al sensor S1A el cual nos indicará si el tanque de decantación 1 esta lleno o no. Figura 3.2 Control valvula 1. Valvula2: Esta valvula conecta el tanque decantador 1 con el tanque decantador 2, de forma que todo el agua residual que le llega al tanque decantador 2 es a traves de esta valvula. Para que esta valvula se active se necesita que se cumplan 3 condicionantes: que el tanque decantador 1 este relleno hasta la mitad al menos (S1M activo), que el tanque decantador 2 no este completamente lleno (S2A negativo) y que la cantidad de sedimentos del tanque respecto al total del agua residual sea menor del 50% (SF1<0.5). Para que vuelva a cerrarse esa valvula se ha implementado que sea si se cumple cualquier de estos tres condicionantes: que el tanque decantador 1 este a un nivel más bajo del sensor S1B (S1B negativo), que el tanque decantador este lleno (S2A activo) o que la cantidad de sedimentos del tanque respecto al total sea mayor que el 50% Figura 3.3 Control valvula 2. ValvulaR: Para el llenado del reactor es un poco más complejo ya que una vez este lo suficientemente lleno se empezará a ejecutar el proceso de inyección bacteriana para eliminar los sutratos y mientras dure ese proceso no se podrán añadir más agua a tratar. Para ello hemos dividido el control en diferentes 3.1 Modo automático 11 fases: • Llenado: Esta variable nos indicará que el reactor se encuentra en fase de llenado, lo cual se producirá cuando se den tres factores: el reactor este vacío (SRB negativo), no este el proceso en fase de vaciado (Vaciado negativo), ni se haya cumplido el tiempo de espera Temp1 en el caso de que no se haya llenado al completo. Una vez nos encontremos en esta fase se deben de cumplir cuatro condicionantes más, los cuales son similares a los mencionados en los otros tanques, estos son: que el tanque 2 se haya llenado hasta la mitad al menos (S2M activo), que el tanque reactor no esta totalmente lleno (SRA negativo), que el proceso no este en fase Vaciado y que el espesor del tanque 2 sea menor al 50% (SF2<0.5). Figura 3.4 Control valvula Reactor. • Inyección Bacterias: Como ya se ha mencionado antes, se dispondrá un contador de tiempo ya que si pasa el tanque cierto tiempo sin llenarse completamente (pero si lleno al menos hasta la mitad) se empezará con el proceso de inyección de bacterias. Una vez se haya llegado a ese tiempo de espera o al limite maximo de capacidad del tanque se activará una variable llamada InyectBact, la cual activará el control del oxigeno para el desarrollo de estas bacterias. Este control se explicará un poco más adelante en esta sección. Figura 3.5 Control inyección bacterias. Valvula3: Esta variable se corresponde con el control de la valvula de salida del reactor y por tanto de la valvula de entrada al tanque decantador 3. Por ello su actuación dependerá del proceso que este transcurriendo en el propio reactor. Como hemos comentado anteriormente dentro de este reactor habrá dos fases diferenciadas, llenado e inyección de bacterias. Una vez se haya completado esta última, la cual se indicará mediante la variable Temp2, se empezará con el siguiente proceso • Vaciado: Esta variable nos indicará que la fase de vaciado del reactor ha comenzado. La valvula 3 por tanto se abrirá solo si esta variable esta activa y el tanque decantador 3 no está completamente lleno (S3A negativo). 18 Capítulo 3. Control del sistema Figura 3.20 Controlador con setpoint en 3mg bacterias 2a iteración. Finalmente se ve como tenemos un control óptimo y sin variaciones en la señal de entrada en régimen permanente. Por lo tanto, usando los últimos parámetros antes mencionados, este control usará la siguiente formula: G(s) = Kp·(1+1 Ti·s+Td·s)(3.4) =4·(1+1 0.3·s+0.07 ·s)(3.5) =0.28 ·s2+4·s+13.33 s(3.6) Una vez se haya mantenido durante un tiempo constante la cantidad de bacterias en torno al setpoint se activará la variable Temp2 dando comienzo al vaciado del tanque. 3.2 Modo Manual Para el modo manual simplemente añadiremos unas variables adicionales para que el usuario pueda activar o desactivar cualquier actuador desde el HMI. Más adelante se puede observar dicho código implementado. 3.3 Reseteo Para el paso del modo automático al modo manual no habrá ningún paso previo, sin embargo para el cambio de modo manual a automático si habrá un proceso intermedio con objeto de poner el sistema en condiciones iniciales para comenzar de forma correcta el control en modo automático. Este modo (llamado Reseteo en nuestro programa) vaciará por completo todos los tanques vaciando todo el fango sin llegar a calentarlo y el agua residual se expulsará por la válvula terciaria. En el momento que todos los sensores de los tanques den negativo y por lo tanto estén vacíos los tanques, se pasará de nuevo al modo automático de funcionamiento del sistema. 4 Pantalla de explotación HMI 4.1 Representación en Intouch Para la representación de nuestro HMI o SCADA, es decir, la herramienta o interfaz que visualizar el usuario encargado de la planta para monitorizar y controlar la planta, se usará el programa AVEVA Intouch 2020, dicho programa deberá solo podrá abrirse como administrador del dispositivo, en este caso el portátil o PC que este usando el usuario. Este programa tiene multitud de funcionalidades y herramientas para la visualización de sistemas, sin embargo para este caso solo usaremos las herramientas que se disponen en la siguiente imagen: Figura 4.1 Herramientas usadas en Intouch . Dentro de nuestro programa se podrán usar diferentes pestañas para visualizar diferentes partes del sistema a controlar, para nuestro caso hemos creado un total de cuatro pestañas, las cuales tienen las siguientes funciones: Tfm: Esta será la pantalla principal del proyecto, en esta pantalla podremos visualizar el estado de todos los sensores y actuadores en tiempo real, a la vez que introducir nuevos setpoints o pasar a controlar los actuadores de forma manual. Histórico_bacterias: En esta pantalla se podrá visualizar el estado de la cantidad de bacterias de forma gráfica que hay en todo momento en el tanque reactor, pudiendo también compararlo con la cantidad de referencia que se le ha pasado por parte del usuario. Estos datos serán guardados por el programa durante un día completo, pudiendo comparar los resultados que se han obtenido a lo largo de todo un día. 19 20 Capítulo 4. Pantalla de explotación HMI Histórico_temp: En esta pantalla, al igual que en la anterior pantalla, podremos visualizar una variable a controlar que en este caso será la temperatura del fango que se encuentra dentro del tanque de digestión. Este dato junto con la temperatura de referencia dada por el usuario podrán visualizarse durante todo un día, al igual que en el caso de las bacterias. Histórico_Modos: La último pantalla accesible por el usuario se da para que el usuario pueda tener un seguimiento de los modos que se han ido usando a lo largo del control del sistema, pudiendo observar en todo momento que modos estaban en uso y a que hora se daban estos. Adicionalmente a estas pestañas podremos incluir unos pequeños scripts que estarán funcionado de forma permanente mientras se ejecuta el programa. Los scripts usados para nuestro programa es para la funcionalidad de la pestaña Historio_Modos, la cual se explicará en el apartado 4.1.4 4.1.1 Implementación variables Para el uso de las variables que hemos compartido a través de OPC UA provenientes del programa de Codesys, lo cual se comenta en el capitulo B, tendremos que hacer una configuración previa en el programa de AVEVA Intouch. Para hacer esto lo primero que deberemos introducir son estas variables a nuestro programa de Intouch. Para ello iremos al apartado de herramientas mostradas en la anterior imagen, más concretamente aTagname Dictionary. Figura 4.2 Tagname Dictionary. A continuación se deberá añadir la variable que se quiera incluir al SCADA, dicha variable tiene que estar configurada anteriormente en la comunicación dentro del programa System Management COnsole de AVEVA. Para hacer esto pincharemos en New y agregaremos la variable como una variable de entrada/salida como se ve en la siguiente imagen (diferenciando también el tipo de variable si es booleana, entera, real...) Figura 4.3 Configuración variable . 4.1 Representación en Intouch 21 Una vez hecho esto debemos de configurar cual es la instancia que se creo en el programa SMC por donde van a pasarnos esas variables, para ello se pinchará en apartado Access Name e introduciremos dicha instancia si no se ha creado. Figura 4.4 Grupo de acceso por donde se comunicará la variable. Por último introduciremos el nombre con el que se había nombrado dicha variable en dicha instancia en el apartado de Item. También hay que añadir que se podrá incluir a la configuración de la variable si solamente va a ser de lectura o de escritura/lectura, si tiene un rango máximo o mínimo o si quiere que se guarde todos los valores que se hayan obtenido durante un periodo de tiempo (se explicará en el apartado 4.1.3 Figura 4.5 Detalles configuración variable. 4.1.2 Pantalla principal La pantalla principal para la visualización del proyecto será la que se muestra en la siguiente imagen: 22 Capítulo 4. Pantalla de explotación HMI Figura 4.6 Ventana principal del HMI . Esta pantalla es la que lleva más complejidad por lo cual pasaremos a explicarla por partes tal y como se refleja en esta imagen: Figura 4.7 Ventana principal por partes. Visualización Para la representación del sistema se usarán diferentes tipos de elementos entre ellos los siguientes: Tanques de liquido: Estos tanques pueden configurarse varios parámetros, entre ellos la variable que indicará el nivel actual del liquido, la cantidad mínima y máxima de liquido que puede albergar dicho tanque e incluso el color del propio tanque. 4.1 Representación en Intouch 23 Figura 4.8 Configuración elemento tanque. Para la representación del tanque decantador se ha usado dos tiempos de tanques distintos, uno cilíndrico para el agua sin sedimentos (la cual se encontrará en la parte superior y recogerá los valores de las variables V1a, V2a o V3a) y uno cónico para el fango o sedimentos del agua residual (la cual se encontrará en la parte inferior en color marrón y recogerá valores de las variables V2f, V2f o V3f). Válvulas: Las válvulas que se representan en el SCADA podrán servir de ayuda al usuario ya que se podrá visualizar si están abiertas o cerradas en todo momento, estando abiertas cuando se encuentren en color verde y estando cerradas cuando no presenten color. Para recoger esta información dispondremos en la configuración del elemento de la válvula la variable que controle la actuación de dicha válvula. Figura 4.9 Configuración válvulas. Tuberías: Las tuberías solamente tendrán un carácter visual para el usuario ya que al no recoger ningún tipo de evidencia del estado de la misma a través de sensores el usuario no puede el estado actual de las mismas a través del HMI Alarmas: En este caso se ha decidido implementar alarmas visuales para mostrar los niveles de llenado de los tanques y cuando están activas las salidas de rió y terciario. Displays numéricos: Se han añadido displays numéricos para señalar valores importantes como las temperaturas (tanto del calentador como del propio fango), las bacterias actuales y el oxigeno que se encontraba en el tanque reactor y la presión a la que se encontraba el tanque de digestión. Adicionalmente a esto, se han añadido displays que servían de inputs numéricos para la temperatura de referencia, el setpoint de bacterias a conseguir y la cantidad de sedimentos que recogía el primer tanque decantador. Botones: Los botones que se disponen en la visualización tienen el objetivo de activar o desactivar las variables que se añadan en dicho elemento. Para que el usuario cambie el valor de la variable booleana 24 Capítulo 4. Pantalla de explotación HMI al pinchar en el botón éste deberá configurarse como un botón de tipo Toggle, tal y como se muestra en la imagen. Figura 4.10 Configuración botones . Cambio de modo Para el cambio de modo se usará un switch el cual solo podrá conmutar una variable para que este activada o desactivada, la cual en este caso será la variable Automat. Seguidamente para poder representar el modo reseteando, se añadirá la variable Reset y se implementarán tres alarmas visuales los cuales nos mostrarán el modo actual de control en el cual se encuentra el sistema. Cambio de ventana Para poder visualizar las otras ventanas antes nombradas tendremos unos botones los cuales al pinchar nos abrirá la pestaña correspondiente elegida. Para configurar el botón tendremos que elegir Show Window en vez de Discrete Value en la sección de Touch Pushbuttons. Figura 4.11 Configuración acción de botón. Inputs modo manual Estos inputs serán tanto de booleanos, en los cuales se usarán botones como en anteriores ocasiones, como numéricos, en los cuales se usarán displays con entrada numérica. Sin embargo estos botones y displays solo trabajarán con las variables que se usarán en el modo manual y no sobre las variables de los actuadores de forma directa, por lo que el valor que tomen solo se llevará a cabo en el sistema una vez este pase a modo manual. 4.1 Representación en Intouch 25 4.1.3 Pantallas evolución temperatura y bacterias La pantalla de evolución de temperatura y bacterias tendrán la siguiente apariencia: Figura 4.12 Pantalla de evolución. Para estas pantallas tendremos que usar un total de tres nuevos elementos para su representación: Historical Trend Chard: este elemento será la gráfica en sí la cual nos representará la evolución de las variables seleccionadas, dichas variables tienen que tener activadas el campo "Log Data"para poder ser representadas en la gráfica. Para introducir las variables a visualizar deberemos ir a la sección "Pens 2 añadir dichas variables. Figura 4.13 Configuración entradas elemento Historical Tren Chard. De forma adicional se crearán unas variables adicionales, las cuales podremos renombrar como nosotros queramos. Estas variables, que en nuestro caso se llamarán X e Y, se recogerá la información recibida en la gráfica y deberán utilizarla los dos siguientes elementos que se mostraran a continuación. Trend Panel Chard: Es un elemento que nos servirá para poder movernos de una forma más precisa a través de la gráfica, pudiendo hacer zoom in o zoom out a cualquier lugar de la gráfica, también nos dispondrá el tiempo que se está mostrando en la gráfica actualmente. Para hacer uso de este elemento deberemos incluir en la configuración del mismo las variables generadas por la gráfica llamadas en este caso X e Y. Figura 4.14 Configuración TrendPanel. 26 Capítulo 4. Pantalla de explotación HMI Trend Legend: Este elemento nos marcará con precisión el valor que toma la variable seleccionada en el momento del tiempo que estemos seleccionando en ese instante. Debido a que para nuestro proyecto queremos visualizar el estado de la variable más su setpoint se necesitarán dos elementos de este tipo para recoger los valores de ambas variables. Al igual que en el anterior elemento deberemos añadir las variables creadas por el elemento Historical Trend Chard. Figura 4.15 Configuración TrendLegend. 4.1.4 Pantalla modos de operación La pantalla para poder visualizar los modos de operación usados en todo momento del proyecto usará un solo elemento, sin embargo habrá que hacer unas configuraciones en las variables que se van a usar para este elemento. 1. Se deberán crear tres variables adicionales para representar cada modo de control, estas variables serán en este caso propias del programa y no de entrada/salida como las que se han creado anteriormente 2. Estas variables tendrán que ir a otro grupo diferente que las demás variables anteriormente creadas, para ello crearemos un grupo diferente llamado "Modos". Figura 4.16 Creación de nuevo Alarm Group. 3. A continuación, se deberá ir a la sección Alarms, aquí se deberá rellenar cuando se activará la alarma en nuestra pantalla de operación (en este caso cuando estén activos) y el comentario que se mostrará. 4. Por último se crearán unos scripts para activar o desactivar estas nuevas variables con las variables de entrada/salida que teníamos en un principio dispuestas en nuestro HMI y controlador. Aquí una muestra de uno de esos scripts. 4.1 Representación en Intouch 27 Figura 4.17 Script usado para activación/desactivación de modos de control. Después de todo esto por fin podemos volver a nuestra pantalla o ventana de modos de operación, más concretamente a nuestro elemento llamado Alarm Viewer, en la configuración de dicho elemento deberemos añadir el grupo de donde se cogerán estas alarmas en este caso el grupo que hemos creado llamado Modos). Seguidamente elegiremos que se nos mostrará en dicha pantalla escogiendo dentro de la sección Column Management los parámetros deseados por el usuario, entre ellos la fecha, hora, el modo y el mensaje que se publica. Figura 4.18 Ventana de modos de control. 34 Capítulo A. Guía instalación Figura A.7 Panel de Control. 2. Una vez ahí accederemos a programas y características y por último actualizaciones instaladas. Figura A.8 Actualizzaciones de programas. 3. Una vez hayamos accedido a dicha pestaña habrá que buscar actualizaciones que puedan entrar en conflicto con la instalación del System Platform de AVEVA para ello tendremos que buscar actualizaciones con el siguiente nombre: KB5020872 KB5020874 Hecho esto podremos volver al proceso de instalación del programa de AVEVA y seguir con el mismo. Apéndice B Comunicación Para comunicar ambos programas (AVEVA System Platform y Codesys) hemos optado por comunicarlos mediante protocolo OPC UA. Para este caso hemos elegido una tasa de refresco de las variables a comunicar de 0.1 segundos, debido a que la propia simulación tiene el mismo tiempo de ejecucción es el tiempo máximo para esta tasa de refresco. B.1 Pasos a seguir Lo primero será configurar cada programa para poder habilitar la comunicación mediante este protocolo. B.1.1 Codesys Por la parte de Codesys tendremos que configurar los siguientes parámetros para poder comunicar ambos programas. Primero se deberá iniciar el Soft PLC para poder realizar la simulación del proyecto desde nuestro propio portatil sin necesidad de utilizar un PLC interno. Para ello nos iremos a nuestra barra de tareas e iniciaremos nuestro programa Codesys Control Win Systray - x64 tal y como sale en la siguiente imagen Figura B.1 Codesys Control Win Systray. Una vez hecho esto, volviendo al programa de Codesys, deberemos ir al apartado configuración de comunicación dentro de la pestaña device. Figura B.2 Configuración comunicación Codesys. 35 36 Capítulo B. Comunicación A continuación se buscará nuestro PLC y estableceremos conexión con él. Figura B.3 Busqueda de Soft PLC para conexión con Codesys. El siguiente paso será definir las variables que se vayan a compartir con nuestro programa de HMI (que en este caso es Wonderware), para esto se deberá ir al apartado configuración de simbolos y marcar las variables de nuestro programa que queramos comunicar tal y como se aprecia en la siguiente imagen. Figura B.4 Variables a compartir con Wonderware. Una vez configuradas todas las variables que se vayan a comunicar, se tendrá que volver al apartado configuración de comunicación, clicando esta vez en configuración de seguridad del dispositivo, aquí una imagen de como acceder esta opción. Figura B.5 Configuración de seguridad de la comunicación. Una vez hecho esto se deberá poner la siguiente configuración, haciendo hincapié en los siguientes puntos: B.1 Pasos a seguir 37 1. ComunicationMode: Este modo definirá si la comunicación esta cifrada o no, en este caso pondremos como opción ALL para permitir todo tipo de modos de comunicación. 2. Activation: Tendrá que estar activado para que Codesys funcione como servidor de la comunicación mediante OPC UA. 3. UserMgmtAllowAnonymous: Este apartado se tendrá que aceptar ya que su función es permitir o negar el acceso de un nodo cliente que se intente conectar con Codesys de forma anonima. Figura B.6 Configuración usada para la comunicación de este proyecto. B.1.2 Wonderware Para la configuración de wonderware deberemos realizar los siguientes pasos. Primero se tendrá que abrir el programa Aveva System Management Console, una vez hecho esto iremos al siguiente apartado para activar la instancia de la puerta de enlace. Figura B.7 Aveva SMC. Dentro de esta instancia tendremos que crear una nueva subinstancia para establecer la conexión mediante protocolo OPC UA tal y como sale en la imagen. 38 Capítulo B. Comunicación Figura B.8 Creación de instancia para conexión mediante protocolo OPC UA. Dentro de este apartado se tendrá que rellenar con los siguientes datos que se ven a continuación. Figura B.9 Configuración con los datos del nodo servidor. Tenemos que fijarnos en el nombre del servidor (que por defecto será esa dirección en nuestro portátil) y en las credenciales que, al igual que pusimos en la configuración en la comunicación del programa de Codesys, añadiremos un usuario anónimo para la conexión. Para confirmar esta conexión debemos pulsar en el botón de Test, si esta conexión se realiza con éxito nos aparecerá relleno el apartado de OPC UA Namespaces tal y como aparece en la siguiente imagen. B.2 Posibles problemas 39 Figura B.10 Valores obtenidos una vez la conexión se realiza con éxito. Por ultimo deberemos crear una OPCUAGroup Connection, que simplemente es un nuevo apartado donde añadiremos las variables las cuales queremos comunicar. En este caso hay que añadir que si queremos escribir sobre variables desde nuestro entorno HMI (como es el caso) deberemos confirmar en la casilla Demand Read. Una vezz hecho esto clicaremos en el botón Browse OPCUA Server e iremos añadiendo todas nuestras variables. B.2 Posibles problemas A continuación se detallará uno de los problemas que se tuvo a la hora de realizar dicha comunicación entre ambos programas. Primero debemos empezar recalcando que cuando el programa de AVEVA (Systema Management Console o para abreviar SMC) se conecta mediante protocolo OPC UA como cliente a otro nodo que haga de servidor, el programa SMC envía un certificado el cual tiene que ser aceptado por la parte del nodo servidor para poder establecer dicha comunicación. De forma estandar con otros programas estilo "hubs"tales como Cogent DataHub este certificado es aprobado directamente sin ningun tipo de configuración adicional. Sin embargo, a la hora de realizar una primera conexión con Codesys, funcionando éste como nodo servidor, se observa que dicho certificado se pone en la zona de certificados Üntrusted". Para acceder a tales certificados tendremos que hacer los siguientes pasos. 1. Se deberá acceder a la pantalla de seguridad mediante la barra de herramientas de Codesys, pinchando en Ver y luego seleccionando la opción de Pantalla de seguridad. Figura B.11 Acceso a pantalla de seguridad. 2. Seguidamente se accederá a la pestaña "Devices 2 de ahí tendremos que mover el certificado de Wonderware de la zona de certificados Üntrusted. a "Trusted". Una vez hecho esto nos reconocerá el certificado como uno válido y nos dejará conectarnos sin problemas. 40 Capítulo B. Comunicación Figura B.12 Zona de certificados. Apéndice C Planteamiento C.1 Código simulación del sistema Código C.1 Código simulación. // linea de agua IF Valvula1=TRUE THEN V1a:=V1a+Q*(1-X1); V1f:=V1f+Q*X1; END_IF IF V1a>=0.1 AND Valvula2=TRUE THEN V1a:=V1a-Q; V2a:=V2a+Q*(1-X2); V2f:=V2f+Q*X2; END_IF IF V1a<0.1 AND Valvula2=TRUE THEN V2a:=V2a+V1a; V2f:=V2f+V1a*X2; V1a:=0; END_IF IF V2a>=0.1 AND ValvulaR=TRUE THEN V2a:=V2a-Q; Vr:=Vr+Q; END_IF IF V2a<0.1 AND ValvulaR=TRUE THEN Vr:=Vr+V2a; V2a:=0; END_IF IF Vr>=0.1 AND Valvula3=TRUE THEN Vr:=Vr-Q; V3a:=V3a+(1-X3)*Q; V3f:=V3f+Q*X3; END_IF IF Vr<0.1 AND Valvula3=TRUE THEN V3a:=V3a+(1-X3)*Vr; V3a:=V3a+X3*Vr; Vr:=0; 41 42 Capítulo C. Planteamiento END_IF IF V3a>=0.1 AND ValvulaRio=TRUE THEN V3a:=V3a-Q; END_IF IF V3a<0.1 AND ValvulaRio=TRUE THEN V3a:=0; END_IF IF V3a>=0.1 AND ValvulaTerc=TRUE THEN V3a:=V3a-Q; END_IF IF V3a<0.1 AND ValvulaTerc=TRUE THEN V3a:=0; END_IF // linea de fango IF Valvula1f=TRUE AND V1f>=0.1 THEN V1f:=V1f-Q; Vdig:=Vdig+Q; Q1f:=0.1; ELSIF Valvula1f=TRUE AND V1f<0.1 AND V1f>0 THEN Vdig:=Vdig+V1f; Q1f:=V1f; V1f:=0; ELSE Q1f:=0; END_IF IF Valvula2f=TRUE AND V2f>=0.1 THEN Vdig:=Vdig+Q; V2f:=V2f-Q; Q2f:=0.1; ELSIF Valvula2f=TRUE AND V2f>0 AND V2f<0.1 THEN Vdig:=Vdig+V2f; Q2f:=V2f; V2f:=0; ELSE Q2f:=0; END_IF IF V3f>=0.1 AND Valvula3f=TRUE THEN V3f:=V3f-Q; Vdig:=Vdig+Q; Q3f:=0.1; ELSIF Valvula3f=TRUE AND V3f>0 AND V3f<0.1 THEN Vdig:=Vdig+V3f; Q3f:=V3f; V3f:=0; ELSE Q3f:=0; END_IF C.1 Código simulación del sistema 43 IF Vdig>=0.1 AND ValvulaDig=TRUE THEN Vdig:=Vdig-Q; END_IF IF Vdig<0.1 AND Vdig>0 AND ValvulaDig=TRUE THEN Vdig:=0; END_IF // oxigeno reactor IF InyectBact=TRUE THEN Bacterias:=Bacterias+landa*((O2-0.1*Bacterias)/((O2)+Kb)); ELSE Bacterias:=0; END_IF // digestión anaeroba IF Vdig>0 OR Q1f>0 OR Q2f>0 OR Q3f>0 THEN Tdig:=((K1*((Tf*(Q1f+Q2f+Q3f)+Tdig*Vdig)/((Q1f+Q2f+Q3f)+Vdig))+K2*Tcal)/(K1+K 2)); END_IF IF Tdig>70 THEN Vgas:=Vgas+Kg*Tdig*Vdig; ELSE Vgas:=Vgas; END_IF IF ValvulaGas=TRUE AND Vgas>=0.1 THEN Vgas:=Vgas-Q; ELSIF ValvulaGas=TRUE AND Vgas<0.1 THEN Vgas:=0; END_IF P:= (Vgas/(13-Vdig))*Kp; //sensores V1:=V1f+V1a; IF V1>9 THEN S1A:=TRUE; ELSE S1A:=FALSE; END_IF IF V1>5 THEN S1M:=TRUE; ELSE S1M:=FALSE; END_IF IF V1>2 THEN S1B:=TRUE; ELSE S1B:=FALSE; END_IF V2:=V2f+V2a; IF V2>9 THEN S2A:=TRUE; ELSE S2A:=FALSE; END_IF IF V2>5 THEN Bibliografía [1] Picuino, Método de ziegler-nichols, última consulta Julio de 2023. https://www.picuino.com/es/controlziegler-nichols.html. [2] Tecpa, Control y sensores en una edar, última consulta Julio de 2023. https://www.tecpa.es/control-del- proceso-en-una-edar/. [3] ,Tratamientos y procesos que se dan en una edar, última consulta Julio de 2023. https://www.tecpa.es/tratamientos-procesos-depuracion-aguas-residuales/. [4] Wikipedia, Ecuación de monod, evolución de microorganismos, última consulta Julio de 2023. https://es.wikipedia.org/wiki/EcuacióndeMonod. 51