Cuando SIMATIC PCS 7 no logra compilar los mensajes del AS de manera consistente en el WinCC Alarm Logging a través de múltiples controladores después de una migración del sistema, el fallo se debe a cachés de conexión del servidor de mensajes corruptos ('asasrv.ini') o a asignaciones de números de mensaje no únicos en STEP 7. Para resolver esto, asegúrese de que todos los proyectos de AS utilicen 'Asignar siempre números de mensaje únicos orientados a la CPU' bajo la asignación de números de mensaje en STEP 7, elimine las cachés de compilación obsoletas ('asasrv.ini' y tablas temporales de trabajo del proyecto SQL de WinCC), y ejecute una compilación completa de la OS con las opciones 'OS completa' y 'Con borrado de memoria' seleccionadas.
Índice de contenidos
- Resumen ejecutivo
- Mecánica arquitectónica y del sistema
- Procedimiento paso a paso de ingeniería e implementación
- Verificación
- Limitaciones y precauciones operativas
- Preguntas frecuentes para ingenieros
- Referencias técnicas
- Artículos relacionados
- Etiquetas relacionadas
Resumen ejecutivo
En sistemas SIMATIC PCS 7 con múltiples controladores migrados desde versiones anteriores (como PCS 7 V7.1 a V9.0 SP1), los ingenieros suelen encontrar un problema en el que el proceso de compilación de la OS omite intermitentemente los mensajes de alarma. Los iconos de bloque en las pantallas gráficas muestran los colores de alarma activos correctamente, pero las líneas de alarma correspondientes nunca aparecen en la lista de runtime de WinCC Alarm Logging. Además, el comportamiento de compilación cambia entre ejecuciones: una compilación procesa el AS1 mientras omite el AS2, y la compilación siguiente invierte el comportamiento. Este artículo diagnostica las causas raíz —incluyendo la fragmentación del índice del servidor de mensajes y las colisiones de mensajes orientadas al proyecto— y proporciona un procedimiento de resolución definitivo.
Mecánica arquitectónica y del sistema
Arquitectura de compilación de mensajes AS-OS en SIMATIC PCS 7:
- Asignación de números de mensaje en STEP 7:
- Números de mensaje orientados al proyecto (Versión heredada V7.x): Los números de mensaje eran únicos solo dentro de un proyecto de AS individual, colisionando frecuentemente cuando múltiples controladores compilaban hacia un único Servidor OS.
- Números de mensaje únicos orientados a la CPU (Versiones modernas V8/V9): Garantizan IDs de mensaje globalmente únicos por CPU en todo el multiproyecto.
- Servicio de compilación AS-OS (
asasrv.exe): - Actúa como el puente entre los atributos de los mensajes de los bloques CFC en STEP 7 y la base de datos WinCC CS SQL Server.
- Almacena en caché tablas de mapeo intermedias en
asasrv.iniy directorios temporales del proyecto. Si los esquemas de bases de datos migrados contienen GUIDs de conexión huérfanos, el servicio aborta los hilos de compilación de manera silenciosa para controladores específicos. - Integración de WinCC Alarm Logging:
- Los mensajes compilados desde bloques CFC (
Alarm_8P,MsgEvId) se escriben directamente en la base de datos de configuración de WinCC (*.mdf). Las tablas de índices corruptas provocan colisiones de escritura SQL durante el procesamiento paralelo de múltiples controladores.
Procedimiento paso a paso de ingeniería e implementación
Paso 1: Forzar números de mensaje únicos orientados a la CPU en todos los controladores
- En SIMATIC Manager, seleccione la raíz del Multiproyecto.
- Para cada proyecto de AS: Seleccione la raíz del proyecto -> 'Opciones' -> 'Asignar números de mensaje...'.
- Seleccione 'Asignar siempre números de mensaje únicos orientados a la CPU' y confirme la asignación.
- Recompile todos los diagramas CFC en todos los controladores (
CFC-> 'Compilar' -> 'Programa completo').
Paso 2: Purgar las cachés de compilación de la OS obsoletas
- Cierre WinCC Explorer en la Estación de ingeniería y en los Servidores OS remotos.
- Navegue a la carpeta del proyecto WinCC OS en el disco.
- Elimine el archivo de caché de compilación
asasrv.ini. - Elimine los archivos de registro temporales que terminan en
.dmpy.logen la raíz del proyecto.
Paso 3: Restablecer los índices de la base de datos de WinCC usando CCResetOS
- Abra el Símbolo del sistema como administrador.
- Navegue a
C:/Program Files (x86)/Siemens/WinCC/bin/. - Ejecute
CCResetOS.exepara desvincular los manejadores de bases de datos obsoletos y restablecer la agrupación de conexiones SQL (connection pooling).
Paso 4: Ejecutar una compilación completa y limpia de la OS
- En SIMATIC Manager, haga clic derecho en el objeto Servidor OS -> 'Compilar'.
- Seleccione TODAS las estaciones de automatización conectadas a este Servidor OS.
- En el cuadro de diálogo de alcance de compilación, seleccione 'OS completa' y marque 'Con borrado de memoria'.
- Proceda con la compilación; verifique que el registro de compilación informe 0 errores en todos los controladores.
Verificación
Para verificar la compilación completa de alarmas:
1. Abra WinCC Explorer en el proyecto OS -> 'Alarm Logging'.
2. Inspeccione la carpeta 'Mensajes AS'; verifique que las entradas de mensajes de todos los controladores estén presentes.
3. Inicie WinCC Graphics Runtime; active alarmas de prueba en cada controlador.
4. Verifique que las alarmas de cada controlador aparezcan inmediatamente en el banner de alarmas de WinCC Alarm Control con las marcas de tiempo y textos de mensaje correctos.
Limitaciones y precauciones operativas
Precauciones operativas:
- Ejecutar una compilación de OS 'Con borrado de memoria' requiere una descarga completa al Servidor OS; la descarga delta no es posible después de una compilación con borrado de memoria.
- Asegúrese de que ningún otro ingeniero tenga WinCC Explorer o diagramas CFC abiertos durante la compilación completa para evitar errores de bloqueo de archivos.
- Cambiar de números de mensaje orientados al proyecto a orientados a la CPU requiere recompilar y descargar todos los programas de AS.
Preguntas frecuentes para ingenieros
Q: ¿Por qué las alarmas se mostraban en los iconos de bloque pero no en Alarm Logging?
A: Los iconos de bloque de APL evalúan las palabras de estado dinámico directamente a través de etiquetas (tags) de WinCC, mientras que Alarm Logging depende de las entradas de la base de datos del servidor de mensajes compiladas.
Q: ¿Qué hace asasrv.ini?
A: Almacena el estado temporal del compilador y los mapeos de caché para el motor de compilación AS-OS.
Q: ¿Es obligatoria la numeración de mensajes única orientada a la CPU en PCS 7?
A: Sí, para una operación confiable con múltiples controladores en PCS 7 V8.x y V9.x, la numeración de mensajes única orientada a la CPU es estrictamente necesaria.
Q: ¿Eliminar asasrv.ini daña el proyecto?
A: No. El motor de compilación regenera un archivo asasrv.ini limpio automáticamente durante la siguiente compilación de la OS.
Q: ¿Por qué la compilación omitía diferentes PLCs en cada intento?
A: La contención de bloqueo de bases de datos en la base de datos SQL de WinCC provocaba que los hilos de compilación agotaran el tiempo de espera (timeout) de forma intermitente en controladores aleatorios.
Referencias técnicas
- SIMATIC Process Control System PCS 7 Operator Station Configuration
- SIMATIC Process Control System PCS 7 Engineering System Manual
- PCS 7 V9.0 SP3 Licenses and Configuration Limits
Artículos relacionados
- Resolving OS Compile Stalls After Plant Bus IP Address Changes and Purging asasrv.ini in PCS 7
- Resolving Empty WinCC Areas and Picture Hierarchy Warnings During PCS 7 OS Compilation
- Diagnosing PCS 7 System Alarms for Module Errors and Asynchronous PLC Faults on S7-400 Controllers
Etiquetas relacionadas
OS Compilation, Alarm Logging, AS Messages, asasrv.ini, Message Numbering