Замръзване на страницата с графики SCADA: Анализ на основните причини и оптимизация за Foxboro I/A Series и Woodward EasyGen

plcdcspro
2026-04-14T17:47:23+08:00

Тежките SCADA графични страници блокират работните станции по време на зареждане. Тази статия анализира четири основни причини за замръзвания, предизвикани от графики, на платформите Foxboro I/A Series и Woodward EasyGen, с числови прагове и стъпка по стъпка диагностични процедури.
| Повече ▼

Проблемът: Работната станция замръзва само при отваряне на конкретни дисплеи

Операторите съобщават, че определени SCADA дисплеи се отварят за 15–30 секунди. Курсорът на мишката забавя движението си по време на зареждане. Други дисплеи се отварят за 2–3 секунди. Статусът на комуникацията с PLC остава здрав. В диагностиката не се появяват мрежови грешки.

Този модел изолира проблема в графичния слой, а не в комуникационния слой. Замръзващият дисплей съдържа по-сложни обекти от бързо зареждащите се. При Foxboro I/A Series Display Manager управлява инициализацията на обектите. При Woodward EasyGen GraphWorX runtime рендерира графики на базата на SVG. И двете платформи изпитват затруднения, когато един дисплей надвиши капацитета, за който са проектирани.

Причина 1: Прекомерен брой анимационни обекти в реално време

Символите за въртене на помпи, движение на конвейерни ленти, анимации на въртене на разбърквачи и индикатори за цветово състояние изискват непрекъснати цикли на обновяване. Всеки анимиран обект заема един CPU нишка за изчисляване на презарисуването. Когато дисплеят съдържа повече от 40 активни анимационни обекта, рендеринг двигателят се наситва.

При Foxboro I/A Series V7.0 Display Manager разпределя по една нишка за рендериране на всеки 10 анимационни обекта. При 50 анимации системата работи с 5 паралелни нишки за рендериране плюс основната нишка на дисплея. Използването на CPU достига 85–100% на едно ядро.

При Woodward EasyGen с GraphWorX64 всяка анимация на въртене задейства преизчисляване на матрична трансформация на всеки 100 ms. Страница с преглед на генератор с 30 въртящи се символа генерира 300 трансформации в секунда. Прагът за GPU ускорение е 25 едновременни трансформации без специализиран графичен хардуер.

Мерки за смекчаване: Заменете анимациите на въртене със статични индикатори за цветово състояние. Използвайте мигане с честота 1 (0,5 с включено/изключено) вместо плавно въртене за индикация на работен статус. Това намалява натоварването на CPU с 60–70% на обект.

Причина 2: Взрив на абонаменти за тагове при инициализация на страницата

Всеки графичен елемент е свързан с един или повече PLC тагове. Когато оператор отвори дисплей, SCADA клиентът изпраща заявки за абонамент за всички свързани тагове едновременно. Дисплей с 800 таг референции задейства 800 отделни съобщения за абонамент в рамките на 200 ms.

При Foxboro I/A Series AW (Application Workstation) препраща абонаментите към CP (Control Processor) през Nodebus. Всеки абонамент изисква транзакция в Nodebus. Nodebus поддържа максимум 500 транзакции в секунда на възел. Дисплей с 800 тага надвишава този лимит при първоначално зареждане.

Резултатът: първите 500 тага се обновяват веднага. Останалите 300 се поставят в опашка и пристигат 1–3 секунди по-късно. Операторите виждат частични обновявания на дисплея, където някои стойности изглеждат остарели.

При Woodward EasyGen OPC UA клиентът се абонира за тагове на партиди от по 100. Дисплей с 800 тага изисква 8 цикъла на партиди. При 250 ms на цикъл пълната инициализация отнема минимум 2 секунди преди да започне рендерирането.

Стъпка 1: Пребройте общия брой таг референции на проблемния дисплей. В Foxboro Display Editor използвайте Инструменти > Доклад за брой тагове. В GraphWorX64 използвайте Редактиране > Търсене > Всички свързани променливи.

Стъпка 2: Ако броят надвишава 600, разделете дисплея на два поддисплея, свързани с навигационни бутони. Целете максимум 400 тага на дисплей.

Стъпка 3: За Foxboro I/A Series увеличете буфера за транзакции на Nodebus от стандартните 256 на 512 в CP System Properties > Network таб.

Стъпка 4: За Woodward EasyGen конфигурирайте режима на абонамент OPC UA да използва добавяне на наблюдаван елемент вместо създаване на нов абонамент в конфигурационния файл на GraphWorX. Това позволява повторна употреба на съществуващи сесии.

Причина 3: Вградени графики на трендове, заявяващи исторически данни

