Como comentaba en el post precedente, al programar un PLC desde cero solemos iniciar sin muchas consideraciones de seguridad. El entusiasmo por ver la CPU en "Run" y funcionando a la perfección nos lleva a escribir líneas de código sin detenernos demasiado en los detalles. Estos, pensamos, podrán resolverse después de tener lista la estructura principal de la lógica de control.
Además, muchas veces trabajamos contra el reloj: la programación que controla toda una línea de producción debe estar lista el lunes… y hoy es viernes. La presión por entregar a tiempo puede llevarnos a omitir detalles importantes. Y es en estas condiciones donde se gestan errores que más tarde pueden provocar que la CPU se detenga y se vaya a "Stop".
El escenario real: prisas, fatiga y errores
Es domingo y el programa apenas toma forma. El cansancio nubla la mente y la concentración disminuye. Lo que al inicio parecía claro y sencillo ahora se vuelve confuso. Surgen dudas y hasta llegamos a pensar si hubiera sido mejor seguir la sugerencia del jefe, aunque fuese menos elegante.
En ese estado de fatiga ocurren errores mínimos pero críticos. Por ejemplo, al escribir en el programa que queremos leer la dirección DBW48
del bloque de datos DB110
, por descuido tecleamos DB119
. Una diferencia aparentemente insignificante (confundir un "0" con un "9"), pero suficiente para desencadenar un problema serio.
El editor de programas del Simatic Manager no detecta el error en esta etapa, así que seguimos escribiendo más líneas hasta completar la rutina deseada. Convencidos de que todo funcionará, descargamos el bloque de programa al PLC… y de inmediato la CPU se va a "Stop".
Diagnóstico del fallo
Tras la frustración inicial, acudimos al búffer de diagnóstico de la CPU y encontramos la causa del problema: aparece un mensaje donde se indica que no se encontró el OB121.
Aquí es donde entra en juego este bloque de organización: el OB121 es llamado por la CPU cuando se comete un error de programación, como el ejemplo descrito. Si este OB está cargado en la memoria del PLC, la CPU no se va a "Stop" automáticamente. En cambio, si no existe en memoria, el resultado inevitable es que la CPU abandone el modo "Run" y se detenga.
El papel del OB121
El OB121 actúa como un “salvavidas” para los errores de programación:
-
Prevención de parada inesperada: si el bloque está cargado, evita que la CPU entre en modo "Stop" ante un error de código.
-
Persistencia del error: aunque la CPU siga en "Run", el error sigue existiendo y debe corregirse manualmente en el programa.
Facilidad de implementación: basta con crear el OB121 en el Simatic Manager y transferirlo a la CPU. No es necesario añadir instrucciones dentro del bloque; con que exista en memoria es suficiente para evitar que la CPU se detenga.
Para concluir...
El OB121 es fundamental cuando programamos bajo presión o en condiciones poco favorables, donde los errores de escritura y referencia a bloques inexistentes pueden ocurrir fácilmente. Su presencia en la CPU asegura que ésta no se detenga por un fallo de programación, evitando comprometer el arranque de una máquina o interrumpir un proceso productivo.
Sin embargo, debe quedar claro que el OB121 no corrige el error, sólo lo enmascara para que la CPU siga en ejecución. La responsabilidad final es del programador, quien debe revisar el código, localizar y eliminar el fallo.
En resumen, crear y cargar el OB121 en el PLC no requiere esfuerzo adicional, pero puede marcar la diferencia entre un proyecto estable y una CPU detenida en el peor momento. Con él, podremos programar con mayor confianza, sin olvidar que la verdadera solución siempre será una programación clara, organizada y libre de errores.