En artículos anteriores, analizamos qué es un bloque de organización y hablamos sobre la interrupción cíclica principal OB1 y la interrupción de hora del día OB10.
En este artículo, continuaremos analizando los diferentes OB y, esta vez, hablaremos sobre el bloque de organización de interrupción de retardo de tiempo u OB20.
Contenido:
- ¿Qué es OB20?
- ¿Cómo llamar a OB20?
- Parámetros de la instrucción SRT_DINT.
- Programa de ejemplo.
- Conclusión.
¿Qué es la interrupción de retardo de tiempo (OB20)?
OB20 es un bloque de organización que es llamado y ejecutado por el sistema operativo, pero tenemos que decirle al sistema operativo cuándo llamar a este OB20.
El sistema operativo obtiene la información del programa PLC del usuario para llamar a este OB20, esperará el tiempo de retardo configurado y luego llamará y ejecutará cualquier lógica que esté dentro del OB20.
Creamos un bloque OB20 desde Agregar un nuevo bloque en el árbol del proyecto. Ver imagen 1.
Imagen 1 – Crear un nuevo bloque OB20
Ahora que he creado una interrupción de retardo de tiempo, ¿cuándo se ejecutará? ¿Y cómo configurar el retardo de tiempo de la ejecución del bloque?
Nuevamente, OB20 es un bloque de organización, lo que significa que no llamas al bloque para que se ejecute, sino que le dices al sistema operativo cuándo puede llamarlo y ejecutar cualquier funcionalidad que esté escrita dentro.
¿Cómo decirle al sistema operativo que llame al OB20?
Para decirle al sistema operativo que queremos llamar al OB20, usamos SRT_DINT o la interrupción de retardo de tiempo de inicio, ver imagen 2.
Imagen 2 – Instrucción de retardo de tiempo de inicio
Parámetros de la instrucción SRT_DINT
Como ves en la última imagen, puedes usar la instrucción SRT_DINT para llamar al OB20. pero es necesario configurar algunos parámetros para que la instrucción funcione.
EN: la instrucción no se ejecutará hasta que se presente una señal de flanco negativo en la entrada EN. Eso significa que debe asignar una condición del conjunto de condiciones para habilitar la señal y la instrucción solo funcionará cuando esta condición sea verdadera y luego falsa nuevamente.
OB_NR: asigna el número de la interrupción de retardo que necesita llamar, en nuestro caso 20 ya que creamos OB20, pero podemos crear más de una interrupción de retardo y luego tendremos que llamar a cada una con una instrucción SRT_DINT separada.
DTIME: ese es el tiempo de retardo que desea esperar antes de ejecutar el OB20, estableceremos este tiempo en 5 segundos para fines de simulación.
SIGN: Identificador que aparece cuando se llama al OB de interrupción de retardo de tiempo en la información del evento de inicio del OB.
Programa de PLC de ejemplo
Para comprender mejor el OB20, crearemos una lógica simple para ver cómo se puede llamar y ejecutar un OB20. Construiremos este ejemplo de PLC sobre la lógica que creamos para el OB1 y el OB10 en artículos anteriores.
Dentro del OB20 crearemos una lógica que cuente cuántos ciclos del OB1 se han llamado y ejecutado dentro del tiempo de retardo de 5 segundos que hemos configurado para el OB20. Ver imagen 3.
Imagen 3: lógica dentro del OB20
En la última imagen, puede ver que usamos la instrucción MOVE para enviar información sobre los recuentos de ciclos al inicio de la llamada al OB20 y después de que se haya ejecutado.
Ver imagen 4 para el resto de la lógica.
Imagen 4: calcular cuántos ciclos se cuentan en 5 segundos
Después de eso, restaremos los dos valores de los recuentos de ciclos para obtener cuántos ciclos se han ejecutado dentro del retraso de cinco segundos.
Ahora que hemos creado la lógica que queremos, ¿cómo podemos llamar al OB20? Como se explicó anteriormente, tenemos que utilizar la instrucción SRT_DINT. Utilizaremos esta instrucción dentro del OB10 que hemos configurado antes para que se ejecute cada minuto. Eso significa que el OB20 también se llamará y ejecutará cada minuto, pero con un tiempo de retardo de 5 segundos.
En el artículo anterior, creamos una lógica que indica cuántas veces se llama y ejecuta el OB1, también creamos otra lógica que llamará al OB10 cada minuto.
En este ejemplo, utilizaremos la llamada del OB10 para llamar al OB20. Ver imagen 5.
Imagen 5: Llamada al OB20 a través del OB10
Dijimos antes que el SRT_DINT necesita una señal de flanco negativo en el EN para que comience la llamada. Es por eso que utilizamos la señal TimeOfDayInterruptEnabled que sabemos que será verdadera cuando se ejecute el OB10 y luego volverá a ser falsa, lo que nos dará la señal de flanco que necesitamos.
Ahora que toda la lógica del PLC está completa, compilemos y ejecutemos una nueva simulación. Vea la siguiente simulación de nuestro proyecto.
En la animación, al principio, los valores de los recuentos de ciclos son cero, pero cuando se llama al OB10 y la lógica TimeOfDayInterruptEnabled es verdadera, esperará 5 segundos y luego los valores de recuento se actualizarán con los recuentos de ciclos.
Conclusión
- OB20 es un bloque de organización llamado y ejecutado por el sistema operativo.
- Podemos indicarle al sistema operativo que llame al OB20 con la instrucción SRT_DINT.