En este artículo, continuamos nuestra discusión sobre los diferentes tipos de bloques de organización en los PLC de Siemens. Esta vez, hablaremos sobre el OB121 o la interrupción por errores de programación en el portal Tia.
Contenido:
- ¿Qué son las interrupciones por errores de programación OB121?
- Ejemplos de errores de programación.
- ¿Qué sucederá si se detecta un error de programación?
- Simulación de un error de programación en el portal TIA.
- ¿Cómo puede ser útil el OB121 contra los errores de programación?
- Conclusiones.
¿Qué son las interrupciones por errores de programación (OB121)?
El OB121 es un bloque de organización que será llamado por el sistema operativo del PLC si ocurre un error de programación mientras se ejecuta su lógica. Tenga en cuenta que no estamos hablando de un error de programación que será detectado por el compilador al intentar descargar su lógica en su PLC. Consulte la imagen 1.
Imagen 1: el compilador detectará algunos errores de programación
Como puede ver en la última imagen, hay un error de programación en la lógica de mi PLC; faltan algunos operandos en la entrada y salida de la Red 1. Pero el compilador detectó este error incluso antes de descargar la lógica en el PLC. El error de la imagen 1 no es del tipo de error de programación que puede provocar la necesidad de llamar al OB121.
Los errores en su programa de PLC que el compilador no puede encontrar, pero que pueden causar problemas en su lógica mientras el PLC está en funcionamiento, son los errores de programación a los que nos referimos. Estos errores activarán una llamada al OB121 por parte del sistema operativo.
Ejemplos de errores de programación
A continuación, se muestran algunos ejemplos de errores en la lógica de su PLC que pueden causar errores de programación:
- Se excedió la profundidad máxima de anidamiento de las llamadas de bloque.
- Ha utilizado un puntero NULL para direccionar un operando.
- Instrucción desconocida.
- La cadena direccionada tiene información de longitud incorrecta.
- Error de longitud de área al leer.
- Error de longitud de área al escribir.
- Error en el n.º de temporizador.
- Acceso a una BD que no está cargada; el número de BD se encuentra en el área permitida.
- La BD no existe.
Estos errores y muchos más pueden provocar errores de programación en su PLC. Puede consultar la sección de Ayuda del TIA Portal para saber qué otras razones pueden provocar errores de programación del PLC.
¿Qué sucederá si se detecta un error de programación?
Cuando su PLC detecta un error de programación, puede ocurrir uno de tres eventos.
- Su PLC mostrará un error y pasará al modo STOP.
- Su PLC mostrará un error pero seguirá ejecutando su lógica.
- Su PLC mostrará un error y luego intentará resolver este error.
Estos tres eventos dependerán básicamente de la programación de su PLC. Es decir, su código decidirá cómo se comportará el sistema operativo al detectar un error de programación.
Simulación de un error de programación en TIA Portal
Para comprender mejor cómo se comportará el PLC, crearemos un programa simple donde provocaremos un error de programación y luego veremos qué sucederá. Vea la imagen 2.
Imagen 2: lógica de programa simple
La lógica que creamos es muy simple: cuando se ha habilitado InitiateProgError, el valor 126 se moverá al área DB52.DBW16. Tenga en cuenta que no hemos creado DB52, por lo que ese será nuestro error de programación. Tenga en cuenta que este error no se detectará durante la compilación o la descarga en el PLC. Vea las imágenes 3 y 4.
Imagen 3: error no detectado por el compilador
Vea cómo se compiló correctamente el bloque, aunque incluía un error de programación.
Imagen 4: bloque descargado en el PLC
Nuevamente, el bloque se descargó en el PLC con un error de programación.
Ahora, simulemos nuestro programa de PLC y veamos qué sucederá. Vea la animación 1 para la simulación del código del PLC.
Animación 1
Como puede ver en la animación anterior, el LED de ERROR del PLC parpadeará en rojo durante unos segundos y luego el PLC pasará al modo STOP.
Vaya al diagnóstico en línea del PLC para ver qué sucedió. Vea la imagen 5.
Imagen 5: diagnóstico en línea del PLC
Lo que vio en la animación es exactamente lo que ve en la imagen anterior. Se pueden mencionar en 3 pasos:
- El PLC detecta el error de programación que es OB52 no cargado.
- El sistema operativo activará la llamada al OB121, pero no hay ningún OB121 creado en nuestra lógica.
- Cuando el PLC descubre que no hay ningún OB121 creado en nuestra lógica, el sistema operativo iniciará una solicitud STOP. Y el PLC pasará al modo STOP.
¿Cómo puede ser útil el OB121 contra los errores de programación?
Agreguemos un OB121 a nuestro código de PLC y veamos cómo cambian las cosas. Vea la imagen 6.
Imagen 6: Cómo agregar un OB121
Después de crear y agregar el OB121 a nuestra lógica de PLC, veamos qué sucederá en la simulación.
Tenga en cuenta que no hemos escrito ninguna lógica de PLC dentro del OB121. Vea la animación 2.
Animación 2
Como puede ver en la animación 2, cuando se activa InitiateProgError, el LED de ERROR del PLC parpadeará en rojo, pero el PLC seguirá funcionando.
Esto significa que el PLC no entrará en modo STOP. Revisemos los diagnósticos en línea para ver qué sucedió realmente. Vea la imagen 7.
Imagen 7: el error no provocó la detención del PLC
En la imagen se puede ver que el PLC detecta el error pero no entra en modo STOP. Omitirá este error, continuará el ciclo y comenzará de nuevo desde el principio.
Cuando llegue al error nuevamente, lo detectará nuevamente y emitirá una alarma en los diagnósticos. Omitirá el error y continuará. Eso significa que el PLC emitirá la misma alarma en cada ciclo de escaneo. Y es por eso que en la imagen se ve que el evento sigue activándose y la alarma se repite en cada ciclo de escaneo.
Por lo tanto, tener un OB121 vacío le brindará el beneficio de mantener el PLC en funcionamiento y, por extensión, mantener su proceso en funcionamiento.
Pero hay más que podemos hacer, podemos intentar detectar este error y eliminarlo. Además, podemos intentar mostrar el tipo de error de programación detectado.
Determinar el tipo de error
El OB121 tiene un identificador de ID de falla interno que podemos usar para mostrar el tipo de falla, tal vez como una alarma en una HMI. Dentro del OB121 crearemos una instrucción MOVE simple, donde enviaremos la entrada Fault_ID del OB121 a un área de memoria definida dentro de nuestra base de datos global. Ver imagen 8.
Imagen 8: Identificación del tipo de error
Como puede ver en la imagen anterior, cuando ocurre el error de programación, el Fault_ID se enviará a Data.ProgErrorID. Ver imagen 9.
Imagen 9: Error de programación Fault_ID
Puede ver que el ID de falla es 3A. Si consulta la ayuda del TIA Portal, puede encontrar el significado de esta falla.
3A: Acceso a una base de datos que no está cargada; el número de base de datos se encuentra en el área permitida.
Captura del error
Esto simplemente significa intentar resolver el error de programación del PLC después de haber identificado la razón. Esto dependerá principalmente de cuál es el error y cómo desea manejarlo. Simplemente simularemos una solución al error para ver cómo se comportará el PLC.
La solución real para el error que creamos será simplemente crear el DB52 o usar un bloque de datos que ya esté creado.
Pero para el bien de la simulación, simplemente agregaremos un contacto simple que se abrirá cuando ocurra el error de programación para capturar este error. Vea las imágenes 10 y 11.
Imagen 10: Captura del error
Siempre que se llame a OB121, se establecerá CatchError.
Imagen 11: eliminar el error
Siempre que se llame a OB121, se activará CatchError y se utilizará para detectar el error de programación en la red 1. Consulte la animación 3 para ver la simulación del PLC.
Animación 3
En la animación anterior, puede ver que cuando se activa InitiateProgError, el PLC entrará en error por un momento, luego el error se borrará y el PLC estará en modo RUN todo el tiempo.
Conclusión
El solo hecho de tener un OB121 vacío en su lógica garantizará que su PLC no entre en modo STOP si hubo un error de programación en su código. Luego puede usar el OB121 para identificar también el error y resolverlo.