Cómo evitar el paro de una CPU S7-300 por fallo de comunicación PROFIBUS DP mediante el OB86

Para evitar que una CPU SIMATIC S7-300 (como la S7-315 2DP) pase al modo STOP cuando un maestro PROFIBUS DP de terceros o de Siemens pierda la comunicación, falle o se apague, descargue el bloque de organización de interrupción de fallo de bastidor OB86 en la CPU del PLC. Cuando ocurre una interrupción en el bus PROFIBUS DP, el sistema operativo del controlador busca la presencia del OB86 para gestionar el evento; si el bloque está cargado en la memoria del autómata, la CPU continúa ejecutando el programa de usuario en modo RUN en lugar de detenerse por una falla de periferia descendida.

Tabla de contenido

Causa técnica: por qué la CPU S7-300 pasa a modo STOP ante un fallo de bus

Cuando la CPU S7-315 2DP opera configurada como esclavo DP (o maestro DP) dentro de una red PROFIBUS y pierde el acoplamiento con el maestro remoto (debido a un fallo de hardware, desconexión física del cable de red o apagado del equipo remoto), la interfaz de comunicación genera un evento de interrupción de periferia por caída de estación o bastidor (Rack Failure / Station Failure).

Por diseño en la arquitectura SIMATIC S7-300/400, el sistema operativo de la CPU reacciona interrumpiendo la ejecución cíclica del programa principal (OB1) e intentando invocar el bloque de organización OB86. Si el controlador no encuentra el OB86 cargado en la memoria de usuario, la CPU pasa automáticamente al modo STOP para proteger la planta ante una eventual inconsistencia de datos en las variables de E/S.

La simple carga del OB86 en la memoria del PLC evita este estado de paro, permitiendo que la CPU continúe en RUN mientras se restituye la red PROFIBUS.

Requisitos previos

  • Un proyecto de ingeniería en STEP 7 V5.x (SIMATIC Manager) o TIA Portal con la configuración de hardware de la CPU S7-300.
  • CPU S7-300 con interfaz PROFIBUS DP integrada (por ejemplo, CPU 315-2DP) o procesador de comunicaciones CP 342-5.
  • Conexión de programación activa hacia la CPU (vía MPI, PROFIBUS o Ethernet/PROFINET según el adaptador utilizado).

Procedimiento de configuración e integración del OB86

Se utiliza mejor cuando: Se requiere evitar la parada de la CPU S7-300 cuando un maestro o esclavo PROFIBUS remoto pierde la conexión, se apaga o falla inesperadamente.

Procedimiento

  1. Abra el proyecto de automatización en STEP 7 (SIMATIC Manager) o TIA Portal.
  2. En la vista de bloques del programa de la CPU, agregue un nuevo bloque de organización:

    • En STEP 7 V5.x: Haga clic derecho en la carpeta Bloques (Blocks) -> Insertar nuevo objeto (Insert New Object) -> Bloque de organización (Organization Block).
    • Escriba OB86 en la casilla del nombre del bloque.
      3. Abra el OB86 generado. Para la función básica de prevención de STOP, no se requiere programar código en su interior; el bloque puede permanecer completamente vacío (únicamente con la instrucción de retorno por defecto BE / SET).
      4. Si se requiere evaluar el evento de desconexión en la lógica de control, programe la lectura de la estructura de datos temporales (TEMP) de la cabecera del OB86 (tales como OB86_EV_CLASS, OB86_FLT_ID y la dirección del nodo afectado).
      5. Guarde y compile el bloque OB86.
      6. Conecte el software de ingeniería en línea con la CPU S7-300 y descargue el OB86 a la memoria del controlador (Download).

Plaintext

Estructura básica en AWL / STL dentro del OB86 (Opcional):

// La sola presencia de este bloque evita que la CPU pase a STOP.
// Se pueden evaluar las variables locales de la cabecera TEMP para diagnóstico:
// #OB86_EV_CLASS : Clases de evento (0x38 = Salida de estación, 0x39 = Retorno de estación)
// #OB86_FLT_ID   : Código de fallo de la estación

L   #OB86_EV_CLASS
BE

Resultado esperado: La CPU SIMATIC S7-300 permanece en modo RUN cuando ocurre una desconexión o apagado del maestro PROFIBUS DP remoto.

