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.
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.




