Esta semana vamos a realizar un ejercicio bastante interesante por ser práctico (solicitado por un seguidor del blog) que deseaba mas o menos lo siguiente:
- Arrancar 8 motores, y que se pueda hacer de forma aleatoria.
- Entre arranques, para evitar picos de consumos, se han de decalar 10 segundos.
Es decir, si yo pulso 3 motores seguidos, y muy rápidamente (digamos el 3, el 1 y el 5), estos deben arrancar de forma que arranque el motor 3, luego arranque el 1, y finalmente el 5, dejando 10 segundos de espera entre arranques.
Espero que se haya entendido la situación.
Contenido
La problemática
Puede parecer sencillo, pero no lo es tanto habida cuenta que el PLC de Siemens tiene que recordar el orden en el que se han pulsado los botones del motor.
Además, deben esperar su turno de arranque para que no haya solapamientos en el arranque.
Seguramente se pueda resolver de otras formas, pero para resolverlo, he realizado las siguientes consideraciones:
- Tiene que ser posible pulsar el arranque y olvidarte, es decir, no se trata de que no te deje arrancar un segundo motor cuando esté arrancando uno, sino que tu vayas pulsando los motores y ellos vayan arrancando en secuencia correcta
- Si pulsas dos botones o más de forma simultánea (digamos 3), el sistema debe ser capaz de aceptar todos los motores, y arrancarlos en secuencia.
- Debe ser escalable, es decir, que no haya una complicación extra por el hecho de que sean 8 u 80 motores, más allá de la propia lógica de pulsar los botones y activar los determinados botones. Lo mismo si quieres quitar botones, que sea tan simple como borrar las líneas de código
La solución
Para darle solución, no veo una mejor solución que realizar un FIFO de arranque.
Para ello, asignamos a cada motor un número, de tal forma que al pulsar el arranque del motor X, se introduce en el FIFO, de tal forma que luego se van arrancando cada 10 segundos en el mismo orden que entraron (primero en entrar, primero en salir).
Como recordarás, ya realizamos un ejemplo de FIFO en el blog en esta entrada.
He reutilizado el código de SCL que me hacía falta y he limpiado lo que no sirve para este caso.
Podría haber dejado el bloque tal cual, pero la idea era dejar la opción más limpia posible.
El resto del código, lo he realizado en escalera.
Si te parece, lo vemos en el siguiente vídeo.
El ejemplo de arranque de los motores en TIA Portal
Como otras veces, te dejo con el ejemplo…
¿Qué te parece?
Espero que no te haya parecido demasiado lioso.
Como estamos de lanzamiento del Curso Express de TIA Portal, lo voy a modificar para que todo sea realizado en escalera, aunque lo suyo en estos casos, es un combo entre escalera y 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.
12 Comentarios
Eres un fiera!!! Muy buena la explicación y el ejemplo. ¿Podrías dejar el ejemplo en un link de descarga para analizarlo más detalladamente?
Muchas gracias Iñigo!!!
El ejemplo lo subiré como he comentado para los alumnos del nuevo curso, como he hecho en otras ocasiones, con otros cursos.
Manten los ejemplos en scl para tener ejemplos tambien sobre ya que lo usual es ladder y en scl es una manera diferente de ver la programacion.
Muy bueno el ejemplo
¡Magnífico programa! y que extenso e interesante que es como todos los que publicas. ¿Este mismo programa se podría aplicar para encender luces por secciones? secuencialmente me refiero. Muy bueno el spam también.
Saludos
Si, claro. Lo mismo que arrancas motores puedes poner luces. Además como ves, podrías arrancar unas si, otras no…
Quiero realizar el curso pero no cuento con trajera de crédito como realizó el pago.
Las opciones son las disponibles. PayPal y tarjeta.
Hola Íñigo en el caso de no tener la función move block variant y querer hacerlo con SCL, como lo harías, con un loop, para el copiado de los datos de un bloque a otro.
saludos
Si, con un loop en este caso esta bien ya que no son muchas iteraciones
Tengo bloqueado mi usuario y no he podido continuar con el curso express Tia Portal
Te he escrito ya tres veces, desde diferentes cuentas de correo. Creo que el problema está en tu servidor de correo que está filtrando los emails. Por favor, mira en el Spam, porque no es normal que no recibas mis emails, no ya los automáticos, sino los que te escribo de forma manual y personal.