Cálculo de medias móviles continuas de una hora para señales analógicas de muestreo rápido en PCS 7

En SIMATIC PCS 7, calcular un promedio móvil continuo de 60 minutos para una señal analógica muestreada cada 100 ms requiere procesar 36.000 puntos de datos (144 KB), lo que excede la capacidad de memoria del bloque estándar APL MeanTime (FB1832). Los ingenieros de procesos implementan este cálculo de manera eficiente en CFC, diseñando en SCL un búfer circular de varios niveles en cascada, aplicando un filtro de suavizado exponencial (Smooth block) o delegando la agregación estadística en archivos comprimidos de WinCC Tag Logging.

Índice de contenidos

Restricciones de memoria y ejecución de medias móviles de alta frecuencia

Los promedios móviles continuos son fundamentales para el seguimiento de las emisiones, los cálculos del equilibrio térmico y la integración del flujo de masa acumulativo. Sin embargo, calcular una media móvil durante un largo horizonte temporal con una alta frecuencia de muestreo en un controlador S7-400 o CPU 410-5H introduce importantes compensaciones en materia de memoria:
* El muestreo a 100 ms (frecuencia de ejecución OB35) durante 1 hora genera 36.000 muestras de punto flotante distintas (3.600 segundos/0,1 s = 36.000).
* En formato de precisión simple IEEE 754 (REAL), cada muestra ocupa 4 bytes. El almacenamiento de 36.000 muestras sin procesar requiere 144.000 bytes (140,6 KB) de memoria de bloques de datos contiguos.
* En las CPU clásicas del S7-400 el tamaño máximo del bloque de datos está limitado a 64 KB (65.536 bytes). Una sola base de datos no puede contener físicamente 144 KB, lo que requiere una indexación compleja de múltiples bases de datos o arquitecturas matemáticas eficientes en memoria.

Análisis de las limitaciones del bloque estándar APL MeanTime (FB1832)

La biblioteca de procesos avanzados (APL) de SIMATIC PCS 7 proporciona el bloque MeanTime (FB1832) para medias móviles ponderadas en el tiempo:
* De forma predeterminada, MeanTime almacena hasta 32 valores históricos dentro de su bloque de datos de instancia interna.
* Al interconectar el pin Meminput a un bloque auxiliar MemR256, la capacidad del buffer se expande a 256 muestras.
* Si la relación TimeWindow / SampleTime configurada excede el espacio de búfer disponible (por ejemplo, 3600 s/0,1 s = 36 000 > 256), el bloque genera un mensaje de advertencia interno y trunca las muestras más antiguas, lo que las hace inadecuadas para promedios móviles directos de una hora de 100 ms.

Solución arquitectónica 1: almacenamiento intermedio en anillo de varios niveles en cascada en SCL

