OB de fallo en Step7

En esta entrada vamos a realizar un pequeño repaso de los OB de fallo en Step 7: qué son y para qué sirven.

ob de falloAdemás, veremos que podemos hacer con ellos ya que en general, aunque no se manipulen en exceso, se pueden utilizar para gestionar el funcionamiento de la maquina en función de cual sea el fallo producido.

Qué es un OB de fallo

Un OB de fallo es un bloque de función que tiene las siguientes características:

  • Puede existir en nuestro proyecto o no. Sólo depende de ti a la hora de programar el proyecto.
  • Son específicos. Cada uno de ellos hace referencia a un fallo en concreto.
  • No se ejecutan salvo cuando se da el fallo en cuestión (y exista lógicamente).
  • Si no existen en el programa del PLC, este puede irse a STOP en función de la severidad del fallo.
  • No todos los OB de fallo están presentes en todas las CPU (aunque sí la mayoría).

 

Vale. Ya ves que son unos bloques un tanto especiales.

Listado de OB de fallo.

  • OB 80 – Error de tiempo
  • OB 81 – Error de la fuente de alimentación
  • OB82 – Alarma de diagnóstico
  • Ob83 – Alarma de insercción/extracción
  • OB84 – Error de hardware CPU
  • OB85 – Error de ejecución de programa.
  • OB86 – Fallo de un aparato de ampliación, sistema maestro DP o periferia descentralizada
  • OB87 – Error de comunicación
  • OB88 – Ejecución interrumpida
  • OB121 – Error de programación
  • OB122 – Error de acceso a la periferia

Además de estos OB de fallo existen otros como son el OB70 al 73  que son para CPU H redundantes.

En las referencias te dejo un PDF con toda la documentación. En él podrás saciar tus ansias de conocimiento más en profundidad.

Pero este post no va de eso. Quiero que veas para qué sirven en general. Luego tú serás el que busque el OB adecuado para cada ocasión.

La parte fundamental es que si se produce un error  y el PLC hace una llamada al OB correspondiente, puede suceder:

  • Que el error no sea grave y exista el OB o no, la CPU no se vaya  a STOP
  • Que el error sea grave y el OB no exista con lo cual la CPU se irá a STOP
  • Que el error sea grave y el OB sí exista, con lo cual, salvo que tu lo programes, la CPU no se irá a STOP.

Los OB de fallo típicos son el OB80, el Ob85, el OB86, el OB122… y poco más.

El OB80 es muy típico cuando estás programando en la puesta en marcha. Haces un bucle que no tiene salida y zas… a STOP. Lógico. Superas el tiempo de watchdog y de ahí que se vaya a STOP. No es bueno que lo cargues ya que si se va a STOP porque estas programando un bucle que por una mala programación se vuelve infinito, mejor saberlo ¿no? Porque la que se puede liar es importante.

El OB85 se da en general cuando haces una llamada a un bloque que no existe… típicamente cargas el FB y se te olvida que este chiquitín lleva consigo un DB.

Más típicos de cargar pueden ser por ejemplo el OB86 y OB122. Imagina que tu red profibus está compuesta por varias maquinas, alguna de ellas no es digamos crítica. Puede que te interese tirar la tensión esa parte de la máquina y apagar la periferia que tengas ahí. Entonces, tendrás que cargar estos módulos para cuando quieras mantener esta parte de la instalación, la CPU no se vaya a STOP.

Al contrario, si es peligroso que un esclavo se pueda ir a fallo, es interesante que la CPU vaya a STOP siempre, con lo cual, no cargarás dichos módulos.

Vamos, que lo de la carga de estos módulos, ni si ni no, ni todo lo contrario: depende de la aplicación.

Para que la CPU no se vaya a STOP, simplemente tiene que existir el OB. Por ejemplo digamos el OB122. Dentro de ese OB122 no tienes porqué programar absolutamente nada salvo que lo desees. La simple existencia de dicho OB hará que la CPU no se vaya a STOP por el motivo por el que fue llamado este módulo.

Además, cada bloque tiene asociado una serie de variables que te van a servir para identificar el problema y así vas a poder tomar decisiones, como llevar a STOP el PLC o no.

Para finalizar te ofrezco un nuevo video explicando un poco su uso y alguna cosilla interesante.

 

Referencias:

 

