Configurar la memoria de bits y la asignación de la pila de datos local en los controladores SIMATIC PCS 7 S7-400

En los sistemas SIMATIC PCS 7 S7-400 y CPU 410, la asignación de memoria se estructura en memoria de carga, memoria de trabajo, memoria del sistema (memoria de bits M, temporizadores y contadores) y la pila de datos local (pila L). La configuración de la memoria de bits requiere comprender el empaquetado de bytes big-endian de Siemens, donde la palabra de memoria MW0 comprende el byte alto MB0 y el byte bajo MB1. El tamaño de la pila de datos local se configura por clase de prioridad en la configuración del hardware de la CPU para evitar errores de ejecución, mientras que el moderno control continuo de PCS 7 estandariza los bloques de datos de instancia en lugar de la memoria de bits global.

Índice de contenidos

Arquitectura de memoria de los controladores SIMATIC S7-400 y CPU 410

Las estaciones de automatización SIMATIC S7-400 dividen la memoria del controlador en distintas áreas físicas y lógicas:
* Memoria de carga: Almacena el programa de usuario compilado completo, incluidos símbolos, comentarios y configuración del sistema. Puede ser RAM interna o ampliable mediante tarjetas de memoria Flash/RAM.
* Memoria de trabajo: RAM de alta velocidad dividida en memoria de trabajo de código (instrucciones ejecutables) y memoria de trabajo de datos (bloques de datos y bases de datos de instancia).
* Memoria del sistema: Contiene entrada de imagen de proceso (PII), salida de imagen de proceso (PIQ), memoria de bits (área Merker M), temporizadores (T) y contadores (C).
* Datos locales (pila L): Memoria reutilizable dinámica asignada a variables temporales (TEMP) dentro de bloques de funciones (FB), funciones (FC) y bloques de organización (OB) durante la ejecución activa.

Estructura de la memoria de bits y endianidad en STEP 7

El área de memoria Merker (M) opera en una matriz direccionable por bytes orientada a bytes. Los controladores SIMATIC S7 utilizan la representación de datos big-endian de Motorola:
* Bit (BOOL): Dirigido como M <byte>.<bit>, por ejemplo, M1.0 es el bit 0 del byte de memoria 1.
* Byte (BYTE/CHAR): 8 bits contiguos (MB0 = M0.0 a M0.7).
* Palabra (WORD/INT): 16 bits contiguos que comprenden dos bytes. MW0 consta de MB0 (byte más significativo, que contiene desde M0.7 hasta M0.0) y MB1 (byte menos significativo, que contiene desde M1.7 hasta M1.0). En consecuencia, configurar MW0 = 1 establece el bit M1.0 en TRUE, no en M0.0.
* Palabra doble (DWORD/DINT/REAL): 32 bits contiguos que comprenden cuatro bytes. MD0 consta de MB0 (MSB), MB1, MB2 y MB3 (LSB).

Configuración de datos locales de clase de prioridad (pila L) en HW Config

