Hace unos días recibí una petición de uno de mis clientes desde Italia.
Alessandro me pedía ayuda para realizar un FIFO con datos complejos en SCL para TIA Portal 15.
Hoy te cuento el resultado.
FIFO y LIFO en SCL con TIA Portal
Para empezar, los requerimientos de los datos a tratar eran :
«[..]memorización de los códigos de pieza, fecha ahora código de identificación de la pieza (int), peso (real), color (int) cuando son escuchados por una fotocélula y descargue cuando se escuchan desde otra distancia a lo largo de la cinta transportadora.»
Esto nos lleva a arrastrar, no un bit o byte, sino a una estructura con varias variables y tipos de datos diferentes.
Como además, inicialmente lo entendí mal, desarrollé un LIFO, y no un FIFO.
Posteriormente Alessandro me corrigió en lo que él quería.
Cosas que pasan cuando te pones a trabajar en casa, ya muy tarde después de una jornada completa en planta.
La cosa, es que ya que tenía hecho el LIFO, pensé en hacer un bloque que hiciera de LIFO o de FIFO.
Entiendo que sabes la diferencia entre ambos, pero si no es así, lo veremos también en el vídeo.
Por tanto, la solución dada en un único bloque:
- Señal de entrada de datos
- Señal de salida de datos
- Datos a introducir
- Tendrá opción entre FIFO/LIFO
- Poder borrar el buffer
- Salida de los datos que salen del FIFO/LIFO
¿Vamos a ello?
Solución de FIFO y LIFO en SCL
Como en otras ocasiones, te dejo con el vídeo donde te cuento cómo realizar este tipo de programación.
¿Que te ha parecido?
Espero que te haya resultado interesante.
Recuerda que si necesitas formarte en SCL, o TIA Portal en general, tienes el curso de TIA Portal para aprender todo lo necesario para programar proyectos como un pro.
El ejemplo y código fuente, esta alojado lógicamente en el Anexo del bloque de SCL.
Recuerda que puedes apuntarte en Guorker.com donde por una cuota mensual, tendrás tarifa plana en todos los cursos disponibles en la plataforma.
Enseño a programar PLC de Siemens a través de mis cursos.
Más información sobre mi aquí
Puedes seguirme en cualquiera de las siguientes redes sociales.
17 Comentarios
Me parece algo muy interesante que existan personas coml Ud. Que se dediquen a enseñar temas tan interesantes como estos de programacion Siemens, que no son tan publicos por parte de esta multinacional.
Muchas gracias por compartir tan valioso conocimiento
Gracias a ti Luis por comentar.
Super super potente SCL ! Merece la pena el curso!
Me parece un buen programa, bien explicado.
Saludos
Grande Iñigo, muchas gracias por el aporte
Muchas gracias Rodrigo!
Hola Iñigo Q tal??
No puedo usar en TIA V.14 La instruccion MOVE_BLK_VARIANt (me aparece sombreada).
Tienes alguna idea de porque…
Un saludo
Apostaría a una de dos, o el autómata que estas usando no es un 1200/1500 o si lo es, el firmware es demasiado antiguo y no lo permite.
Me parece que es un curso muy interesante.gracias por hacer el curso por broques, a si es mas asequible
y poco a poco los podre hacer todos
hi
Can you share this project ? I need to get more in fifo method
All the projects are only available for students and clients.
Buenas Iñigo, gracias una vez más por tus videos!
Quería preguntarte por qué en el caso del FIFO no añadimos los componentes incrementando el índice del array. Así, el valor que sacaríamos siempre sería el array[0] (lo tendríamos más localizado) y subiríamos el resto sacar el primero, añadiendo un elemento con valor cero por abajo (me imagino el array en vertical, creciendo hacia abajo conforme introducimos datos.
No se si ves algún inconveniente que yo no vea en hacer esto.
Gracias de antemano!
Ahora mismo me pillas, porque no estoy delante de ello. Tal vez para que me valiera tanto para fifo como para el lifo. Pero no descartes que sea mejor como dices. Siempre hay varias formas de hacer casi todo.
También hay veces que empiezas de una forma, te pones unas orejeras y tiras para delante y luego viene alguien y te dice.. no sería más fácil hacerlo así? Y tu pensando… Puessss sí.
Pero cuando lo hice, no se me ocurrió.
Lo importante es que el programa sea consistente y previsible.
Luego siempre habrá formas más optimizadas que otras de resolverlo.
Seguramente como dices, lo sea en este caso
Como digo no estoy delante de ello y no recuerdo el ejemplo en concreto (he hecho muchos ya), y no recuerdo por qué lo hice como lo hice.
Pero ya te digo que no será la única forma.
En principio lo estoy probando y funciona. Esperemos que no haga cosas raras más adelante. Gracias igualmente!
Hola Iñigo! Me ha encantado el ejemplo. Muchas Gracias!
Saludos desde Alemania!
Hola Iñigo,
Me ha parecido genial esta forma de manejar una FIFO / LIFO. Sólo tengo una duda:
Me parece que sería necesario verificar si se ha alcanzado el número máximo de piezas antes de aceptar un nuevo ingreso de pieza.
¿Estoy en lo correcto o hay algo que no he entendido bien?
Muchas gracias por tus comentarios.
Sí, y no. El aceptar una pieza más en el tracking, no le corresponde al FIFO. Puedes poner esta limitación, pero no debería llegar a ese punto nunca. Si físicamente entran 20 piezas, el tracking no debería ser quien diga si puede aceptar o no esa pieza. No sé si me explico. Por ejemplo, tú lógicamente puedes tener un fifo de 100 posiciones, pero que físicamente solo entren 90. Esa limitación no valdría para nada, o no debería valer habida cuenta que nunca vas a hacer uso de las 10 últimas posiciones. Ese control debería ser externo al fifo y por tanto, irrelevante el ponérselo o no.