ExamRobotic

Ciclo de scan: el PLC por dentro

Programa Nivel: Base 8 min de lectura 45 preguntas

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:

  1. 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.
  2. 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»).
  3. 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.
  4. 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.

1. Leer entradas copia a la imagen de entradas 2. Ejecutar programa de arriba abajo (OB1) 3. Escribir salidas desde la imagen de salidas 4. Tareas internas comunicación y diagnóstico Tiempo de ciclo = una vuelta completa
El ciclo de scan: el programa trabaja con una «foto» de las entradas y las salidas se actualizan al final.

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.

Acceso directoCuando hace falta leer o escribir una señal en el momento exacto, sin esperar al ciclo, muchos PLC permiten el acceso directo a la periferia. En TIA Portal se indica añadiendo :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:

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:

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.

pulso del sensor lecturalecturalecturalectura Las lecturas ven siempre 0: el programa no se entera del pulso
Un pulso que empieza y termina entre dos lecturas de entradas se pierde.

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.

Error típicoQuerer activar el motor «desde el automático» en un segmento y «desde el manual» en otro, cada uno con su bobina. La correcta es una sola bobina por salida, con las condiciones combinadas: 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:

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

Errores típicos que delatan a quien no entiende el ciclo

Resumen

Pon a prueba lo que has aprendido

45 preguntas prácticas con su explicación. Sin registro y gratis.

Empezar el test