Prevención del reinicio de valores en bloques de datos tras la recompilación y creación de valores predeterminados seguros en STEP 7

En los sistemas SIMATIC PCS 7 y STEP 7, la recompilación de bloques de datos (DB) o la descarga de programas S7 modificados restablece frecuentemente los valores operativos en línea a 0.0, debido a que el compilador reinicializa los valores actuales con los valores iniciales declarados. Los ingenieros evitan la pérdida de consignas (setpoints) operativas y establecen valores seguros de respaldo rellenando la columna 'Valor inicial' (Initial Value) en la Vista de datos, copiando los valores actuales en línea en los valores iniciales antes de la compilación, o parametrizando valores predeterminados distintos de cero en las declaraciones de bloques CFC.

Índice de contenidos

Mecánica de la inicialización de bloques de datos: valores iniciales frente a valores actuales

En los controladores SIMATIC S7-400 y CPU 410, los bloques de datos (DB) mantienen dos capas distintas de definiciones de parámetros dentro de la base de datos de STEP 7:
* Valor inicial (Vista de declaración): El valor predeterminado de respaldo asignado a una variable durante la creación del bloque (por ejemplo, en SCL, STL o el editor de DB). Si no se introduce explícitamente ningún valor inicial, STEP 7 asigna por defecto 0 o 0.0 a los números.
* Valor actual (Vista de datos): El valor operativo en vivo almacenado actualmente en la memoria de trabajo de la CPU y modificado dinámicamente por las entradas del operador de la HMI o la lógica del programa PLC.
* El peligro de la compilación: Cuando se recompila una fuente de bloques de datos, o cuando una interfaz de bloque alterada fuerza una regeneración completa del DB, STEP 7 reconstruye el bloque de datos utilizando los Valores iniciales declarados, sobrescribiendo los Valores actuales en línea existentes.

Por qué la recompilación y las descargas restablecen las consignas de HMI a cero

En plantas donde un sistema HMI/SCADA escribe consignas operativas (por ejemplo, consigna de temperatura de 50.0 °C, límite de presión de 10.0 bar) directamente en un bloque de datos S7:
* Si el bloque de datos se creó con valores iniciales predeterminados de 0.0:
* La recompilación del DB o la descarga del DB al controlador borra las consignas de sintonización del operador, restableciendo el proceso a 0.0.
* En procesos químicos o térmicos continuos, restablecer las consignas activas a cero puede provocar paradas inmediatas de producción, eventos de cierre brusco de válvulas o choque térmico en los equipos.

Procedimiento paso a paso para definir valores predeterminados seguros en el editor de DB

Para garantizar que cualquier futura reinicialización restablezca el proceso a un valor operativo "seguro", conocido y estable, en lugar de a cero:
1. Abra SIMATIC Manager y localice el bloque de datos de destino.
2. Haga doble clic en el DB para abrir el Editor de bloques S7 - KOP/FUP/AWL.
3. De forma predeterminada, el bloque se abre en la Vista de declaración. Cambie a la Vista de datos:
* Seleccione Ver -> Vista de datos (o pulse Ctrl + 4).
4. Localice la columna titulada Valor inicial (Initial Value).
5. Para cada consigna crítica, reemplace 0.0 por su línea base de proceso segura y verificada (por ejemplo, introduzca 50.0 para las consignas de temperatura o 1.0 para el caudal mínimo).
6. Guarde el bloque de datos.
7. Ahora, si se produce un borrado completo de la memoria de la CPU (MRES) o una reinicialización, el controlador tomará por defecto su valor operativo seguro en lugar de cero absoluto.

Copia de valores actuales en línea a valores iniciales sin conexión antes de la recompilación

Cuando los parámetros de sintonización se han ajustado en línea durante meses de funcionamiento, los ingenieros deben capturar esos valores optimizados antes de volver a compilar:
1. En el editor de DB, abra el bloque de datos en línea:
* Seleccione PLC -> Abrir socio en línea (Open Online Partner).
2. Seleccione Ver -> Vista de datos para inspeccionar los Valores actuales reales en vivo.
3. Seleccione Edición -> Inicializar bloque de datos (o copie los valores en línea).
4. En STEP 7, utilice la función:
* Archivo -> Guardar como... para guardar el DB en línea con sus valores actuales reales sobre el DB del proyecto fuera de línea.
5. En el DB fuera de línea, ejecute Edición -> Inicializar bloque de datos: esto copia los valores actuales directamente en la columna Valor inicial, preservando permanentemente la sintonización de campo frente a futuras recompilaciones.

Buenas prácticas arquitectónicas en CFC y APL para la retención de consignas