Cada bloque de organización cíclico, de diagnóstico y de interrupción de tiempo (como OB1, OB32, OB35, OB82, OB86) se ejecuta dentro de una clase de prioridad específica que requiere espacio de datos local dedicado:
1. Abra SIMATIC Manager y haga doble clic en el objeto Hardware de la estación S7-400 de destino.
2. Haga doble clic en la CPU en el bastidor para abrir Propiedades - CPU.
3. Seleccione la pestaña Memoria (o Memoria de ciclo/reloj).
4. Localice la tabla de asignación de Datos locales. Cada clase de prioridad (de 1 a 29) tiene asignada una cuota de datos locales en bytes (el valor predeterminado es 256 o 512 bytes por clase de prioridad).
5. Si las subrutinas CFC profundamente anidadas o los bloques complejos de la biblioteca APL causan un desbordamiento de datos locales (provocando una PARADA de la CPU con ID de evento 16#4521), aumente la cuota de datos locales para la clase de prioridad afectada (p. ej., de 512 bytes a 1024 o 2048 bytes).
6. Verifique que la suma de los datos locales en todas las clases de prioridad no exceda la capacidad total de datos locales de la especificación del hardware de la CPU.
7. Guarde y compile HW Config, luego descargue los cambios de hardware al controlador durante una parada de mantenimiento programada.

Práctica de ingeniería de PCS 7: bloques de datos CFC frente a fusionadores globales

En la programación clásica de PLC STEP 7 se utiliza frecuentemente la memoria de bits global (M) para indicadores internos. En SIMATIC PCS 7 se desaconseja encarecidamente el uso de la memoria Merker global para la automatización de procesos estándar:
* Integridad de los DB de instancia: El gráfico de funciones continuas (CFC) asigna bloques de datos de instancia (DB) únicos para cada bloque colocado en una hoja. Esto garantiza una memoria de estado encapsulada sin riesgo de colisión de direcciones.
* Compilación AS-OS: Las entradas y salidas de bloque definidas en los DB de instancia con el atributo S7_m_c se compilan automáticamente en variables de WinCC OS. La memoria de bits global no genera automáticamente etiquetas estructuradas de APL OS.
* Redundancia y transferencia sin problemas: En pares AS redundantes (sistemas H), el contenido del bloque de datos de la instancia se sincroniza a través de enlaces de sincronización de fibra óptica durante cada ciclo de ejecución. La sincronización global de la memoria M requiere un manejo especializado.

Verificación

  • En SIMATIC Manager, abra Sistema de destino -> Diagnóstico/Configuración -> Información del módulo.
  • Seleccione la pestaña Memoria para observar el uso actual y máximo de la memoria de trabajo y los datos locales.
  • Seleccione la pestaña Datos de rendimiento para confirmar los datos locales máximos configurados por clase de prioridad.
  • En CFC, cambie al modo de prueba dinámica para verificar que las interconexiones de bloques se resuelvan en direcciones de bloques de datos válidas en lugar de registros de bits superpuestos.

Limitaciones y precauciones operativas

  • La modificación de los parámetros de la pila de datos locales de la CPU en HW Config requiere descargar los bloques de datos del sistema (SDB), lo que requiere poner la estación de automatización en modo STOP.
  • Exceder la capacidad máxima de datos locales de la CPU impide la compilación de la configuración del hardware.
  • La manipulación directa de la memoria de bits dentro de los diagramas CFC a través de conectores de direcciones sin formato (M0.0) puede provocar lagunas en las referencias cruzadas y sobrescrituras inesperadas de señales durante las compilaciones delta.

Preguntas frecuentes del ingeniero

  • ¿Qué sucede cuando un bloque de organización excede su pila de datos local asignada?
    La CPU llama al bloque de organización OB85 (error de prioridad). Si el OB85 no está programado o si el desbordamiento de la pila daña los punteros del sistema, el controlador pasa al modo STOP con el ID de evento 16#4521.
  • ¿Cómo puedo determinar los requisitos de datos locales exactos de un programa de cartas CFC?
    En SIMATIC Manager, seleccione Opciones -> Datos de referencia -> Filtro y elija Datos locales. La tabla de referencias cruzadas muestra el consumo de datos local exacto de cada árbol de llamadas OB.
  • ¿Puedo aumentar la memoria de bits de una CPU S7-400?
    No, el tamaño del área de memoria de bits (por ejemplo, 8 KB o 16 KB) lo fija la arquitectura del firmware del hardware de la CPU y no se puede ampliar mediante la configuración.
  • ¿Por qué configurar MW0 = 1 hace que M1.0 sea verdadero en lugar de M0.0?
    SIMATIC S7 utiliza el orden de bytes big-endian. En una palabra de 16 bits, el byte con la dirección más baja (MB0) es el byte más significativo y el byte con la dirección más alta (MB1) es el byte menos significativo.
  • ¿Comparte la CPU 410-5H la misma estructura de datos locales que las CPU clásicas del S7-400?
    Sí, la CPU 410-5H divide los datos locales entre clases de prioridad en HW Config, pero ofrece un tamaño de pila interno dinámico y buffers predeterminados significativamente más grandes (hasta 64 KB en total).
  • ¿En qué se diferencian los datos locales de las variables temporales (TEMP) en un bloque SCL?
    Las variables temporales declaradas en VAR_TEMP se almacenan físicamente en la pila de datos local y pierden sus valores inmediatamente cuando finaliza la ejecución del bloque.
  • ¿Puede WinCC leer directamente la memoria de bits del S7?
    Sí, WinCC puede direccionar variables de memoria mediante el protocolo S7 (M, MB, MW, MD), pero esto evita el flujo de trabajo estándar de compilación de variables APL de PCS 7.
  • ¿Cuál es la configuración de datos locales recomendada para OB35 en proyectos PCS 7 APL?
    Las configuraciones típicas de PCS 7 APL asignan entre 1024 y 4096 bytes de datos locales a la clase de prioridad 12 (OB35) para acomodar controladores de canal anidados y bucles de control.
  • ¿Guardar y reorganizar un proyecto STEP 7 cambia la asignación de datos locales?
    No, guardar y reorganizar el almacenamiento de la base de datos de compactos en la Estación de ingeniería (ES); no altera los parámetros de asignación de memoria del controlador en HW Config.
  • ¿Se borran las banderas de Merker durante un reinicio en caliente?
    Los bytes de Merker no retentivos se borran a 0 durante un reinicio en caliente (CRST), mientras que los bytes de Merker retentivos definidos en las propiedades de la CPU conservan sus estados.

Referencias técnicas

  • Manual de referencia de datos de la CPU SIMATIC S7-400 (A5E00850745)
  • Manual del sistema de ingeniería SIMATIC PCS 7 (V9.0 / V9.1)
  • SIMATIC STEP 7 V5.6 Programación con Manual STEP 7
  • Entrada de Siemens Industry Online Support: Requisitos de datos locales en S7-400 (entrada con ID 298370)

Artículos relacionados

Etiquetas relacionadas

PCS 7, S7-400, CPU 410, arquitectura de memoria, memoria de bits, pila de datos local, pila L, Big-Endian, configuración de hardware, CFC

20 respuestas