Verificación: Desconecte temporalmente el conector DB9 del bus PROFIBUS o apague el equipo maestro remoto. Observe la carátula de la CPU S7-300: los LEDs de diagnóstico SF (System Fault) y/o BF (Bus Fault) se iluminarán en rojo para indicar la anomalía de comunicación, pero el LED RUN permanecerá encendido en verde.

Limitación: Aunque el OB86 evita que la CPU se detenga, las imágenes de proceso de E/S vinculadas al enlace PROFIBUS mantendrán su último estado o pasarán a valor de sustitución (cero) según la configuración de hardware. La lógica del programa debe gestionar la pérdida de comunicación para prevenir acciones no deseadas en el proceso.

Precaución: Si el programa de usuario en el OB1 intenta acceder directamente a variables de E/S periferia (ejemplo: PEW o PAW) pertenecientes al nodo PROFIBUS desconectado mediante acceso directo a periferia, la CPU pasará a modo STOP por error de acceso a la periferia salvo que también esté cargado en la CPU el bloque de organización OB122.

Verificación

El procedimiento de integración y protección mediante el OB86 se considera exitoso cuando:

  • El bloque de organización OB86 se encuentra cargado físicamente en la memoria de la CPU SIMATIC S7-300.
  • Al simular o presentarse una interrupción de la red PROFIBUS DP, la CPU mantiene la ejecución del programa de usuario en modo RUN.
  • El búfer de diagnóstico de la CPU registra el evento de caída de estación o bastidor (Rack failure / Station failure) asignado al OB86 con la dirección del nodo maestro/esclavo correspondiente.

Limitaciones y precauciones operativas

  • Errores de acceso a periferia (OB122): Si la lógica del OB1 o de cualquier FC/FB intenta leer o escribir directamente mediante accesos P (PIW/PQW) en direcciones del canal PROFIBUS caído, la CPU se detendrá por fallo de acceso a la periferia. Se recomienda descargar de forma complementaria el bloque OB122 (Fallo de acceso a la periferia) o utilizar la imagen de proceso (IW/QW) en lugar del acceso directo a la periferia.
  • Detección de datos no válidos: Continuar en modo RUN durante una falla de bus implica que la CPU S7-300 procesará datos de entrada congelados o en cero. Es indispensable programar la verificación de estado del canal de comunicación para detener o conmutar de forma segura los actuadores y las secuencias de control.

Preguntas frecuentes para ingenieros

¿Por qué basta con cargar el OB86 completamente vacío para evitar el modo STOP?

Porque la regla del sistema operativo del S7-300 requiere únicamente verificar la existencia del bloque OB86 en la memoria del autómata cuando se detecta un fallo de bastidor o de estación PROFIBUS. Si el bloque está presente, el sistema operativo transfiere el control al OB86, ejecuta la rutina (aunque esté vacía) y retorna inmediatamente al ciclo del OB1.

¿Se debe programar algún código específico dentro del OB86 para registrar qué nodo falló?

No es estrictamente necesario para mantener la CPU en RUN, pero es una buena práctica de ingeniería. La cabecera del OB86 contiene variables locales predefinidas en la zona TEMP (como la dirección lógica de la estación y el tipo de evento) que pueden copiarse hacia un bloque de datos (DB) para mostrar en pantallas HMI qué estación específica perdió comunicación.

¿Qué diferencia existe entre el OB86 y el OB82 en una red PROFIBUS?

El OB86 se activa ante fallas estructurales del canal de red o caídas de estaciones/bastidores completas (Rack / Station Failure). Por su parte, el OB82 (Diagnostic Interrupt) se invoca cuando una estación PROFIBUS o módulo de E/S sigue presente en la red pero reporta un error de diagnóstico interno, como una rotura de hilo, cortocircuito o falta de tensión de alimentación.

¿Se aplica la misma solución con el OB86 para redes PROFINET IO?

Sí. El OB86 cumple exactamente la misma función en controladores Siemens S7-300/400 equipados con interfaces PROFINET IO para gestionar la pérdida de comunicación con dispositivos IO de la red Ethernet industrial.

Referencias técnicas

  • Siemens Industry Online Support (SIOS): Manual de referencia STEP 7: Funciones estándar y de sistema para S7-300/400 (Manual del usuario de SFB/SFC y OBs).

Artículos relacionados

Etiquetas relacionadas

Code: C137

6 respuestas