Acerca de Iñigo Gútiez

Ingeniero industrial por la Escuela de Ingenieros Superiores de Bilbao. Trabajo como ingeniero de proyectos y automatización en Guardian Industries

Te puede interesar

Step 7 V5.5

Step 7 V5.5: Compatibilidad con Windows 7 y Windows 8 (32 o 64 bits)

Step 7 V5.5 es la solución para mucha gente que está teniendo problemas para instalar …

14 Comentarios

  1. Muy bueno,muy util sobre todo para descriminar la periferia en error dentro del OB 122.
    yo suelo tirar del sfc 12 y sfc 13 cuando me falla alguno, pero me ha gustado tambien tu tecnica.
    Enhorabuena por tu blog y dedicacion. un saludo

  2. Gracias Jorge por el aporte.

    Un saludo,

  3. Hola Iñigo

    Muy bueno el tutorial , a mi el único fallo de los que has citado que me ha salido varias veces es el 121. Pero todo lo demás no sabía nada.
    Muy interesante, de verdad

  4. Muy bueno y útil tu bloc excelente contenido, mis mas sinceros agradecimientos por tu valioso esfuerzo y dedicación.

  5. Muchas gracias Diego.

    Me alegra que te sea útil

    Un saludo!

  6. fabian limones

    gracias

  7. mauricio balcazar

    muy bueno la verdad es que con palabras claras y directas al problemas es mas fácil solucionar nuestros incidentes gracias por tu dedicación

  8. mauricio balcazar

    me gustaría tener mas información sobre lo cursos de programación de plc online saludos

  9. Zeno Martorana

    Apreciado Iñigo. Antes que nada te agradezco profundamente tus aportes al conocimiento de los sitemas con PLC. De verdad me han servido de mucha ayuda en momentos dificiles….. Gracias.

    Posteriormente, quisiera preguntarte, algunas cosas:

    1.- Puede usarse la introduccion de algunos de esto OB de Fallo, en un programa para poder detectar el fallo en las redes o de algun otro tipo?

    Solo para el momento de detectar la falla y luego quitarlos o bien, dejarlos para otra ocasion.

    2.- Dame un ejemplo de que programar en el OB82 para detectar el nodo ET200s que esta fallando o el fallo en otra unidad de I/O. No se como leer la ADDRESS del modulo en fallo desde las variables del OB82. Dame un ejemplo.

    Gracias por tu ayuda.

    Saludos desde Italia.
    Zeno Martorana.

    • Hola Zeno,
      Puedes hacer por ejemplo que cuando un OB de fallo sea llamado vuelque la información a un DB que tu elijas para revisarlo posteriormente.
      En cuanto la variable que te da es la dirección básica (diagnóstico). Ahora mismo no sé si te la da en en decimal, hex o cómo. Haz pruebas con ello.
      Yo no tengo ningún ejemplo. Tendrás que averiguarlo haciendo pruebas.
      En cualquier caso, ojo porque el OB82 igual no es lo que estás buscando, sino por ejemplo el OB86.
      Te dejo una pequeña tablita con los errores que da cada uno.
      Está obtenido de aquí: http://cache.automation.siemens.com/dnl/jk/jkyMjAyOQAA_44240604_HB/s7sfc__d.pdf
      Error de tiempo (p. ej. sobrepasar el tiempo de ciclo) OB 80
      Fallo de la alimentación (p. ej. pila agotada) OB 81
      Alarma de diagnóstico (p. ej. fusible defectuoso en un
      módulo de señales)
      OB 82
      Alarma de extraer/insertar (presencia de módulo) OB 83
      Avería hardware de la CPU (p. ej. fallo en interface) OB 84
      Error de proceso del programa OB 85
      Fallo del bastidor OB 86
      Error de comunicación OB 87

      Ya nos contarás.

  10. Zeno Martorana

    Como se conoce la direccion Base de un modulo.

    Como saber la direccion Base, si el modulo es local o esta en un Et200 periuferiuco.

    Gracias por tu ayuda.

  11. José Carlos Sendarrubias Viñas

    Me sumo al resto de comentarios. Muchas gracias por estos fantásticos tutoriales y sobre todo agradecer tu esfuerzo y tiempo en llevarlos acabo. Estoy iniciandome en la programación PLC´s y tus tutoriales estan siendo de gran ayuda.