یخزدگی صفحه گرافیکی SCADA: تحلیل علت ریشهای و بهینهسازی برای سری Foxboro I/A و Woodward EasyGen

مشکل: ایستادن ایستگاه کاری فقط هنگام باز کردن نمایشهای خاص
اپراتورها گزارش میدهند که باز کردن برخی نمایشهای SCADA بین ۱۵ تا ۳۰ ثانیه طول میکشد. نشانگر ماوس در حین بارگذاری کند میشود. نمایشهای دیگر در ۲ تا ۳ ثانیه باز میشوند. وضعیت ارتباط PLC سالم باقی میماند. هیچ خطای شبکهای در تشخیصها مشاهده نمیشود.
این الگو مشکل را به لایه گرافیکی محدود میکند، نه لایه ارتباطی. نمایش قفل شده شامل اشیاء پیچیدهتری نسبت به نمایشهای سریع است. در Foxboro I/A Series، مدیر نمایش مسئول مقداردهی اولیه اشیاء است. در Woodward EasyGen، زمان اجرای GraphWorX گرافیکهای مبتنی بر SVG را رندر میکند. هر دو پلتفرم هنگام عبور یک نمایش از ظرفیت طراحی خود دچار مشکل میشوند.
علت ۱: تعداد زیاد اشیاء انیمیشن زمان واقعی
نمادهای چرخش پمپ، حرکت تسمه نقاله، انیمیشنهای چرخش همزن و نشانگرهای وضعیت رنگی همه نیاز به چرخههای تازهسازی مداوم دارند. هر شیء متحرک یک رشته CPU برای محاسبه بازنقاشی مصرف میکند. وقتی نمایش بیش از ۴۰ شیء انیمیشن فعال داشته باشد، موتور رندر اشباع میشود.
در Foxboro I/A Series نسخه ۷.۰، مدیر نمایش برای هر ۱۰ شیء انیمیشن یک رشته رندر اختصاص میدهد. با ۵۰ انیمیشن، سیستم ۵ رشته رندر همزمان بهعلاوه رشته اصلی نمایش اجرا میکند. استفاده CPU روی یک هسته به ۸۵ تا ۱۰۰٪ میرسد.
در Woodward EasyGen با استفاده از GraphWorX64، هر انیمیشن چرخش هر ۱۰۰ میلیثانیه یک بار محاسبه تبدیل ماتریسی را فعال میکند. صفحه نمای کلی ژنراتور با ۳۰ نماد چرخان ۳۰۰ عملیات تبدیل در ثانیه ایجاد میکند. آستانه شتابدهی GPU بدون سختافزار گرافیکی اختصاصی ۲۵ تبدیل همزمان است.
راهکار: انیمیشنهای چرخش را با نشانگرهای وضعیت رنگی ثابت جایگزین کنید. به جای چرخش نرم، از نرخ چشمکزن ۱ (۰.۵ ثانیه روشن/خاموش) برای وضعیت در حال اجرا استفاده کنید. این کار بار CPU را برای هر شیء ۶۰ تا ۷۰٪ کاهش میدهد.
علت ۲: انفجار اشتراک تگها هنگام مقداردهی اولیه صفحه
هر عنصر گرافیکی به یک یا چند تگ PLC متصل است. وقتی اپراتور یک نمایش را باز میکند، کلاینت SCADA درخواستهای اشتراک برای همه تگهای متصل را همزمان ارسال میکند. نمایشی با ۸۰۰ ارجاع تگ، ۸۰۰ پیام اشتراک جداگانه را ظرف ۲۰۰ میلیثانیه ارسال میکند.
در Foxboro I/A Series، ایستگاه کاری برنامه (AW) اشتراکها را از طریق Nodebus به پردازنده کنترل (CP) ارسال میکند. هر اشتراک نیازمند یک تراکنش Nodebus است. Nodebus حداکثر ۵۰۰ تراکنش در ثانیه به ازای هر گره را پشتیبانی میکند. نمایش ۸۰۰ تگی در بارگذاری اولیه این حد را رد میکند.
نتیجه: ۵۰۰ تگ اول بلافاصله بهروزرسانی میشوند. ۳۰۰ تگ باقیمانده در صف قرار میگیرند و ۱ تا ۳ ثانیه بعد میرسند. اپراتورها بهروزرسانیهای جزئی نمایش را میبینند که برخی مقادیر قدیمی به نظر میرسند.
در Woodward EasyGen، کلاینت OPC UA تگها را در دستههای ۱۰۰ تایی اشتراک میکند. نمایش ۸۰۰ تگی به ۸ چرخه دسته نیاز دارد. با ۲۵۰ میلیثانیه برای هر چرخه، مقداردهی اولیه کامل حداقل ۲ ثانیه طول میکشد تا رندر شروع شود.
- گام ۱: تعداد کل ارجاعات تگ در نمایش مشکلدار را بشمارید. در ویرایشگر نمایش Foxboro از منوی Tools > Tag Count Report استفاده کنید. در GraphWorX64 از Edit > Find > All Bound Variables بهره ببرید.
- گام ۲: اگر تعداد بیش از ۶۰۰ بود، نمایش را به دو زیرنمایش تقسیم کنید که با دکمههای ناوبری به هم متصل باشند. هدف حداکثر ۴۰۰ تگ در هر نمایش است.
- گام ۳: برای Foxboro I/A Series، با افزایش بافر تراکنش Nodebus از مقدار پیشفرض ۲۵۶ به ۵۱۲ در تب شبکه تنظیمات سیستم CP، ظرفیت را افزایش دهید.
- گام ۴: برای Woodward EasyGen، حالت اشتراک OPC UA را در فایل پیکربندی GraphWorX به monitored item add تغییر دهید تا به جای ایجاد اشتراک جدید، از جلسات موجود استفاده شود.
علت ۳: نمودارهای روند تعبیهشده که دادههای تاریخی را پرسوجو میکنند
بسیاری از نمایشها پنجرههای روند زمان واقعی را نشان میدهند که ۶۰ دقیقه آخر دادههای فرآیند را نمایش میدهند. هنگام باز شدن نمایش، هر نمودار روند برای پر کردن اولیه دادهها از پایگاه داده تاریخچه پرسوجو میکند. سه نمودار روند در یک نمایش سه پرسوجوی همزمان تاریخی ایجاد میکنند.
در Foxboro I/A Series، تاریخچهنگار (بر پایه Informix یا SQL) درخواستهای روند را از طریق API تاریخچهنگار AIM پاسخ میدهد. روند ۶۰ دقیقهای با نمونهبرداری هر ۵ ثانیه، ۷۲۰ نقطه داده برای هر قلم بازمیگرداند. نمودار ۴ قلمی ۲۸۸۰ نقطه دریافت میکند. سه نمودار مجموعاً ۸۶۴۰ نقطه دریافت میکنند. زمان اجرای پرسوجو بسته به وضعیت ایندکس پایگاه داده بین ۳ تا ۸ ثانیه است.
در حین اجرای پرسوجو، رشته نمایش منتظر دادهها میماند و صفحه برای اپراتور قفل میشود تا همه دادههای روند برسند.
- گام ۱: اشیاء روند تعبیهشده در نمایش کند بارگذاری را شناسایی کنید. بازه زمانی و فاصله نمونهبرداری هر کدام را یادداشت کنید.
- گام ۲: بازه زمانی اولیه را از ۶۰ دقیقه به ۱۵ دقیقه کاهش دهید. این کار نقاط داده هر قلم را از ۷۲۰ به ۱۸۰ کاهش میدهد و زمان پرسوجو را ۷۵٪ کم میکند.
- گام ۳: بارگذاری تنبل دادههای روند را فعال کنید. روندها را طوری تنظیم کنید که دادهها ۲ ثانیه پس از باز شدن نمایش بارگذاری شوند، نه در زمان مقداردهی اولیه. در Foxboro، ویژگی InitialLoadDelay شیء روند را روی ۲۰۰۰ میلیثانیه تنظیم کنید.
- گام ۴: تعداد قلمهای روند در هر نمودار را به حداکثر ۴ محدود کنید. اگر متغیرهای بیشتری نیاز به روند دارند، از نمودارهای جداگانه استفاده کنید.
علت ۴: تصاویر پسزمینه با وضوح بالا که حافظه را مصرف میکنند
گرافیکهای فرآیند اغلب از نمودارهای P&ID اسکن شده به عنوان پسزمینه استفاده میکنند. یک اسکن معمولی P&ID با وضوح ۳۰۰ DPI برای یک منطقه بزرگ فرآیند، فایلهای تصویری ۸ تا ۱۵ مگابایتی در فرمت PNG تولید میکند. وقتی این تصاویر در نمایش SCADA بارگذاری میشوند، بیتمپ بدون فشردهسازی ۵۰ تا ۸۰ مگابایت حافظه RAM اشغال میکند.
مدیر نمایش Foxboro I/A Series تصاویر پسزمینه را در حافظه مشترک کش میکند. اندازه کش پیشفرض ۱۲۸ مگابایت است. دو نمایش با پسزمینههای ۱۲ مگابایتی هر کدام، ۲۴ مگابایت کش بهعلاوه ۴۸ مگابایت نسخه کاری مصرف میکنند که مجموعاً ۷۲ مگابایت میشود. باز کردن نمایش سوم باعث تخلیه کش و بارگذاری مجدد میشود که وقفه قابل مشاهده ایجاد میکند.
GraphWorX64 در Woodward EasyGen پسزمینهها را به صورت رشتههای کدگذاری شده base64 در فایل GDFX نمایش ذخیره میکند. پسزمینه ۱۰ مگابایتی اندازه فایل GDFX را ۱۳ مگابایت افزایش میدهد (اضافه بار base64). تجزیه این رشته ۱.۵ تا ۲ ثانیه به زمان بارگذاری نمایش اضافه میکند.
- گام ۱: اندازه فایلهای تصویر پسزمینه را در دایرکتوری پروژه SCADA بررسی کنید. هر تصویری که بیش از ۲ مگابایت باشد را علامتگذاری کنید.
- گام ۲: پسزمینهها را با وضوح ۹۶ DPI و فشردهسازی JPEG (کیفیت ۸۵٪) دوباره صادر کنید. این کار یک PNG ده مگابایتی را به JPEG با حجم ۴۰۰ تا ۶۰۰ کیلوبایت با حداقل افت کیفیت بصری تبدیل میکند.
- گام ۳: در Foxboro I/A Series، اندازه کش مدیر نمایش را با استفاده از متغیر محیطی AW به نام DISPLAY_CACHE_SIZE=262144 به ۲۵۶ مگابایت افزایش دهید.
- گام ۴: برای Woodward EasyGen، تصاویر پسزمینه را به حالت ارجاع خارجی تبدیل کنید به جای تعبیه در فایل. از ImageSource=File path به جای ImageSource=Embedded استفاده کنید.
نتیجهگیری و توصیههای عملی
قفل شدن صفحه گرافیکی SCADA ناشی از چهار تقاضای منابع همپوشان است. اول، تعداد زیاد اشیاء انیمیشن بار رشته رندر CPU را افزایش میدهد. دوم، انفجار اشتراک تگها ظرفیت تراکنش باس ارتباطی را میشکند. سوم، نمودارهای روند تعبیهشده هنگام پرسوجوی دادههای تاریخی رشته نمایش را مسدود میکنند. چهارم، پسزمینههای با وضوح بالا حافظه کش را تخلیه میکنند.
برای سیستمهای Foxboro I/A Series، اولویت را به افزایش بافر تراکنش Nodebus به ۵۱۲، تنظیم تأخیر بارگذاری تنبل روند به ۲ ثانیه، گسترش کش نمایش به ۲۵۶ مگابایت و محدود کردن نمایشها به حداکثر ۶۰۰ تگ بدهید. برای سیستمهای Woodward EasyGen، انیمیشنهای چرخش را با نشانگرهای وضعیت رنگی جایگزین کنید، از حالت استفاده مجدد آیتمهای نظارت شده OPC UA بهره ببرید و پسزمینههای تعبیهشده را به ارجاعات فایل خارجی تبدیل کنید.
تمام نمایشهایی که زمان بارگذاری آنها بیش از ۸ ثانیه است را بررسی کنید. معیارهای قبل و بعد را در سیستم مدیریت نگهداری و تعمیرات (CMMS) خود مستندسازی کنید. هدف، زمان بارگذاری حداکثر ۵ ثانیه برای هر نمایش روی سختافزار استاندارد ایستگاه کاری (Intel i5، ۸ گیگابایت رم، گرافیک مجتمع) باشد.