Много дисплеи вграждат прозорци с трендове в реално време, показващи последните 60 минути процесни данни. При отваряне на дисплея всеки тренд график заявява историческата база данни за първоначално попълване на данните. Три тренд графики на един дисплей генерират три едновременни исторически заявки.

При Foxboro I/A Series Historian (базиран на Informix или SQL) обслужва заявките чрез AIM Historian API. Тренд за 60 минути с интервал на проба 5 секунди връща 720 точки на писалка. Тренд график с 4 писалки извлича 2 880 точки. Три графики извличат общо 8 640 точки. Времето за изпълнение на заявката варира от 3 до 8 секунди в зависимост от състоянието на индексите в базата данни.

По време на изпълнението на заявката нишката на дисплея се блокира, чакайки данните. Операторът вижда замръзнал екран, докато всички данни за тренда не пристигнат.

Стъпка 1: Идентифицирайте вградените тренд обекти на бавно зареждащия се дисплей. Запишете времевия диапазон и интервала на проба за всеки.

Стъпка 2: Намалете първоначалния времеви диапазон от 60 минути на 15 минути. Това намалява точките на писалка от 720 на 180, съкращавайки времето за заявка с 75%.

Стъпка 3: Активирайте отложено зареждане на данните за тренда. Конфигурирайте трендовете да попълват данни 2 секунди след отваряне на дисплея, а не по време на инициализацията. В Foxboro задайте свойството на тренд обекта InitialLoadDelay = 2000 ms.

Стъпка 4: Ограничете броя на писалките на тренд график до максимум 4. Използвайте отделни графики, ако трябва да се следят повече променливи.

Причина 4: Фонови изображения с висока резолюция, консумиращи памет

Процесните графики често използват сканирани P&ID диаграми като фонове. Типично сканиране на P&ID с 300 DPI за голяма процесна зона произвежда файлове с изображения от 8–15 MB в PNG формат. При зареждане в SCADA дисплея, несжатият битмап заема 50–80 MB RAM.

Foxboro I/A Series Display Manager кешира фоновите изображения в споделена памет. Стандартният размер на кеша е 128 MB. Два дисплея с по 12 MB фонови изображения консумират 24 MB кеш плюс 48 MB работен екземпляр = общо 72 MB. Отварянето на трети дисплей принуждава изхвърляне и презареждане на кеша, което причинява видимо забавяне.

Woodward EasyGen GraphWorX64 съхранява фоновете като base64-кодирани низове в GDFX файла на дисплея. Фон с размер 10 MB увеличава размера на GDFX файла с 13 MB (overhead от base64). Парсването на този низ добавя 1,5–2 секунди към времето за зареждане на дисплея.

Стъпка 1: Проверете размерите на файловете с фонови изображения в директорията на SCADA проекта. Отбележете всяко изображение, което надвишава 2 MB.

Стъпка 2: Експортирайте фоновете отново при 96 DPI с JPEG компресия (качество 85%). Това намалява 10 MB PNG до 400–600 KB JPEG с минимална загуба на визуално качество.

Стъпка 3: При Foxboro I/A Series увеличете размера на кеша на Display Manager до 256 MB чрез AW променливата на средата DISPLAY_CACHE_SIZE=262144.

Стъпка 4: За Woodward EasyGen конвертирайте фоновите изображения в режим на външни препратки вместо вграждане. Използвайте ImageSource=File път вместо ImageSource=Embedded.

Заключение и препоръки за действие

Замръзването на SCADA графичните страници се дължи на четири припокриващи се изисквания към ресурсите. Първо, прекомерният брой анимационни обекти претоварва CPU нишката за рендериране. Второ, взривът на абонаменти за тагове надвишава капацитета на транзакциите в комуникационната шина. Трето, вградените тренд графики блокират нишката на дисплея при заявяване на исторически данни. Четвърто, фоновите изображения с висока резолюция изчерпват кеша на паметта.

За системи Foxboro I/A Series приоритизирайте увеличаването на буфера за транзакции на Nodebus до 512, задайте отложено зареждане на трендовете с 2 секунди, разширете кеша на дисплея до 256 MB и ограничете дисплеите до максимум 600 тага. За системи Woodward EasyGen заменете анимациите на въртене с индикатори за цветово състояние, използвайте режим на повторна употреба на наблюдавани елементи в OPC UA и конвертирайте вградените фонове във външни файлови препратки.

Проверявайте всички дисплеи, които се зареждат за повече от 8 секунди. Документирайте метриките преди и след в CMMS. Целете максимално време за зареждане от 5 секунди за всеки дисплей на стандартен работен хардуер (Intel i5, 8 GB RAM, интегрирана графика).