Blocco della pagina grafica SCADA: analisi delle cause principali e ottimizzazione per Foxboro I/A Series e Woodward EasyGen

Il Problema: La Workstation Si Blocca Solo All’Apertura di Schermi Specifici
Gli operatori segnalano che alcuni schermi SCADA impiegano 15–30 secondi per aprirsi. Il cursore del mouse rallenta durante il caricamento. Altri schermi si aprono in 2–3 secondi. Lo stato della comunicazione PLC rimane stabile. Non compaiono errori di rete nelle diagnostiche.
Questo schema isola il problema nel livello grafico, non in quello di comunicazione. Lo schermo che si blocca contiene oggetti più complessi rispetto a quelli che si caricano rapidamente. Su Foxboro I/A Series, il Display Manager gestisce l’inizializzazione degli oggetti. Su Woodward EasyGen, il runtime GraphWorX rende la grafica basata su SVG. Entrambe le piattaforme faticano quando un singolo schermo supera la loro capacità progettuale.
Causa 1: Eccessivo Numero di Oggetti Animati in Tempo Reale
I simboli di rotazione delle pompe, il movimento dei nastri trasportatori, le animazioni di rotazione degli agitatori e gli indicatori di stato colore richiedono tutti cicli di aggiornamento continui. Ogni oggetto animato consuma un thread CPU per il calcolo del ridisegno. Quando uno schermo contiene più di 40 oggetti animati attivi, il motore di rendering si satura.
Su Foxboro I/A Series V7.0, il Display Manager assegna un thread di rendering ogni 10 oggetti animati. Con 50 animazioni, il sistema esegue 5 thread di rendering concorrenti più il thread principale dello schermo. L’uso della CPU raggiunge picchi dell’85–100% su un singolo core.
Su Woodward EasyGen con GraphWorX64, ogni animazione di rotazione attiva un ricalcolo della trasformazione matriciale ogni 100 ms. Una pagina panoramica del generatore con 30 simboli rotanti genera 300 operazioni di trasformazione al secondo. La soglia di accelerazione GPU è di 25 trasformazioni simultanee senza hardware grafico dedicato.
Mitigazione: Sostituire le animazioni di rotazione con indicatori di stato colore statici. Usare un tasso di lampeggio 1 (0,5 s acceso/spento) invece della rotazione fluida per lo stato di funzionamento. Questo riduce il carico CPU del 60–70% per ogni oggetto.
Causa 2: Raffica di Sottoscrizioni Tag Durante l’Inizializzazione della Pagina
Ogni elemento grafico è collegato a uno o più tag PLC. Quando un operatore apre uno schermo, il client SCADA invia richieste di sottoscrizione per tutti i tag collegati simultaneamente. Uno schermo con 800 riferimenti tag genera 800 messaggi di sottoscrizione individuali entro 200 ms.
In Foxboro I/A Series, l’AW (Application Workstation) inoltra le sottoscrizioni al CP (Control Processor) tramite il Nodebus. Ogni sottoscrizione richiede una transazione Nodebus. Il Nodebus supporta un massimo di 500 transazioni al secondo per nodo. Uno schermo con 800 tag supera questo limite durante il caricamento iniziale.
Il risultato: i primi 500 tag si aggiornano immediatamente. I restanti 300 tag si mettono in coda e arrivano 1–3 secondi dopo. Gli operatori vedono aggiornamenti parziali dello schermo con alcuni valori obsoleti.
Su Woodward EasyGen, il client OPC UA sottoscrive i tag in batch da 100. Uno schermo con 800 tag richiede 8 cicli batch. A 250 ms per ciclo batch, l’inizializzazione completa richiede almeno 2 secondi prima che inizi il rendering.
- Passo 1: Contare il totale dei riferimenti tag sullo schermo problematico. In Foxboro Display Editor, usare Strumenti > Rapporto Conteggio Tag. In GraphWorX64, usare Modifica > Trova > Tutte le Variabili Collegate.
- Passo 2: Se il conteggio supera 600, dividere lo schermo in due sotto-schermi collegati da pulsanti di navigazione. Puntare a un massimo di 400 tag per schermo.
- Passo 3: Per Foxboro I/A Series, aumentare il buffer delle transazioni Nodebus da 256 predefinito a 512 nelle Proprietà di Sistema CP > scheda Rete.
- Passo 4: Per Woodward EasyGen, configurare la modalità di sottoscrizione OPC UA su aggiunta di elemento monitorato invece di creazione sottoscrizione nel file di configurazione GraphWorX. Questo riutilizza le sessioni esistenti.
Causa 3: Grafici di Trend Incorporati che Interrogano Dati Storici
Molti schermi incorporano finestre di trend in tempo reale che mostrano gli ultimi 60 minuti di dati di processo. All’apertura dello schermo, ogni grafico di trend interroga il database storico per il popolamento iniziale dei dati. Tre grafici di trend su uno schermo generano tre interrogazioni storiche simultanee.
In Foxboro I/A Series, lo Storico (basato su Informix o SQL) serve le richieste di trend tramite l’API AIM Historian. Un trend di 60 minuti con intervallo di campionamento di 5 secondi restituisce 720 punti dati per penna. Un grafico a 4 penne recupera 2.880 punti. Tre grafici recuperano in totale 8.640 punti. Il tempo di esecuzione della query varia da 3 a 8 secondi a seconda dello stato degli indici del database.
Durante l’esecuzione della query, il thread dello schermo si blocca in attesa dei dati. L’operatore vede lo schermo congelato finché tutti i dati di trend non arrivano.
- Passo 1: Identificare gli oggetti trend incorporati nello schermo a caricamento lento. Annotare l’intervallo temporale e l’intervallo di campionamento di ciascuno.
- Passo 2: Ridurre l’intervallo temporale iniziale da 60 minuti a 15 minuti. Questo riduce i punti dati per penna da 720 a 180, diminuendo il tempo di query del 75%.
- Passo 3: Abilitare il caricamento ritardato (lazy loading) per i dati di trend. Configurare i trend per popolare i dati 2 secondi dopo l’apertura dello schermo, non durante l’inizializzazione. In Foxboro, impostare la proprietà Trend Object InitialLoadDelay = 2000ms.
- Passo 4: Limitare le penne per grafico a un massimo di 4. Usare grafici separati se servono più variabili da monitorare.
Causa 4: Immagini di Sfondo ad Alta Risoluzione che Consumano Memoria
La grafica di processo spesso utilizza diagrammi P&ID scansionati come sfondi. Una scansione tipica P&ID a 300 DPI per un’area di processo ampia produce file immagine da 8 a 15 MB in formato PNG. Quando caricati nello schermo SCADA, la bitmap non compressa occupa 50–80 MB di RAM.
Il Display Manager di Foxboro I/A Series memorizza nella cache le immagini di sfondo in memoria condivisa. La dimensione cache predefinita è 128 MB. Due schermi con sfondi da 12 MB ciascuno consumano 24 MB in cache più 48 MB in copia di lavoro = 72 MB totali. L’apertura di un terzo schermo forza l’espulsione e il ricaricamento della cache, causando una pausa visibile.
Woodward EasyGen GraphWorX64 memorizza gli sfondi come stringhe codificate base64 nel file GDFX dello schermo. Uno sfondo da 10 MB aumenta la dimensione del file GDFX di 13 MB (overhead base64). L’analisi di questa stringa aggiunge 1,5–2 secondi al tempo di caricamento dello schermo.
- Passo 1: Controllare le dimensioni dei file immagine di sfondo nella directory del progetto SCADA. Segnalare qualsiasi immagine superiore a 2 MB.
- Passo 2: Riesportare gli sfondi a 96 DPI con compressione JPEG (qualità 85%). Questo riduce un PNG da 10 MB a un JPEG da 400–600 KB con minima perdita di qualità visiva.
- Passo 3: In Foxboro I/A Series, aumentare la dimensione della cache del Display Manager a 256 MB tramite la variabile ambiente AW DISPLAY_CACHE_SIZE=262144.
- Passo 4: Per Woodward EasyGen, convertire le immagini di sfondo in modalità riferimento esterno invece di incorporarle. Usare ImageSource=File path invece di ImageSource=Embedded.
Conclusione e Consigli Operativi
Il blocco delle pagine grafiche SCADA deriva da quattro richieste di risorse sovrapposte. Primo, un eccesso di oggetti animati sovraccarica il thread di rendering CPU. Secondo, le raffiche di sottoscrizione tag superano la capacità di transazione del bus di comunicazione. Terzo, i grafici di trend incorporati bloccano il thread dello schermo durante le interrogazioni di dati storici. Quarto, gli sfondi ad alta risoluzione esauriscono la cache di memoria.
Per i sistemi Foxboro I/A Series, dare priorità all’aumento del buffer delle transazioni Nodebus a 512, impostare il ritardo di caricamento lazy dei trend a 2 secondi, espandere la cache dello schermo a 256 MB e limitare gli schermi a un massimo di 600 tag. Per i sistemi Woodward EasyGen, sostituire le animazioni di rotazione con indicatori di stato colore, usare la modalità di riutilizzo degli elementi monitorati OPC UA e convertire gli sfondi incorporati in riferimenti a file esterni.
Verificare tutti gli schermi con tempi di caricamento superiori a 8 secondi. Documentare le metriche prima e dopo nel vostro CMMS. Puntare a un tempo massimo di caricamento di 5 secondi per ogni schermo su hardware workstation standard (Intel i5, 8 GB RAM, grafica integrata).
