Ciclo de scan: el PLC por dentro
Un PLC no «vigila» las entradas todo el rato ni reacciona al instante como un circuito de relés. Trabaja por vueltas: lee, piensa, actúa y vuelve a empezar, cientos de veces por segundo. A esa vuelta se le llama ciclo de scan. Entenderlo de verdad es lo que más separa a un buen programador de uno malo: explica por qué una salida escrita dos veces no hace caso, por qué un contador cuenta de más o por qué un PLC se va a STOP sin motivo aparente.
Qué hace el PLC en cada vuelta
Con pequeñas diferencias entre fabricantes, todos los autómatas repiten estos pasos:
- Leer las entradas. El PLC copia el estado de todas las entradas físicas en una zona de memoria llamada imagen de proceso de las entradas.
- Ejecutar el programa. Recorre el programa de arriba abajo, segmento a segmento, usando esa copia, no las entradas reales. En los PLC de Siemens, el programa cíclico principal es el bloque de organización OB1 («Main»).
- Escribir las salidas. Los resultados que el programa ha ido dejando en la imagen de proceso de las salidas se copian a las salidas físicas.
- Tareas internas. Comunicaciones (con la pantalla, otros PLC o el ordenador), diagnóstico y autocomprobaciones.
Y vuelta a empezar. El tiempo que tarda una vuelta completa es el tiempo de ciclo.
La imagen de proceso: el programa trabaja con una foto
Que el programa use una copia de las entradas tiene una ventaja enorme: durante toda la vuelta, una entrada vale lo mismo en todos los segmentos, aunque el sensor real cambie a mitad de ciclo. Sin eso, el segmento 3 podría ver una pieza y el segmento 40 no verla, y el programa tomaría decisiones contradictorias.
Con las salidas pasa lo mismo, pero al revés: el programa escribe en la imagen y la salida física solo cambia al final de la vuelta. Por eso, si una salida se escribe en dos sitios, solo cuenta lo último que se escribió. Volveremos a esto con la doble bobina.
:P a la dirección (por ejemplo, %I0.0:P). Se usa en casos concretos, no como
costumbre: rompe la ventaja de la «foto» coherente.El tiempo de ciclo
Un ciclo dura normalmente unos pocos milisegundos, pero no siempre lo mismo: depende de la CPU, del tamaño del programa, de qué partes se ejecutan en esa vuelta y de las comunicaciones. Lo que importa saber:
- El PLC tarda en reaccionar hasta casi dos ciclos. Si la entrada cambia justo después de leerse, no se verá hasta la siguiente lectura, y la salida no cambiará hasta el final de esa vuelta. A eso hay que sumarle el retardo del filtro de la entrada, que suele ser de algunos milisegundos.
- Hay un vigilante del tiempo de ciclo. Si una vuelta dura más que el tiempo máximo configurado (en muchos PLC de Siemens, 150 ms por defecto), el PLC genera un error de tiempo y puede pasar a STOP. Protege de programas que se quedan colgados.
- Se puede consultar. Las herramientas de programación muestran el tiempo de ciclo mínimo, actual y máximo. Mirarlo en la puesta en marcha es una buena costumbre.
Señales más rápidas que el ciclo
Si una señal se activa y se desactiva entre dos lecturas de entradas, el programa nunca se entera. Pasa con impulsos muy cortos: un encoder, un sensor que ve pasar piezas pequeñas muy deprisa, un pulso de otro equipo. Para esos casos hay soluciones específicas:
- Contadores rápidos (HSC), que cuentan por hardware sin depender del ciclo.
- Interrupciones de proceso, que ejecutan un trozo de programa en cuanto cambia una entrada concreta.
- Alargar el pulso en origen o elegir un sensor con salida temporizada.
Lo que no funciona es intentar «leer más deprisa» en el programa normal: el problema no es el programa, es cuándo se actualiza la imagen de entradas.
El orden importa: de arriba abajo
El programa se ejecuta en orden. Si una marca se calcula en el segmento 10 y se usa en el segmento 3, en el segmento 3 se lee el valor que tenía en el ciclo anterior. Muchas veces no importa, pero a veces provoca retrasos de un ciclo o comportamientos extraños difíciles de ver. Regla práctica: calcula las cosas antes de usarlas, y organiza el programa en un orden lógico (primero las entradas y condiciones, después las secuencias, al final las salidas).
La doble bobina: el error clásico
Escribir la misma salida (o la misma marca) con dos bobinas en sitios distintos del programa es un error muy habitual. Como la salida física solo se actualiza al final, manda la última bobina que se ejecuta y la primera no sirve para nada. El síntoma es desconcertante: miras el primer segmento, ves que su condición se cumple, y sin embargo la salida no se activa.
Motor = Auto_pide_motor + Manual_pide_motor. Las instrucciones Set y Reset
son la excepción, pero aun así conviene tenerlas juntas y a la vista.Flancos: detectar el cambio, no el estado
Un pulsador se mantiene pulsado durante muchos ciclos. Si con él incrementas un contador «mientras esté a 1», contará una vez por ciclo: cientos de veces en una pulsación. Para hacer algo una sola vez por pulsación se usa un flanco:
- Flanco de subida (positivo): da un pulso de un solo ciclo cuando la señal pasa de 0 a 1.
- Flanco de bajada (negativo): da un pulso de un ciclo cuando pasa de 1 a 0.
Para saber si ha habido cambio, el PLC compara el valor actual con el del ciclo anterior, que guarda en un bit de memoria propio de esa instrucción. Ese bit no puede compartirse entre dos detecciones de flanco distintas: si dos flancos usan el mismo bit de memoria, uno de ellos dejará de funcionar.
Bucles: el programa no puede esperar
Otro error de quien no entiende el ciclo es escribir algo así en texto estructurado:
WHILE NOT "Sensor_pieza" DO
; // esperar a que llegue la pieza
END_WHILE;
Parece lógico, pero mientras el programa está dentro del bucle no se vuelve a leer la entrada: la imagen de proceso solo se actualiza al terminar el ciclo. El bucle no acaba nunca, el ciclo se alarga hasta superar el tiempo máximo y el PLC se va a STOP. La forma correcta es preguntar en cada ciclo: «¿ha llegado la pieza? si no, sigo con lo demás y vuelvo a mirar en la siguiente vuelta». Las esperas se programan con etapas (una secuencia) y temporizadores, nunca con bucles.
Temporizadores y ciclo
Un temporizador mide tiempo real, pero el programa solo se entera de su estado cuando ejecuta su instrucción. Por eso la instrucción del temporizador debe ejecutarse en todos los ciclos: si queda dentro de un salto o de un bloque que no siempre se llama, puede no actualizarse como esperas. Y un temporizador no es más preciso que el ciclo: si el ciclo es de 10 ms, la salida de un temporizador de 1 s se verá con un error de hasta un ciclo.
Arranque, STOP y memoria remanente
- Al pasar a RUN se ejecuta primero un bloque de arranque (en Siemens, un OB de tipo Startup, como el OB100) donde se inicializan valores. Después empieza el ciclo normal.
- En STOP las salidas pasan a un estado definido, normalmente 0. La máquina debe diseñarse para que ese estado sea seguro.
- Memoria remanente: las variables marcadas como remanentes conservan su valor tras un corte de alimentación (por ejemplo, un contador de piezas). Las no remanentes vuelven a su valor inicial.
Errores típicos que delatan a quien no entiende el ciclo
- Escribir una salida en dos segmentos (doble bobina).
- Contar o hacer acciones con el nivel de una señal en lugar de con su flanco.
- Reutilizar el mismo bit de memoria en varios flancos.
- Esperar dentro de un bucle a que cambie una entrada.
- Usar una marca antes de calcularla y no entender el retraso de un ciclo.
- Esperar que el programa normal capte pulsos más cortos que el ciclo.
- No mirar nunca el tiempo de ciclo, ni en la puesta en marcha.
Resumen
- El PLC lee entradas, ejecuta el programa de arriba abajo, escribe salidas y hace sus tareas internas, en bucle.
- El programa trabaja con una copia de entradas y salidas (imagen de proceso): coherencia dentro de cada ciclo.
- Si una salida se escribe dos veces, gana la última. Una salida, una bobina.
- Los flancos dan un pulso de un solo ciclo y necesitan su propio bit de memoria.
- Nunca esperes en un bucle: el ciclo se alarga, salta el vigilante y el PLC puede pasar a STOP.
- Para señales más rápidas que el ciclo: contadores rápidos o interrupciones.
Pon a prueba lo que has aprendido
45 preguntas prácticas con su explicación. Sin registro y gratis.
Empezar el test