En la programación estándar de SIMATIC PCS 7 con gráficos de funciones continuas (CFC):
* Evite el acceso directo a DB: Nunca escriba consignas HMI de WinCC directamente en desplazamientos (offsets) de DB de instancia no vinculados.
* Valores iniciales de pines de bloques CFC: En el diagrama CFC, haga doble clic en el pin de parámetro del bloque (por ejemplo, PIDConL.SP_Ext o SP_Int) y establezca el valor predeterminado en el cuadro de diálogo de propiedades del pin.
* Descargas delta: Realice siempre la compilación en modo Sólo cambios (Changes Only). Las descargas delta en modo RUN conservan los valores actuales de los bloques de datos de instancia sin restablecer las consignas.

Verificación

  • En la Vista de datos del editor de DB, verifique que la columna Valor inicial muestre el valor predeterminado seguro designado (por ejemplo, 50.0).
  • En un entorno de prueba, ejecute Edición -> Inicializar bloque de datos: confirme que la columna Valor actual se actualiza a 50.0 en lugar de a 0.0.
  • Descargue el DB al controlador de prueba: verifique que la cara (faceplate) de la HMI muestre la consigna predeterminada segura inmediatamente y sin intervención manual.

Limitaciones y precauciones operativas

  • Inicializar un bloque de datos en un controlador de producción en marcha sobrescribe inmediatamente las variables de proceso activas; nunca ejecute la inicialización de un DB mientras una unidad esté operando activamente.
  • Si se modifica la interfaz de un bloque (añadiendo, eliminando o reordenando variables), una descarga S7 requerirá reinicializar el DB en modo STOP o realizar un cambio de tipo en RUN (TCiR).
  • Archive siempre el multiproyecto antes de actualizar las interfaces de bloques para preservar las instantáneas históricas de los valores actuales.

Preguntas frecuentes para ingenieros

  • ¿Cuál es la diferencia entre el valor inicial y el valor actual en STEP 7?
    El valor inicial es el valor predeterminado de respaldo declarado; el valor actual es la variable operativa en vivo en la memoria de la CPU.
  • ¿Por qué las consignas de la HMI se restablecen a 0.0 después de recompilar un bloque de datos?
    La recompilación reconstruye el DB utilizando los valores iniciales declarados, los cuales toman por defecto 0.0 si no se definen explícitamente.
  • ¿Cómo cambio el editor de bloques S7 para ver los valores actuales?
    Seleccione Ver -> Vista de datos (o pulse Ctrl + 4) en el editor KOP/FUP/AWL.
  • ¿Cómo puedo guardar las consignas sintonizadas en línea en el proyecto fuera de línea?
    Abra el DB en línea, copie los valores actuales y péguelos en la columna de valor inicial fuera de línea antes de compilar.
  • ¿La compilación de diagramas CFC en el modo de sólo cambios restablece las consignas de los bloques?
    No, la compilación delta y la descarga delta en modo RUN conservan los valores actuales existentes en los DB de instancia.
  • ¿Qué comando restablece los valores actuales de un DB a sus valores iniciales en el editor?
    El comando Edición -> Inicializar bloque de datos.
  • ¿Se pueden definir valores iniciales seguros directamente en el código fuente SCL?
    Sí, asignando valores predeterminados en la declaración de variables: SetPoint : REAL := 50.0;.
  • ¿Qué ocurre con los valores actuales durante un arranque en caliente (CRST) de la CPU?
    Las variables retentivas del bloque de datos conservan sus valores actuales; las variables no retentivas se reinicializan con sus valores iniciales.
  • ¿Cómo se hace que un bloque de datos S7 no sea retentivo?
    En las propiedades del DB, desmarque el atributo No retentivo (Non-Retain) o configure la retención del DB en las propiedades de hardware de la CPU.
  • ¿La definición de valores iniciales distintos de cero consume memoria adicional del controlador?
    No, los valores iniciales se almacenan en la memoria de carga y no consumen memoria de trabajo adicional.

Referencias técnicas

  • SIMATIC STEP 7 V5.6 Manual de programación con STEP 7 (Bloques de datos)
  • SIMATIC S7-SCL V5.6 para S7-300/400 Manual de programación
  • Entrada de Siemens Industry Online Support: Prevención de la pérdida de consignas en la recompilación de DB (ID de entrada: 299982)
  • SIMATIC PCS 7 CFC para S7 / PCS 7 Manual

Artículos relacionados

Etiquetas relacionadas

PCS 7, STEP 7, Bloques de datos, Valor inicial, Valor actual, Vista de datos, Retención de consignas, Recompilación, CFC, HMI

20 respuestas