SCADA grafikus oldal lefagyása: Okok elemzése és optimalizálás Foxboro I/A sorozathoz és Woodward EasyGenhez

A probléma: A munkaállomás csak bizonyos kijelzők megnyitásakor fagy le
Az üzemeltetők arról számolnak be, hogy egyes SCADA kijelzők megnyitása 15–30 másodpercet vesz igénybe. A kurzor a betöltés alatt akadozik. Más kijelzők 2–3 másodpercen belül megnyílnak. A PLC kommunikációs állapota egészséges marad. A diagnosztikában nem jelennek meg hálózati hibák.
Ez a minta a problémát a grafikus rétegre szűkíti, nem a kommunikációs rétegre. A lefagyó kijelző összetettebb objektumokat tartalmaz, mint a gyorsan betöltődő. A Foxboro I/A Series esetén a Display Manager kezeli az objektumok inicializálását. A Woodward EasyGen platformon a GraphWorX futtatókörnyezet SVG-alapú grafikákat renderel. Mindkét platform nehézségekbe ütközik, ha egyetlen kijelző meghaladja a tervezési kapacitását.
Ok 1: Túl sok valós idejű animációs objektum
A szivattyú forgásjelzők, szállítószalag mozgás, keverő forgási animációk és színállapot-jelzők folyamatos frissítési ciklust igényelnek. Minden animált objektum egy CPU szálat foglal el az újrarajzolás számításához. Ha egy kijelzőn több mint 40 aktív animációs objektum van, a renderelő motor telítődik.
Foxboro I/A Series V7.0 esetén a Display Manager 10 animációs objektumonként egy render szálat oszt ki. 50 animáció esetén a rendszer 5 párhuzamos render szálat futtat a fő kijelző szál mellett. A CPU kihasználtság egyetlen magon 85–100%-ra ugrik.
Woodward EasyGen GraphWorX64 használatakor minden forgási animáció 100 ms-onként mátrixtranszformáció újraszámítást vált ki. Egy generátor áttekintő oldal 30 forgó szimbólummal másodpercenként 300 transzformációs műveletet generál. A GPU gyorsítási küszöb 25 egyidejű transzformáció dedikált grafikus hardver nélkül.
Enyhítés: Cserélje le a forgási animációkat statikus színállapot-jelzőkre. A futó állapot jelzésére használjon villogási sebesség 1-et (0,5 mp be/ki) a sima forgás helyett. Ez objektumonként 60–70%-kal csökkenti a CPU terhelést.
Ok 2: Címke-előfizetési roham az oldal inicializálásakor
Minden grafikus elem egy vagy több PLC címkéhez kötődik. Amikor az üzemeltető megnyit egy kijelzőt, a SCADA kliens egyszerre küld előfizetési kéréseket az összes kötött címkére. Egy 800 címkét tartalmazó kijelző 200 ms alatt 800 egyedi előfizetési üzenetet indít.
A Foxboro I/A Series esetén az AW (Application Workstation) továbbítja az előfizetéseket a CP-nek (Control Processor) a Nodebus-on keresztül. Minden előfizetés egy Nodebus tranzakciót igényel. A Nodebus maximálisan 500 tranzakciót támogat másodpercenként csomópontonként. Egy 800 címkés kijelző az induló betöltés során meghaladja ezt a korlátot.
Eredmény: az első 500 címke azonnal frissül. A maradék 300 címke sorba áll és 1–3 másodperccel később érkezik meg. Az üzemeltetők részleges kijelzőfrissítést látnak, ahol néhány érték elavultnak tűnik.
Woodward EasyGen esetén az OPC UA kliens 100-as csoportokban iratkozik fel a címkékre. Egy 800 címkés kijelző 8 csoportos ciklust igényel. 250 ms ciklusidővel a teljes inicializálás legalább 2 másodpercet vesz igénybe a renderelés megkezdése előtt.
- 1. lépés: Számolja meg a problémás kijelzőn lévő összes címke hivatkozást. Foxboro Display Editorban használja az Eszközök > Címkeszám jelentés menüpontot. GraphWorX64-ben az Szerkesztés > Keresés > Minden kötött változó funkciót.
- 2. lépés: Ha a szám meghaladja a 600-at, ossza fel a kijelzőt két al-kijelzőre, amelyeket navigációs gombok kötnek össze. Célként maximum 400 címkét tűzzön ki kijelzőnként.
- 3. lépés: Foxboro I/A Series esetén növelje a Nodebus tranzakciós puffer méretét az alapértelmezett 256-ról 512-re a CP Rendszer tulajdonságok > Hálózat fülön.
- 4. lépés: Woodward EasyGen esetén állítsa be az OPC UA előfizetési módot a GraphWorX konfigurációs fájlban úgy, hogy a monitored item hozzáadást használja a create subscription helyett. Ez újrahasznosítja a meglévő munkameneteket.
Ok 3: Beágyazott trenddiagramok történeti adatok lekérdezésével
Sok kijelző valós idejű trendablakokat ágyaz be, amelyek az elmúlt 60 perc folyamatadatát mutatják. A kijelző megnyitásakor minden trenddiagram lekérdezi a történeti adatbázist az induló adatfeltöltéshez. Egy kijelzőn három trenddiagram három egyidejű történeti lekérdezést generál.
A Foxboro I/A Series esetén a Historian (Informix vagy SQL alapú) az AIM Historian API-n keresztül szolgálja ki a trendkéréseket. Egy 60 perces trend 5 másodperces mintavételi intervallummal 720 adatpontot ad vissza tollanként. Egy 4 tollas trenddiagram 2 880 pontot kér le. Három diagram összesen 8 640 pontot. A lekérdezés végrehajtási ideje 3–8 másodperc között változik az adatbázis index állapotától függően.
A lekérdezés végrehajtása alatt a kijelző szál blokkolva van az adatokra várva. Az üzemeltető lefagyott képernyőt lát, amíg az összes trendadat meg nem érkezik.
- 1. lépés: Azonosítsa a lassan betöltődő kijelzőn lévő beágyazott trendobjektumokat. Jegyezze fel az időtartományt és a mintavételi intervallumot mindegyiknél.
- 2. lépés: Csökkentse az induló időtartományt 60 percről 15 percre. Ez tollanként 720-ról 180 adatpontra csökkenti az adatokat, így a lekérdezési idő 75%-kal rövidül.
- 3. lépés: Engedélyezze a trendadatok késleltetett betöltését. Állítsa be, hogy a trendek 2 másodperccel a kijelző megnyitása után töltsék be az adatokat, ne az inicializálás alatt. Foxboróban állítsa a Trend Object tulajdonságot InitialLoadDelay = 2000 ms értékre.
- 4. lépés: Korlátozza a trend tollak számát diagramonként maximum 4-re. Több változó esetén használjon külön diagramokat.
Ok 4: Nagy felbontású háttérképek memóriafogyasztása
A folyamatgrafikák gyakran szkennelt P&ID rajzokat használnak háttérként. Egy tipikus 300 DPI-s P&ID szkennelés nagy folyamatterület esetén 8–15 MB méretű PNG képfájlokat eredményez. A SCADA kijelzőbe töltve a tömörítetlen bitkép 50–80 MB RAM-ot foglal el.
Foxboro I/A Series Display Manager megosztott memóriában cache-eli a háttérképeket. Az alapértelmezett cache méret 128 MB. Két kijelző, amely 12 MB-os háttérképeket használ, 24 MB cache-t és 48 MB munkapéldányt foglal el, összesen 72 MB-ot. Egy harmadik kijelző megnyitása cache ürítést és újratöltést kényszerít, ami látható szünetet okoz.
Woodward EasyGen GraphWorX64 a háttérképeket base64 kódolt sztringként tárolja a GDFX fájlban. Egy 10 MB-os háttérkép 13 MB-al növeli a GDFX fájl méretét (base64 többlet). Ennek a sztringnek a feldolgozása 1,5–2 másodpercet ad a betöltési időhöz.
- 1. lépés: Ellenőrizze a háttérképek fájlméretét a SCADA projekt könyvtárában. Jelölje meg az 2 MB-nál nagyobb képeket.
- 2. lépés: Exportálja újra a háttérképeket 96 DPI-n JPEG tömörítéssel (minőség 85%). Ez egy 10 MB-os PNG-t 400–600 KB-os JPEG-re csökkent minimális vizuális minőségromlással.
- 3. lépés: Foxboro I/A Series esetén növelje a Display Manager cache méretét 256 MB-ra az AW környezeti változóval: DISPLAY_CACHE_SIZE=262144.
- 4. lépés: Woodward EasyGen esetén alakítsa át a háttérképeket külső hivatkozás módra az beágyazás helyett. Használja az ImageSource=File útvonalat az ImageSource=Embedded helyett.
Következtetés és javasolt lépések
A SCADA grafikus oldalak lefagyása négy átfedő erőforrásigényből fakad. Először a túl sok animációs objektum túlterheli a CPU renderelő szálát. Másodszor a címke-előfizetési rohamok meghaladják a kommunikációs busz tranzakciós kapacitását. Harmadszor a beágyazott trenddiagramok blokkolják a kijelző szálát a történeti adatok lekérdezése közben. Negyedszer a nagy felbontású háttérképek kimerítik a memória cache-t.
Foxboro I/A Series rendszerek esetén elsődleges feladat a Nodebus tranzakciós puffer 512-re növelése, a trendek késleltetett betöltésének 2 másodpercre állítása, a kijelző cache 256 MB-ra bővítése, és a kijelzők maximális címkeszámának 600-ra korlátozása. Woodward EasyGen rendszereknél cserélje le a forgási animációkat színállapot-jelzőkre, használja az OPC UA monitored item újrahasznosítási módját, és alakítsa át a beágyazott háttérképeket külső fájl hivatkozásokká.
Auditálja az összes 8 másodpercnél hosszabb betöltési idejű kijelzőt. Dokumentálja a változás előtti és utáni mérőszámokat a CMMS rendszerében. Célként tűzze ki, hogy bármely kijelző betöltési ideje ne haladja meg az 5 másodpercet standard munkaállomás hardveren (Intel i5, 8 GB RAM, integrált grafika).
