Fundamentos de programación en PCS 7: Almacenamiento de variables de memoria, temporizadores SFC y enlace dinámico de objetos de WinCC

En SIMATIC PCS 7, la programación de automatización sigue estrictos paradigmas arquitectónicos que difieren de la lógica de contactos (ladder) clásica de los PLC. Las variables de cálculo intermedias (como contadores de bucles o indicadores de cálculo) deben almacenarse dentro de las variables de instancia estáticas de los bloques de función (FB) o en bloques internos dedicados de los diagramas CFC, evitando por completo la memoria de bits global (marcas o Merker). Para las secuencias de temporización dentro de los gráficos secuenciales (SFC), el uso del tiempo mínimo de paso integrado en el paso (TImin) es la práctica estándar para los retardos de permanencia en el paso, mientras que los temporizadores independientes de larga duración requieren bloques de temporizador de biblioteca dedicados (TimerP). Para vincular las variables del PLC a los gráficos de WinCC sin correr el riesgo de enlaces rotos cuando las direcciones de los bloques de datos (DB) cambian durante la recompilación, los ingenieros deben confiar en la interconexión simbólica a través del atributo S7_m_c en lugar del direccionamiento absoluto de DB.

Índice de contenidos

Cambio de paradigma: Arquitectura DCS frente a la programación clásica de STEP 7

Los ingenieros que hacen la transición desde el STEP 7 clásico (S7-300/400) o TIA Portal a SIMATIC PCS 7 deben adaptarse a la ingeniería automatizada basada en bases de datos:
- Sin gestión manual de DB/direcciones: En PCS 7, el ingeniero no asigna números de bloques de datos absolutos (por ejemplo, DB100.DBX0.0) ni memoria de bits global (M0.0).
- Encapsulamiento orientado a objetos: Todas las funciones tecnológicas están encapsuladas dentro de bloques de función (FB). El compilador de CFC gestiona la asignación de memoria, asignando y reorganizando automáticamente los DB de instancia.
- Integración unificada AS-OS: El intercambio de datos entre el controlador y la estación de operador se gestiona mediante la propagación de atributos simbólicos en lugar de la creación manual de variables HMI.

Almacenamiento de variables de memoria: Variables de instancia frente a memoria de bits global (Merker)

En la programación clásica de PLC, los cálculos temporales suelen utilizar la tabla de símbolos y las marcas de memoria global (MW, MD):
* Por qué las marcas globales están prohibidas en PCS 7: La memoria de bits global (marcas M) carece de encapsulamiento de instancia, es susceptible a sobrescrituras involuntarias entre diagramas y no admite la compilación automática para WinCC OS.
* La práctica aprobada en PCS 7:
1. Bloques de función personalizados en SCL/STL: Al escribir lógica algorítmica personalizada (como una fórmula iterativa de posición de válvula), declare las variables intermedias en la sección VAR (Static) del bloque de función. El valor persiste de forma segura en el DB de instancia del bloque.
2. Bloques de cálculo estándar en CFC: Si desarrolla la lógica gráficamente en CFC, utilice bloques matemáticos y de almacenamiento estándar de la biblioteca básica de PCS 7 (por ejemplo, Add04, Mul04, Count o FlipFlop).

Temporización de secuencias SFC: Tiempo mínimo de paso frente a bloques de temporizador dedicados

Al implementar tiempos de permanencia o retrasos de fase en gráficos secuenciales (SFC):

Método de temporizaciónMecanismo de implementaciónCaso de uso recomendadoTiempo mínimo de paso (TImin)Se configura directamente en el cuadro de diálogo de propiedades del paso en Límites de tiempo -> Tiempo mínimo. El secuenciador SFC permanece en el paso activo hasta que TI >= TImin antes de evaluar las condiciones de transición.Práctica estándar: Ideal для transiciones de fase, tiempos de asentamiento (por ejemplo, esperar 10 segundos para el recorrido de la válvula) o ciclos de purga. Elimina bloques de temporizador externos innecesarios.Bloque de biblioteca dedicado (TimerP)Se instancia como un bloque en un diagrama CFC asociado. El paso SFC ordena al temporizador (Start = 1), y la transición supervisa la marca de salida del temporizador (TimeOut = 1).Uso especializado: Se requiere cuando la temporización debe abarcar múltiples pasos no consecutivos, cuando el temporizador debe pausarse o reanudarse, o cuando el tiempo transcurrido requiere tendencias en la cara de operación (faceplate) del operador.

El uso de TImin es la metodología universalmente recomendada, limpia y estándar para los retardos de permanencia simples dentro de un paso.

Conexión de variables de PLC a WinCC: Prevención de fallos por desplazamiento de direcciones DB

