En esta entrada vamos a realizar un pequeño repaso de los OB de fallo en Step 7: qué son y para qué sirven.
Ademá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.[divider]
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.[divider]
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.[divider]
https://youtube.com/watch?v=ZD2TPx9FCa0%3Ffs%3D1%26hd%3D1
Referencias:
Enseño a programar PLC de Siemens a través de mis cursos.
Más información sobre mi aquí
Puedes seguirme en cualquiera de las siguientes redes sociales.
39 Comentarios
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
Gracias Jorge por el aporte.
Un saludo,
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
Muy bueno y útil tu bloc excelente contenido, mis mas sinceros agradecimientos por tu valioso esfuerzo y dedicación.
Muchas gracias Diego.
Me alegra que te sea útil
Un saludo!
gracias
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
Muchas gracias!!
me gustaría tener mas información sobre lo cursos de programación de plc online saludos
Hola Mauricio.
No sé muy bien a que te refieres.
A lo que puedes acceder es lo que hay de momento,
Saludos
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.
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.
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.
Hola,
He realizado varios problemas con TIA portal para un s71200 1214C ad-dc-rly, y el caso el caso es que mediante memorias diferentes activo en diferentes líneas del programa la misma salida y siempre me funcionan correctamente.
¿Es esto una casualidad? ¿Con otros PLC´s se puede hacer esto?
Estoy intrigado, a ver si me puedes echar una mano.
Gracias. Saludos. Ginés
Si es con Set/Reset, puede funcionar bien. Con una igualación, jamás debería hacerse, ya que la salida siempre tomará el ultimo valor. Es decir, si en dos puntos del programa hay una bobina con la misma salida, y ambos segmentos se ejecutan, el valor de la salida, será la segunda ejecución.
Saludos
Pude sacar de STOP la cpu con lo del OB122 pero ahora me marca falla SF y BF no hay comunicacion entre los esclavos, he cambiado el cable y los Dp pero sigue el problema..
Hola,
Como entenderás, desde aquí poco puedo hacer o saber que le esta pasando.
Si estaba funcionando bien hasta ahora, valora que alguno de los equipos este roto.
Saludos
Buenas tardes Íñigo saludos, amigo tengo un PLC S7 300 específicamente un 315 2DP el cual me indica error de periferia OB 122, la CPU está en Funcionamiento pero los les SF y BF están encendidos. Tengo una PG Simens pero el programa me pide una contraseña la cual no tengo, solo puedo visualizar el estatus de la CPU y me indica ese error (OB 122), por descarte ya cambié algunos módulos y conectores DP pero la falla continua. Gracias de antemano espero me puedas ayudar.
Para complementar está información me faltó acotar que este equipo estuvo parado aproximadamente 2 años y cuando se intenta arrancar nuevamente presenta la falla, incluso alguno de los módulos que se cambiaron presentaban oxidación producto de la humedad me supongo, hasta el CPU estaba un poco deteriorado y se cambió por uno nuevo pero usando la misma memoria SD. Crees que tal vez el programa este dañado o tal vez el problema provenga de alguno de los esclavos DP ????
Puede ser cualquier cosa. Imaginaras que poco o nada puedo decir yo desde aquí sin ver la máquina y sin poder conectar.
Si hay cosas oxidadas puedes tener la electrónica deteriorada, los puentes traseros entre las tarjetas que no hagan bien contacto por óxido… a saber.
Lo siento, pero en estas cosas no tengo medios de poder ayudar.
saludos y suerte con ello.
Para complementar está información me faltó acotar que este equipo estuvo parado aproximadamente 2 años y cuando se intenta arrancar nuevamente presenta la falla, incluso alguno de los módulos que se cambiaron presentaban oxidación producto de la humedad me supongo, hasta el CPU estaba un poco deteriorado y se cambió por uno nuevo pero usando la misma memoria SD. Crees que tal vez el programa este dañado o tal vez el problema provenga de alguno de los esclavos DP ????
Hola te agradezco el Post esta muy interesante te comento tengo una periferia descentralizada con S7-1500 y efectivamente el OB86 me esta indicando cuando tengo la falla y en que periferia se esta presentando mi pregunta es existe alguna forma que yo pueda borrar el error del buffer de alarmas del PLC «Deje de parpadear el PLC en error y vuelva a operar normal la periferia» sin yo tener que llevar el plc a stop en este caso me encuentro trabajando con una CPU safety y es la forma que estoy empleando para normalizar la operacions Gracias.
Sinceramente no entiendo a qué te refieres con lo de resetear del buffer. La alarma se quita cuando desaparece la causa que lo ha provocado. Si el PLC se ha ido a STOP porque ha aparecido un error y no hay OB de fallo acorde, no hay otra forma que yo conozca que arrancarlo nuevamente de forma manual, bien físicamente o con la maleta de programación.
La alarma, no la puedes quitar si hay un problema. Es decir, si has configurado una periferia, y el PLC no la detecta, por ejemplo, no es posible que deje de dar una alarma por algo que efectivamente está mal, ya que debería encontrar la periferia, y esta no la encuentra.
Pero como digo, no entiendo muy bien qué es lo que quieres hacer, ni cual es el problema descrito.
Buenos días,
Tengo que hacer una red en profinet, el master es un S7-1200 y la periferia con et200S.
Mi duda es:
Si se va la comunicación entre la CPU y la periferia, las salidas digitales de las ET200S se van a 0?
Y se restablece una vez vuelve a comunicar?
Muchas gracias.
Depende de la periferia, y de cómo esté configurada. Si tu periferia tiene valor sustitutivo en su configuración, este es el valor que toma cuando la CPU se va a STOP o falla, como sería el caso de la pérdida del lazo PN. O eso es lo que interpreto yo. Pero de todas formas, la mejor forma, es probándolo cuando tengas oportunidad. Echa un vistazo a esta entrada donde precisamente se habla de ello: https://support.industry.siemens.com/tf//ww/en/posts/et200s-io-module-behaviour-when-communication-is-lost/110818?page=0&pageSize=10
Muchas gracias por tu información me gustaría que me explicarás o mandaras un pdf de cómo encontrar un fallo cuando falla algo de los componente físicos así como sensores etc..
Un saludo a ver si puedes alludarme gracias
buen dia iñigo, te saludo desde mexico, tengo un detalle con un plc S7 314 V 2.0, este controla una maquina de combustion interna de un generador de voltaje, este trabaja bien en arranque y paro de la maquina, lo unico es que al parar la maquina debe mandar a arrancar una bomba de lubricacion de aceite, y la falla es que no activa la salida de arranque del motor electrico, ya revise todas las entradas analogicas y digitales y todas estan de acorde a c omo esta en las otras maquinas que son iguales y estan operando bien. solo el plc no manda a activar la salida digital. este no tiene ningun error ni led encendido de fallo. saludos
Entenderás que poco puedo hacer. Es un problema que tendréis que analizar allí y buscar la solución vosotros mismos.
Cambia el bloque digital de salida o chequea que haya voltaje alimentandolo
Tengo un S7 300 con CPU 315 y aún cuando no presenta falla alguna los equipos que controla no arrancan. Que puede estar pasando?.
Hola Gregorio. Como entenderás, no lo sé. Tendrás que mirar el diagnóstico del sistema y tirar del hilo para ver qué está pasando. Pueden ser mil cosas.
Chequea si los bloques de salidas están activados cuando el PLC está en RUN
Muy bueno muy interesante
POR QUE EL LED ROJO EN SF Y BF1 DE MI MODULO ANALOGICO DE UN S7300
ESTAN ENCENDIDOS QUE FALLO PODRIA SER
Hola Milton. Pues lo que diga el manual. Echale un vistazo.
Muy buen material
hola buenas, muchas gracias por tu trabajo, tengo una pregunta rápida, tengo una cpu que esta conectada por porfinet a varias et200, si una se queda sin tensión, puedo por ejemplo activar una salida de la cpu, gracias
Tienes que jugar con los OB de fallo, y determinar cuál de ellas es la que no es accesible. Revisa la documentación del OB86 (rack failure)