scieee AI-readable full text Open interactive document viewer

Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA

Palomo Cantador, Antonio Jesús

Abstract

El servidor OPC-UA y el control remoto están ganando terreno a otros antiguos métodos de comunicación año tras año. Son dos componentes fundamentales en la ya existente revolución industrial inteligente 4.0. El trabajo trata de recrear un modelo basado en un sistema de cuatro tanques mediante la herramienta Matlab&Simulink. A esto se incorpora un control PID mediante el software Codesys 3.5. Finalmente se añade un SCADA sobre el control del sistema en el software Citect SCADA 2018. La comunicación de los tres programas se realiza mediante el servidor OPC-UA, introduciendo Codesys como servidor mientras que Matlab&Simulink y Citect SCADA quedarían como clientes. Finalmente se incluye un anexo con la guía detallada de la conexión al servidor OPC-UA de los tres programas utilizados.

Full text

Equation Chapter 1 Section 1 Trabajo Fin de Máster Máster en Ingeniería Industrial Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA Autor: Antonio Jesús Palomo Cantador Tutor: Francisco Salas Gómez Dpto. Ingeniería de sistemas y automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2021 iii Trabajo Fin de Máster Máster en Ingeniería Industrial Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA Autor: Antonio Jesús Palomo Cantador Tutor: Francisco Salas Gómez Profesor titular Dpto. de Ingeniería de sistemas y automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2021 v Trabajo Fin de Máster: Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA Autor: Antonio Jesús Palomo Cantador Tutor: Francisco Salas Gómez El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros: Presidente: Vocales: Secretario: Acuerdan otorgarle la calificación de: Sevilla, 2021 El Secretario del Tribunal vii A mi familia A mis seres queridos ix Agradecimientos Me gustaría agradecer estos años a mi familia por ser el soporte y el apoyo fundamental desde que empecé mi etapa universitaria hace ya unos años, dándome siempre la estabilidad que necesito para seguir adelante. También me gustaría destacar la labor de mi tutor del trabajo, que de nuevo ha sido una ayuda fundamental en el desarrollo del trabajo, en este caso a pesar de la distancia. Finalmente, no puedo olvidarme de las personas que han aparecido en este último de año de Erasmus, viviendo e interesándose conmigo día a día los problemas de este trabajo. En especial, mis amigos del Campus San Paolo han sido ese empujón final que necesitaba. xvi GLOSARIO 47 ANEXO-A 49 A.1. CONFIGURACIÓN DEL SERVIDOR OPC-UA EN CODESYS 49 A.1.1. Ejecución del proyecto con el servidor de comunicación 51 A-2. CONFIGURACIÓN DE UN CLIENTE EN EL SOFTWARE CITECT SCADA 2018 53 A.3. CONEXIÓN DEL CLIENTE EN MATLAB&SIMULINK 60 A.3.1 Incorporación de la comunicación en el modelo 62 xvii ÍNDICE DE TABLAS Tabla 3-1. Características físicas del sistema 11 Tabla 3-2. Bloques del modelo Simulink 12 Tabla 4-1. Parámetros del bloque PID_FIXCYCLE 16 Tabla 5-1. Objetos básicos en Citect SCADA 30 xix ÍNDICE DE FIGURAS Figura 1-1. Reloj de agua árabe 1 Figura 1-2. Submarino con realimentación 2 Figura 2-1. Iconos del software utilizado 5 Figura 2-2. Esquema servidor-cliente del Proyecto 6 Figura 2-3. Variables comunicadas a través del servidor OPC 6 Figura 3-1. Esquema original del sistema de cuatro tanques 9 Figura 3-2. Sistema real del laboratorio 10 Figura 3-3. Modelo final 13 Figura 3-4: Comunicación del modelo final 13 Figura 4-1. Algoritmo PID implementado por Codesys 15 Figura 4-2. Bloque PID_FIXCYCLE 16 Figura 4-3. Esquema configuración 1 17 Figura 4-4. Controlador PID de la configuración 1 18 Figura 4-5. Esquema configuración 2 19 Figura 4-6. Parámetros Ziegler-Nichols en bucle abierto 20 Figura 4-7. Tabla Ziegler-Nichols en bucle abierto 20 Figura 4-8. Controlador PID de la configuración 2 23 Figura 4-9. Esquema configuración 3 23 Figura 4-10. Emparejamientos de la tercera configuración 24 Figura 4-11. Controlador PID de la configuración 3 26 Figura 4-12. Tarea principal en Codesys 27 Figura 5-1. Pantalla para acceder a las funciones Cicode 31 Figura 5-2. Función Cicode menú desplegable 31 Figura 5-3. Objeto gráfico de la configuración 32 Figura 5-4. Función Cicode configuración de válvulas 32 Figura 5-5. Guardar y cargar la representación de variables 33 Figura 5-6. Representación de la evolución de variables 34 Figura 5-7. Pantalla principal de explotación 35 Figura 6-1. Iniciar PLC virtual 37 Figura 6-2. Iniciar el modelo de Matlab&Simulink 37 Figura 6-3. PageList en Citect SCADA 38 Figura 6-4. Respuesta ante escalón en la configuración 1 38 Figura 6-5. Respuesta del sistema en bucle cerrado en la configuración 1 39 Figura 6-6. Respuesta ante escalón en la configuración 2 40 Figura 6-7. Respuesta del sistema en bucle cerrado en la configuración 2 41 Figura 6-8. Respuesta antes escalón en la configuración 3 42 Figura A-1. Lista de variables globales 49 Figura A-2. Lista de configuración de símbolos 50 Figura A-3. Modo simulación del proyecto 50 Figura A-4. Iconos ocultos en la pantalla 51 Figura A-5. Inicio de la ejecución del proyecto 52 Figura A-6. Configuración de la comunicación 52 Figura A-7. Conexión manual del dispositivo a la puerta de enlace 53 Figura A-8. Creación de un nuevo proyecto Citect SCADA 54 Figura A-9. Asistente de configuración de nuevo dispositivo 54 xx Figura A-10. Pantalla de crear un nuevo dispositivo 55 Figura A-11: Método de comunicación del dispositivo 55 Figura A-12: Dirección del servidor OPC 56 Figura A-13. Vinculación del dispositivo E/S 56 Figura A-14: Selección de las variables comunicadas 57 Figura A-15. Variables cargadas en el servidor OPC-UA 57 Figura A-16. Búsqueda del configurador Citect SCADA 58 Figura A-17. Configurar un nuevo cliente OPC-UA 58 Figura A-18. Asistente de configuración 59 Figura A-19. Ejecución del modo demostración 60 Figura A-20. Función de comunicación OPC-UA en Matlab 61 Figura A-21. Incorporación de la comunicación en el modelo Matlab&Simulink 63 Figura A-22. Nomenclatura del bloque “Interpreted Matlab Fcn” 63 xxi Notación Setpoint Punto de referencia Solver Solucionador de ecuaciones en Matlab 1 Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA 1 INTRODUCCIÓN ste capítulo introductorio tratará sobre la historia de los elementos del trabajo y los objetivos marcados para completar el proyecto. 1.1. Historia Los inicios de la teoría del control comienzan con la preocupación de árabes y griegos por determinar con precisión el devenir del tiempo. Los primeros relojes de agua con un regulador flotador se sitúan en torno al 300 a.C. Figura 1-1. Reloj de agua árabe No fue hasta el siglo XVII cuando Cornelius Drebbel introdujo el primer sistema con realimentación explícita para medir la temperatura. Llegó a construir un submarino en 1620 con varios sistemas de realimentación instalados. E El control automático ha desempeñado una función vital en el avance de la ingeniería y la ciencia. - Katsuhiko Ogata - 2 Años después, el primer controlador con realimentación automática en un proceso industrial fue el regulador centrífugo de James Watt (1769) para controlar la velocidad de la máquina de vapor. Figura 1-2. Submarino con realimentación Hasta finales del siglo XIX el control automático se mantuvo como fundamentalmente intuitivo. Fue J.C. Maxwell quien creó la primera teoría de control usando el modelo de una ecuación diferencial en 1868. Por otra parte, durante la segunda guerra mundial se intensificó el desarrollo de sistemas de control. Desde la década de 1980 y hasta la actualidad, la utilización de computadoras digitales como componentes de control se ha convertido en una rutina. Por su parte, uno de los ejemplos más antiguos del control PID fue ideado por Elmer Sperry, mientras que el primer desarrollo teórico de los controladores tipo PID nacieron para el gobierno automático de buques y puede decirse que fueron descubiertos por el científico Nicolás Minorsky entorno al 1921. La dinámica de un buque obedecía la ecuación de movimiento del estilo de: 𝐴𝑒′′+𝐵𝑒′+𝜏𝜌=𝐷 Donde “e” es el error en dirección y “rho” es el ángulo del timón. Finalmente queda añadir que el estándar OPC (inicialmente OLE, pero renombrado Open Protocol Communications) surgió a mediados de los años 90 como una tecnología para la comunicación del software de tipo SCADA y otros HMI con los dispositivos de control en el ámbito de la industria. Tras la irrupción en pocos años del OPC-DA, también llamado OPC clásico para algunas utilidades concretas, con el paso de los años los protocolos industriales han tenido que cumplir más requisitos para poderse adaptar a los nuevos entornos. Para cubrir estas nuevas necesidades, la OPC Foundation diseñó un nuevo estándar llamado OPC Unified Architecture (UA). 3 Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA 1.2. Motivación y objetivos por cumplir Tras las últimas actualizaciones, OPC UA incorpora grandes cambios y mejoras funcionales respecto a las otras versiones, desde temas de seguridad (hoy en día tan necesaria), a nuevos modelos de datos para agrupar etiquetas y optimizar la comunicación, o facilidad en su configuración, entre otras. Por su parte, la idea de un control remoto y la comunicación entre varias aplicaciones de manera simultánea se antoja indispensable debido a la evolución de la pandemia durante este último año. La existencia de un sistema de cuatro tanques interconectados en el laboratorio del departamento de Ingeniería de sistemas y automática de la Escuela Superior de Ingeniería da origen al modelo del sistema con el que se trabaja en este proyecto. A partir de aquí, el objetivo fundamental del proyecto será crear un control del nivel de agua sobre un modelo en Matlab&Simulink basado en el sistema real del laboratorio. Se procede a desglosar los objetivos del proyecto: • Comunicación mediante el servidor OPC-UA entre los programas Codesys 3.5, Matlab&Simulink y Citect SCADA 2018. Se añadirá un anexo como guía sobre cómo establecer esta comunicación entre los tres programas. • Modelado del sistema de cuatro tanques en un diagrama de bloques en Matlab&Simulink. Se intentarán adecuar las características físicas del sistema con la mayor exactitud posible. • Crear un control PID teórico sobre tres configuraciones del sistema por separado. Para ello se realizará un análisis teórico previo, ajustando los parámetros de manera precisa posteriormente. • Creación de un SCADA que sirva como interfaz para el control del sistema. • Adquisición de resultados de las tres configuraciones y conclusiones. 1.3. Organización del documento Una vez que se han establecido los objetivos, es importante clarificar el contenido de los siguientes capítulos del documento: • En el capítulo 2, se explican los distintos programas utilizados y el servidor de comunicación empleado entre ellos. • Por su parte, el capítulo 3 trata sobre el modelo para simulación creado, a partir de un sistema real. Incluye detalladamente cada uno de los componentes del modelo. • A continuación, el capítulo 4 contiene la definición del control utilizado de manera teórica y práctica en las tres configuraciones utilizadas sobre el modelo de simulación. • El capítulo 5 muestra el SCADA creado que serviría como interfaz HMI entre un hipotético operario y el controlador del sistema. • Finalmente, el capítulo 6 ilustra los resultados obtenidos durante el proyecto y las conclusiones derivadas de estos resultados. Cabe añadir que se ha incluido un anexo sobre la configuración de la comunicación en cada uno de los tres programas utilizados durante el proyecto. 10 Figura 3-2. Sistema real del laboratorio 3.2 Modelo creado A continuación, se procede a explicar el modelo creado gracias a la herramienta Matlab&Simulink. Cabe destacar que en el modelado se han intentado representar con la mayor exactitud posible las características físicas del sistema. 3.2.1. Características físicas importadas En la siguiente tabla se adjuntan los datos más relevantes recogidos gracias al material proporcionado por el tutor del proyecto: CARACTERÍSTICAS DIMENSIONES Diámetros de descarga de los tanques intermedios d1=d2=1.825cm Diámetros de descarga de los tanques superiores d3=d4=1.29cm Diámetro externo de las tuberías de polietileno d_ext=20mm Diámetro interno de las tuberías de polietileno d_int=15mm Base del depósito acumulador A=60x150=0.9 𝑚2 Altura del depósito acumulador h=50cm 11 Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA Base de los otros cuatro tanques A=20x30=0.06𝑚2 Altura de los tanques intermedios h1=h2=150cm Altura de los tanques superiores h3=h4=140cm Altura relativa de las bombas con respecto al tanque acumulador ℎ𝑏𝑜𝑚𝑏𝑎<ℎ𝑎𝑐𝑢𝑚𝑢𝑙𝑎𝑑𝑜𝑟 Tabla 3-1. Características físicas del sistema 3.2.2. Bloques de Simulink En este apartado se explica cómo se han adaptado las condiciones del sistema al modelo de bloques, teniendo en cuenta tanto las características físicas como las peculiaridades de acoplar todos los bloques, la mayoría de ellos pertenecientes a la librería Simscape. Se adjunta la tabla 3-2 explicando detalladamente los bloques utilizados y su función. SÍMBOLOS NOMBRE DEL BLOQUE OBSERVACIONES Y PARÁMETORS RESERVOIR Tanque acumulador con dimensiones:150x60x50cm Volumen inicial (tanque lleno): 450 litros TANK 2 tanques superiores: 20x30x140 cm 2 tanques intermedios: 20x30x150 cm Volumen inicial: Setpoint establecido 2-WAY DIRECTIONAL VALVE 6 válvulas para los cuatro tanques Se abren cuando se activa el actuador Área de paso=Área interna de la tubería=1.77𝑒−4𝑚2 2-POSITION VALVE ACTUATOR Inicialmente inactivo Se activa cuando su entrada “cruza” el 50% del valor nominal establecido CHECK VALVE 10 válvulas unidireccionales (una junto a cada entrada o salida de un tanque) Permite el paso solo en un sentido y solventa el problema de distintas presiones en el sistema FIXED DISPLACEMENT PUMP Desplazamiento de 30 𝑐𝑚3/𝑟𝑒𝑣 que permite conseguir la propulsión adecuada en las bombas teniendo en cuenta el rango de velocidades en el que se desea trabajar 12 IDEAL ANGULAR VELOCITY SOURCE Recibe una entrada de velocidad en rpm y la transmite a la bomba de desplazamiento RESISTIVE PIPE LP Representa a las tuberías en el sistema que unen depósitos, bombas y válvulas Diámetro interno:15mm ELBOW Se incluye en cada giro de 90º de una tubería SIMULINK-PS CONVERTER Convierte las señales físicas en booleanas para poder medirlas y representarlas HYDRAULIC FLUID Establece las propiedades del agua con la que se trabaja SOLVER CONFIGURATION Define la configuración del simulador, que trabaja con variables físicas MEMORY Usado en la comunicación Ayuda a resolver los bucles algebraicos OPC CONFIG REAL-TIME Simula el modelo en tiempo real incluyendo la comunicación OPC con el servidor Tabla 3-2. Bloques del modelo Simulink 3.2.3. Modelo final A continuación, se adjunta como quedaría el modelo final incluyendo todos los bloques y parámetros mencionados en los apartados anteriores: 13 Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA Figura 3-3. Modelo final Por su parte la comunicación, establecida como subsistema, envía al servidor los volúmenes de agua de los 4 tanques y recibe los valores de velocidad de las bombas junto con las válvulas que se encuentran abiertas en cada momento. Esto queda representado en la figura 3-4.: Figura 3-4: Comunicación del modelo final 14 La función que aparece en la figura 3-4 como “Interpreted MATLAB Fcn” engloba en una función de Matlab, las variables de entrada y salida del servidor mencionadas recientemente. Los pormenores de la configuración de la función y otros aspectos sobre la comunicación se encuentran detallados en el anexo 1. 15 Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA 4 CONTROL DEL SISTEMA continuación, una vez que el modelo ha quedado claramente definido, se procede a crear un controlador que alcance el nivel de agua del tanque deseado. 4.1 Control PID En primer lugar, cabe destacar que el control de agua se realizará exclusivamente sobre los tanques intermedios, es decir, los tanques 1 y 2 siguiendo la nomenclatura que se ha utilizado hasta ahora. Se debe explicar cómo implementar un control PID gracias a la ayuda de bloques predeterminados. Para el control PID, Codesys implementa un algoritmo basado en la suma de tres componentes tal y como aparece en la figura 4-1. Figura 4-1. Algoritmo PID implementado por Codesys Las tres componentes que intervienen en el control serán: • El error de la variable a controlar con respecto a la referencia por una constante proporcional • La integral del error en el tiempo (viene a ser el error acumulado) por una constante integral • La derivada del error (variación del error en el instante) por una constante derivativa En este caso, bastará con el bloque PID_FIXCYCLE que facilita Codesys. Las entradas y salidas del bloque quedan explicadas detalladamente en la tabla 4-1 que se encuentra debajo de la figura. A 16 Figura 4-2. Bloque PID_FIXCYCLE ENTRADA/SALIDA FUNCIÓN ACTUAL Variable que se quiere controlar En nuestro caso sería el nivel de agua de los tanques intermedios SET_POINT Valor de referencia que se desea alcanzar en la variable a controlar que aparece en “ACTUAL” KP Constante proporcional del controlador TN Tiempo integral del controlador PID TV Tiempo derivativo del controlador PID Y_MANUAL Valor que se copia a la salida Y si la variable MANUAL está activa Y_OFFSET Offset para la variable manipulada Y Y_MIN Valor mínimo de saturación de la salida Y_MAX Valor máximo de saturación de la salida MANUAL Variable booleana que activa o desactiva el modo manual RESET Variable booleana que copia el valor de offset en la salida cuando se encuentra activa CYCLE Tiempo fijo de ejecución del bloque PID Y Variable de salida En nuestro caso sería la velocidad de las bombas LIMITS_ACTIVE Variable booleana que se activa automáticamente si la salida alcanza los límites de saturación OVERFLOW Variable booleana que se activa cuando rebosa el número de datos en el controlador Tabla 4-1. Parámetros del bloque PID_FIXCYCLE 17 Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA 4.2. Configuraciones del sistema Una vez que quedan descritas las variables del controlador PID en detalle, se procede a explicar las distintas configuraciones adoptadas por el sistema en función de las válvulas abiertas y cerradas. Cada una de estas configuraciones requerirá un control distinto. 4.2.1. Primera configuración Esta primera disposición se caracteriza por tener una sola válvula abierta (válvula 1) quedando el resto de las válvulas todas cerradas. Además, solo estará encendida la bomba 1, quedando la bomba 2 apagada (velocidad = 0 rpm). De esta manera, el agua solo circulará por el tanque 1 y el tanque acumulador tal y como se refleja en la figura explicativa 4-3. Figura 4-3. Esquema configuración 1 4.2.1.1. Control de la primera configuración Esta disposición corresponde a un sistema de primer orden, para la que se calcularán los parámetros del controlador Kp, Tn y Tv. Primero se deducirán de manera teórica, ajustándolos posteriormente mediante ensayo de prueba y error. Tras hacer un ensayo de respuesta frente a escalón del sistema en bucle abierto, que se encuentra representado en la figura 6-4 (capítulo de resultados), se han obtenido los parámetros característicos del sistema: • 𝜏𝑏𝑎=143 • 𝐾=6.7𝑒−2 • 𝐸𝑙 𝑠𝑖𝑠𝑡𝑒𝑚𝑎 𝑞𝑢𝑒𝑑𝑎 𝑐𝑜𝑚𝑜 𝐺(𝑠)=0.067 143𝑠+1 A continuación, se aplica cancelación de dinámicas mediante el uso de un controlador PI: 18 𝐶(𝑠)=𝐾𝑝(𝑇𝑛𝑠+1) 𝑇𝑛𝑠 si 𝑇𝑛=𝜏=143 el sistema en bucle cerrado quedarí a como: 𝐺𝑐(𝑠)=𝐾𝑝×𝐾𝑇𝑛𝑠 ⁄ 1+𝐾𝑝×𝐾 𝑇𝑛=𝐾𝑝×𝐾 𝑇𝑛𝑠+𝐾𝑝×𝐾=1 𝑇𝑛 𝐾𝑝×𝐾𝑠+1 En este caso la constante de tiempo del sistema en bucle cerrado sería: 𝜏𝑏𝑐=𝑇𝑛 𝐾×𝐾𝑝 Si se establece como especificación del sistema un tiempo de establecimiento de 400s (al 98%), la constante de tiempo en bucle cerrado quedaría como 100s (𝑇𝑒𝑠𝑡=4𝜏): 𝜏𝑏𝑐=𝑇𝑛 𝐾×𝐾𝑝=100 →𝐾𝑝=143 0.067×100=21.34 Tras introducir el término derivativo para mejorar el transitorio y ajustar los parámetros mediante ensayos de prueba y error, los parámetros finales del controlador serían: Por lo tanto, el bloque del controlador en Codesys para la primera configuración sería el siguiente: Figura 4-4. Controlador PID de la configuración 1 • 𝐾𝑝=21.3 • Tn=120 • Tv=15 19 Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA Cabe destacar que el “Cycle time” debe ser muy pequeño (del orden de 0.1 como aparece en la figura) para que el controlador se asemeje lo máximo posible a uno ideal. 4.2.2. Segunda configuración La siguiente disposición se establece de manera que la válvula 5 (aquella que conecta la bomba 1 con el tanque 3) quedaría abierta y el resto de las válvulas cerradas. Al igual que en el caso anterior, la bomba 1 quedaría encendida y la bomba 2 apagada. Se adjunta en la figura 4-5. un esquema clarificador. Figura 4-5. Esquema configuración 2 4.2.1.1. Control Ziegler-Nichols En este caso el sistema sería de segundo orden. Tras hacer un ensayo frente a escalón en bucle abierto se obtiene que el sistema es sobreamortiguado. Esto quiere decir que el sistema no tiene sobreoscilación en bucle abierto, sino que tiene un pequeño retardo y se acerca a la ganancia en régimen permanente sin llegar a alcanzarla. De manera analítica, esto se explica debido a que el sistema tiene dos polos, uno de ellos muy dominante (cerca del origen) con respecto al otro. Para controlar el sistema, se obtiene previamente la respuesta frente a escalón en bucle abierto de manera que se puedan calcular los parámetros característicos: • La ganancia (K) sería el valor en régimen permanente • El retardo (L) sería el corte de la tangente en el punto de cambio de curvatura (máxima pendiente) con el eje de abscisas. • El tiempo de subida (tau) será el tiempo que trascurre desde el retardo hasta el corte de la tangente anterior con el nivel de la ganancia. Se adjunta la figura 4-6. como ejemplo clarificador de los parámetros mencionados: 26 Figura 4-11. Controlador PID de la configuración 3 4.2.4. Coordinación de las tres configuraciones Una vez que todas las configuraciones quedan definidas y explicadas adecuadamente, solo queda usar cada controlador en el caso adecuado. La variable GVL\Configuracion es la encargada de coordinar esta tarea. Tomará el valor 1,2 o 3 y se transmitirá por el servidor OPC hasta Codesys, quien elegirá la versión correcta del controlador en cada caso. Para ello se ha creado una tarea principal “Main task” llamada PLC_PRG que aparece detallada en la figura 4-12: 27 Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA Figura 4-12. Tarea principal en Codesys Se debe aclarar que “VERSION1”, “VERSION2” Y “VERSION3” son tres POUs independientes que incluyen los controladores para las configuraciones 1, 2 y 3 respectivamente, las cuales se han visto en este capítulo. 29 Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA 5. SCADA ste capítulo trata sobre el SCADA que se ha creado a través del programa Citect SCADA 2018. Se utilizará esta herramienta para supervisar, controlar, representar y adquirir datos relevantes sobre el sistema en tiempo real 5.1. Componentes de las pantallas de explotación En primer lugar, cabe destacar que la comunicación OPC-UA se establece como nuevo cliente que se une al servidor creado por Codesys. Para ello se debe incorporar un dispositivo nuevo de E/S en la topología del sistema. El Anexo 1 del proyecto incorpora una guía detallada de como establecer la comunicación OPC-UA con el servidor. Una vez que la conexión está establecida, se crea una nueva pantalla de explotación en el editor de gráficos y se comienzan a incorporar todos los componentes necesarios. 5.1.1. Objetos básicos Se adjunta una tabla donde se explica detalladamente cómo se han incorporado los elementos más básicos del sistema: OBJETOS SÍMBOLOS DESCRIPCIÓN Tuberías Representan el flujo de agua, pero no tienen ningún evento asociado. Se usan distintos colores para distinguir los caudales proporcionados por la bomba 1 y 2 Tanques Existen cuatro tanques con una barra azul que representa el volumen de agua en litros (de 0 a 90L). Además, el valor del volumen exacto en formato digital viene definido numéricamente tal y como aparece en el dibujo Bombas Símbolo que cambia de color (a verde) cuando la bomba comienza a funcionar (velocidad >0 rpm) E 30 Válvulas Válvulas de todo o nada. El color de la válvula (rojo o verde), representa si la válvula está completamente cerrada o abierta. Botón de manual/automático Pulsando el botón cambia de modo manual a automático y viceversa Valores numéricos Son valores digitales que no se pueden modificar manualmente, sino que dependen de la lógica implementada en los otros programas. Se utilizan para el valor real de la velocidad de las bombas y el de los tanques Entradas digitales Estos valores aparecen digitalmente al igual que los anteriores, pero además se pueden modificar por teclado. En el caso de las bombas solo afecta al valor real si el sistema se encuentra en modo manual. Para los valores de referencia (setpoint), solo se podrá introducir para los tanques que se estén controlando. En el caso de las configuraciones 1 y 2, el setpoint2 no estará visible ni modificable. Tabla 5-1. Objetos básicos en Citect SCADA 5.1.2. Funciones Cicode Cicode es un lenguaje de programación usado en el software Citect SCADA 2018 (y en tantas otras versiones de Citect) que se caracteriza por ser muy fácil de implementar en el caso de herramientas HMI o SCADA. Es un lenguaje muy parecido a ‘C’ pero se usa principalmente para el manejo de datos en tiempo real. Además, cabe destacar que se pueden utilizar todo tipo de variables, etiquetas, alarmas o lo que sea necesario. Para acceder a las funciones Cicode se procede desde la barra de herramientas principal tal y como aparece en la figura 5-1. 31 Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA Figura 5-1. Pantalla para acceder a las funciones Cicode En el caso del proyecto, se han creado funciones asociadas a eventos dentro de la pantalla de explotación, utilizando continuamente las variables globales que se transmiten a través del servidor OPC. En concreto se han creado dos funciones asociadas a la variable GVL\Configuracion. La primera función sirve para crear una pequeña pantalla emergente con una lista desplegable que permite elegir la configuración 1, 2 o 3 del sistema. Una vez completada la operación, el valor se asocia a la variable GVL\Configuracion y se transmite a través del servidor OPC en tiempo real. A continuación, se adjunta la figura donde se observa esta función. Figura 5-2. Función Cicode menú desplegable Esta función se utiliza para elegir la configuración del sistema en el momento en que se inicie la pantalla de explotación. Esto se realiza agregando el nombre de la función en la página del editor de gráficos ya creada: Archivo\Propiedades\Eventos\En entrada de página. 32 Por otra parte, también se asocia la misma función a la flecha que aparece en el objeto de la figura 5-3 de manera que se pueda modificar la configuración en todo momento, tan solo pulsando la flecha. Figura 5-3. Objeto gráfico de la configuración La segunda función implementa cierta lógica sobre la configuración del sistema. Dependiendo de la configuración que se haya elegido (1,2 o 3) se activan las válvulas correspondientes entre las seis existentes. Todas las etiquetas se asocian a las variables del servidor OPC para que la comunicación sea instantánea. Se adjunta la figura sobre cómo quedaría la función de configuración de válvulas: Figura 5-4. Función Cicode configuración de válvulas Esta función, al igual que en la anterior, se ejecutará en la entrada de página y en la flecha de la configuración de la figura 5-3, de manera que cada vez que se actualice el valor de la configuración, se actualice de igual forma la activación de las válvulas. 33 Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA 5.1.3. Representación de la evolución de las variables Para la correcta interpretación de las variables del sistema, se ha utilizado una página en el editor de gráficos dentro del mismo proyecto del SCADA sobre la evolución de: • las variables que se desean controlar. • los actuadores. En esta página, se utiliza el objeto ‘tendencia’ que permite representar esta evolución (se encuentra dentro de las herramientas principales de la página). Una vez creada, se divide en dos paneles distintos: • El primero de ellos representa la evolución de los niveles de agua de los tanques y los niveles de referencia a los que se debe llegar. • El segundo representa las velocidades de las bombas en revoluciones por minuto. Se ha separado la representación en estos dos paneles ya que las escalas son completamente distintas, por lo que no tendría sentido representar todas las variables conjuntamente. En ambos paneles, una vez que se han agregado todas las variables correspondientes, se pueden ocultar o visualizar las variables correspondientes en función de la configuración que se esté utilizando de manera manual. En la figura 5-5 se muestra cómo guardar y cargar un formato concreto de representación de variables por defecto (incluyendo las variables concretas que se quieren representar, las que quedan ocultas, las propiedades de la gráfica y el tiempo de representación). Figura 5-5. Guardar y cargar la representación de variables Cabe destacar que, dentro de las propiedades, se ha decidido escalar de manera automática las variables, no mostrar ejes secundarios y diferenciar las curvas con valores distintos por claridad de las figuras. 34 5.2. Pantallas finales de explotación Una vez que se han explicado todos los objetos y propiedades empleados, se procede a mostrar cómo quedarían las pantallas de explotación. En primer lugar, se debe mencionar una vez más que el proyecto está comunicado mediante el servidor OPC creado a través del programa de Codesys y todas las variables que se emplean en los objetos de las pantallas finales son transmitidos en tiempo real mediante este servidor. La primera pantalla sería la de representación de datos. En la figura 5-7, se muestra cómo quedaría la representación final en dos paneles como se ha mencionado anteriormente. Figura 5-6. Representación de la evolución de variables Se ha utilizado una variedad de paneles y colores como se observa en el árbol de objetos con el objetivo de diferenciar claramente la evolución de cada una de las variables. En cualquier caso, los colores, las curvas visibles y no visibles, las escalas de valores, el tiempo de muestro y el resto de las propiedades se pueden actualizar en tiempo real si se cree necesario. Para que estas características se conserven a lo largo del tiempo se deben guardar como se ha explicado anteriormente. La segunda pantalla que se desea explicar sería la pantalla principal, que incluye todos los objetos básicos definidos anteriormente junto con las funciones Cicode de manera indirecta. En la figura 5-8 se define cómo quedaría el modelo final. 35 Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA Figura 5-7. Pantalla principal de explotación Con esto quedan explicadas las dos pantallas finales que aparecen en la ejecución del SCADA. 42 A pesar de que existe un flujo de agua constante sobre los tanques 3 y 4, el valor en régimen permanente a 600 rpm será 0 debido a que el caudal de salida es mayor que el caudal de entrada de agua. A continuación, se procede, a representar la respuesta de los tanques frente a entrada en escalón. En este caso se introduce un escalón en la bomba 1 que varía desde 600 hasta 700 rpm y posteriormente otro escalón hacia abajo en la bomba 2 que varía desde 600 hasta 400 rpm. La respuesta de los tanques 1 y 2 se encuentra en la figura 6-8. Figura 6-8. Respuesta antes escalón en la configuración 3 De la respuesta frente a escalón que se observa en la figura anterior, se obtienen los parámetros que definen el modelo de primer orden: • K=0.09 • 𝜏=240 Con estos modelos se crean dos controladores simétricos para la acción sombre las bombas 1 y 2 que controlen los tanques 1 y 2 adecuadamente. Para la respuesta en bucle cerrado, se introducen varios cambios de referencia de subida y bajada frente a ambos volúmenes de los tanques, como se observa en la figura 6-9. 43 Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA Figura 6-9. Respuesta del sistema en bucle cerrado en la configuración 3 En la respuesta se observa claramente como los valores de los volúmenes se adaptan a los cambios de referencia obteniendo un valor 0 en régimen permanente. Por otra parte, el tiempo de establecimiento en bucle cerrado quedaría entorno a 600s, y la sobreoscilación menor a 25%. 6.2. Conclusiones y propuestas finales del trabajo Se debe recordar que el objetivo principal de este trabajo era controlar el modelo creado en Matlab&Simulink a partir de un controlador en Codesys. Este objetivo ha sido alcanzado incluso en varias configuraciones del sistema como se ha mostrado en los resultados anteriores. Cabe destacar la complejidad de la comunicación entre tres programas distintos mediante el único servidor OPCUA. Se ha tenido que aprender a configurar la comunicación en cada programa por separado, ya sea como cliente o como servidor. En particular, Matlab&Simulink no incluye un bloque para este tipo de servidor como en el caso de OPC-DA, por lo que se ha tenido que crear la conexión manualmente a través de una función como se explicará más adelante en el anexo. 44 Con respecto al modelo, se ha intentado reproducir el sistema real del laboratorio, incorporando una cantidad considerable de elementos de la librería Simscape, que, unidos a la comunicación, establece un modelo complejo de ejecutar. Para poder simular en tiempo real, se ha incorporado un Solver sencillo Ode1 con paso fijo 0.3 segundos. A continuación, detallando sobre el control realizado en Codesys, se ha conseguido un resultado muy satisfactorio en las configuraciones 1 y 3, obteniendo una respuesta en bucle cerrado con baja sobreoscilación además de bastante rápida, ya que se ha reducido el tiempo de subida y de establecimiento respecto al bucle abierto. En la configuración 2, debido a la complejidad explicada anteriormente, ha sido necesario un examen analítico más exhausto para controlar el sistema de segundo orden. A pesar de que la respuesta ha sido sensiblemente lenta, se ha conseguido un control estable en bucle cerrado con una sobreoscilación aceptable, por lo que de nuevo el resultado vuelve a ser satisfactorio. Por último, cabe destacar la incorporación del SCADA que facilita una interfaz entre el usuario y el controlador, que permite manejar con gran facilidad las variables principales del sistema, además de representar en tiempo real la respuesta del sistema en el modo y configuración que se estime oportuno. Como proyecto futuro, se propone la posibilidad de incorporar el control y el SCADA creado en el modelo real del laboratorio, incorporando también la comunicación con el modelo real como cliente, para observar las diferencias con respecto a las simulaciones que se han llevado a cabo en este trabajo. Por otra parte, se plantea la posibilidad de adaptar el sistema a un servidor que permita la comunicación a distancia, de manera que el control sea remoto, por lo que se realizaría desde una dirección IP distinta a la del modelo de Simscape creado en este proyecto. Esto facilitaría el desarrollo de las clases y prácticas online, sin necesidad de asistir presencialmente a los laboratorios de la Escuela de Ingenieros. 45 Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA BIBLIOGRAFÍA [1] Tamás Kardos & Dénes Nimród Kutasi, «Hybrid modelling and model based control of the four tanke process», 2017. [2] Schneider Electric, «StruxureWare SCADA Expert Vijeo Citect v7.40 SP1» 2014. [3] Ignacio Alvarado aldea, «Proceso de los cuatro tanques» [4] Departamento Ingeniería Sistemas y automática «Control descentralizado de sistemas multivariables» 47 Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA GLOSARIO SCADA Supervised Control and Data acquisition OPC Open Protocol Communication POU Program organization Unit PLC Programmable logic Controller (autómata programable) UA Unified Architecture DA Defined Architecture 49 Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA ANEXO-A e ha añadido este anexo como guía para explicar detalladamente cómo configurar la comunicación mediante el servidor OPC-UA en los tres programas utilizados durante el trabajo: Codesys, Matlab&Simulink y Citect SCADA. A.1. Configuración del servidor OPC-UA en Codesys En primer lugar, recordemos que será el autómata programable virtual de Codesys quien sea el servidor de la comunicación, mientras que los otros dos clientes permanecerán como clientes. Para comenzar la configuración se crea un proyecto Standard en el Software de Codesys v3.5 (a partir de esta versión no hay problemas con el servidor OPC-UA). A continuación, se crea una lista de variables globales que serán las que se comuniquen a través del servidor OPC-UA siguiendo la siguiente secuencia: -Application (botón derecho) /Agregar objeto/ Lista de variables globales. Se adjunta un ejemplo por claridad en la figura A-1: Figura A-1. Lista de variables globales -Una vez creada la lista de variables que se comunicarán, se está en condiciones de incorporar la lógica del programa usando las variables globales que se comunicarán. En este caso, como se ha explicado previamente se crean 3 POUs auxiliares y una principal que llamará a cada una de las auxiliares cuando sea necesario. S 50 Cuando la lógica funcione correctamente, se debe añadir una lista de configuración de símbolos siguiendo la misma ruta que se ha utilizado anteriormente: -Application (Botón derecho) / Agregar objeto /Configuración de símbolos Dentro de la lista de configuración de símbolos, añadimos las variables globales tal y como aparece en la figura A-2 y compilamos mediante el botón crear: Figura A-2. Lista de configuración de símbolos En este caso, se observa en la imagen que los derechos de acceso permiten a los clientes leer y escribir sobre las variables utilizadas sin ningún tipo de restricción. Antes de continuar, es importante asegurarse de que el proyecto no se encuentra en modo simulación, es decir, la casilla debe estar desmarcada tal y como aparece en la figura 6-3: Figura A-3. Modo simulación del proyecto A continuación, se ejecutan dos herramientas que deben aparecer en los iconos ocultos de la figura A-4, la puerta Gateway y el PLC: 51 Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA Figura A-4. Iconos ocultos en la pantalla Estos dos iconos deben estar encendidos cada vez que se ejecute el proyecto, siendo un motivo constante de error al ejecutar ya que se desactivan cada 120 minutos. Si no aparecen en el panel de iconos ocultos del ordenador se pueden buscar en el siguiente directorio: C:\Program Files\CODESYS\3.5.16.40\GatewayPLC o alternativamente en el explorador del ordenador. En este caso, con un sistema operativo de 64 bits, el nombre de estas herramientas es: -Codesys Gateway SysTray -x64 -Codesys Control Win SysTray -x64 Una vez que ya aparezcan en los iconos ocultos asegurarse de activarlos (Start Gateway y Start PLC respectivamente). A.1.1. Ejecución del proyecto con el servidor de comunicación A partir de este momento, si se han realizado todos los pasos anteriores ya estamos en disposición de ejecutar el proyecto siguiendo la ruta: En línea\Iniciar la sesión\ Botón Inicio Se adjunta en la figura A-5 un ejemplo de cómo iniciar la ejecución: 58 comunicación OPC-UA. El siguiente paso será buscar (en el explorador del sistema) el Configurador del programa y ejecutarlo (figura A-16). Figura A-16. Búsqueda del configurador Citect SCADA Posteriormente, seleccionar OPC UA Client driver y crear una nueva configuración (si no estaba previamente creada) como aparece en la figura A-17 Figura A-17. Configurar un nuevo cliente OPC-UA 59 Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA Seguidamente se puede crear un modo de encriptado (no se recomienda para este proyecto). En el último paso del panel, se pulsa el botón ‘Configurar’ (parte inferior del panel) y después probar la conexión introduciendo de nuevo la dirección del servidor OPC. Una vez realizado quedaría configurado el cliente. Es importante no adentrarse en configurar otros parámetros en este panel de los que han sido explicados aquí, ya que el hecho de estar en modo demostración puede generar algún problema en la compilación y posterior ejecución. Volviendo al programa Citect SCADA 2018, una vez que se haya creado la pantalla de explotación (se realiza en el editor de gráficos), antes de compilar y ejecutar el proyecto se debe añadir el asistente de configuración (o Setup Wizard) tal y como aparece en la figura A-18: Figura A-18. Asistente de configuración Se recomienda configurar todo como viene por defecto. No obstante, se pueden ajustar ciertos parámetros sobre la pantalla de explotación inicial o lo que se estime conveniente. Una vez finalizado se podrá compilar y ejecutar el programa. Una vez que no haya errores y se haya podido ejecutar correctamente, debe aparecer un mensaje de aviso sobre la falta de licencia y la posibilidad de ejecutar en modo demostración cómo aparece en la figura A-19. 60 Figura A-19. Ejecución del modo demostración Cuando se hayan creado las páginas pertinentes en el editor de gráficos explicadas anteriormente en el trabajo, se podrán leer y escribir en las variables del servidor sin ningún tipo de error ni aviso. A.3. Conexión del cliente en Matlab&Simulink En este último apartado, se explica la conexión del segundo cliente al servidor, la cual ha sido más laboriosa que las anteriores debido a que Matlab&Simulink, como hemos mencionado anteriormente, no incluye un bloque de configuración como si lo hace para el caso del Servidor OPC-DA. La comunicación se basa en crear una función en Matlab que incluya la conexión al servidor, elección de variables que se desea estudiar y configuración de la lectura y escritura constante en tiempo real de esas variables elegidas. En la figura A-20 se adjunta la función donde se han incluido todos los comandos necesarios para la comunicación: 61 Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA Figura A-20. Función de comunicación OPC-UA en Matlab 62 A partir de este momento, pasamos a explicar cómo se ha diseñado la función detalladamente: • Los cuatro valores a la entrada (tanque1, tanque2, tanque3, tanque4) son los volúmenes de los tanques en litros en el momento en que se llama a la función. Estos valores se extraerán directamente del modelo de Simulink mostrado en capítulos anteriores. • El segundo paso será inicializar todas las variables necesarias en esta función. Se definen todas como variables persistentes, lo que significa que mantienen su valor de una llamada de la función a la siguiente. Esto es recomendable para trabajar en tiempo real, especialmente en el caso de las variables con las que estamos trabajando, ya que en el caso de que no se actualice la variable en alguna de las llamadas mantiene el valor anterior en lugar de ir a cero. Se usará una variable que define cuando el servidor se encuentra inicializado (init_server), otra análoga para los nodos, que irán asociados a las variables (init_nodes) y otra que define al cliente que se desea conectar al servidor. Finalmente se añaden doce nodos que se asociarán a las variables de entrada (input1…input4) y salida (output1…output8). • A continuación, se inicializa un servidor (la primera vez que se llama a la función) que será el equivalente al servidor ya existente creado en Codesys. • El siguiente paso sería crear un cliente y conectarlo al servidor existente. Al igual que en el caso anterior, esto solo se realiza en la primera llamada a la función, por lo que a partir de la segunda llamada se omiten estos dos pasos. • Una vez que la conexión del cliente es correcta, se deben asociar una por una todas las variables del servidor a los nodos dentro del cliente. Por ejemplo: la variable del volumen del tanque 1 “tanque1_nivel”, se busca en el servidor OPC-UA dentro de la ruta que aparece en la función y se asocia al nodo “input1” dentro del cliente “uaClient”. Si no se encuentra la ruta de la variable que se desea, un modo alternativo sería buscar variable por variable gracias al comando de Matlab “browseNamespace” y añadirlas al nodo correspondiente. • Una vez que se han definido los cuatro nodos con variables de entrada y los ocho con variables de salida, se procede a leer y escribir los valores. En la función, se ha optado por leer el valor de los nodos de salida del cliente y copiarlos en cada una de las componentes del vector “valor” definido previamente. A continuación, se escriben los valores de las entradas definidas al inicio de la función (tanque1…tanque4) en los valores de los nodos asociados a variables de entrada (input1…input4). Estos valores se verán actualizados automáticamente en el servidor OPC. • Finalmente, el vector de ocho componentes “valor” se pasa a tipo “double” para poder pasar todos estos valores al modelo Matlab&Simulink. Con este último paso se da por concluida la función. A.3.1 Incorporación de la comunicación en el modelo Como hemos dicho anteriormente, no existe un bloque concreto de comunicación OPC-UA, por lo que la única solución es incorporar un bloque que integre la función que se ha creado en el apartado anterior. Esto es exactamente lo que se ha realizado gracias a la ayuda del bloque “Interpreted MATLAB Fcn” tal y como aparece en la figura A-21. 63 Control de un sistema de cuatro tanques usando CODESYS y Citect SCADA Figura A-21. Incorporación de la comunicación en el modelo Matlab&Simulink Siendo coherente con la función, se han introducido cuatro variables de entrada a la función con la ayuda de un bloque “Mux” y ocho variables de salida con la ayuda de un bloque “Demux”. Por otra parte, cabe destacar que la configuración del bloque “Interpreted MATLAB Fcn” requiere una nomenclatura especial en función del número de variables de entrada que aparece en la figura A-22. Figura A-22. Nomenclatura del bloque “Interpreted Matlab Fcn” No sería válido introducir el nombre real de la variable, el nombre que se use en la función o cualquier otra nomenclatura. Por último, se aconseja revisar dos motivos de error frecuentes en la ejecución del modelo debido a la comunicación: 64 • En primer lugar, la función de comunicación previamente explicada debe encontrarse en la misma carpeta que el modelo creado, y ambas deben estar en la carpeta que se encuentre abierta en el momento del inicio de la ejecución. • Por otra parte, cada vez que se detenga la comunicación por parte del servidor en Codesys, se debe reiniciar el proceso también en Matlab para borrar el cliente, por lo que se debe añadir un “Clear all” en el Command Window. Una vez que todo ha sido configurado correctamente, la comunicación entre los tres programas se podrá realiza en tiempo real sin ningún tipo de restricción, ya que todos podrán leer y escribir sobre el servidor en tiempo real.