PRACTICA CON STRUCTS
STRUCTS Un Struct es un paquete de operandos de diferentes tipos de memoria, por tanto dentro de un mismo Struct se puede encontrar operandos de tipo bit, Integer, ASCII Existen 4 tipos de Structs: - System Data Tag Structs : son los structs del propio sistema, Unilogic las crea directamente. - Automatically-created Structs: son aquellas que se crean automáticamente cuando se añaden elementos en la aplicación, como por ejemplo al configurar un modem. - Timer Structs : se crean al añadir una nueva Tag de tipo temporizador. - User-Defined Struct : Es el usuario el que define y usa en su aplicación. En esta práctica vamos a trabajar con los User-Defined Structs, puesto que el resto ya están creados y solo los tenemos que usar a nuestro antojo. Con el fin de generar un ejemplo sencillo pero que sirva para ver la utilidad de un Strutcs, vamos a realizar una aplicación en la que tenemos 3 motores y queremos controlar su orden de marcha/paro, velocidad y temperatura de trabajo. Se abre un proyecto nuevo con el software Unilogic y se configura el Panel correspondiente. Una vez configurado el hardware del equipo creamos un nuevo Struct que recibirá el nombre de MOTOR:
Una vez creada la nueva estructura, el siguiente paso es definir el número de miembros que tendrá esta Struct y el tipo de operando que será, para este ejemplo vamos a crear: Con esta configuración ya esta creada la Struct con todos sus miembros, el siguiente paso es crear 3 Tags globales (Motor 1/ 2y3) y el tipo de tag será MOTOR. Se selecciona global y se añade una nueva tag: Y se repite la misma operación para los otros dos motores. Como se puede observa en la siguiente imagen a cada tag global de tipo MOTOR se le crean todos los miembros de la struct.
Con el fin de optimizar mas nuestro proyecto, se genera un UDFB para el control de los motores, para ello abrimos una nueva función Function 2 en el Ladder y se realiza la siguiente lógica de programa: Donde el Tag star/stop es un nuevo tag de tipo Function In y el Tag ON/OFF es un nuevo tag del tipo Function Out. En el siguiente segmento se realiza la comprobación de la temperatura del motor y se activa un tag de alarma si se sobrepasa el límite establecido: Temperatura es un nuevo tag del tipo Function In y alarma temperatura es del tipo Function Out. Una vez creado el UDFB ya se puede usar en el Function 1 del Ladder, puesto que tenemos que gobernar 3 motores se seleccionan 3 bloques de Call Function 2. Tal y como se muestra en la siguiente imagen:
En cada uno de los Call Function 2 se introducen los miembros del Struct MOTOR para cada uno de los motores. Al seleccionar el operando A gracias al algoritmo intellense de filtrado, aparecen una lista de las Tags que se pueden seleccionar para este tipo de bloque, se selecciona motor 1 y vuelve a aparecer otra lista con todos los miembros del struct MOTOR que se pueden seleccionar, en nuestro caso se selecciona la condición de marcha para el motor 1, tal y como se muestra en la siguiente imagen: Se configuran todos los Call Function, tal y como se puede observar en la siguiente imagen: Una vez finalizada la parte de programación en Ladder, se realiza la programación en HMI, para ello se selecciona screen 1 y se crea una pantalla con 3 botones (condiciones de marcha/paro para cada uno de los motores) y 3 imágenes binarias que simularan el estado de los motores:
La configuración de cada elemento será la siguiente: Donde al botón 1 se le asigna una acción, la cual será un toggle bit de motor1.condicion_on/off. Se realiza la misma operación para el resto de botones cada uno asociándolo con su respectiva condición de marcha. A la imagen binaria se asigna como Tag Link la tag estado motor de cada uno de los motores, tal y como se muestra en la siguiente imagen:
Una vez realizada esta configuración, se añade a esta pantalla 3 displays numéricos que simularan la temperatura de motor y 3 imágenes binarias que serán las alarmas por temperaturas para cada uno de los motores, quedando una pantalla como esta: Donde cada Display numérico será motor X.Temperatura y cada imagen binaria será motor X.alarma_temp. Una vez finalizada la programación en HMI se descarga la aplicación en el Unistream y se comprueba su correcto funcionamiento.