Congelamento da Página de Gráficos SCADA: Análise da Causa Raiz e Otimização para Foxboro I/A Series e Woodward EasyGen

O Problema: Estações de Trabalho Congelam Apenas ao Abrir Telas Específicas
Os operadores relatam que certas telas SCADA levam de 15 a 30 segundos para abrir. O cursor do mouse apresenta atraso durante o carregamento. Outras telas abrem em 2 a 3 segundos. O status da comunicação com o PLC permanece saudável. Nenhum erro de rede aparece nos diagnósticos.
Esse padrão isola o problema na camada gráfica, não na camada de comunicação. A tela que congela contém objetos mais complexos do que as que carregam rapidamente. Na Foxboro I/A Series, o Display Manager gerencia a inicialização dos objetos. No Woodward EasyGen, o runtime GraphWorX renderiza gráficos baseados em SVG. Ambas as plataformas enfrentam dificuldades quando uma única tela ultrapassa sua capacidade de design.
Causa 1: Objetos de Animação em Tempo Real Excessivos
Símbolos de rotação de bombas, movimento de correias transportadoras, animações de giro de agitadores e indicadores de estado por cor exigem ciclos contínuos de atualização. Cada objeto animado consome um thread da CPU para cálculo de redesenho. Quando uma tela contém mais de 40 objetos de animação ativos, o motor de renderização fica saturado.
Na Foxboro I/A Series V7.0, o Display Manager aloca um thread de renderização para cada 10 objetos de animação. Com 50 animações, o sistema executa 5 threads de renderização simultâneos mais o thread principal da tela. O uso da CPU dispara para 85–100% em um único núcleo.
No Woodward EasyGen usando GraphWorX64, cada animação de rotação aciona um recálculo da transformação matricial a cada 100 ms. Uma página de visão geral do gerador com 30 símbolos giratórios gera 300 operações de transformação por segundo. O limite de aceleração da GPU é de 25 transformações simultâneas sem hardware gráfico dedicado.
Mitigação: Substitua animações de rotação por indicadores estáticos de estado por cor. Use taxa de piscar 1 (0,5 s ligado/desligado) em vez de rotação suave para status em funcionamento. Isso reduz a carga da CPU em 60–70% por objeto.
Causa 2: Explosão de Assinaturas de Tags Durante a Inicialização da Página
Cada elemento gráfico está vinculado a uma ou mais tags do PLC. Quando um operador abre uma tela, o cliente SCADA envia solicitações de assinatura para todas as tags vinculadas simultaneamente. Uma tela com 800 referências de tags dispara 800 mensagens individuais de assinatura em 200 ms.
Na Foxboro I/A Series, a AW (Application Workstation) encaminha as assinaturas para o CP (Control Processor) via Nodebus. Cada assinatura requer uma transação no Nodebus. O Nodebus suporta no máximo 500 transações por segundo por nó. Uma tela com 800 tags ultrapassa esse limite durante o carregamento inicial.
O resultado: as primeiras 500 tags atualizam imediatamente. As 300 tags restantes ficam em fila e chegam 1 a 3 segundos depois. Os operadores veem atualizações parciais na tela, onde alguns valores parecem desatualizados.
No Woodward EasyGen, o cliente OPC UA assina tags em lotes de 100. Uma tela com 800 tags requer 8 ciclos de lote. Com 250 ms por ciclo, a inicialização completa leva no mínimo 2 segundos antes de qualquer renderização começar.
- Passo 1: Conte o total de referências de tags na tela problemática. No Foxboro Display Editor, use Ferramentas > Relatório de Contagem de Tags. No GraphWorX64, use Editar > Localizar > Todas as Variáveis Vinculadas.
- Passo 2: Se a contagem ultrapassar 600, divida a tela em duas sub-telas ligadas por botões de navegação. O alvo é no máximo 400 tags por tela.
- Passo 3: Para Foxboro I/A Series, aumente o buffer de transações do Nodebus do padrão 256 para 512 nas Propriedades do Sistema do CP > aba Rede.
- Passo 4: Para Woodward EasyGen, configure o modo de assinatura OPC UA para adicionar item monitorado em vez de criar assinatura no arquivo de configuração do GraphWorX. Isso reutiliza sessões existentes.
Causa 3: Gráficos de Tendência Incorporados Consultando Dados Históricos
Muitas telas incorporam janelas de tendência em tempo real mostrando os últimos 60 minutos de dados do processo. Quando a tela abre, cada gráfico de tendência consulta o banco de dados do historiador para a população inicial dos dados. Três gráficos de tendência em uma tela geram três consultas históricas simultâneas.
Na Foxboro I/A Series, o Historiador (baseado em Informix ou SQL) atende às solicitações de tendência via API AIM Historian. Uma tendência de 60 minutos com intervalo de amostragem de 5 segundos retorna 720 pontos de dados por caneta. Um gráfico de tendência com 4 canetas recupera 2.880 pontos. Três gráficos recuperam 8.640 pontos no total. O tempo de execução da consulta varia de 3 a 8 segundos dependendo do status do índice do banco de dados.
Durante a execução da consulta, o thread da tela fica bloqueado aguardando os dados. O operador vê a tela congelada até que todos os dados da tendência cheguem.
- Passo 1: Identifique os objetos de tendência incorporados na tela que carrega lentamente. Anote o intervalo de tempo e o intervalo de amostragem de cada um.
- Passo 2: Reduza o intervalo inicial de 60 minutos para 15 minutos. Isso reduz os pontos de dados por caneta de 720 para 180, diminuindo o tempo da consulta em 75%.
- Passo 3: Habilite o carregamento preguiçoso para os dados de tendência. Configure as tendências para popular os dados 2 segundos após a abertura da tela, não durante a inicialização. No Foxboro, defina a propriedade do Objeto de Tendência InitialLoadDelay = 2000ms.
- Passo 4: Limite o número de canetas por gráfico a no máximo 4. Use gráficos separados se mais variáveis precisarem ser monitoradas.
Causa 4: Imagens de Fundo em Alta Resolução Consumindo Memória
Gráficos de processo frequentemente usam diagramas P&ID escaneados como fundos. Um escaneamento típico de P&ID a 300 DPI para uma grande área de processo produz arquivos de imagem de 8 a 15 MB em formato PNG. Quando carregados na tela SCADA, o bitmap descompactado ocupa 50 a 80 MB de RAM.
O Display Manager da Foxboro I/A Series armazena em cache as imagens de fundo na memória compartilhada. O tamanho padrão do cache é 128 MB. Duas telas com fundos de 12 MB cada consomem 24 MB em cache mais 48 MB em cópia de trabalho = 72 MB no total. Abrir uma terceira tela força a expulsão do cache e recarregamento, causando uma pausa visível.
O GraphWorX64 do Woodward EasyGen armazena fundos como strings codificadas em base64 no arquivo GDFX da tela. Um fundo de 10 MB aumenta o tamanho do arquivo GDFX em 13 MB (sobrecarga do base64). Analisar essa string adiciona 1,5 a 2 segundos ao tempo de carregamento da tela.
- Passo 1: Verifique os tamanhos dos arquivos de imagem de fundo no diretório do projeto SCADA. Marque qualquer imagem que ultrapasse 2 MB.
- Passo 2: Reexporte os fundos a 96 DPI com compressão JPEG (configuração de qualidade 85%). Isso reduz um PNG de 10 MB para JPEG de 400 a 600 KB com perda mínima de qualidade visual.
- Passo 3: Na Foxboro I/A Series, aumente o tamanho do cache do Display Manager para 256 MB via variável de ambiente AW DISPLAY_CACHE_SIZE=262144.
- Passo 4: Para Woodward EasyGen, converta as imagens de fundo para modo de referência externa em vez de incorporadas. Use ImageSource=File path em vez de ImageSource=Embedded.
Conclusão e Recomendações de Ação
O congelamento das páginas gráficas SCADA decorre de quatro demandas de recursos sobrepostas. Primeiro, objetos de animação excessivos sobrecarregam o thread de renderização da CPU. Segundo, explosões de assinaturas de tags excedem a capacidade de transação do barramento de comunicação. Terceiro, gráficos de tendência incorporados bloqueiam o thread da tela enquanto consultam dados históricos. Quarto, fundos em alta resolução esgotam o cache de memória.
Para sistemas Foxboro I/A Series, priorize aumentar o buffer de transações do Nodebus para 512, defina o atraso de carregamento preguiçoso das tendências para 2 segundos, expanda o cache de exibição para 256 MB e limite as telas a no máximo 600 tags. Para sistemas Woodward EasyGen, substitua animações de rotação por indicadores de estado por cor, use o modo de reutilização de itens monitorados OPC UA e converta fundos incorporados para referências externas de arquivo.
Audite todas as telas que demoram mais de 8 segundos para carregar. Documente as métricas antes e depois no seu CMMS. Almeje um tempo máximo de carregamento de 5 segundos para qualquer tela em hardware padrão de estação de trabalho (Intel i5, 8 GB RAM, gráficos integrados).
