scieee AI-readable full text Open interactive document viewer

Automatización de una planta industrial usando Visual Components y Codesys

Fernández Marrón, Alfonso

Abstract

Este trabajo se centra en el campo de la automatización industrial, especialmente en la programación de Controladores Lógicos Programables (PLCs) encargados del control. Por un lado, se diseñará desde cero una planta industrial utilizando el software Visual Componets. Este programa ofrece interesantes oportunidades en el campo de la automatización y organización, además de la posibilidad de crear entornos virtuales realistas. También facilita el reporte de resultados y brinda al usuario una fácil detección de funcionamientos ineficientes. Por otra parte, se utilizará CODESYS V3.5 para llevar a cabo el control. Este programa facilita la programación de diversas funcionalidades y características que tendrán los sistemas y se ocupará de gestionar las respuestas derivadas de la interacción entre los dos programas.

Full text

i Equation Chapter 1 Section 1 Trabajo Fin de Grado en Grado en Ingeniería de Tecnologías Industriales Automatización de una planta industrial usando Visual Components y Codesys Autor: Alfonso Fernández Marrón Tutor: Francisco Salas Gómez Dpto. Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2024 iii Trabajo Fin de Grado en Grado en Ingeniería de Tecnologías Industriales Automatización de una planta industrial usando Visual Components y Codesys Autor: Alfonso Fernández Marrón 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, 2024 v Trabajo Fin de Grado: Automatización de una planta industrial usando Visual Components y Codesys Autor: Alfonso Fernández Marrón 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, 2024 El secretario del Tribunal vii A mi familia A mis seres queridos ix Agradecimientos Agradecer especialmente a mis padres, a Carmen, a Ana, a Alberto y a Fran por ayudarme en todo momento a sacar adelante la carrera, dándome libertad, tiempo y confianza. Agradecer a Ana su comprensión en los momentos de agobio y seguir apoyándome. A todos los amigos que he hecho durante la carrera, a Manuel, a Paula M, a Paula P, a Fran y especialmente a Asun e Ismael por no dejarme atrás, por su generosidad diaria y por ayudarme constantemente sin pedir nada a cambio. Agradecer a mi tutor, Francisco, su paciencia y buena fe en todo momento. Alfonso Fernández Marrón Figura 35: Grupos de productos implemetados en el proyecto 26 Figura 36: Bloques funcionales que permiten el control mediante diagramas de flujo 26 Figura 37: Instrucciones dentro del bloque funcional "Inline process" 27 Figura 38: Todas las instrucciones aplicables a los bloques funcionales 27 Figura 39: Posibles comportamientos que se pueden añadir a los distintos elementos creados 28 Figura 40: Extracto de las variables internas creadas sobre el robot cartesiano 29 Figura 41: Robot SCARA junto a las variables internas creadas 29 Figura 42: Configuración de la herramienta del robot SCARA 30 Figura 43: Plano de la vista en planta del proyecto 31 Figura 44: Extracto de la tarea cíclica "IEC-Tasks" 32 Figura 45: Programa principal de control del robot cartesiano 33 Figura 46: Contador de cajas dentro del almacén lateral 34 Figura 47: Contadores de cajas sobre los pallets 34 Figura 48: Bloque funcional "Recoge_cilin_buff" 35 Figura 49: Código "Recoge_pieza_cinta" 35 Figura 50: Bloques funcionales encargados de la colocación de cilindros 36 Figura 51: Código dentro de los bloques funcionales encargados de colocar los cilindros 36 Figura 52: Método de alternancia entre tipos de teselas 37 Figura 53: Programa de control principal del robot SCARA 37 Figura 54: Contadores encargados del número de botelleros completos en pallet 38 Figura 55: Programa de movimientos del robot SCARA (1) 39 Figura 56: Programa de movimientos del robot SCARA (2) 39 Figura 57: Programa encargado del control de las salidas del almacén y pedidos 40 Figura 58: Programa de control entre modos de operación. 41 Figura 59: Extracto del programa "Semi-Manual" 41 Figura 60: Diagrama de flujo de los pallets con teselas 42 Figura 61: Proceso de implementación de filtros 43 Figura 62: Ejemplo de montaje 44 Figura 63: Instrucciones dedicadas al montaje 44 Figura 64: Código principal del robot cartesiano y señales 45 Figura 65: Ejemplo de movimiento en el robot cartesiano 46 Figura 66: Movimiento del robot en la posición 17 (izquierda). Movimiento en la posición 87 (derecha). 46 Figura 67: Código de prueba para el ejemplo de conexión 49 Figura 68: Objeto "Configuración de simbolos" 49 Figura 69: Activación de la conexción con el PLC virtual 50 Figura 70: Activación del apartado de "Conectividad” 50 Figura 71: Añadir nuevo servidor 51 xvii Figura 72: Configuración de IP 51 Figura 73: Modelo final de la simulación de ejemplo 52 Figura 74: Asociación entre variables del servidor y de la simulación 52 Figura 75: Comprobación de la conexión 53 Figura 76: Extracto de las variables "Simulación al servidor" 53 Figura 77: Extracto de las variables "Servidor a la simulación" 54 1 1 INTRODUCCIÓN 1.1 Motivación Este proyecto surge como una profundización en la asignatura "Automatización Industrial", impartida en el Grado de Ingeniería de Tecnologías Industriales, donde se trabaja con herramientas similares a las utilizadas en este trabajo, como CODESYS 2.3 y ITS PLC PROFESSIONAL EDITION. Existen distintos entornos de programación de PLCs, cada uno con características y aplicaciones específicas en la automatización de procesos industriales. Entre los más destacados se encuentran CODESYS, Unity Pro y TIA Portal. Este proyecto se centrará específicamente en el uso de CODESYS, en su versión 3.5, por su gran versatilidad, su soporte para múltiples lenguajes de programación (IEC 61131-3) y su capacidad para integrarse con una amplia gama de sistemas y protocolos industriales. En lo que respecta al modelado y simulación de plantas industriales, existen diversos programas que permiten visualizar y evaluar el comportamiento de sistemas automatizados, tales como FACTORY IO, Siemens PLCSIM Advanced o 3D Factory Simulation, entre otros. Para este proyecto, se ha optado por utilizar Visual Components, una herramienta avanzada que ofrece un entorno virtual altamente detallado y preciso, facilitando la creación de modelos realistas de plantas industriales. Este software posibilita probar y validar las estrategias de control antes de su implementación en un entorno real, reduciendo significativamente los riesgos de errores y los costos asociados a la puesta en marcha de sistemas complejos. Además, el aprendizaje y uso de Visual Components en su versión 4.3 presenta un reto atractivo, ya que ofrece funcionalidades únicas y avanzadas menos comunes en otros programas similares, y clave para optimizar y mejorar la eficiencia del diseño de plantas industriales. 1.2 Objetivos El principal objetivo de este trabajo es desarrollar una solución de control para una planta industrial virtual, asegurando el correcto funcionamiento de todos sus componentes y permitiendo, posteriormente, la implementación del sistema en un entorno real, de manera que se minimicen los errores y se optimicen los costes de producción. En este contexto, se investiga y se profundiza en el uso del software Visual Components 4.3, cuyo enfoque se centra principalmente en temas de la organización industrial, por su gran potencial en lo relativo al estudio de las estadísticas y control de tiempos sobre la planta. Aunque el trabajo se centrará en la utilización de herramientas específicas de Visual Components, también se detallarán otras funcionalidades útiles del software que, aunque no aplicadas directamente en este caso, podrían ser relevantes para futuros desarrollos o investigaciones en el campo de la automatización industrial. Las fases necesarias para alcanzar los objetivos descritos son: 1. Familiarización con el programa de modelado y simulación Visual Components, para aprender qué herramientas proporciona, y como complementarlas con el uso del controlador en CODESYS. Además, reconocer las limitaciones presentes en el uso simultaneo de ambos softwares. 2. Diseño de la planta en Visual Components. 3. Familiarización con la versión 3.5 de CODESYS y realización del programa encargado en controlar la planta industrial, utilizando los distintos lenguajes de programación estudiados en la asignatura “Automatización Industrial”. 4. Configuración de CODESYS y Visual Components para realizar la comunicación de información, utilizando el protocolo de comunicación OPC UA, permitido por ambos programas. 5. Creación de panel de control del sistema industrial, mediante CODESYS, para facilitar el control de la planta en los modos programados. 2 Introducción 6. Documentación exhaustiva del proceso realizado durante el proyecto, especialmente en el uso de Visual Components. Figura 1: Logos de los programas utilizados 3 2 DESCRIPCIÓN DE LA PLANTA Este capítulo detalla los procesos y especificaciones de control de la planta diseñada. La planta se ha creado principalmente utilizando los elementos disponibles en el software Visual Components, como cintas transportadoras, almacenes, robots (tanto cartesianos como SCARA) y algunos procesos simples preconfigurados por el software, como máquinas que simulan el lavado de recipientes. El sistema industrial propuesto es una planta embotelladora, donde operan distintos procesos simultáneamente, agrupándose en 3 grupos/módulos principales. El primer módulo trata de una paletizadora, el segundo de la creación y agrupamiento de botellas y el tercero del almacenamiento y salidas de pedidos. El primero lo hemos denominado “Paletizadora de teselas”. En este grupo, se reciben a través de dos cintas diferentes, los pallets y los elementos a paletizar. A través de un robot cartesiano, se recoge el pallet y se coloca en una tercera cinta, la cinta de salida del módulo, donde, encima del mismo se colocarán cajas y cilindros formando una tesela predefinida que va alternando su forma en cada pallet. Además, este proceso, cuenta con un almacenamiento lateral para piezas que no tengan lugar en el pallet en el momento de su llegada. El segundo grupo, lo constituye el proceso de embotellado y paletizado, donde, sobre una cinta principal, desde la que surgen los pallets, se realizan las acciones complementarias. A través de una cinta secundaria, llegan botelleros al alcance de un robot SCARA que se encarga de colocarlos en el pallet. Además, en una tercera cinta, se crean botellas vacías donde, a través de un proceso de embotellado, se llenan y envasan, dónde posteriormente, y con la ayuda del mismo robot, se colocan en los botelleros. El tercer módulo, lo forma el sistema de almacenamiento de pallets, junto con las cintas de salida y el robot móvil. En este caso, una grúa recoge los pallets que están listos para ser almacenados en un almacén vertical. Cuando se solicita un pallet, la grúa de salida lo recoge y el robot móvil lo lleva a su destino final. El objetivo de la planta, por tanto, es que funcione de manera completamente autónoma, sin necesidad de intervención directa de operadores, ya que los procesos de montaje y distribución de pallets están completamente automatizados. Sin embargo, y a modo meramente didáctico, para favorecer el almacenamiento, se va a evitar el continuo flujo de salidas del almacén y se opta por introducir el número de unidades que se quieren transportar Figura 2: Vista en perspectiva de la planta 4 Descripción de la planta al final de proceso (salida final del producto). En el diseño de la planta se han considerado los siguientes aspectos: • Entradas y salidas de mercancías: Se ha supuesto que todos los tipos de mercancías ingresan desde una ubicación inicial predefinida, y cuando lleguen al fin del proceso industrial desaparecerán visualmente. Este final, se ha ubicado dentro de los camiones, donde se darán por entregados los pedidos. • Elementos de seguridad: Se ha optado por obviar varios elementos de seguridad típicos en una planta industrial, como pueden ser vallas de protección o señales visuales en el suelo. Ello es debido a que, a medida que aumenta el número de elementos en la simulación, ésta sufre latencias elevadas a la hora de comunicarse correctamente con el servidor OPC UA. Se han mantenido en la zona de salidas de pallets desde el almacén por enriquecer el entorno sin penalizar demasiado la simulación. Toda la planta se ha diseñado de forma que no necesite ser operada por trabajadores. No obstante, también se ha implementado en la misma un modo Semi-manual, en el cuál, a través de una botonera se pueden controlar los dos robots programables que existen en la planta, esto es, el robot cartesiano y el robot SCARA. Véase la figura 4, en el centro de la botonera se halla el botón que permite cambiar entre el modo automático de la planta y el semi-manual. En la mitad izquierda, se encuentra el control, en modo semi-manual, del robot cartesiano, desde la colocación en la cinta principal del pallet como de recoger y colocar las distintas piezas que lleguen desde la otra cinta transportadora. Además, en la parte inferior izquierda se encuentra el control del almacenamiento lateral, donde podemos recoger y colocar piezas en el mismo, dependiendo de la disponibilidad de este. En la parte inferior derecha, se encuentra el control de la sección embotelladora, donde se encuentran los botones para controlar tanto la recogida de botellas y botelleros como su colocación en los pallets correspondientes. Figura 3: Vista en planta del proceso Paletizadora de teselas Embotellado y paletizado Almacenamiento y salida de pedidos Automatización de una planta industrial usando Visual Components y Codesys 5 5 La botonera, para facilitar la acción al operario y evitar errores, incluye en los botones luces/colores indicadores de la posibilidad o no de utilizar el movimiento deseado en el robot. Por ejemplo, si hay 2 cajas en el buffer lateral del robot cartesianos, el panel solo te va a dar la posibilidad de, recoger la caja superior o bien, colocar una tercera encima de la anterior. Lo mismo ocurre para el robot SCARA, dado que, si ya hay botelleros o botellas colocadas en el pallet, solo se ilumina los botones que pueden ser utilizados, evitando así solapamientos. Por último, en la parte superior derecha de la botonera hallamos un par de botones que controlan los pedidos de pallets completos que se le piden al almacén principal. El botón izquierdo, tal y como se observa en el dibujo sobre él, aumenta en una unidad el número de pedidos de pallets con teselas que se quieren llevar al camión de salida. El botón derecho, que presenta el dibujo de una botella en su estado final, hará lo mismo, pero con los pallets llenos de botelleros. Sobre estos botones se encuentra un display que, inicialmente en 0, marca el número de pallets que quedan por salir aún hacia las cintas finales, que llevan a los camiones de salida. Una vez realizada ésta breve descripción de la planta y sus especificaciones de control se procede a describir en detalle la composición de cada uno de los módulos que la conforman. Figura 4: Botonera para el control de la planta Control del robot cartesiano Control de pedidos Control del robot SCARA 6 Descripción de la planta 2.1 Paletizadora de teselas Este módulo consiste en montar sobre un pallet cierta disposición utilizando dos productos que llegan aleatoriamente o en lotes desde una cinta. Dichos productos, por simplicidad, se han esquematizado como cajas cuadradas o cilindros. En la figura 5 se muestran los elementos implicados. Sobre la cinta principal, la de salida del módulo, un robot cartesiano se encarga del montaje de la tesela. El sistema recibe las cajas/cilindros, que son identificados según su tamaño. Dicho robot se encarga de colocarlas encima del pallet o bien en un almacenamiento lateral. En este caso, se ha elegido utilizar el robot cartesiano sobre otros robots también disponibles en Visual Components como pueden ser robots tipo Delta, brazo robótico o SCARA. [1] Los motivos principales de esta elección son, por un lado, el amplio alcance que ofrece este tipo de robot respecto a los demás, ya que, para cubrir las distancias de esta parte de la planta, otro tipo de robot tendría que presentar brazos excesivamente grandes. Por otro, este tipo de robot ofrece la posibilidad de apilar de forma cómoda y en un amplio rango piezas, hecho que es conveniente dado que el almacenamiento lateral de este proceso se enfoca en apilar los elementos. Otras ventajas que presentan estos robots son: ▪ Precisión y repetibilidad: Ofrecen alta precisión y consistencia en movimientos lineales, ideales para tareas de corte, ensamblaje, y manipulación. Figura 5: Elementos del montaje de la tesela Figura 6: Vista en perspectiva del proceso de montaje de teselas Cinta principal Automatización de una planta industrial usando Visual Components y Codesys 7 7 ▪ Fácil programación: Su movimiento en ejes X, Y, y Z son sencillos de programar y controlar, facilitando su integración en diferentes procesos. ▪ Costo y mantenimiento reducidos: Suelen ser más económicos que otros robots industriales y requieren menos mantenimiento debido a su diseño simple y menos componentes móviles. ▪ Alta capacidad de carga: Pueden manejar cargas pesadas con facilidad, lo que es útil en aplicaciones de manipulación y montaje de grandes piezas. La manera en la que se disponen las piezas sobre el pallet varía, entre dos tipologías distintos que se van alternando mutuamente por cada pallet. Ambas están formadas por 6 piezas: 3 cajas y 3 cilindros. Este proceso, se puede subdividir en 3 secciones diferentes. Una enfocada en la creación del pallet, otra para la creación y detección de las piezas y una última para la colocación de las piezas en el pallet o en el almacenamiento. 2.1.1 Generación de pallets La primera sección, se compone de un creador de piezas o feeder, una cinta transportadora para los pallets, y un único sensor en la parte final de la misma. El feeder se encarga de la creación de los pallets, que simula la llegada de los mismos desde otros elementos no modelados de la planta. Éstos, se transportan hasta un sensor (“Sensor_pallet_ready”), que una vez activo manda la señal al PLC para indicarle al robot la presencia de este. Además, una vez activo el sensor, éste manda una señal hacia el PLC, donde, desde el control en CODESYS, se procede al paro automático de la cinta. Posteriormente, cuando sea requerido, el robot lo recogerá y colocará el pallet en la cinta principal de montaje. Se reanudará la cinta y el proceso de manera reiterativa. Figura 7: Resultado final del montaje de las teselas Figura 8: Sección encargada de la generación de pallets Generación pallets Sensor_pallet_ready Feeder 14 Descripción de la planta Figura 18: Máquina de lavado de botellas (izquierda). Máquina de llenado(derecha) Figura 19: Máquina colocadora de tapones (izquierda). Máquina de etiquetado(derecha) Automatización de una planta industrial usando Visual Components y Codesys 15 15 Por último, en la parte final de este proceso, se encuentran 4 sensores, a la altura del robot SCARA y 4 barreras físicas al final de las cintas transportadoras, encargadas de parar las botellas mientras las cintas transportadoras siguen funcionando. Estos sensores mandan una señal al PLC cuando el lote de 4 botellas ha sido completado. Cuando esta señal es enviada por cada uno de los 4 sensores, se da por terminado el lote de 16 botellas y el robot recogerá el lote para colocarlo en el botellero, dando paso así al siguiente grupo de botellas en la cinta. Todo este proceso se realiza de forma autónoma por Visual Components y no aparece en el control de la planta. No obstante, se ha incluido para mostrar las distintas funcionalidades propias del programa, haciendo la simulación más realista y atractiva. 2.3 Almacenamiento de pallets y salida de pedidos En este último módulo se encuentra el almacenaje de los pallets ya completados, tanto los dos tipos de pallet de teselas, como los pallets cargados de botelleros. De forma didáctica, se opta por utilizar el único elemento de almacenaje que ofrece Visual Components. Se trata de un almacenaje tipo estantería, que tiene que ser controlado a través de grúas para los depósitos y extracciones. Este tipo de método de almacenaje presenta varias limitaciones a la hora de ser programado como se detallará en el capítulo 3 del presente documento. Esta sección comparte elementos con los módulos anteriormente descritos, como son las cintas de salida de los pallets ya completos y del sensor que se encuentra al final de estas. Además de estas cintas, sus respectivos sensores y del almacén y las grúas, esta sección cuenta también con otras 12 cintas transportadoras, 4 sensores láser y de un robot móvil que se encarga de transportar los pedidos al destino final. Figura 20: Detalle del final de tramo de las cintas de producción 16 Descripción de la planta Los pallets son recogidos por una grúa desde las cintas principales de cada uno de los dos módulos descritos anteriormente y los coloca en un almacén tipo estantería. Posteriormente, desde el otro lado de este, se encuentra otra grúa idéntica, encargada de extraer los pallets que son demandados. Los pallets quedan almacenados en el almacén y, además, se ha diseñado la planta de tal forma que 2 unidades de cada tipo de pallet sean trasportadas a cada una de las cintas de salida del almacén de forma que sea más rápido el procesamiento de los pedidos. Para ello, se disponen de dos filas de cintas en paralelo. La fila izquierda para los pallets que forman teselas y la derecha para los que contiene en los botelleros. Figura 22: Vista en perspectiva del almacenamiento de pallets y salida de pedidos Figura 21: Vista en planta del almacenamiento de pallets y salida de pedidos Cintas de salida almacenamiento Almacenamiento tipo estantería Cintas de salida de pedidos Grúas Robot móvil S_salida_pallet_teselas S_salida_pallet_botelleros S_ AUX_salida_pallet_botelleros S_AUX_salida_pallet_teselas Estación de carga Automatización de una planta industrial usando Visual Components y Codesys 17 17 Una vez los pedidos están en la cinta de salida del almacén, se detendrán en el sensor más próximo al robot móvil (“S_salida_pallet_teselas” y “S_salida_Pallet_Botelleros” respectivamente). Además, la grúa extraerá otro pallet más de cada tipo que colocará sobre los sensores más próximos al almacén (“S_AUX_salida_pallet_teselas” y “S_AUX_salida_Pallet_Botelleros” respectivamente) de forma que queda a la espera para avanzar al siguiente sensor. Ésta demanda de pallets se ha configurado de forma que se haga manualmente, pulsando el botón correspondiente en la botonera cada vez que se demande un pallet. De esta forma, se evita un flujo constante de pallets hacia fuera del almacenamiento, promoviendo el guardado ordenado de pallets en el mismo. Respecto a las cintas más próximas al robot móvil, son la vía de acceso del robot al pallet. Ésta cinta, únicamente se activará cuando se demanden pedidos y, además, el recurso del robot móvil esté disponible. Mientras éste último esté operando en otro lugar, no se procesarán los pedidos y quedará a la espera. Si ocurre el caso contrario, y el robot está inactivo, éste vuelve a la estación de carga presente en el suelo. El robot móvil recoge los pallets según el orden de demanda, transportándolos desde las cintas de salida del almacén, otras cintas transportadoras, correspondientes a las cintas de salida de la planta, las cuales terminan introduciendo los pallets en el container de un camión. Figura 23: Detalle del robot móvil recogiendo un pedido Figura 24: Vista en perspectiva de las cintas de salida y del robot móvil 18 Descripción de la planta 19 3 SOFTWARE Y RECURSOS UTILIZADOS Tal y como se ha descrito anteriormente, este proyecto se basa en el control de una planta industrial simulada en el entorno Visual Components usando un PLC virtual implementado en CODESYS 3.5 3.1 Comunicación entre programas [3] El flujo de información entre ambos programas es crucial para el proyecto. Existen diversos protocolos de comunicación diseñados para conectar PLCs y otros dispositivos, como Modbus, PROFINET, EtherNet/IP, y Profibus, etc. Sin embargo, el programa Visual Components está limitado en el tipo de protocolos de comunicación que acepta, limitando su conectividad al protocolo OPC UA, a robots genéricos RTDE, a PLCs de Siemens (S7) y SIMIT, y por último permite la comunicación vía WinMOD Net. En este proyecto se ha optado por usar OPC UA (Open Platform Communications Unified Architecture) como protocolo de comunicación debido a su capacidad para garantizar la interoperabilidad entre diferentes dispositivos y sistemas, independientemente del fabricante. OPC UA permite una comunicación segura y estandarizada gracias a su modelo de datos flexible, soporta tanto el modelo cliente-servidor como el de publicación-suscripción, y ofrece funcionalidades avanzadas de seguridad, como encriptación y autenticación. Estas características lo hacen ideal para integrarse tanto con el PLC programado en Codesys como con el entorno virtual modelado en Visual Components, facilitando una comunicación fluida y confiable. Además, OPC UA es escalable y versátil, permitiendo su uso en sistemas de automatización desde aplicaciones pequeñas hasta grandes entornos industriales. Su compatibilidad con una amplia gama de plataformas y herramientas de software asegura que se pueda gestionar y supervisar el proceso de forma centralizada y eficiente, reduciendo la complejidad del desarrollo y optimizando la integración entre el entorno simulado y el controlador. Por estas razones, OPC UA es una opción adecuada para este proyecto, ya que garantiza un flujo de información robusto y seguro en toda la planta automatizada Figura 25: Esquema del funcionamiento del protocolo OPC UA 20 Software y recursos utilizados Un aspecto a tener en cuenta a la hora de simular es que la velocidad de comunicación del PLC virtual depende considerablemente de la potencia del servidor donde se aloja, en este caso un ordenador. Para la realización de este tipo de proyectos gráficos con gran carga de modelado 3D es importante disponer del hardware adecuado para evitar retrasos y errores inesperados. Para el caso de esta planta industrial, la velocidad estándar de comunicación no supera los 100ms, pero en el momento que la planta presenta una cantidad considerable de elementos (principalmente el número de botellas en la simulación a partir de cierto momento es elevado) empiezan a aparecer retrasos en la comunicación de más de 100ms, provocando tirones en la simulación y perdidas de información. Esto hay que tenerlo en cuenta a la hora de programar especialmente los movimientos de los robots, para, de forma preventiva, incluir retrasos que puedan asegurar que se envía la información. En el Anexo 1 del presente documento se detalla cómo configurar CODESYS y VisualComponents para comunicarse utilizando el protocolo OPC UA. A continuación, vamos a detallar más los programas utilizados en este proyecto. 3.2 Uso de CODESYS 3.5 [4] Como se mencionó en el capítulo 1, en la asignatura “Automatización Industrial” de GITI se utiliza especialmente el software CODESYS en su versión 2.3. En este proyecto se da el salto a una nueva versión de CODESYS con la versión 3.5. CODESYS (en su versión 3.5) se puede definir como un entorno de desarrollo integrado (IDE) avanzado diseñado para la automatización de sistemas industriales. Compatible con la norma IEC 61131-3, permite la programación de una amplia gama de controladores, desde PLCs hasta sistemas de control distribuidos (DCS) y dispositivos de supervisión (SCADA). Su arquitectura modular ofrece herramientas integradas para configurar hardware, escribir código, simular y depurar aplicaciones complejas. El software soporta múltiples lenguajes de programación industriales estándar, como el diagrama de contactos (LD), el texto estructurado (ST), y el diagrama de bloques de función (FBD), entre otros, lo que permite a los desarrolladores elegir el lenguaje que mejor se adapte a cada aplicación. CODESYS 3.5 también permite la creación de visualizaciones e interfaces de usuario personalizadas, mejorando el control y monitoreo de los procesos industriales. El salto de versión hacia la 3.5 es imprescindible para la realización de este trabajo dado que la versión 2.3 no presenta ciertas funcionalidades fundamentales como puede ser la posibilidad de comunicarse con Visual Components vía OPC UA. Esto se traduce a que la versión 3.5 ofrece una mayor compatibilidad y soporta una mayor variedad de protocolos de comunicación, como OPC UA, MQTT, y Modbus TCP, entre otros. Además, gracias a su arquitectura modular, permite integrar fácilmente nuevas bibliotecas y herramientas de terceros, haciendo el sistema más extensible y adaptable a diferentes necesidades industriales. También es destacable el cambio de interfaz en la nueva versión, dado que para la versión 2.3 la interfaz de usuario es más tradicional y menos intuitiva, lo que puede dificultar la programación. Automatización de una planta industrial usando Visual Components y Codesys 21 21 Para este proyecto se han utilizado principalmente tres POUs programadas en SFC encargadas del control del cambio de modo de operación, de controlar el robot cartesiano y las cintas implicadas en el primer módulo y otra para el control del robot SCARA y las cintas correspondientes del segundo módulo. Para el modo semi manual se ha utilizado una POU en lenguaje LD y para el resto de POUs, funciones y subprogramas se ha utilizado el lenguaje (LD, ST, SFC…) más apropiado para cada caso. El control del programa se detalla en el Capítulo 4. 3.3 Uso de Visual Components [5] [6] 3.3.1 Introducción a Visual Components Aunque ya se describieron brevemente las posibles aplicaciones que se pueden llevar a cabo con el software Visual Components, éste se puede describir como un software de simulación 3D orientado a la automatización y la planificación de plantas industriales. Permite crear modelos digitales detallados de entornos de producción, facilitando el diseño, la simulación y la optimización de procesos antes de su implementación en el mundo real. Algunas características de este programa son: 1. Modelado 3D de entornos industriales: Proporciona herramientas para crear representaciones tridimensionales de plantas industriales, incluyendo la disposición de máquinas, robots, transportadores, y otros equipos industriales. Incluye una biblioteca de componentes predefinidos, permitiendo a los usuarios ensamblar y personalizar diseños según las especificaciones de su planta. Además, se pueden crear bibliotecas nuevas con modelos reales, diseñándolos en el mismo software. También admite la importación de modelos CAD (Diseño Asistido por Computadora), lo que facilita la incorporación de componentes personalizados y la colaboración con otras herramientas de diseño y simulación. 2. Simulación de procesos productivos: Este software es capaz de simular de manera detallada el comportamiento de sistemas de producción completos. Los usuarios pueden visualizar el flujo de materiales, el movimiento y la interacción de robots, la actividad de las máquinas, y la labor de los operarios. Esta capacidad de simulación permite identificar cuellos de botella, evaluar la capacidad de producción, y probar diferentes escenarios para encontrar la configuración más eficiente. 3. Optimización y análisis de rendimiento: Es posible realizar análisis detallados de rendimiento que Figura 26: Comparativa entre interfaces. Versión 2.3 (izquierda). Versión 3.5(derecha) 22 Software y recursos utilizados incluyen tiempos de ciclo, eficiencia de recursos, niveles de utilización, entre otros indicadores clave. Esto ayuda a las empresas a tomar decisiones informadas sobre cómo optimizar sus procesos, mejorar la productividad y reducir costos, antes de realizar cambios físicos en la planta. Por ejemplo, en las maquinas utilizadas en la parte de la embotelladora, éstas traen por defecto, un apartado donde se pueden editar variables típicas en el estudio del rendimiento de las máquinas, como pueden ser la “efectividad total del equipo” (OEE). También se puede configurar los tiempos medios de reparación de las maquinas (MTTR) o el tiempo medio entre fallos (MTBF), asi como el número de piezas que puede producir por minuto o la frecuencia de piezas defectuosas. 4. Compatibilidad e integración: Visual Components es compatible con numerosos estándares de la industria y puede integrarse con diversos sistemas de control, como los PLCs y los robots de distintos fabricantes. Solo en la versión 4.3 de Visual Components, más de 50 marcas distintas ofrecen la posibilidad de poder utilizar sus robots en el entorno virtual. Estos vienen preinstalados con el software, facilitando el uso de este software en sus industrias y también como forma de anunciarse dentro del programa. Algunas marcas conocidas de robots que están incluidas son ABB, Fanuc, KUKA, Yaskawa, Omron o Schneider. Se incluye un total de 1605 robots, donde la amplia mayoría son brazos robóticos y SCARAs. En contraposición de la gran cantidad de robots de este estilo que se presentan en el software, solo se ofrecen unos pocos modelos de robots móviles (en la versión 4.3). Figura 27: Propiedades configurables de la máquina colocadora de tapones Figura 28: Extracto de la biblioteca de robots disponibles en Visual Components 3.5 Automatización de una planta industrial usando Visual Components y Codesys 23 23 5. Soporte para realidad virtual y capacitación: El software permite la creación de entornos virtuales que los usuarios pueden explorar mediante tecnologías de realidad virtual (VR). Esta característica es especialmente útil para la capacitación de operadores y la validación de diseños en un entorno inmersivo, ofreciendo una visión más realista de cómo funcionarán los sistemas en la práctica. El propio software dispone de un simulador de ejemplo donde podemos sumergirnos para interactuar con las máquinas en primera persona. Este cuenta con un HMI que permite controlar, como si de un operario se tratase, la planta. Este HMI se asocia mediante señales a algunos movimientos preprogramados de las máquinas y robot, como, por ejemplo, abrir y cerrar la puerta de la máquina. Además, dentro de la simulación VR se puede interactuar manualmente con los robots. Visual Components es muy útil para una amplia variedad de sectores, como la automoción, la electrónica, la logística, la alimentación y bebidas, como en este caso, y otros donde la eficiencia y la precisión son esenciales. Este programa cobra especial relevancia cuando se tratan líneas de producción como puede ser la creación/montaje de un coche. Presenta gran variedad de herramientas para programar virtualmente el trabajo que realizarían los robots en el mundo real, así como la posibilidad de incorporar herramientas en los robots como soldadores, pistolas de pintura, etc. Esto le da a este software gran utilidad a la hora de realizar gemelos digitales, conociendo las limitaciones de este. Figura 29: Entorno de Realidad Virtual. Layout demo que ofrece Visual Components Figura 30: Cadena de montaje implementada en Visual Components. Layout demo 30 Software y recursos utilizados La herramienta, aunque se acople al robot usando la herramienta PnP, hay que asignarle para cada robot una señal. En el caso del robot cartesiano, tal y como se observa en la Figura 42, se ha asociado a la señal de salida 10 (salida, ya que es el robot el que manda la señal hacia la herramienta). Por último, señalar, que en el capítulo 4: Control, se detallará el proceso de programación de estos dos robots. 3.3.2.5 Apartado Dibujo Este es un apartado simple, donde se permite generar planos y vistas detalladas de los componentes, y configuraciones de planta, proporcionando una forma visual de documentar y comunicar el diseño. Además, se pueden crear anotaciones, añadir dimensiones, marcar áreas específicas, y ajustar la apariencia de los modelos para facilitar su interpretación. También permite exportar estos dibujos en formatos estándar (CAD y PDF) para su uso en documentación, presentaciones. Se observa en la figura 43, el plano superior de la planta industrial, con el que se concluye el capítulo. Figura 42: Configuración de la herramienta del robot SCARA Automatización de una planta industrial usando Visual Components y Codesys 31 31 Figura 43: Plano de la vista en planta del proyecto 32 4 CONTROL Este capítulo se centra en cómo se controla la planta industrial, desde los programas y subprogramas utilizados, hasta las herramientas de cada software implementadas para esta causa. Como se ha mencionado, la información de control de la planta está constantemente fluyendo entre la simulación en Visual Componets con el PLC implementado en CODESYS, donde se coordinan para controlar cada uno una parte de la planta ya sea mediante programas en CODESYS (en lenguaje LD, SFC o ST) o bien mediante diagramas de flujo en Visual Components. 4.1 Control a través del PLC virtual implementado en CODESYS En este software se desarrolla el grueso de programación del trabajo, donde se pretende que se desarrolle la mayor parte del control de la planta, salvando algunos elementos, cómo las grúas o el robot móvil, que no permiten un control de esta forma. Se pretende utilizar el mayor número de funcionalidades distintas para que el trabajo sea más didáctico. Una vez creado el proyecto en blanco, se dispone de una única POU llamada PLC_PRG, la cual está además incluida dentro de una tarea llamada MainTask que se ejecuta cíclicamente cada 20ms. Estas tareas son las encargadas de ejecutar los programas cuando no son ejecutados directamente desde otro programa, dándoles independencia. Se pueden crear varias tareas, que no tienen por qué ser cíclicas, pudiendo ejecutar programas a través de eventos. En este trabajo se han creado en total 55 elementos, entre los que se encuentran los programas principales de control, bloques funcionales, condiciones de transición y acciones. En cuanto a tareas, solo se han creado 2, una para todo lo relacionado con los programas de control de la planta y otra para las visualizaciones de la botonera. Mencionar que, aunque lo habitual es realizar el control entre modos (en este caso el modo automático con el semi-manual) en el programa PLC_PRG, en este caso se ha decidido hacerlo en un programa aparte, llamado “Control_general”. Tal y como se mencionó anteriormente, en CODESYS se ha programado principalmente el control del robot cartesiano, del robot SCARA y de todas las cintas transportadoras de la planta. Figura 44: Extracto de la tarea cíclica "IEC-Tasks" Automatización de una planta industrial usando Visual Components y Codesys 33 33 Además, se han creado 4 listas de variables globales, para facilitar la organización. La lista “GLOBAL” recoge las variables necesarias para el control del robot cartesiano y sus cintas asociadas, la lista “GLOBAL_BOT” contiene las variables del robot SCARA y sus cintas, “GLOBAL_ALMACEN” recoge variables acerca del almacén y de los pedidos que se solicitan, además de las cintas de salida del almacén y fin de planta. Por último, la lista “GLOBAL_GENERAL” donde recoge las variables asociadas a las variables de la botonera y de la conmutación entre modos de operación. 4.1.1 Control palletizadora de teselas. Este apartado es el más extenso dentro de CODESYS, dada la presencia de un almacén lateral y de los dos modelos de teselas disponibles. Este control, se basa en dirigir las posiciones del robot cartesiano, que previamente se han programado en Visual Components, desde CODESYS, donde, mediante flags se sabrá cuando ha terminado el movimiento. Para esto, se han creado dos flags, uno que indica que el robot ha recogido una pieza (Flag1) y otro para indicar que el robot acaba de soltar una pieza (Flag2), ya sea en la tesela o en el almacenaje. El programa principal está realizado en lenguaje SFC, tal y como se observa en la Figura 45. En modo automático, el programa inicialmente queda a la espera de recibir la señal de la presencia de un pallet para recoger (Step5), ejecuta la acción de recogida y colocación en la cinta principal. Una vez colocado, surgen 4 posibilidades, las cuales todas dependen de la disponibilidad de hueco para la pieza en la tesela. Estas condiciones son: ▪ Cond1: Independientemente de si hubiera alguna pieza en la cinta de alimentación de piezas para ser recogida, esta condición se centra en si existe alguna caja disponible en el almacenaje lateral y si hay hueco en el pallet para ésta. Si es así, procede a recoger la caja superior y una vez recogida la coloca en el hueco libre para cajas en el pallet. ▪ Cond2: Si no se cumple la “Cond1”, se realiza un proceso idéntico pero esta vez con los cilindros. ▪ Cond3: En este caso, si no se cumple la “Cond2”, el programa de control queda a la espera de la presencia de alguna caja en el sensor situado en la cinta de alimentación de piezas. Si la pieza que llega es una caja, se procede a estudiar donde colocarla, dependiendo de si hay sitio en el pallet o no. Si el número de cajas en el pallet ha llegado al límite, se procede a la colocación de la caja en el almacén, y si hay hueco en el pallet, se colocará en este. ▪ Cond4: Si no se cumple la “Cond3”, se ejecuta un programa de control idéntico al proceso que se produce a través de la condición anterior, pero en este caso, lo que ha llegado al sensor de la cinta de alimentación de piezas es un cilindro. Como apunte sobre este programa, cuando se solicite el cambio de modo de operación a semi-manual, si el robot se encuentra operando una pieza, éste no pasará a modo manual hasta que no la haya colocado, bien en el almacenaje o bien en el pallet. Véase el salto hacia el Step “Init” desde la condición a la derecha de “Cond1”. Figura 45: Programa principal de control del robot cartesiano 34 Control Antes de desgranar los programas asociados a la toma de decisiones respecto a las posiciones de los robots, se detalla a continuación, el funcionamiento del programa que recoge los contadores programados. Se ha creado un programa para el conteo del número de piezas en el buffer y para el número de piezas sobre el pallet. Se han creado 3 contadores para cada tipo de pieza y entrándonos en las cajas, por ejemplo, ya que es idéntico para los cilindros, se desglosan en 1 contador tipo CTUD y en 2 CTU. El CTUD se encarga de sumar o restar una unidad a la variable asociada al número de cajas situadas en el almacenamiento. Cada vez que se ejecute la posición de soltar una caja en el almacenaje se sumará y cuando se ejecute una posición de recogida, se restará. En cuanto a los CTU, estos controlan el número de cajas que hay en el pallet. Son dos CTU idénticos, dado que la única diferencia es que uno se activa cuando estamos realizando el modelo de tesela 1 (Véase figura 47) y desactiva el otro, y viceversa cuando se trata de montar el tipo de tesela 2. Estos contadores además se reinician cada vez que se da por completado un pallet y se desactiva el sensor situado en la cinta principal. Figura 46: Contador de cajas dentro del almacén lateral Figura 47: Contadores de cajas sobre los pallets Automatización de una planta industrial usando Visual Components y Codesys 35 35 Señalar también la inclusión de un temporizador de pulsos asociado al botón de cambio de modo automático a semi-manual, configurando un tiempo de pulso en 1 segundo para evitar posibles errores cuando se acciona la palanca de cambio automático a semi-manual y viceversa. Volviendo al programa principal, se comenta a continuación los diferentes programas dentro de cada “step”. Nos vamos a centrar en los cilindros, por ejemplo, ya que el proceso es idéntico para las cajas. Hay tres tipos de bloques: Los encargados en recoger un cilindro desde el buffer, el encargado de recogerlo desde la cinta de alimentación de piezas y uno ultimo encargado de colocar el cilindro. ▪ Recoger cilindro desde el buffer: Si se cumplía la “Cond2”, se activa dentro de “Recoge_cilin_buffer” un bloque funcional “Recoge_cilin_buff”. Éste tiene como entradas el número de cilindros actualmente en el almacenaje y dependiendo de esto, tendrá como salidas recoger el cilindro desde una altura del almacenaje u otra. Todas las salidas son las posiciones a tomar por el robot cartesiano. ▪ Recoger cilindro desde cinta de alimentación: En caso de cumplirse la “Cond4”, se activará el programa “Recoge_pieza_cinta” donde, simplemente se identifica a la pieza y se aplica el movimiento de recogida. Figura 48: Bloque funcional "Recoge_cilin_buff" Figura 49: Código "Recoge_pieza_cinta" 36 Control ▪ Colocar cilindro: En este apartado, puede ocurrir dos posibilidades, que el cilindro vaya al pallet o que vaya al almacenaje. Se ha creado un bloque funcional “poner_pieza” donde se recibe como entradas: El tipo de pieza que está actualmente en la herramienta del robot cartesiano, el tipo de tesela que se está montando, y el número de piezas actuales en el pallet. Podrá surgir dos tipos de salidas desde este bloque funcional: Se activará una posición para dejar el cilindro en el pallet o bien se activará la señal para llevar el cilindro al buffer (mediante la variable “Al_buffer_cilin”). Si esta última está activa, ejecuta otro bloque funcional donde se le da como entrada el número de cilindros que hay actualmente en el almacenamiento y como salida la posición donde deberá de dejar el cilindro. Figura 50: Bloques funcionales encargados de la colocación de cilindros Figura 51: Código dentro de los bloques funcionales encargados de colocar los cilindros Automatización de una planta industrial usando Visual Components y Codesys 37 37 Queda explicado el funcionamiento principal del robot y por último mencionar que el control de las cintas se ha realizado de una manera simple: 1. La cinta de alimentación de pallets se activa siempre y cuando no haya un pallet en la posición de recogida del robot cartesiano. 2. De igual forma, para la cinta de alimentación de piezas, se activa siempre y cuando no haya una pieza en la posición de recogida. 3. Para la cinta principal sobre la que se sitúa el montaje de la tesela, esta se activa cuando los contadores de cilindros y cajas llegan al valor definido (3 en ambos casos) Por último, hay que señalar que la alternancia en el tipo de tesela que se monta se realiza gracias a la creación de dos variables auxiliares (Memoria_1 y Memoria_2), que permiten la alternancia cada vez que sale un pallet montado. Véase la Figura 52. 4.1.2 Control de la embotelladora De igual forma que para el robot cartesiano, para este robot SCARA se ha realizado su programa principal en SFC. Viendo la Figura 53, se observa los múltiples saltos hacia distintos “steps” dentro del código. Éstos están pensados para permitir la continuación del programa, desde cualquier punto de la simulación, cuando se conmuta de semi-manual a automático. A diferencia del robot cartesiano, este robot para su movimiento en el momento que se acciona la palanca de cambio de modo de operación y permite su continuación controlada aun teniendo piezas agarradas. Figura 52: Método de alternancia entre tipos de teselas Figura 53: Programa de control principal del robot SCARA 38 Control En este caso, se reciben 5 flags desde la simulación. “Flag1_r2” para indicar que acaba de finalizar el movimiento de recogida de un botellero, “Flag2_r2” para cuando finaliza el movimiento de recoger las botellas, “Flag3_r2” cuando se ha posicionado un botellero, “Flag4_r2” cuando se han colocado las botellas y, por último, “flag_botellas_agarradas” que está activo siempre y cuando hay botellas agarradas por el SCARA. En este control, se ha decidido que la cinta de montaje sea la misma que la que trae los pallets, parándose el pallet enfrente del robot SCARA. El programa se puede dividir en 3 ramas: ▪ Rama “COND1_R2”: Se activa cuando hay un botellero disponible para recoger, pero no hay ningún pallet en la posición de montaje, o bien el que hay está lleno a la espera de la reactivación de la cinta principal. Recoge el botellero, espera a la aparición de algún pallet y lo coloca. ▪ Rama “COND2_R2”: Se ejecuta cuando hay botellas para recoger y además hay, mínimo, un hueco en algún botellero de los que están colocados en el pallet. Recoge las botellas y las coloca en el hueco disponible. ▪ Rama “COND3_R2”: Se activa cuando ninguna de las otras condiciones se cumple, y, además, haya botelleros disponibles en su cinta y haya hueco en el pallet para ellos. Recoge el botellero y lo coloca en el pallet. En cuanto a los contadores, estos se ejecutan en un programa hecho en LD, donde se va contabilizando el número de botelleros que se van añadiendo al pallet y el número de botellas que se van agregando. Estas variables se reiniciarán por cada pallet nuevo que llegue a la posición de montaje. También en este programa, se ha ejecutado el control la agrupación de botellas. Esto habría dos formas de hacerlo: ▪ Utilizando la señal de lote completo del sensor: Visual Components, ofrece dentro de los sensores, además de la señal que se activa en presencia de algún objeto, otra señal llamada “batch ready” que permite contabilizar el número de piezas que transcurren por delante del sensor, activándose la señal según el límite programado por el usuario. Esta opción, que es la primera que se propuso, se ha desechado por la segunda, ya que el comando de reinicio de esta señal se perdía en alguna ocasión, provocando errores. ▪ Utilizando temporizadores: Dado que se ha decidido que el lote será conformado por 16 botellas, 4 por fila, se ha supuesto que, si el sensor está activo más de 1 segundo seguido, se da por hecho que al menos 4 botellas hay listas para ser recogida en esa cinta. Cuando, simultáneamente en los 4 sensores de las 4 cintas que proveen botellas al SCARA están activos más de 1 segundo, se procede a recoger el lote de botellas Figura 54: Contadores encargados del número de botelleros completos en pallet Automatización de una planta industrial usando Visual Components y Codesys 39 39 Para el control del robot SCARA en cuanto a la colocación de los botelleros o las botellas, se ha optado por, en vez de utilizar un bloque funcional como en el caso del robot cartesiano, realizar un programa cíclico, aunque el funcionamiento sea muy similar a los mostrados para el anterior robot. Estos programas son un ELSEIF que básicamente dependen de que se active la señal de “Poner_caja_botellero” o bien que esté activo el flag “flag_botellas_agarradas”. Se adjunta en las ilustraciones X e Y ambos programas, “Poner botellas” y “Poner botelleros”, donde se observan las similitudes. Por último, hay que comentar que las cintas de toda la parte del proceso de creación, llenado, y etiquetado han sido programadas de forma que estén constantemente en funcionamiento. En cambio, la cinta de botelleros está activa, siempre y cuando no haya un botellero en la posición del sensor. Para la cinta principal, ésta se para cuando los pallets llegan a la altura del sensor situado enfrente del SCARA, y se vuelve a activar cuando se da por completado el pallet. Figura 55: Programa de movimientos del robot SCARA (1) Figura 56: Programa de movimientos del robot SCARA (2) 46 Control si las físicas de la herramienta se han configurado adecuadamente. A continuación, ya sin pieza, vuelve a una posición de seguridad. Por último, se activa el “flag2” del robot, información que le llega al PLC indicando que el movimiento ya ha sido terminado. Esta señal se ha programado para que se mantenga activa durante 0,2segundos. Hay que tener cuidadoso con los tiempos ya que un tiempo pequeño puede provocar que se pierda la información por 2 motivos. El primero, el aumento de latencia en la comunicación entre programas a medida que se vuelve más compleja de simular la planta. El segundo motivo por el que se puede perder la información es que si se le pone un tiempo pequeño de activación hay que asegurarse que la rutina de ejecución de CODESYS se ejecute más rápido (en nuestro caso configurada a 20ms). Como conclusión de este capítulo, hay que señalar que, de igual forma a la explicada en el párrafo anterior, se ejecutarían todos los scripts que controlan el movimiento de los dos robots. La única diferencia que se encuentra es que para el robot SCARA, el flag “Flag_botellas_agarradas” se activa al final del movimiento de agarre y solo se desactiva al inicio del movimiento para depositarlas. Figura 65: Ejemplo de movimiento en el robot cartesiano Figura 66: Movimiento del robot en la posición 17 (izquierda). Movimiento en la posición 87 (derecha). 47 5 CONCLUSIÓN Y POSIBLES CONTINUACIONES DEL TRABAJO En este proyecto se ha realizado la automatización de una planta industrial controlada a través de un PLC virtual controlado desde CODESYS y modelado en Visual Components. El objetivo principal es analizar la funcionalidad de comunicación entre estos programas, y mostrar las posibles utilidades en el ámbito de la automatización industrial para su uso en la docencia de asignaturas básicas de esta rama. Desde un primer momento, este trabajo estaba enfocado en controlar toda la planta desde CODESYS. A medida que se iba desarrollando el programa surgieron limitaciones, por ejemplo, en el uso del almacenamiento vertical utilizando las grúas. Esto era evitable, de tal forma que se podría haber realizado un almacenamiento sobre el plano horizontal, donde se podría haber controlado mediante otro robot cartesiano las posiciones de los pallets almacenados desde CODESYS, pero para enriquecer la simulación y el aprendizaje sobre Visual Components, se decidió utilizar el máximo número de recursos posibles. De igual forma ocurriría con el robot móvil, cuyo trabajo es fácilmente salvable utilizando cualquier robot o cinta transportadora. Además de las anteriores, también surgen otras limitaciones a la hora de utilizar Visual Components como simulador de planta controlada desde CODESYS, es la alta latencia de comunicación en cuanto aumenta la exigencia gráfica de la simulación. Es por todo ello, por lo que Visual Components está más orientado al análisis de tiempos y estadísticas de funcionamiento de un sistema de producción, el cual sea simulado y controlado únicamente por este software. Algunas posibles continuaciones del trabajo podrían ser seguir programando dentro de CODESYS, de forma que se amplie el uso de la guía GEMMA en este proyecto, implementando más modos de operación típicos en este tipo de plantas industriales. También se podría continuar el proyecto añadiendo algún SCADA o HMI desarrollados en otros programas. Al inicio, la idea era crear un supervisor SCADA utilizando el software Wonderware, enriqueciendo el proyecto, pero finalmente, esta idea se desechó para no alargar el trabajo. Huelga decir que, resultaría interesante para demostrar el potencial del software Visual Components la implementación de un entorno real sobre el programa, un gemelo digital, para ver su utilidad real en el mercado y la facilidad de diseñar el modelo virtualizado en el software. En este caso, se ha hecho un diseño libre desde cero para la planta industrial. Una limitación para realizar estas simulaciones, podría ser el hardware, donde, a más potencia gráfica posea el ordenador, más elementos se le podrán añadir al proyecto. En definitiva, el trabajo realizado puede servir como introducción al uso de CODESYS y Visual Components, ilustrando las posibilidades de ambos softwares para trabajar juntos y también sus limitaciones. 48 BIBLIOGRAFÍA Y REFERENCIAS [1] MUÑOZ, David Ricardo. Robots cartesianos: qué son y cómo funcionan. Plástico. Plástico [en línea]. 23 de marzo de 2023 [consultado el 7 de septiembre de 2024]. Disponible en: https://www.plastico.com/es/noticias/robots-cartesianos-que-son-y-como-funcionan [2] Robot Scara. Aplicaciones, fabricantes y ejemplos de procesos. REVISTA DE ROBOTS [en línea]. 23 de mayo de 2023 [consultado el 7 de septiembre de 2024]. Disponible en: https://revistaderobots.com/robots-y- robotica/robot-scara-articulados-caracteristicas-y-marcas/?cn-reloaded=1 [3] Common Protocols in Industrial Automation. Ferry | Next-generation Modular MES [en línea]. [consultado el 7 de septiembre de 2024]. Disponible en: https://www.deployferry.io/blog/common-protocols-in-industrial- automation [4] BOURKE, Ken. CODESYS Basics. What is CODESYS and Why is it Important? RealPars [en línea]. [consultado el 7 de septiembre de 2024]. Disponible en: https://www.realpars.com/blog/codesys-basics [5] Fastest way from concept to reality - Visual Components. Visual Components [en línea]. [consultado el 7 de septiembre de 2024]. Disponible en: https://www.visualcomponents.com/ [6] NOVAK, Jason. The Importance of 3D Models in Automation. Bastian Solutions [en línea]. [consultado el 7 de septiembre de 2024]. Disponible en: https://www.bastiansolutions.com/blog/the-importance-of-3d-models- in-automation/ [7] Connect a Remote OPC UA Server. Visual Components Academy [en línea]. [consultado el 7 de septiembre de 2024]. Disponible en: https://academy.visualcomponents.com/lessons/connect-a-remote-opc-ua-server/ 49 ANEXO A: CONFIGURACIÓN DE LA COMUNICACIÓN VÍA OPC UA Para realizar la comunicación entre CODESYS y Visual Components, se toma como ejemplo, un pequeño programa para que, una vez establecida la comunicación, podamos comprobar que ésta funciona correctamente y poder volver a realizarlo en nuestro programa una vez aprendido el método. [7] Los pasos a seguir son: 1. Se comienza realizando la programación de un ejemplo simple en CODESYS. En nuestro caso se ha programado únicamente 2 elementos, un feeder que genera cilindros, una cinta transportadora y un sensor. Cada vez que llegue un cilindro al sensor ubicado en la cinta, se realizará un paro de 5 segundos de la pieza sobre el sensor, y a continuación, se reactivará hasta que llegue un nuevo cilindro al sensor. 2. Una vez creado nuestro ejemplo en CODESYS, debemos añadir un objeto de configuración de símbolos, y activamos la compatibilidad con las características OPC UA. Este objeto permite definir qué variables del PLC serán accesibles para aplicaciones externas, facilitando la comunicación y el intercambio de datos mediante OPC UA. Además, controla el acceso a estas variables y simplifica la integración con otros sistemas. Figura 67: Código de prueba para el ejemplo de conexión Figura 68: Objeto "Configuración de símbolos" 50 Configuración de la comunicación vía OPC UA Dentro de la configuración de símbolos, seleccionamos el archivo que queremos compartir, en nuestro caso PLC_PRG. Hecho esto, ya podemos activar el PLC virtual de CODESYS. Una vez activado, nos ponemos en linea e iniciamos sesión. Pulsamos F5 para iniciar el proceso. Importante: Cuando creemos el PLC virtual (en nuestro caso PORTATIL-ALFONS) nos aparecerá un cuadro de texto donde preguntarán si queremos ponerle algún tipo de seguridad para acceder al PLC (usuario y contraseña). Debemos rechazar esto, ya que para que la conexión OPC UA sea posible entre los distintos softwares, se debe poder acceder al PLC sin restricciones. En caso de que se hubiera creado un usuario y contraseña para el PLC, debemos seguir los siguientes pasos: En device→dispositivo→ ajustes de seguridad. Nos pedirá el usuario y contraseña creados, los introducimos y activamos la conexión anónima. Por último, iniciamos sesión y después Debug e Iniciar. 3. Una vez configurado CODESYS, pasamos a Visual Components. Debemos activar la opción de conectividad. Esto se hace desde “Archivo”→”Opciones”→”Complemento”. Una vez activado, debemos reiniciar el programa. Figura 69: Activación de la conexión con el PLC virtual Figura 70: Activación del apartado de "Conectividad” Automatización de una planta industrial usando Visual Components y Codesys 51 51 4. Ahora nos debería aparecer en la barra de herramientas superior el apartado conectividad. Accedemos a él y en el listado de conexiones que aparece a la derecha, seleccionamos la conexión OPC UA y hacemos clic en añadir un nuevo servidor. 5. Una vez creado el servidor, debemos configurar la conexión. Para ello, seleccionamos el nuevo servidor creado y hacemos clic en editar la conexión. Si estuviéramos usando una máquina virtual para ejecutar CODESYS, debemos especificar en el apartado dirección del servidor la dirección IP de dicha máquina, escribiéndolo como opc.tcp://direcciónIP. Para este caso, como estamos usando el mismo ordenador como servidor de ambos programas la dirección IP será la misma. Una vez puesta la IP, probamos la conexión y seleccionamos aplicar. Figura 71: Añadir nuevo servidor Figura 72: Configuración de IP 52 Configuración de la comunicación vía OPC UA 6. Creamos ahora la simulación del proyecto que se comentó en el punto 1. Nos dirigimos a la pestaña de inicio y buscamos en el catálogo un basic feeder y un sensor conveyor y los conectamos. Si lo ejecutamos, nuestro modelo simplemente irá generando objetos y transportándolos por la cinta. 7. Volvemos al apartado de conectividad, abrimos el desplegable de nuestro servidor y, haciendo doble clic en el apartado simulación al servidor seleccionamos añadir variables. En el cuadro que se abre, debemos deseleccionar la opción “propiedades del componente” para asi dejar solo las señales. Debemos sincronizar la señal del sensor con la variable que creamos para este fin en CODESYS. Para ello, en la lista de la izquierda seleccionamos la señal “SensorBooleanSignal” y en la lista de la derecha (la que está asociada con la conexión OPC UA) debemos buscar dentro de la carpeta “Objets” y sus sucesivas subcarpetas, la señal booleana “partAtSensor”. Una vez seleccionadas hacemos clic en el botón inferior para emparejar ambas. Vemos que nos aparecen 2 señales; asociamos la SensorBooleanSignal. A continuación, realizamos el mismo proceso de emparejamiento de señales, pero ahora en el apartado de “servidor a simulación”, y enlazamos las variables “StartStop” con “pathStart”. Figura 73: Modelo final de la simulación de ejemplo Figura 74: Asociación entre variables del servidor y de la simulación Automatización de una planta industrial usando Visual Components y Codesys 53 53 8. Ya solo queda simular el programa, y tal y como se observa en la Figura 75, vemos que el programa escrito en CODESYS se ha implementado bien en Visual Components. Se puede observar en la ejecución del programa que los objetos se paran al llegar al sensor durante 5 segundos, tal y como lo hemos programado previamente. Por último, para el caso de la planta de este proyecto, ha sido necesario enlazar más de 100 variables entre sensores, actuadores y flags. En la Figura 76, se observa cómo queda un extracto de la conexión de variables que la simulación (Visual Components) envía al servidor (CODESYS) y en la Figura 77, para las variables que el servidor envía a la simulación. Figura 75: Comprobación de la conexión Figura 76: Extracto de las variables "Simulación al servidor" 54 Configuración de la comunicación vía OPC UA Figura 77: Extracto de las variables "Servidor a la simulación"