El método de ingeniería estándar para lograr verdaderos promedios matemáticos continuos sin agotar la memoria del controlador es un búfer en anillo de dos niveles en cascada:
1. Nivel 1 (acumulador de subsegundo): En OB35 (100 ms), acumule 10 muestras en una suma acumulada de 1 segundo. Genere un valor promedio limpio de 1 segundo.
2. Nivel 2 (búfer en anillo de nivel de minutos): En OB32 (1,0 s), introduzca el promedio de 1 segundo en un búfer en anillo de 60 elementos para producir un promedio continuo de 1 minuto.
3. Nivel 3 (búfer móvil de una hora): En un gráfico cíclico que se ejecuta cada 60 segundos, escriba el promedio de 1 minuto en una matriz de 60 elementos (ARRAY[1..60] OF REAL).
4. Cálculo final: El promedio móvil de una hora es la media aritmética de los 60 valores de un minuto:
$$ text{Promedio}{ text{1hr}} =
rac{1}{60} \sum
_i$$}^{60} text{ValorMinuto
Esto reduce el consumo total de memoria de 144 KB a menos de 500 bytes manteniendo al mismo tiempo una equivalencia estadística del 99,9 %.

Solución arquitectónica 2: suavizado exponencial de primer orden (bloque liso)

Cuando una aproximación matemática del promedio móvil es aceptable para la amortiguación del proceso, el bloque APL Smooth (FB1890) proporciona filtrado de retardo de primer orden:
* La función de transferencia corresponde a un filtro de paso bajo: $Y(s) =
rac{1}{1 + stT} X(s)$.
* Establecer la constante de tiempo del filtro $T = 1800 text{ s}$ (30 minutos) o $3600 text{ s}$ (60 minutos) produce una tendencia suave y continua que rastrea el promedio móvil sin almacenar muestras históricas en la memoria.
* El consumo de memoria es cero en matrices de búfer; El tiempo de ejecución de la CPU es una única multiplicación de punto flotante por ciclo.

Solución arquitectónica 3: WinCC Tag Logging archivos comprimidos

Si el promedio móvil se necesita estrictamente para visualización de supervisión, informes o cumplimiento ambiental en lugar de enclavamientos activos del controlador de circuito cerrado:
1. Transmita la variable analógica sin formato al WinCC Tag Logging en su ciclo de adquisición normal.
2. En WinCC Tag Logging, configure un Archivo comprimido.
3. Seleccione la etiqueta del proceso de origen, establezca el tipo de cálculo en Promedio y configure el intervalo de tiempo de compresión en 1 hora.
4. La base de datos SQL de WinCC calcula y registra automáticamente el promedio exacto de 1 hora, descargando todo el almacenamiento y los cálculos de la CPU del controlador.

Verificación

  • En el modo de prueba dinámica CFC, inyecte un cambio de paso en la entrada analógica (por ejemplo, de 0,0 a 100,0).
  • Observe el búfer SCL en cascada: verifique que el promedio de 1 segundo se actualice inmediatamente, el búfer de 1 minuto se actualice una vez por minuto y que la salida continua de 1 hora aumente linealmente durante 60 minutos.
  • Después de 60 minutos de entrada constante de 100,0, confirme que el promedio móvil sea exactamente 100,0.
  • Verifique que el tiempo de ciclo de la CPU en la información del módulo SIMATIC Manager muestre un impacto insignificante (< 1 ms).

Limitaciones y precauciones operativas

  • En el inicio inicial del controlador, el búfer móvil requiere 60 minutos para llenarse por completo; inicialice las matrices de búfer con el valor de proceso actual en el reinicio en caliente (OB100) para evitar promedios bajos falsos durante el inicio.
  • Nunca asigne matrices grandes (elementos > 10,000) directamente en los datos locales del bloque de funciones (VAR_TEMP), ya que esto provoca inmediatamente un desbordamiento de la pila de datos local (ID de evento 16#4521).
  • Si se utilizan archivos comprimidos de WinCC, tenga en cuenta que los valores históricos se calculan en el servidor OS y no son accesibles para la lógica AS.

Preguntas frecuentes del ingeniero

  • ¿Cuál es la cantidad máxima de muestras admitidas por APL MeanTime con MemR256?
    La capacidad máxima es de 256 muestras. Cualquier ventana de tiempo mayor requiere una reducción de resolución o un almacenamiento en búfer de matriz personalizado.
  • ¿Por qué es imposible almacenar 36.000 valores REALES en un único DB S7-400?
    Los bloques de datos STEP 7 estándar en el S7-400 tienen un límite arquitectónico de 65.536 bytes (64 KB), mientras que 36.000 REAL requieren 144.000 bytes.
  • ¿Cómo maneja la CPU 410-5H grandes bloques de datos en comparación con el S7-400?
    La CPU 410-5H admite DB individuales más grandes hasta el límite de la memoria de usuario, pero el almacenamiento de matrices grandes en OB cíclicos rápidos sigue aumentando el consumo de memoria.
  • ¿Cómo inicializo el búfer circular durante un reinicio en caliente de la CPU?
    En el OB100, ejecute un bucle FOR que llene los 60 elementos de la matriz de minutos con la lectura en línea actual de la entrada analógica.
  • ¿Qué instrucción SCL desplaza elementos en un búfer circular?
    Un puntero de índice circular (ptr = (ptr MOD 60) + 1) consume mucho más CPU que desplazar físicamente 60 elementos de memoria cada minuto.
  • ¿Puede el bloque Suave reemplazar una verdadera media móvil aritmética?
    El bloque Smooth proporciona una ponderación exponencial donde los valores recientes tienen una mayor influencia, mientras que una media móvil aritmética pondera los 3600 segundos por igual.
  • ¿El método de promediado en cascada introduce un retraso de tiempo significativo?
    Los promedios en cascada de 1 segundo y 1 minuto introducen un retraso de media muestra insignificante (30 segundos en una ventana de 3600 segundos), que es estadísticamente insignificante.
  • ¿Puedo registrar la media móvil en Process Historian?
    Sí, exporte la variable media calculada desde CFC mediante compilación AS-OS y archívela en Tag Logging y Process Historian.
  • ¿Qué pasa con la media móvil si falla el sensor analógico (Mala calidad)?
    La lógica SCL debe verificar el estado de la señal (PV_In.ST <> 16#80); si es incorrecto, congele el búfer o sustitúyalo por el último valor bueno para evitar que se corrompa el promedio.
  • ¿Qué bloque de organización se recomienda para el cálculo del buffer de 1 minuto?
    Coloque el bloque de agregación de nivel de minutos en el OB32 (1,0 s) o llámelo condicionalmente mediante un temporizador de impulsos de 60 segundos en el OB35.

Referencias técnicas

  • Manual de funciones de la biblioteca de procesos avanzada (APL) de SIMATIC PCS 7 (V9.0 / V9.1)
  • Manual de referencia de datos de la CPU SIMATIC S7-400
  • Entrada de Siemens Industry Online Support: Cálculo de medias en S7 y PCS 7 (entrada con ID 298705)
  • Manual de archivado del proceso de registro de etiquetas SIMATIC WinCC V7.5

Artículos relacionados

Etiquetas relacionadas

PCS 7, APL, media móvil, MeanTime, suave, búfer circular, SCL, S7-400, optimización de memoria, registro de etiquetas

20 respuestas