Un error común de los principiantes es utilizar direcciones DB absolutas (por ejemplo, DB501.DBD12) en WinCC Graphics Designer:
- El peligro del desplazamiento de direcciones: Siempre que añada un nuevo bloque, reordene diagramas o ejecute Compilar -> Diagramas como programa, el compilador de CFC optimiza dinámicamente la memoria, desplazando los números de los DB de instancia de los bloques y las posiciones de bytes internas. Los enlaces absolutos de WinCC leerán repentinamente los datos incorrectos o provocarán fallos en los scripts en tiempo de ejecución.
- El método correcto (Compilación simbólica AS-OS):
1. En el parámetro del bloque en CFC (o en el código fuente SCL), asegúrese de que el atributo del sistema S7_m_c := 'true' esté habilitado.
2. En la vista de planta (Plant View), estructure sus diagramas bajo la jerarquía de plantas.
3. Haga clic derecho en el proyecto OS en SIMATIC Manager y seleccione Compilar OS.
4. El compilador crea automáticamente una variable de WinCC con nombre formateado como:
JerarquíaPlanta/NombreDiagrama/NombreBloque.Parámetro
5. En WinCC Graphics Designer, abra el cuadro de diálogo dinámico o la conexión de variables para su objeto (por ejemplo, el color de estado del motor) y explore el árbol de gestión de variables de WinCC (Tag Management). Seleccione la variable de proceso simbólica.
6. Resultado: Incluso si el compilador reasigna los números de DB, la conexión de la variable simbólica se mantiene sin problemas.

Verificación

Para verificar que su arquitectura cumple con los estándares de PCS 7:
- En SIMATIC Manager, compruebe los Datos de referencias cruzadas (Opciones -> Datos de referencia -> Mostrar -> Marca): verifique que la utilización de la memoria de bits (M0.0–M255.7) sea del 0% o esté restringida exclusivamente a la memoria de reloj de hardware heredada.
- En el modo de prueba en línea (Test Mode) de CFC, supervise su secuencia SFC: verifique que los pasos se mantengan durante su tiempo mínimo configurado exacto (TImin) antes de realizar la transición.
- Ejecute una compilación completa de CFC con compresión de memoria: verifique en WinCC Runtime que las pantallas gráficas y los cambios de color sigan reflejando los estados del motor sin indicadores de variables rotas.

Limitaciones y precauciones operativas

  • Byte de memoria de reloj: El único uso aceptable de la memoria de bits en una CPU de PCS 7 es el byte de reloj de hardware (por ejemplo, MB0) configurado en HW Config para frecuencias de parpadeo (1 Hz, 2 Hz).
  • Peligros de escritura directa en DB: Nunca escriba lógica que acceda directamente o sobrescriba bloques de datos de instancia (DI) pertenecientes a bloques estándar APL. Interconecte siempre a través de los pines expuestos de los bloques CFC.
  • Tiempo máximo de paso SFC (TImax): Mientras que TImin retiene un paso, la configuración de TImax habilita la supervisión de la ejecución del paso, activando una alarma de secuencia si una condición de transición esperada no se materializa dentro de la ventana de tiempo límite.

Preguntas frecuentes para ingenieros

¿Puedo pasar el tiempo de un paso de SFC a una cara de operador (faceplate) de WinCC?

Sí. El sistema en tiempo de ejecución de SFC proporciona variables internas estándar (StepName.TI) que se pueden vincular a WinCC para mostrar temporizadores de fase transcurridos en las pantallas de los operadores.

¿Por qué cambian los números de los DB de instancia cuando recompilo CFC?

El compilador de CFC optimiza la desfragmentación de la memoria. Si se eliminan o insertan bloques, el compilador vuelve a numerar los bloques de datos a menos que las instancias de bloques individuales se fijen específicamente con números fijos en sus propiedades de objeto.

¿Qué tipo de datos debo usar para los contadores de bucles en SCL?

Utilice DINT (entero con signo de 32 bits) o INT (entero de 16 bits). En PCS 7, generalmente se prefiere DINT para evitar errores de desbordamiento de enteros en bucles de alta iteración.

¿Cómo puedo colorear un objeto en WinCC basándome en un entero de varios estados?

Utilice el Cuadro de diálogo dinámico (Dynamic Dialog) en Graphics Designer. Configure el tipo de evaluación como Analógico o Bit, vincule su variable de salida de bloque simbólico y defina colores distintos para cada estado numérico (por ejemplo, 0 = Gris, 1 = Verde, 2 = Rojo, 3 = Amarillo parpadeante).

Referencias técnicas

  • Siemens Industry Online Support: SIMATIC PCS 7 CFC para manual de S7 (A5E00278782).
  • Siemens Industry Online Support: SIMATIC PCS 7 SFC para manual de S7.
  • Entrada SIOS 109742323: Guía de configuración PCS 7 Compendio Parte A (Sección: Ingeniería AS-OS).
  • Entrada SIOS 109809264: Manual de la biblioteca de procesos avanzados SIMATIC Process Control System PCS 7 Advanced Process Library.

Artículos relacionados

Etiquetas relacionadas

  • CFC
  • SFC
  • WinCC
  • S7_m_c
  • Mejores prácticas
  • Arquitectura
  • Automatización industrial
20 respuestas