SE EXPLICARÁ DE MANERA BREVE EL PROCESO DE PROGRAMACIÓN KOP JUNTO CON FACTORY I/O
A continuación, se explicará como enlazar las variables del TIA PORTAL al FACTORY I/O.
Se creará las variables que vayamos a utilizar en el TIA PORTAL.
El aparato que vamos a utilizar se nombrará con el nombre de la variable que vayamos a utilizar en la tabla de las variables del TIA PORTAL, en este caso es una salida, cuya salida es la CINTA1 o en otro caso entrada (pulsador).
Cuando se haya iniciado la simulación en el TIA PORTAL y FACTORY IO se haya conectado correctamente, automáticamente nos saldrá en los laterales nuestras variables, a la izquierda las entradas y a la derecha las salidas, a partir de ahí se desplazará cada variable a su dirección correspondiente.
En configuración se puede añadir las entradas y salidas que queramos.
2. Se empezará a explicar la primera parte del proyecto, el pistón horizontal que tiene un sensor que detecta la altura de la caja y la impulsa a la otra cinta.
Si hacemos clic sobre el botón derecho sobre la flecha verde podremos seleccionar las piezas como por ejemplo las cajas y las bases como puede ser los pallets que queramos utilizar en el proyecto, toda base o pieza que se ha seleccionado aparecerá en equis tiempo, cuyo tiempo también lo podemos modificar o controlar.
El motivo de que seta y paro (Botón rojo) estén en la programación en contactos abiertos, es debido a que en FACTORY IO funciona al revés, si pusieras los contactos cerrados en la programación funcionarían como abiertos sin pulsarlos, por lo que no pasaría corriente sin tocar nada, y no funcionaría al darle a la marcha, la salida marca0 lo he puesto para que cuando haya corriente se interconecte con los siguientes segmentos a través de sus contactos, cuando se pulse el paro o seta el motor que ha estado en marcha se parará.
Al principio del lenguaje de este segmento tendremos el contacto marca0 para que cuando haya llegado a su salida corriente se cierra este contacto pasando corriente, en el segmento tenemos la MARCHA que es el botón verde de la imagen que al darle no solo activa el pistón horizontal (EV1) de la imagen anterior, sino también al resto de motores, excepto la sirena y la luz rotativa del aviso de mantenimiento que ya veremos a continuación. Al pulsar el botón verde (MARCHA) la CINTA1 se moverá y quedará realimentada hasta que haya una caja con una altura suficiente para que el SENSOR1 lo detecte ya que es un contacto cerrado y se abrirá parando la CINTA1, FC1 que es el final de carrera del pistón horizontal (EV1), FC1 por determinado está activo ya que es el final de carrera que está retrocedido hacía atrás, es decir que cuando simulemos se activará automáticamente y por eso lo ponemos en contacto abierto, para que pase corriente y no interrumpa a la CINTA1.
Hay otro contacto abierto llamado marca0 y otra MARCHA, esto lo he hecho para crear otra marca de salida (marca00) y para no saturar las marcas y así evitar fallos, la salida de la marca00 tendrá unos contactos abiertos que se utilizarán para arrancar el resto de motores o partes del proyecto, la salida LUZV1 es la bombilla de la MARCHA, es decir que cuando pulsemos MARCHA en el FACTORY IO se encenderá la luz verde, LUZV1 se nombrará la variable en la parte superior donde hemos nombrado MARCHA.
En el segmento 4 nos encontramos de que si el SENSOR1 detecta la caja, activaría EV1 (Pistón horizontal) y pararía la CINTA1, recordemos que en el segmento3 hay un SENSOR1, EV1 al llegarle corriente activaría FC2 que es el final de carrera que se movería hacía adelante para impulsar la caja, este FC2 tiene un contacto cerrado para cortar la corriente que le está llegando al EV1 y así desactivar EV1 para que el pistón vuelva hacía atrás y así no quedarse hacía adelante todo el rato, también al activar FC2 debido a que le ha llegado corriente EV1 al mismo tiempo activaría su contacto abierto del segmento 5, con esto activa la salida de la marca1 y realimentaría con ayuda de su contacto abierto de la marca1, al pasado 3 segundos un temporizador (TEMP1) reactivaría en el segmento 3 la CINTA1 ya que estaba parada por el SENSOR1, y al mismo tiempo desactivamos o reseteamos el temporizador para reutilizarlo nuevamente cuando se vuelva a repetir los mismos procesos que se han realizado anteriormente.
3. Explicación de la activación de las cintas secundarias.
En el segmento 6, la salida de la marca00 al llegarle corriente debido a que se ha pulsado la MARCHA, su contacto abierto al cerrarse activaría aquellas cintas que solo tienen como control el pulsador llamado MARCHA para arrancarlas y el PARO para pararlas, y no tienen más a parte de esas, solo dos pulsadores, ni más marchas, ni sensores, ni más paros, etc.…, solo tienen los dos pulsadores principales del cuadro eléctrico, estas cintas son realmente secundarias.
4. Explicación de la programación de la sirena y de la luz rotativa para el aviso de mantenimiento.
En el segmento 2, tendremos dos ramas o líneas, la que está en la parte superior es el aviso de mantenimiento que, al pulsar el pulsador verde, que se llama PAVISODEMANTENIMIENTO, la luz rotativa de color anaranjado empezará a funcionar y se parará cuando pulsaremos el pulsador PARADADEAVISODEMANTENIMIENTO.
En la parte inferior tenemos la segunda línea, en esta parte nos encontraremos la programación de la sirena, esta sirena está programada a que cuando se pulse el pulsador llamado PSIRENADEEMERGENCIA empezará a sonar durante 5 segundos ya que al tiempo de los 5 segundos el temporizador TEMPSIRENA activará su contacto cerrado y cortará la corriente que le estaba llegando a la bobina o a la salida de SIRENADEEMERGENCIA, y así desactivando la sirena de manera automática.
5. Explicación de la función y de la programación del peso y de los rodillos de distribución.
En el segmento 7, al pesar las cajas en el FACTORY IO veremos que nos da unos números distintos al peso (Kgs) que tienen las cajas, esos valores son voltios que el programa de manera determinada entiende, el objetivo de esto es normalizar (NORM_X) esos voltios y escalarlo (SCALE_X) o mejor dicho hacer que sea equivalente a nuestros valores, es decir traducirlos, por ejemplo para el programa 10 V es lo que pesaría una caja para nosotros sería 20 Kg, para ello necesitamos un valor que le llamaremos PESO1 (Dirección ID30 (entrada digital) y un tipo de dato Real), se normaliza a través de otro valor que le llamaremos NORM_PESO1 (Dirección MD10 (Marca digital) y un tipo de dato Real) y tendremos una salida llamada KG1 (Dirección MD100 y un tipo de dato Real) para la traducción de nuestros resultados.
En esta imagen de la programación, lo que se hace es guardar sensores en marcas para futuras funciones, el sensor que está en la cinta 4, se llamará SENSORCINTA4, así sucesivamente con los demás, los tres sensores que se guardaran en cada uno con su marca correspondiente, estos sensores son de flancos negativos, es decir que cuando la caja ya haya pasada al rato al sensor es cuando este se activa, si nos fijamos en los sensores en el FACTORY IO, en frente de cada uno de estos sensores tienen una placa, de manera determinada estarían en un flanco positivo y así no se activarían, pero cuando la caja haya pasado al rato al sensor existiría un flanco negativo y es en ese momento se activaría el sensor haciendo su función.
Cuando pulsemos la MARCHA, la CINTA2 y la CINTA3 empezarían a funcionar, cuando el sensor que está en la cinta 3, llamado SENSORCINTA3 detecta la caja, este pararía la CINTA3 y en ese momento es cuando el peso estaría pesando la caja, hay que decir que el SENSORCINTA3 es un flanco positivo y si nos fijamos en el FACTORY IO, en frente de este sensor no hay placa ya que no hace falta, esa placa se usaría si vamos a utilizar un sensor con flanco negativo, la diferencia con el flanco positivo es que cuando detecta la caja, la función del sensor es al momento y no al rato, siguiendo con la explicación del SENSORCINTA3, nos encontramos con un salida llamada Tag_1 que se activaría debido a que el SENSORCINTA3 detecta la caja, esta salida activaría un contacto cerrado que es este el que hace parar la CINTA3, también esta salida activaría un contacto abierto que es el que enclava y otro contacto abierto que se hablará a continuación.
El SENSORCINTA2 que está en la CINTA2, es decir antes de la CINTA3 y antes del SENSORCINTA3, la función del SENSORCINTA2 es que cuando la caja ya ha pasado al rato al sensor, el SENSORCINTA2 pararía su propia cinta, es decir la CINTA2, por si hay otra caja anterior a la que se va a pesar, esta segunda caja por seguridad se detendría en la CINTA2 y así aseguramos que no se junten las cajas al pesar, vemos que en la programación tenemos una salida llamada Tag_3 que al activarse el SENSORCINTA2 quedaría realimentada y está activaría su contacto cerrado que pararía la CINTA2, para que la CINTA2 vuelva arrancar, las cajas deberían pasar o por el SENSORCINTA4 o por el SENSORCINTA6 o por el SENSORCINTA8, cada caja que pase por estos sensores desactivaría el enclavamiento de la salida Tag_3.
Nos encontramos en esta línea el otro contacto abierto de la salida Tag_1, en este momento la CINTA3 estaría parada y el peso estaría pesando la caja, como la salida Tag_1 está activa gracias a que el SENSORCINTA3 está detectando la caja, este contacto abierto de la salida Tag_1 estaría cerrado dejando pasar la corriente y al tiempo de 3 segundos el temporizador TEMP2 activaría un contacto abierto que se cerraría dejando pasar corriente a la entrada de otro temporizador llamado TEMP3 que al tiempo de 2 segundos activaría su contacto abierto que reactivaría la CINTA3, al mismo momento que el contacto abierto del TEMP2 que activaría a los 3 segundos al TEMP3, tiene otro contacto abierto el TEMP2 que activaría los diferentes rangos de los kilogramos de las cajas en el momento que el peso está pesando, es decir que dependiendo de la caja que se esté pesando, se activaría uno de los tres bloques llamados IN_RANGE y que cada uno de sus salidas llamadas DisIZQ1, DisDER1 y DisDEFRENTE se activarían, pero repito solo uno de ellos dependiendo del peso de la caja, estos bloques sirven para activar los rodillos de distribución, y así distribuir las cajas y mandarlas hacía las cintas que queramos que vayan, o de frente (8Kg) o a la izquierda (3Kg) o a la derecha (10Kg), obviamente está operación se haría antes de que la CINTA3 vuelva arrancarse, al activar uno de estos bloques se activaría lo que he repetido anteriormente sobre la salida de cada bloque, cada salida activaría su contacto abierto correspondiente.
Aquí nos encontramos los contactos abiertos de las salidas nombradas anteriormente, por ejemplo si el peso pesa una caja de 3 Kg, obviamente el bloque IN_RANGE se activaría y está activaría la salida DisIZQ1, activando su contacto abierto con flanco positivo, este contacto abierto se cerraría activando la salida llamada IZQ1 que esta nombrada en el FACTORY IO, es el motor que se activará para que la caja vaya a la izquierda y aparte, si nos fijamos en la programación hay dos salidas más que son digitales, estas dos no están nombradas en el FACTORY IO, su función es facilitar la programación, una de las dos salidas es Y1.1, está solamente lo que hace es enclavar para que no se interrumpa la corriente que le está llegando a la salida IZQ1 (Motor), esto sería dentro del proceso de distribución, pero cuando la caja llegue al SENSORCINTA4 recordemos, la marca2 se activará e interrumpirá la corriente que le estaba llegando a la salida IZQ1 (Motor), si la caja ha llegado al SENSORCINTA4 es porque ya ha pasado por el proceso de distribución y se resetea con otras palabras el motor IZQ1, la otra salida llamada DEFRENTEIZQ1, está activará un contacto abierto que se cerrará y dejará pasar corriente activando una salida que si está nombrada en el FACTORY IO, llamada DEFRENTEPRINCIPAL, esté es un motor que lo necesitamos porque este motor tiene la función de que los rodillos rueden, ya que el motor llamado IZQ1 solo hace el giro, ya con las otras operaciones que sería la distribución hacía a la derecha y de frente, su programación sería exactamente igual.
También hay que decir que esto sería obviamente en el PESO1, pero en el PESO2 sería exactamente lo mismo sobre la programación e incluso más fácil ya que no hay rodillos de distribución, es decir no habría bloques llamados IN_RANGE, ya que estos bloques van relacionados con los rodillos de distribución.
6. Explicación de la programación de los indicadores del peso 1 y peso 2.
Para que nos salga en el indicador el peso de la caja necesitaremos un bloque, llamado CONV que simplemente convierte el tipo de dato de Real a DWord para que podamos colocarlo en una de las salidas de nuestro PLC digital del FACTORY IO, y así poder ver el valor o la cantidad que el peso está pesando equis caja en ese mismo momento.
7. Explicación de la programación de los indicadores de los contadores.
Cada sensor contará las cajas que pase por su cinta correspondiente, por ejemplo el CONTADOR1 contará las cajas de 3Kg, el CONTADOR2 contará las cajas de 8Kg, el CONTADOR3 contará las cajas de 10 Kg y el CONTADOR4 contará las cajas de 15 Kg, por ultimo, para resetear los contadores solamente hay que pulsar el pulsador RESETEODECONTADORES.
8. Explicación de la programación y la función del pistón vertical.
En la imagen se observa unas barras blancas que sirven simplemente para obligar que las cajas vayan al punto del pistón de manera que el pistón las coja en el centro, así evitar problemas.
Cuando pulsemos MARCHA el pistón y las cintas más cercanas del pistón funcionarán, estas cintas son aquellas que tienen más de dos contactos físicos, es decir aparte de MARCHA y PARO, tienen sensores. Entonces, en la programación empezará a funcionar la CINTA13, que cuando la caja llegue al SENSORCINTA13, la CINTA13 se parará utilizando un contacto cerrado del SENSORCINTA13, a la vez que se activa el contacto cerrado del SENSORCINTA13, se activará otro contacto, pero esta vez abierto, este contacto se cerrará permitiendo el paso de la corriente hacia la salida Tag_6, cuya salida quedará realimentada, a partir de aquí empezará el pistón a moverse.
Lo primero se activará la salida VENTOSA4 (motor que cogerá la caja) y la salida SUBIRBAJAR4 (motor que bajará para que la ventosa llegue a coger la caja), la salida VENTOSA4 activará un contacto abierto que se cerrará y al tiempo de un segundo el temporizador TEMP5 activará su contacto abierto y su contacto cerrado, activará el contacto cerrado para cortar la corriente que le estaba llegando a la salida SUBIRBAJAR4, porque como ha estado activada la salida SUBIRBAJAR4, el pistón estaría hacía abajo y queremos ahora que suba, para ello habría que interrumpir o cortar la corriente que le estaba llegando, con otras palabras, desconectar el motor SUBIRBAJAR4 para que el pistón suba, el contacto abierto del temporizador TEMP5 también activará su contacto abierto que se cerrará y al tiempo de un segundo el temporizador TEMP6 activará su contacto abierto que se cerrará activando la salida DESPLAZAR4 (Motor que sirve para que la caja sea transportada o desplazada a la CINTA13.1), al activar la salida DESPLAZAR4 al tiempo de 1 segundo el temporizador TEMP7 activará dos contactos abiertos que se cerrarán, uno de ellos volverá a activar la salida SUBIRBAJAR4 para que el pistón baje y deje la caja con cuidado en la CINTA13.1, el otro contacto abierto del TEMP7 se cerrará y al tiempo de un segundo el temporizador TEMP8 activará el contacto cerrado que se abrirá cortando la corriente que le estaba llegando a la salida VENTOSA4 para que el pistón suelte la caja sobre el pallet, en este momento el SENSORCINTA13.1 detectará la caja, el SENSORCINTA13.1 tiene dos contactos que tiene varias funciones, uno de ellos que es el contacto con un flanco positivo se guardará en la salida marca6, el SENSORCINTA13.1 al detectar la caja, este contacto activaría la salida marca6, y esta salida activará un contacto cerrado que se abrirá e interrumpirá la corriente de la programación del pistón, es decir el pistón se resetea y vuelva a su posición inicial, a la vez que se ha activado el contacto con un flanco positivo del SENSORCINTA13.1, se activará también el otro contacto que es abierto y se cerrará, y al tiempo de un segundo el temporizador TEMP9 activará su contacto abierto que se cerrará activando la CINTA13.1 para trasladar la caja junto con el pallet hasta el SENSORPARADACINTA13.1, es decir que cuando el SENSORPARADACINTA13.1 detecte la caja, lo que hará este sensor es parar la CINTA13.1.
Lo que nos falta por explicar es que SENSORCONTADOR12 aparte de contar las cajas tiene otra función, y es que cuando el SENSORCONTADOR12 detecta la caja aparecerá un pallet, es decir que se activará la flecha verde llamada ACTIVARBASE4, otra cosa y menos importante es que las marcas que están situadas en la parte inferior de los flancos como negativos como positivos, mi recomendación es poner marcas distintas para evitar problemas.
Esta explicación que es sobre la función y la programación del pistón 4, es exactamente lo mismo con el resto de pistones, pero cambiando sus variables obviamente.
9. Explicación de almacén de carga de cajas
Este almacén automatizado ha sido diseñado en KOP en distintas etapas. Cada una de esas etapas del almacén irán activando los distintos actuadores del almacén, los cuales provocan el movimiento del transportador y, el almacenamiento de las cajas.
Aquí podemos de observar los distintos actuadores que tiene nuestro almacén y la colocación de los drivers de nuestro almacén número 1.
Al iniciar la marcha de la fábrica, el almacén también lo hará automáticamente. Al llegar un palet por una serie de cintas transportadoras, el sensor AT ENTRY detectará la caja y activará el movimiento de la cinta ENTRY y LOAD CONVEYOR, donde al llegar la caja al sensor AT LOAD , se cargará en el brazo transportador si este se encuentra en su sitio. Si el brazo no se encuentra en posición, el sensor no activará el movimiento de carga en el brazo.
Aquí podemos ver lo mencionado anteriormente.
Las etapas están denominadas con una E y aquí observamos que cada etapa activa distintos actuadores.
Por ejemplo, la E23 y E53, en este caso activan actuadores como At Load que hace la carga del palet en el transportador y At Middle que sitúa el palet en el centro del transpotador.
Se encuentra constituido por 12 etapas; aquí podemos ver la tabla de variables en TIA PORTAL.
Aquí podemos observar el contador, el cuál es una parte fundamental del funcionamiento del almácen, ya que, las posiciones del propio almacén funcionan por números.
Por ejemplo, si el contador está en uno, la caja va hasta la primera celda del almacén, si está en dos, a la segunda; y así sucesivamente, hasta la posición número 56.
Aquí tengo que hacer incapie ya que, a la hora de meterle la variable posicion13, solo podemos meterla como marca(M) o cómo salida(Q) y, al nosotros querer crear 4 almacenes, a la hora de meterle la posición, en el factory IO no funcionaba bien y provocaba el fallo de los almacenes. Si los 4 eran salidas o marcas fallaban todos y, si teníamos dos con salidas y, dos con marcas igual, pero, si dejábamos uno como salida y, otro como marca, funcionaba correctamente. Estuvimos buscando el fallo o la manera de poder hacerlo sin que eso no pasase pero investigando un poco la única conclusión es que factory io no asimila bien la transferencia de velocidad de los datos con que, optamos por otro nuevo tipo de almacén muy sencillo, donde las cajas van desaparenciendo una a una con una separación (con una serie de varias cintas y muchos sensores condicionantes) entre unas y otras para evitar choques que afecten a la calidad del producto . Por lo tanto tenemos diversidad y, tenemos dos almacenes elevados y dos alamacenes separantes.
Con las variables move vamos a determinar el movimiento del brazo, donde determinamos la posición mínima del brazo, en este caso la celda 1, y la posición máxima la 56
Así se irían almacenando una a cada palet que le llega al brazo transportador
Este, es el segundo almacén elevado automatizado, el cuál tiene la misma programación que el anterior, pero, cambiando muchas marcas por salidas porque muchas veces, por lo mencionado anteriormente, el programa confunde y provoca que ningún almacén funcione correctamente.
A continuación os mostraremos el otro tipo de almacén, donde con una serie de 5 cintas y 5 sensores, al llegar las cajas muy pegadas en alguna ocasión, la cinta por la que va pasando la caja, contiene un sensor, que al detectar la caja; para la cinta anterior, dejando una separación entre unas y otras para evitar choques. Al llegar las cajas a la cinta número 5, va desapareciendo gracias al Remitter, que su función es irlas devolviendo.
Y, aquí mostraremos el ultimo almacén, el cual tiene la misma programación pero distintas variables.
Pincha aquí para ver la programación KOP completa del proyecto