شناخت دقیق OBها برای مهندسان اتوماسیون، مدیران پروژه و متخصصان برق در صنایع نفت، گاز و پتروشیمی یک ضرورت است، نه صرفاً یک موضوع آموزشی. پس با این مقاله تخصصی از الکترونت همراه باشید.
آموزش تخصصی PLC زیمنس STEP7
راهنمای جامع Organization Block (OB) در PLCهای Siemens S7-300 و S7-400
قسمت اول — مقدمه، معماری اجرای برنامه و تشریح کامل OB1
مقدمه
در سیستمهای کنترل صنعتی، هر برنامه PLC باید بر اساس یک ساختار مشخص اجرا شود. در PLCهای خانواده SIMATIC S7-300 و SIMATIC S7-400، این ساختار توسط سیستمعامل CPU مدیریت میشود. برخلاف تصور بسیاری از برنامهنویسان، CPU برنامه را از اولین شبکه (Network) آغاز نمیکند، بلکه تمام اجرای برنامه از طریق بلوکهایی به نام Organization Block یا OB انجام میشود. به عبارت دیگر، اگر CPU را مغز سیستم کنترل بدانیم، OBها نقش سیستم مدیریت اجرای این مغز را بر عهده دارند. هر عملیات مهم مانند شروع به کار CPU، اجرای برنامه اصلی، وقوع یک وقفه زمانی، دریافت یک وقفه سختافزاری یا حتی مدیریت خطاهای سیستم، از طریق یک Organization Block مشخص انجام میشود.
این ساختار باعث میشود برنامههای PLC در پروژههای بزرگ، با هزاران سیگنال ورودی و خروجی و دهها فرآیند همزمان، به صورت منظم، قابل پیشبینی و پایدار اجرا شوند.
Organization Block (OB) چیست؟
Organization Block یا به اختصار OB، بلوکی است که مستقیماً توسط سیستمعامل CPU فراخوانی میشود. این بلوکها نقاط ورود (Entry Point) برنامه هستند و تعیین میکنند که CPU در هر وضعیت عملیاتی چه کدی را اجرا کند.
در STEP7، کاربر نمیتواند هر زمان که بخواهد یک OB را فراخوانی کند. اجرای OBها کاملاً در اختیار سیستمعامل CPU است و هر OB تنها در پاسخ به یک رویداد مشخص اجرا میشود.
به عنوان نمونه:
• هنگام ورود CPU به حالت RUN، سیستمعامل OB100 را اجرا میکند.
• در حالت عادی و بدون وقوع رویداد خاص، CPU به صورت مداوم OB1 را اجرا میکند.
• اگر یک وقفه زمانی ایجاد شود، CPU اجرای OB1 را متوقف کرده و OB35 را اجرا میکند.
• در صورت وقوع خطای سختافزاری، CPU به OB82 مراجعه میکند.
بنابراین هر OB برای مدیریت یک وضعیت مشخص در سیستم طراحی شده است.
چرا شناخت OBها اهمیت دارد؟
در پروژههای کوچک، ممکن است برنامه تنها شامل چند صد خط کد باشد و همه چیز در ظاهر بهدرستی کار کند. اما در پروژههای صنعتی بزرگ، شرایط کاملاً متفاوت است.
فرض کنید یک پالایشگاه دارای موارد زیر باشد:
• ۸ هزار ورودی و خروجی
• ۳۰۰ موتور
• ۶۰ کمپرسور
• ۴۰ پمپ فرایندی
• ۱۲۰ ولو کنترلی
• شبکه PROFIBUS
• شبکه Industrial Ethernet
• صدها حلقه کنترلی
در چنین پروژهای، CPU باید دهها فعالیت مختلف را با اولویتهای متفاوت مدیریت کند. اگر ساختار اجرای برنامه بهدرستی طراحی نشود، ممکن است تأخیر در پاسخگویی به تجهیزات حفاظتی، افزایش زمان Scan، از دست رفتن وقایع یا حتی توقف ناخواسته واحد فرایندی رخ دهد.
به همین دلیل، شناخت عملکرد هر OB و انتخاب صحیح آن یکی از مهمترین مهارتهای یک مهندس PLC محسوب میشود.
معماری اجرای برنامه در S7-300 و S7-400
یکی از ویژگیهای مهم PLCهای زیمنس، استفاده از یک سیستمعامل داخلی (Operating System) است. این سیستمعامل وظیفه مدیریت منابع CPU، زمانبندی اجرای برنامه و پاسخ به رویدادها را بر عهده دارد.
برخلاف کنترلرهای ساده که برنامه را به صورت خطی اجرا میکنند، در S7-300 و S7-400 اجرای برنامه بر اساس رویداد (Event Driven) انجام میشود. به طور کلی، چرخه اجرای CPU به صورت زیر است:
1.CPU وضعیت ورودیهای فیزیکی را دریافت میکند.
2.سیستمعامل بررسی میکند که آیا رویداد خاصی مانند وقفه زمانی، وقفه سختافزاری یا خطا رخ داده است یا خیر.
3.اگر هیچ رویدادی وجود نداشته باشد، OB1 اجرا میشود.
4.اگر رویدادی با اولویت بالاتر وجود داشته باشد، CPU اجرای OB1 را متوقف کرده و OB مربوط به آن رویداد را اجرا میکند.
5.پس از پایان اجرای OB با اولویت بالاتر، CPU مجدداً به اجرای OB1 بازمیگردد.
6.در پایان سیکل، خروجیها بهروزرسانی میشوند و سیکل بعدی آغاز میشود.
این ساختار باعث میشود که CPU بتواند همزمان وظایف مختلف را بدون از دست دادن رویدادهای مهم مدیریت کند.
مفهوم اولویت (Priority) در OBها
تمام Organization Blockها دارای یک سطح اولویت هستند. هرچه اولویت یک OB بالاتر باشد، CPU میتواند اجرای OB با اولویت پایینتر را متوقف کرده و ابتدا آن OB را اجرا کند.
به عنوان مثال، اگر CPU در حال اجرای OB1 باشد و همزمان یک وقفه سختافزاری رخ دهد، سیستمعامل بلافاصله اجرای OB1 را متوقف کرده و کنترل را به OB40 منتقل میکند. پس از پایان OB40، اجرای OB1 از همان نقطهای که متوقف شده بود ادامه پیدا میکند.
این مکانیزم، دلیل اصلی سرعت بالای واکنش PLCهای زیمنس در پروژههای حساس صنعتی است.
OB1 چیست؟
OB1 مهمترین Organization Block در PLCهای S7-300 و S7-400 است و به عنوان برنامه اصلی CPU شناخته میشود.
هر زمان که هیچ رویداد دیگری در سیستم وجود نداشته باشد، CPU به صورت پیوسته OB1 را اجرا میکند. به همین دلیل، OB1 را Cyclic Program Organization Block نیز مینامند.
OB1 از لحظهای که CPU وارد حالت RUN میشود، به طور مداوم اجرا خواهد شد و این روند تا زمانی که CPU متوقف شود یا رویدادی با اولویت بالاتر رخ دهد ادامه پیدا میکند.
وظیفه اصلی OB1
وظیفه OB1 اجرای منطق اصلی کنترل فرایند است.
تمام تصمیمات کنترلی که باید در هر سیکل بررسی شوند، از طریق اجرای مداوم OB1 انجام میشوند.
برای مثال:
• بررسی وضعیت تجهیزات
• تصمیمگیری درباره روشن یا خاموش بودن تجهیزات
• کنترل وضعیت فرآیند
• بررسی شرایط بهرهبرداری
• مدیریت توالی عملیات
همگی در سیکلهای متوالی توسط OB1 انجام میشوند.
نحوه اجرای OB1
در هر Scan، سیستمعامل CPU مراحل زیر را انجام میدهد:
• بررسی رویدادهای سیستم
• اجرای OB1 در صورت نبود وقفه
• پایان اجرای OB1
• آغاز Scan بعدی
بنابراین ممکن است در یک ثانیه، OB1 دهها یا حتی صدها بار اجرا شود؛ تعداد دفعات اجرا به زمان Scan CPU بستگی دارد.
ویژگیهای OB1
OB1 دارای ویژگیهای زیر است:
• اجرای چرخهای (Cyclic)
• اجرای خودکار توسط سیستمعامل
• اجرای مداوم تا زمان توقف CPU
• امکان قطع شدن توسط OBهای با اولویت بالاتر
• ازسرگیری اجرا پس از پایان وقفه
• مناسب برای منطق اصلی کنترل فرایند
رفتار OB1 در زمان وقوع وقفه
فرض کنید CPU در حال اجرای OB1 است. در همین لحظه، یک کارت ورودی وقفه سختافزاری ایجاد میکند.
ترتیب اجرا به صورت زیر خواهد بود:
1.اجرای OB1 آغاز شده است.
2.وقفه سختافزاری ایجاد میشود.
3.سیستمعامل اجرای OB1 را متوقف میکند.
4.OB40 اجرا میشود.
5.پس از پایان OB40، CPU به همان دستور قبلی در OB1 بازمیگردد.
6.اجرای OB1 ادامه پیدا میکند.
این قابلیت باعث میشود رویدادهای مهم بدون تأخیر پردازش شوند.
مثال صنعتی شماره ۱ — پالایشگاه نفت
در یک پالایشگاه، وضعیت صدها تجهیز فرایندی باید به صورت مداوم بررسی شود. CPU در هر سیکل OB1 مواردی مانند وضعیت پمپها، ولوها، فشار خطوط و شرایط فرآیندی را ارزیابی میکند.
اگر در همین زمان یک ماژول I/O خطای سختافزاری گزارش دهد، سیستمعامل اجرای OB1 را متوقف کرده و OB82 را اجرا میکند. پس از رسیدگی به خطا، CPU دوباره به OB1 بازمیگردد و فرآیند کنترل بدون نیاز به راهاندازی مجدد ادامه پیدا میکند.
مثال صنعتی شماره ۲ — ایستگاه تقویت فشار گاز
در یک ایستگاه تقویت فشار، OB1 به صورت پیوسته وضعیت کمپرسورها، فشار مکش و رانش، دمای یاتاقانها و وضعیت ولوهای کنترلی را پایش میکند.
اگر یک سنسور لرزش (Vibration Sensor) وقفه سختافزاری ایجاد کند، CPU بلافاصله کنترل را به OB40 منتقل میکند تا تصمیم حفاظتی در کوتاهترین زمان ممکن اتخاذ شود. پس از پایان وقفه، اجرای OB1 از همان نقطه ادامه پیدا میکند.
بهترین روش استفاده از OB1
در پروژههای حرفهای، توصیه میشود:
• از قرار دادن عملیات زمانحساس در OB1 خودداری شود.
• OB1 برای منطقی استفاده شود که باید در هر سیکل اجرا گردد.
• رویدادهای خاص به OBهای اختصاصی خود واگذار شوند.
• زمان اجرای OB1 به صورت دورهای پایش شود تا از افزایش Scan Time جلوگیری گردد.
OB1 پایه و اساس اجرای برنامه در PLCهای Siemens S7-300 و S7-400 است، اما نقش آن فراتر از یک «برنامه اصلی» ساده است. این بلوک قلب چرخه اسکن CPU محسوب میشود و اجرای پیوسته منطق کنترلی را بر عهده دارد، در حالی که سیستمعامل با استفاده از سایر Organization Blockها میتواند رویدادهای مهم، وقفهها و خطاها را با اولویت مناسب مدیریت کند.
در بخش بعدی، دو Organization Block مهم دیگر یعنی OB10 (Time of Day Interrupt) و OB20 (Time Delay Interrupt) بهصورت تخصصی بررسی خواهند شد؛ از جمله نحوه فراخوانی توسط سیستمعامل، سناریوهای کاربردی در صنایع نفت، گاز و پتروشیمی، محدودیتها، اولویت اجرا و نکات طراحی حرفهای.
بررسی تخصصی OB10، OB20 و OB35 در PLCهای Siemens S7-300 و S7-400
در قسمت اول، با نقش Organization Blockها در ساختار اجرایی PLCهای زیمنس و عملکرد OB1 به عنوان برنامه چرخهای آشنا شدیم. اما در پروژههای صنعتی بزرگ، بهویژه در صنایع نفت، گاز و پتروشیمی، بسیاری از عملیات را نمیتوان تنها با اجرای مداوم OB1 مدیریت کرد.
در یک پالایشگاه ممکن است لازم باشد گزارش تولید دقیقاً در ساعت ۷ صبح ثبت شود، یا پس از راهاندازی یک کمپرسور، ۱۵ ثانیه بعد سیستم روانکاری فعال گردد. همچنین حلقههای کنترل فشار، دما یا دبی باید در بازههای زمانی کاملاً ثابت اجرا شوند تا عملکرد پایدار فرآیند تضمین شود.
اگر تمام این عملیات در OB1 قرار گیرند، زمان اجرای آنها وابسته به Scan Time خواهد بود و با افزایش بار CPU یا تغییر زمان سیکل، دقت عملکرد کاهش مییابد. به همین دلیل زیمنس از Organization Blockهای وقفهای استفاده میکند که مستقیماً توسط سیستمعامل CPU و بر اساس رویدادهای زمانی اجرا میشوند.
در این بخش، سه بلوک مهم یعنی OB10، OB20 و OB35 را از دیدگاه عملکرد، کاربردهای صنعتی، محدودیتها و بهترین روشهای استفاده بررسی میکنیم.
OB10 چیست؟
OB10 یا Time of Day Interrupt بلوکی است که در یک تاریخ و ساعت مشخص توسط سیستمعامل CPU اجرا میشود. برخلاف OB1 که به صورت پیوسته در حال اجرا است، OB10 تنها زمانی فعال میشود که ساعت داخلی CPU به زمان تعریفشده برسد.
نکته مهم این است که اجرای OB10 کاملاً مستقل از Scan Time است. حتی اگر زمان سیکل CPU افزایش پیدا کند، اجرای OB10 در همان زمان برنامهریزیشده انجام خواهد شد.
نحوه عملکرد OB10
زمانی که CPU وارد حالت RUN میشود، سیستمعامل علاوه بر اجرای برنامه اصلی، ساعت داخلی CPU را نیز پایش میکند. هر زمان که ساعت به زمان تعیینشده برسد، سیستمعامل اجرای برنامه جاری را متوقف کرده و OB10 را اجرا میکند. پس از پایان آن، CPU به ادامه اجرای برنامه قبلی بازمیگردد.
این رفتار باعث میشود عملیات زمانبندیشده با دقت بسیار بالا انجام شوند.
کاربردهای OB10 در صنایع نفت، گاز و پتروشیمی
یکی از رایجترین کاربردهای OB10، اجرای عملیات مدیریتی و بهرهبرداری در زمانهای مشخص است.
برای مثال، در یک پالایشگاه نفت معمولاً گزارش تولید هر شیفت باید دقیقاً در ساعت ۰۷:۰۰، ۱۵:۰۰ و ۲۳:۰۰ ثبت شود. اگر این عملیات در OB1 نوشته شود، زمان اجرای آن به Scan Time وابسته خواهد بود؛ اما با استفاده از OB10، گزارش دقیقاً در زمان تعیینشده تولید میشود.
در واحدهای پتروشیمی نیز تغییر Recipe یا آغاز Batch جدید معمولاً بر اساس زمانبندی مشخص انجام میشود. اجرای این عملیات توسط OB10 باعث میشود تغییر وضعیت دقیقاً در زمان برنامهریزیشده انجام گیرد.
در نیروگاهها نیز از OB10 برای ثبت اطلاعات تولید انرژی، تهیه گزارشهای روزانه و همگامسازی دادهها با سیستمهای مدیریت انرژی استفاده میشود.
مثال عملی
فرض کنید در یک واحد شیرینسازی گاز لازم است هر روز رأس ساعت ۶ صبح حجم گاز فرآورششده ثبت و برای سیستم گزارشگیری ارسال شود.
در این سناریو، ساعت داخلی CPU روی ۰۶:۰۰ تنظیم میشود و OB10 مسئول اجرای عملیات ثبت اطلاعات خواهد بود. حتی اگر بار CPU افزایش یابد، گزارش در همان زمان مقرر تولید میشود.
مزایای OB10
مهمترین مزیت OB10، دقت زمانی بسیار بالا است. این بلوک برای عملیاتی طراحی شده که وابسته به زمان واقعی هستند و نباید تحت تأثیر تغییرات Scan Cycle قرار گیرند.
محدودیتهای OB10
OB10 برای اجرای عملیات تکرارشونده با فواصل کوتاه مناسب نیست. اگر لازم باشد برنامه هر ۱۰۰ میلیثانیه اجرا شود، باید از OB35 استفاده کرد. همچنین بهتر است از قرار دادن پردازشهای سنگین در OB10 خودداری شود تا اجرای سایر وقفهها با تأخیر مواجه نشود.
OB20 چیست؟
OB20 یا Time Delay Interrupt برای اجرای یک عملیات پس از سپری شدن مدتزمان مشخص طراحی شده است.
تفاوت اصلی آن با OB10 در این است که OB10 بر اساس ساعت واقعی CPU اجرا میشود، اما OB20 بر اساس مدت زمان سپریشده از یک رویداد فعال میشود.
به عبارت دیگر، OB20 به جای اینکه بپرسد «الان ساعت چند است؟» میپرسد «چند ثانیه از وقوع این رویداد گذشته است؟».
نحوه عملکرد OB20
پس از وقوع یک رویداد، مانند روشن شدن یک تجهیز یا دریافت یک فرمان، سیستمعامل یک شمارش معکوس را آغاز میکند. با پایان این زمان، OB20 به صورت خودکار اجرا میشود و عملیات تعریفشده را انجام میدهد.
کاربردهای OB20 در پروژههای صنعتی
در پروژههای نفت و گاز، بسیاری از تجهیزات نباید همزمان راهاندازی شوند. رعایت توالی راهاندازی (Startup Sequence) برای جلوگیری از شوک مکانیکی، افت فشار یا اضافهبار الکتریکی ضروری است.
برای مثال، در یک ایستگاه تقویت فشار گاز، پس از روشن شدن کمپرسور، سیستم روانکاری باید چند ثانیه فرصت داشته باشد تا فشار روغن به مقدار مطلوب برسد. سپس ولو خروجی باز میشود. این تأخیر بهسادگی با OB20 پیادهسازی میشود.
در واحدهای فرآیندی نیز ممکن است پس از روشن شدن یک پمپ، لازم باشد ۱۵ ثانیه بعد کنترل فشار فعال شود تا از ایجاد آلارمهای کاذب جلوگیری گردد.
مثال عملی
در یک واحد انتقال نفت خام، پس از استارت پمپ اصلی، لازم است ولو خروجی پس از ۱۰ ثانیه باز شود تا از ایجاد ضربه قوچ (Water Hammer) جلوگیری شود.
در این حالت، فرمان روشن شدن پمپ صادر میشود و سیستمعامل OB20 را برای اجرا پس از ۱۰ ثانیه زمانبندی میکند. پس از پایان این زمان، OB20 اجرا شده و فرمان باز شدن ولو صادر میشود.
مزایای OB20
OB20 اجرای دقیق توالیهای زمانی را ممکن میکند و وابستگی به Scan Time را از بین میبرد. این ویژگی باعث افزایش قابلیت اطمینان در راهاندازی تجهیزات حساس میشود.
محدودیتهای OB20
OB20 برای عملیات دورهای مناسب نیست. اگر لازم باشد یک عملیات به صورت مداوم و در فواصل زمانی ثابت اجرا شود، OB35 انتخاب صحیحتری خواهد بود.
OB35 چیست؟
OB35 که با عنوان Cyclic Interrupt شناخته میشود، یکی از پرکاربردترین Organization Blockهای وقفهای در PLCهای زیمنس است.
برخلاف OB1 که زمان اجرای آن به مدت Scan وابسته است، OB35 در بازههای زمانی ثابت اجرا میشود. این بازه میتواند ۱۰، ۲۰، ۵۰، ۱۰۰ یا ۵۰۰ میلیثانیه و یا هر مقدار مجاز دیگری باشد که در تنظیمات CPU تعریف شده است.
به همین دلیل، OB35 برای اجرای وظایفی که نیاز به نمونهبرداری منظم دارند، بهترین گزینه محسوب میشود.
چرا OB35 اهمیت زیادی دارد؟
در فرآیندهای صنعتی، بسیاری از حلقههای کنترلی تنها زمانی عملکرد مطلوب دارند که در فواصل زمانی ثابت اجرا شوند. اگر زمان نمونهبرداری تغییر کند، کیفیت کنترل کاهش یافته و پاسخ سیستم ناپایدار میشود.
OB35 این مشکل را برطرف میکند، زیرا زمان اجرای آن مستقل از Scan Cycle است.
کاربردهای OB35 در صنایع نفت، گاز و پتروشیمی
یکی از مهمترین کاربردهای OB35 اجرای حلقههای PID است. در پالایشگاهها و پتروشیمیها، کنترل فشار، دما، سطح و دبی معمولاً با دوره نمونهبرداری ثابت انجام میشود.
همچنین از OB35 برای پایش ارتعاش کمپرسورها، محاسبه دبی لحظهای، نمونهبرداری از سیگنالهای آنالوگ و پردازش اطلاعات تجهیزات دوار استفاده میشود.
مثال عملی اول
در یک برج تقطیر، فشار بالای برج باید هر ۱۰۰ میلیثانیه اندازهگیری و کنترل شود. اگر این کار در OB1 انجام شود، با تغییر زمان Scan، فاصله بین نمونهبرداریها نیز تغییر میکند و کیفیت کنترل کاهش مییابد.
قرار دادن این حلقه در OB35 باعث میشود نمونهبرداری همیشه با فاصله زمانی ثابت انجام شود.
مثال عملی دوم
در یک کمپرسور سانتریفیوژ، سنسور ارتعاش هر ۲۰ میلیثانیه داده جدید تولید میکند. اجرای پردازش این دادهها در OB35 باعث میشود سیستم حفاظتی در کوتاهترین زمان ممکن نسبت به افزایش غیرعادی ارتعاش واکنش نشان دهد و از آسیب به تجهیزات جلوگیری شود.
مزایای OB35
• اجرای دورهای با زمان ثابت
• استقلال از Scan Time
• مناسب برای حلقههای کنترلی حساس
• دقت بالا در نمونهبرداری
• بهبود پایداری کنترل فرآیند
محدودیتهای OB35
اگر حجم پردازش داخل OB35 زیاد باشد و زمان اجرای آن از دوره تعریفشده بیشتر شود، بار CPU افزایش یافته و ممکن است وقفههای بعدی با تأخیر اجرا شوند. بنابراین این بلوک باید تنها شامل پردازشهای ضروری و کوتاه باشد.
جدول مقایسه OB10، OB20 و OB35
|
ویژگی
|
OB10
|
OB20
|
OB35
|
|
مبنای اجرا
|
ساعت واقعی CPU
|
سپری شدن زمان از یک رویداد
|
دوره زمانی ثابت
|
|
نوع اجرا
|
زمانبندیشده
|
تأخیری
|
دورهای
|
|
وابستگی به Scan Time
|
ندارد
|
ندارد
|
ندارد
|
|
مناسب برای گزارشگیری
|
✔
|
✖
|
✖
|
|
مناسب برای توالی راهاندازی تجهیزات
|
✖
|
✔
|
✖
|
|
مناسب برای کنترل PID و نمونهبرداری
|
✖
|
✖
|
✔
|
|
نمونه کاربرد در صنعت
|
گزارش شیفت، Batch
|
تأخیر در راهاندازی تجهیزات
|
کنترل فرآیند و حلقههای سریع
|
هر سه بلوک OB10، OB20 و OB35 برای مدیریت زمان طراحی شدهاند، اما فلسفه استفاده از آنها کاملاً متفاوت است. انتخاب صحیح این بلوکها یکی از نشانههای طراحی حرفهای نرمافزار PLC است.
در پروژههای نفت، گاز و پتروشیمی، استفاده مناسب از این Organization Blockها باعث افزایش قابلیت اطمینان سیستم، بهبود عملکرد فرآیند، کاهش خطاهای زمانبندی و سادهتر شدن عملیات راهاندازی و بهرهبرداری میشود. در مقابل، استفاده نادرست از آنها میتواند منجر به افزایش بار CPU، کاهش دقت کنترل و پیچیدگی در نگهداری نرمافزار شود.
در قسمت بعدی، به بررسی تخصصی OB40 (Hardware Interrupt)، OB82 (Diagnostic Interrupt) و OB86 (Rack Failure Interrupt) خواهیم پرداخت؛ سه بلوکی که نقش کلیدی در مدیریت رویدادهای سختافزاری و افزایش دسترسپذیری (Availability) سیستمهای کنترل در صنایع حیاتی دارند.
بررسی تخصصی OB40، OB82 و OB86 در PLCهای Siemens S7-300 و S7-400
در دو بخش گذشته، با Organization Blockهای مرتبط با اجرای چرخهای و مدیریت زمان آشنا شدیم. اما در پروژههای بزرگ صنعتی، بهویژه در صنایع نفت، گاز، پتروشیمی، نیروگاه و خطوط انتقال انرژی، مهمترین چالش تنها اجرای صحیح برنامه نیست؛ بلکه واکنش سریع به رویدادهای سختافزاری و حفظ دسترسپذیری (Availability) سیستم کنترل اهمیت حیاتی دارد.
در یک پالایشگاه، از دست رفتن ارتباط یک Remote I/O، خرابی یک ماژول آنالوگ یا دریافت سیگنال اضطراری از یک تجهیز دوار، نباید باعث توقف کل PLC شود. سیستم کنترل باید بتواند رویداد را شناسایی، ثبت، مدیریت و در صورت امکان بدون توقف فرآیند به کار خود ادامه دهد.
به همین دلیل، زیمنس سه Organization Block مهم را برای مدیریت رویدادهای سختافزاری و خطاهای سیستم در نظر گرفته است:
• OB40 (Hardware Interrupt)
• OB82 (Diagnostic Interrupt)
• OB86 (Rack Failure Interrupt)
شناخت صحیح این بلوکها برای مهندسان اتوماسیون و مدیران پروژههای EPC، علاوه بر افزایش قابلیت اطمینان سیستم، هزینههای راهاندازی، توقف تولید و عملیات نگهداری را نیز کاهش میدهد.
چرا Hardware Interrupt اهمیت دارد؟
در بسیاری از فرآیندهای صنعتی، برخی رویدادها آنقدر مهم هستند که نباید تا پایان Scan بعدی منتظر بمانند.
برای مثال:
• فعال شدن کلید حدی (Limit Switch) یک شیر اضطراری
• رسیدن فشار به حد بحرانی
• تحریک سنسور ارتعاش کمپرسور
• دریافت سیگنال Trip از سیستم حفاظت توربین
در چنین شرایطی، CPU باید بلافاصله اجرای برنامه جاری را متوقف کرده و به رویداد جدید پاسخ دهد. این دقیقاً وظیفه OB40 است.
OB40 چیست؟
OB40 یا Hardware Interrupt بلوکی است که هنگام وقوع یک وقفه سختافزاری توسط سیستمعامل CPU اجرا میشود.
برخلاف OB35 که بر اساس زمان اجرا میشود، OB40 وابسته به وقوع یک Event سختافزاری است.
به محض دریافت این Event، CPU اجرای برنامه فعلی را متوقف کرده و OB40 را اجرا میکند.
نحوه عملکرد OB40
اجرای OB40 تنها زمانی امکانپذیر است که:
• ماژول سختافزاری از Hardware Interrupt پشتیبانی کند.
• وقفه برای آن ماژول در HW Config فعال شده باشد.
• CPU در حالت RUN قرار داشته باشد.
در صورت وقوع رویداد، سیستمعامل CPU به صورت خودکار OB40 را فراخوانی میکند و پس از پایان اجرای آن، برنامه قبلی ادامه پیدا میکند.
کاربردهای صنعتی OB40
در پروژههای نفت و گاز، بسیاری از تجهیزات دارای سیگنالهای اضطراری هستند که باید در کوتاهترین زمان ممکن پردازش شوند.
از مهمترین کاربردهای OB40 میتوان به موارد زیر اشاره کرد:
• دریافت سیگنال Emergency Shutdown
• تشخیص رسیدن شیر به موقعیت نهایی
• دریافت فرمان Trip از تجهیزات حفاظتی
• فعال شدن سنسورهای سرعت یا ارتعاش
• شمارش پالسهای سرعت بالا
• تشخیص موقعیت تجهیزات دوار
مثال عملی اول
در یک واحد تقویت فشار گاز، سنسور ارتعاش کمپرسور دارای خروجی Hardware Interrupt است.
به محض عبور مقدار ارتعاش از حد مجاز، کارت ورودی وقفه ایجاد میکند و CPU بدون انتظار برای پایان Scan، OB40 را اجرا میکند.
در این بلوک میتوان اقدامات زیر را انجام داد:
• ثبت زمان وقوع رویداد
• ارسال آلارم به HMI
• فعالسازی منطق حفاظتی
• ارسال فرمان توقف به سیستم ESD
این روش باعث کاهش زمان واکنش سیستم و جلوگیری از آسیب به کمپرسور میشود.
مثال عملی دوم
در یک اسکید اندازهگیری نفت، رسیدن شیر کنترلی به موقعیت کاملاً باز باید بلافاصله ثبت شود تا مرحله بعدی فرآیند آغاز گردد.
اگر این وضعیت در OB1 بررسی شود، زمان پاسخ وابسته به Scan خواهد بود. اما با استفاده از OB40، تغییر وضعیت شیر بلافاصله پردازش میشود.
مزایای OB40
• سریعترین روش واکنش به رویدادهای سختافزاری
• مستقل از Scan Time
• مناسب برای تجهیزات حفاظتی
• کاهش زمان پاسخ سیستم
• افزایش ایمنی فرآیند
محدودیتهای OB40
از آنجا که OB40 دارای اولویت بالایی است، نباید پردازشهای طولانی یا محاسبات سنگین در آن قرار گیرد. بهترین روش این است که تنها اطلاعات ضروری ثبت شده و CPU در کوتاهترین زمان ممکن به برنامه اصلی بازگردد.
OB82 چیست؟
OB82 یا Diagnostic Interrupt برای مدیریت پیامهای تشخیصی تجهیزات سختافزاری طراحی شده است.
هدف این بلوک، واکنش به خطاهای تشخیصی است؛ نه اجرای منطق فرآیند.
چه رویدادهایی باعث اجرای OB82 میشوند؟
نمونههایی از رویدادهای رایج عبارتاند از:
• خرابی یک ماژول ورودی یا خروجی
• قطع تغذیه ماژول
• خطای کانال آنالوگ
• سیمکشی باز در کارت Analog Input
• خطای سنسورهای هوشمند
• Diagnostic Message در PROFIBUS یا PROFINET
کاربردهای صنعتی
در صنایع فرآیندی، توقف ناگهانی PLC به دلیل خرابی یک ماژول، معمولاً هزینه بسیار بالایی ایجاد میکند.
با استفاده از OB82، سیستم میتواند به جای توقف CPU، خطا را مدیریت کرده و اپراتور را از وضعیت تجهیزات مطلع کند.
مثال عملی
در یک واحد تصفیه گاز، ترانسمیتر فشار از طریق کارت آنالوگ به PLC متصل است.
در اثر قطع سیم سنسور، کارت Analog Input پیام تشخیصی تولید میکند.
سیستمعامل CPU بلافاصله OB82 را اجرا میکند.
در این بلوک میتوان:
• نوع خطا را ثبت کرد.
• پیام مناسب برای HMI ارسال کرد.
• رویداد را در Alarm Buffer ذخیره نمود.
• سیستم نگهداری را مطلع کرد.
در این حالت، سایر بخشهای فرآیند بدون توقف به کار خود ادامه میدهند.
مزایای OB82
• مدیریت هوشمند خطاهای سختافزاری
• کاهش توقف فرآیند
• افزایش قابلیت نگهداری
• ثبت دقیق رویدادهای تشخیصی
• تسهیل عملیات عیبیابی
محدودیتهای OB82
OB82 جایگزین منطق حفاظتی نیست. این بلوک تنها برای مدیریت پیامهای تشخیصی تجهیزات استفاده میشود و نباید تصمیمات فرآیندی پیچیده در آن اتخاذ گردد.
جدول مقایسه OB40،OB82 و OB86
|
ویژگی
|
OB40
|
OB82
|
OB86
|
|
نوع رویداد
|
وقفه سختافزاری
|
پیام تشخیصی
|
خرابی Rack یا
Remote I/O
|
|
علت اجرا
|
Event سختافزاری
|
Diagnostic
Message
|
قطع ارتباط Rack
|
|
وابستگی به Scan Time
|
ندارد
|
ندارد
|
ندارد
|
|
مناسب برای تجهیزات حفاظتی
|
✔
|
✖
|
✖
|
|
مناسب برای ثبت خطا
|
✔
|
✔
|
✔
|
|
مناسب برای مدیریت Remote I/O
|
✖
|
محدود
|
✔
|
|
نمونه کاربرد در صنعت
|
ESD، لرزش، Limit Switch
|
خرابی کارت، قطع سنسور
|
قطع ET200،
قطع
PROFIBUS،
قطع
PROFINET
|
OB86 چیست؟
در پروژههای بزرگ، تجهیزات I/O معمولاً به صورت Remote Rack یا ET200 در نقاط مختلف سایت نصب میشوند.
اگر ارتباط یک Rack با CPU قطع شود یا کل Rack از مدار خارج گردد، سیستمعامل CPU OB86 را اجرا میکند.
به همین دلیل، OB86 با عنوان Rack Failure Interrupt شناخته میشود.
چه رویدادهایی باعث اجرای OB86 میشوند؟
• قطع ارتباط یک Rack
• خاموش شدن ET200
• خرابی Interface Module
• قطع شبکه PROFIBUS
• قطع شبکه PROFINET
• حذف یک ایستگاه Remote I/O
اهمیت OB86 در صنایع نفت و گاز
در پالایشگاهها و خطوط انتقال، تجهیزات Remote I/O ممکن است صدها متر یا حتی چند کیلومتر از PLC فاصله داشته باشند.
در چنین شرایطی، قطع ارتباط شبکه یک اتفاق محتمل است. اگر برای این وضعیت برنامهریزی نشده باشد، ممکن است CPU متوقف شده یا فرآیند دچار اختلال جدی شود.
OB86 این امکان را فراهم میکند که سیستم به صورت کنترلشده با این شرایط برخورد کند.
مثال عملی
در یک ایستگاه پمپاژ نفت، Remote I/O مستقر در محوطه به دلیل قطع کابل فیبر نوری از دسترس خارج میشود.
CPU پیام قطع ارتباط را دریافت کرده و OB86 را اجرا میکند.
در این بلوک میتوان:
• مشخص کرد کدام Rack از مدار خارج شده است.
• پیام هشدار برای اتاق کنترل ارسال کرد.
• تجهیزات وابسته را در وضعیت ایمن قرار داد.
• اطلاعات خطا را برای تیم تعمیرات ثبت کرد.
بدون استفاده از OB86، احتمال توقف ناخواسته سیستم یا از دست رفتن بخشی از اطلاعات فرآیند افزایش مییابد.
مزایای OB86
• مدیریت قطع ارتباط Remote I/O
• افزایش Availability سیستم
• کاهش زمان عیبیابی
• ثبت دقیق خطاهای ارتباطی
• جلوگیری از توقف غیرضروری CPU
محدودیتهای OB86
OB86 تنها وقوع خطا را اعلام میکند و خودِ مشکل ارتباطی را برطرف نمیکند. طراحی منطق مناسب برای قرار دادن تجهیزات در وضعیت ایمن و اطلاعرسانی به اپراتور بر عهده برنامهنویس است.
بهترین روشهای طراحی در پروژههای نفت، گاز و پتروشیمی
در پروژههای EPC، استفاده صحیح از این سه Organization Block نقش مهمی در افزایش قابلیت اطمینان سیستم دارد. توصیه میشود:
• OB40 فقط برای رویدادهایی استفاده شود که نیاز به واکنش فوری دارند؛ مانند سیگنالهای حفاظتی یا وقفههای سختافزاری.
• OB82 برای ثبت، دستهبندی و نمایش پیامهای تشخیصی تجهیزات به کار رود تا تیم بهرهبرداری و نگهداری بتواند سریعتر علت خطا را شناسایی کند.
• OB86 برای مدیریت از دست رفتن ارتباط Rackها و Remote I/Oها طراحی شود و منطق لازم برای قرار دادن فرآیند در وضعیت ایمن (Fail Safe) در آن پیشبینی گردد.
• در هر سه بلوک، از اجرای پردازشهای طولانی اجتناب کنید تا CPU بتواند در سریعترین زمان ممکن به اجرای سایر وظایف بازگردد.
• پیامهای تولیدشده در این OBها با سیستمهای HMI، SCADA و ثبت وقایع (Event Logging) یکپارچه شوند تا در مراحل FAT، SAT و بهرهبرداری، تحلیل رخدادها سادهتر و دقیقتر انجام شود.
ویژگی ها
OB40، OB82 و OB86 سه Organization Block کلیدی برای افزایش قابلیت اطمینان و دسترسپذیری PLCهای Siemens S7-300 و S7-400 هستند. در حالی که OB40 به رویدادهای سختافزاری با سرعت بالا پاسخ میدهد، OB82 مسئول مدیریت پیامهای تشخیصی تجهیزات است و OB86 قطع ارتباط Rackها و Remote I/Oها را مدیریت میکند. استفاده صحیح از این بلوکها، علاوه بر کاهش زمان توقف واحدهای فرآیندی، موجب افزایش ایمنی، تسهیل عیبیابی و کاهش هزینههای بهرهبرداری در پروژههای نفت، گاز و پتروشیمی میشود.
در قسمت چهارم این مجموعه، Organization Blockهای OB100 (Startup)، OB121 (Programming Error) و OB122 (I/O Access Error) بررسی خواهند شد؛ بلوکهایی که نقش مهمی در راهاندازی ایمن CPU و مدیریت خطاهای نرمافزاری و دسترسی به تجهیزات دارند.
عالی. از این قسمت به بعد وارد یکی از مهمترین بخشهای STEP7 میشویم؛ بخشی که معمولاً در اکثر آموزشهای فارسی فقط در حد چند خط توضیح داده میشود، اما در پروژههای Oil & Gas، Petrochemical و Power Plant نقش بسیار مهمی در Availability، Commissioning و Fault Tolerance دارد.
در این مقاله نیز مانند بخشهای قبل، متن را به صورت مرجع تخصصی، کاملاً سئو شده، بدون متن داخل باکس و همراه با مثالهای واقعی پروژههای EPC مینویسم.
بررسی تخصصی OB100، OB121 و OB122 در PLCهای Siemens S7-300 و S7-400
در سه بخش گذشته با Organization Blockهایی آشنا شدیم که مسئول اجرای برنامه، مدیریت زمان و واکنش به رویدادهای سختافزاری بودند. اما حتی اگر ساختار برنامه بهدرستی طراحی شده باشد، همچنان سه سؤال اساسی در هر پروژه صنعتی باقی میماند:
• اگر CPU پس از قطع برق دوباره راهاندازی شود، اولین دستوری که اجرا میشود چیست؟
• اگر برنامهنویس در منطق نرمافزار اشتباه کند، CPU چه واکنشی نشان میدهد؟
• اگر PLC بخواهد به یک ماژول یا آدرس I/O که وجود ندارد دسترسی پیدا کند، چه اتفاقی رخ خواهد داد؟
پاسخ این سه سؤال در سه Organization Block بسیار مهم نهفته است:
• OB100 (Startup Organization Block)
• OB121 (Programming Error Organization Block)
• OB122 (I/O Access Error Organization Block)
برخلاف تصور بسیاری از برنامهنویسان، این سه بلوک صرفاً برای مدیریت خطا نیستند؛ بلکه بخش مهمی از استراتژی طراحی نرمافزارهای قابل اطمینان (Reliable PLC Software) محسوب میشوند.
در پروژههای بزرگ نفت، گاز و پتروشیمی که توقف یک PLC میتواند میلیونها تومان یا حتی میلیونها دلار خسارت ایجاد کند، استفاده صحیح از این OBها یکی از شاخصهای کیفیت طراحی نرمافزار است.
اهمیت Startup و Error Handling در پروژههای صنعتی
در پروژههای کوچک، معمولاً اگر CPU وارد حالت STOP شود، اپراتور PLC را مجدداً RUN میکند و فرآیند ادامه پیدا میکند.
اما در پالایشگاهها، واحدهای LNG، خطوط انتقال نفت یا نیروگاهها، چنین رویکردی قابل قبول نیست.
فرض کنید CPU کنترل یک واحد کمپرسور را بر عهده دارد. اگر پس از قطع برق، خروجیها بدون بررسی وضعیت فرآیند فعال شوند، ممکن است تجهیزات در شرایط ناایمن راهاندازی شوند. همچنین اگر به دلیل یک خطای برنامهنویسی، CPU وارد STOP شود، کل فرآیند متوقف خواهد شد.
به همین دلیل، زیمنس مکانیزمهایی را برای مدیریت ایمن راهاندازی و کنترل خطاها در سطح سیستمعامل CPU در نظر گرفته است.
OB100 چیست؟
OB100 با عنوان Startup Organization Block شناخته میشود.
این بلوک تنها یک بار و بلافاصله پس از ورود CPU از حالت STOP به RUN توسط سیستمعامل اجرا میشود.
پس از پایان اجرای OB100، CPU وارد چرخه عادی برنامه شده و اجرای OB1 آغاز میشود.
بنابراین، OB100 اولین نقطهای است که برنامهنویس میتواند در آن وضعیت اولیه سیستم را کنترل کند.
زمان اجرای OB100
OB100 در شرایط زیر اجرا میشود:
• روشن شدن CPU
• پایان قطع برق و بازگشت تغذیه
• تغییر وضعیت CPU از STOP به RUN
• Restart برنامه
نکته مهم این است که OB100 در هر Scan اجرا نمیشود؛ بلکه فقط در لحظه راهاندازی سیستم فعال است.
وظایف اصلی OB100
مهمترین کاربردهای این بلوک عبارتاند از:
• مقداردهی اولیه متغیرها
• Reset کردن Flagهای موقت
• بررسی وضعیت تجهیزات
• تعیین شرایط اولیه فرآیند
• بازیابی اطلاعات ذخیرهشده
• بررسی شرایط ایمن قبل از شروع تولید
مثال صنعتی اول
فرض کنید در یک ایستگاه پمپاژ نفت، برق سایت برای چند دقیقه قطع شده است.
پس از بازگشت برق، CPU وارد RUN میشود.
در OB100 اقدامات زیر انجام میشود:
• بررسی وضعیت Emergency Stop
• بررسی آماده بودن سیستم روغنکاری
• بررسی فشار خط مکش
• بررسی وضعیت ولوهای ایمنی
• مقداردهی اولیه شمارندهها
• فعال شدن Sequence راهاندازی
سپس اجرای OB1 آغاز میشود.
در نتیجه، فرآیند بهصورت کنترلشده و ایمن وارد مدار خواهد شد.
مثال صنعتی دوم
در یک واحد پتروشیمی، اطلاعات Batch فعال داخل Data Block ذخیره شده است.
پس از Restart CPU، OB100 اطلاعات آخرین Batch را بازیابی کرده و وضعیت فرآیند را به اپراتور نمایش میدهد تا ادامه تولید بدون از دست رفتن اطلاعات انجام شود.
مزایای OB100
• راهاندازی کنترلشده سیستم
• جلوگیری از فعال شدن ناخواسته تجهیزات
• افزایش ایمنی فرآیند
• کاهش خطاهای Startup
• مناسب برای پروژههای دارای Sequence پیچیده
محدودیتهای OB100
OB100 فقط یک بار اجرا میشود و نباید منطق عملیاتی یا کنترل مداوم فرآیند در آن قرار گیرد. همچنین از انجام پردازشهای طولانی که ورود CPU به حالت RUN را به تأخیر میاندازند، باید خودداری شود.
OB121 چیست؟
OB121 با عنوان Programming Error Organization Block شناخته میشود.
این بلوک زمانی اجرا میشود که CPU در هنگام اجرای برنامه با یک خطای نرمافزاری مواجه شود.
در حالت عادی، وقوع چنین خطاهایی میتواند باعث انتقال CPU به وضعیت STOP شود. اما اگر OB121 در پروژه وجود داشته باشد، سیستمعامل ابتدا آن را اجرا میکند و به برنامهنویس فرصت میدهد تا خطا را مدیریت یا ثبت کند.
چه خطاهایی باعث اجرای OB121 میشوند؟
نمونههایی از خطاهای رایج عبارتاند از:
• فراخوانی نادرست یک بلوک
• پرش به آدرس نامعتبر
• اجرای دستور با پارامتر غیرمجاز
• خطاهای ناشی از ساختار برنامه
• برخی خطاهای زمان اجرا (Runtime Errors)
مثال صنعتی
در پروژهای مربوط به یک واحد تصفیه گاز، هنگام بهروزرسانی نرمافزار، یک بلوک با پارامتر اشتباه فراخوانی میشود.
CPU خطا را تشخیص میدهد و بهجای توقف فوری، OB121 را اجرا میکند.
در این بلوک میتوان:
• نوع خطا را ثبت کرد.
• آدرس بلوک معیوب را ذخیره نمود.
• پیام هشدار برای HMI ارسال کرد.
• اطلاعات را برای تیم تعمیرات ثبت نمود.
این اطلاعات در زمان عیبیابی و تحلیل ریشهای خطا (Root Cause Analysis) بسیار ارزشمند هستند.
مزایای OB121
• مدیریت خطاهای برنامهنویسی
• ثبت اطلاعات قبل از توقف CPU
• تسهیل عملیات Debug
• کاهش زمان عیبیابی
• افزایش قابلیت نگهداری نرمافزار
محدودیتهای OB121
وجود OB121 به این معنا نیست که CPU همیشه به اجرای برنامه ادامه خواهد داد. در بسیاری از خطاهای بحرانی، پس از اجرای این بلوک، CPU همچنان برای حفظ ایمنی وارد حالت STOP میشود. بنابراین هدف اصلی OB121، ثبت و مدیریت خطا است، نه حذف آن.
OB122 چیست؟
OB122 با عنوان I/O Access Error Organization Block شناخته میشود.
این بلوک زمانی اجرا میشود که برنامه PLC بخواهد به یک آدرس ورودی یا خروجی دسترسی پیدا کند، اما آن آدرس به هر دلیل در دسترس نباشد.
این وضعیت ممکن است در اثر خرابی ماژول، حذف یک کارت I/O، تغییر پیکربندی سختافزار یا قطع ارتباط با Remote I/O ایجاد شود.
مواردی که باعث اجرای OB122 میشوند
• دسترسی به آدرس I/O ناموجود
• حذف یا خرابی ماژول ورودی و خروجی
• قطع ارتباط با Remote I/O
• عدم تطابق بین برنامه و HW Config
• خطا در دسترسی مستقیم به تجهیزات
مثال صنعتی
در یک واحد فرآورش گاز، یک ایستگاه ET200 برای تعمیرات از مدار خارج شده است.
برنامه PLC همچنان تلاش میکند مقدار یکی از ورودیهای آن را بخواند.
در صورت وجود OB122، سیستمعامل ابتدا این بلوک را اجرا میکند.
در این بلوک میتوان:
• آدرس ماژول از دسترس خارجشده را ثبت کرد.
• پیام مناسب برای HMI ارسال نمود.
• تجهیزات وابسته را در وضعیت ایمن قرار داد.
• تیم نگهداری را از محل خطا مطلع کرد.
در غیر این صورت، احتمال انتقال CPU به حالت STOP وجود دارد.
مزایای OB122
• مدیریت خطاهای دسترسی به I/O
• کاهش توقفهای ناخواسته
• مناسب برای سیستمهای دارای Remote I/O
• افزایش قابلیت اطمینان نرمافزار
• تسهیل عملیات تعمیر و نگهداری
محدودیتهای OB122
OB122 خرابی سختافزار را برطرف نمیکند؛ بلکه امکان مدیریت و ثبت آن را فراهم میسازد. برای بازگرداندن سیستم به شرایط عادی، علت اصلی خطا باید در تجهیزات یا شبکه ارتباطی رفع شود.
مقایسه OB100، OB121 و OB122
|
ویژگی
|
OB100
|
OB121
|
OB122
|
|
نوع عملکرد
|
راهاندازی CPU
|
خطای برنامهنویسی
|
خطای دسترسی به I/O
|
|
زمان اجرا
|
هنگام ورود CPU به
RUN
|
هنگام بروز Runtime Error
|
هنگام خطای دسترسی به تجهیزات
|
|
وابستگی به Scan Time
|
ندارد
|
ندارد
|
ندارد
|
|
مناسب برای مقداردهی اولیه
|
✔
|
✖
|
✖
|
|
مناسب برای ثبت خطا
|
محدود
|
✔
|
✔
|
|
مناسب برای سیستمهای Remote I/O
|
✖
|
✖
|
✔
|
|
نمونه کاربرد
|
Startup واحد فرآیندی
|
ثبت Programming Error
|
خرابی ET200 یا کارت I/O
|
بهترین روشهای طراحی در پروژههای نفت، گاز و پتروشیمی
در پروژههای صنعتی، این سه بلوک نقش مهمی در افزایش قابلیت اطمینان نرمافزار دارند. توصیه میشود:
• از OB100 برای ایجاد یک وضعیت اولیه ایمن (Safe Startup) استفاده کنید و قبل از فعال شدن تجهیزات، وضعیت فرآیند و تجهیزات حیاتی را بررسی نمایید.
• OB121 را به ثبت و گزارش خطاهای نرمافزاری اختصاص دهید تا در مراحل FAT، SAT و بهرهبرداری، تحلیل و رفع اشکالات با سرعت بیشتری انجام شود.
• در OB122 منطق لازم برای مدیریت خرابی ماژولها و Remote I/Oها را پیادهسازی کنید تا از توقف غیرضروری CPU جلوگیری شده و تجهیزات به وضعیت ایمن منتقل شوند.
• پیامهای ثبتشده در این بلوکها را با سیستمهای HMI، SCADA و Event Logging یکپارچه کنید تا تیم بهرهبرداری و نگهداری تصویر دقیقی از وضعیت سیستم در اختیار داشته باشد.
• در هیچیک از این OBها از پردازشهای سنگین یا زمانبر استفاده نکنید؛ وظیفه اصلی آنها ثبت، مدیریت و آمادهسازی سیستم برای ادامه کار یا توقف کنترلشده است.
ویژگی ها
OB100، OB121 و OB122 آخرین حلقههای زنجیره مدیریت چرخه عمر برنامه در PLCهای Siemens S7-300 و S7-400 هستند. این بلوکها بهترتیب راهاندازی ایمن CPU، مدیریت خطاهای برنامهنویسی و کنترل خطاهای دسترسی به تجهیزات را بر عهده دارند. طراحی صحیح آنها نهتنها احتمال توقف ناخواسته سیستم را کاهش میدهد، بلکه کیفیت عیبیابی، سرعت راهاندازی و قابلیت اطمینان پروژههای نفت، گاز و پتروشیمی را بهطور چشمگیری افزایش میدهد.
در بخش پایانی این مجموعه، یک جدول مقایسه جامع تمام Organization Blockهای پرکاربرد، نکات طراحی پروژههای EPC، اشتباهات رایج مهندسان PLC، سؤالات متداول (FAQ) ویژه سئو، متادیسکریپشن و Schema Article ارائه خواهد شد تا این مجموعه به یک مرجع کامل برای مهندسان و مدیران پروژه تبدیل شود.
بخش نهایی
در معماری PLCهای Siemens SIMATIC S7-300 و S7-400، Organization Blockها (OB) ستون فقرات اجرای برنامه محسوب میشوند. برخلاف تصور بسیاری از برنامهنویسان که OBها را صرفاً بهعنوان نقاط ورود برنامه میشناسند، این بلوکها در واقع رابط میان سیستمعامل CPU و منطق کنترلی هستند و نحوه مدیریت چرخه اجرای برنامه، وقفههای زمانی، رویدادهای سختافزاری، خطاهای نرمافزاری و فرآیند راهاندازی را تعیین میکنند.
در این مجموعه مشاهده کردیم که هر Organization Block برای یک مأموریت مشخص طراحی شده است. OB1 مسئول اجرای چرخه اصلی برنامه است، OB10 و OB20 مدیریت رویدادهای زمانی را بر عهده دارند، OB35 اجرای دورهای وظایف زمانحساس را تضمین میکند، OB40 به وقفههای سختافزاری پاسخ میدهد، OB82 پیامهای تشخیصی تجهیزات را مدیریت میکند، OB86 خرابی Rackها و Remote I/O را کنترل میکند و در نهایت OB100، OB121 و OB122 راهاندازی ایمن CPU و مدیریت خطاهای نرمافزاری و سختافزاری را بر عهده دارند.
در پروژههای بزرگ Oil & Gas، Petrochemical، Refinery، LNG، نیروگاهها و صنایع فولاد، طراحی صحیح ساختار OBها مستقیماً بر شاخصهایی مانند Availability، Reliability، Maintainability و زمان Commissioning تأثیر میگذارد. پروژههایی که معماری مناسبی برای Organization Blockها دارند، در مراحل FAT، SAT و بهرهبرداری با خطاهای کمتر، زمان توقف کوتاهتر و هزینه نگهداری پایینتر همراه خواهند بود.
جدول مقایسه جامع تمام Organization Blockهای پرکاربرد
|
Organization
Block
|
نوع
اجرا
|
زمان
اجرا
|
کاربرد
اصلی
|
نمونه
کاربرد صنعتی
|
|
OB1
|
Cyclic
|
در هر Scan
|
اجرای برنامه اصلی
|
منطق فرآیند، کنترل تجهیزات
|
|
OB10
|
Time of Day
Interrupt
|
ساعت مشخص
|
عملیات زمانبندیشده
|
گزارش شیفت، تغییر Recipe
|
|
OB20
|
Time Delay
Interrupt
|
پس از تأخیر مشخص
|
اجرای Sequence
|
باز شدن ولو پس از استارت پمپ
|
|
OB35
|
Cyclic
Interrupt
|
دوره زمانی ثابت
|
کنترلهای سریع
|
PID، نمونهبرداری آنالوگ
|
|
OB40
|
Hardware
Interrupt
|
هنگام وقوع Event
|
واکنش سریع
|
ESD، لرزش کمپرسور، Limit Switch
|
|
OB82
|
Diagnostic
Interrupt
|
هنگام پیام تشخیصی
|
مدیریت خطاهای سختافزار
|
خرابی کارت، خطای سنسور
|
|
OB86
|
Rack
Failure
|
قطع Rack یا
Remote I/O
|
مدیریت ارتباط تجهیزات
|
خرابی ET200،
قطع
PROFIBUS
|
|
OB100
|
Startup
|
هنگام RUN شدن CPU
|
مقداردهی اولیه
|
راهاندازی ایمن واحد
|
|
OB121
|
Programming
Error
|
هنگام Runtime Error
|
ثبت خطاهای برنامه
|
اشکال در فراخوانی بلوک
|
|
OB122
|
I/O Access
Error
|
هنگام خطای دسترسی
|
مدیریت خطای I/O
|
حذف کارت، قطع Remote I/O
|
راهنمای انتخاب Organization Block مناسب
|
اگر
هدف شما...
|
Organization
Block پیشنهادی
|
|
اجرای
برنامه اصلی
PLC
|
OB1
|
|
اجرای
عملیات در ساعت مشخص
|
OB10
|
|
اجرای
عملیات پس از تأخیر زمانی
|
OB20
|
|
اجرای
حلقههای کنترلی با زمان ثابت
|
OB35
|
|
واکنش
فوری به سیگنال سختافزاری
|
OB40
|
|
مدیریت
پیامهای تشخیصی تجهیزات
|
OB82
|
|
مدیریت
خرابی
Rack یا
Remote I/O
|
OB86
|
|
مقداردهی
اولیه هنگام
Startup
|
OB100
|
|
مدیریت
خطاهای برنامهنویسی
|
OB121
|
|
مدیریت
خطاهای دسترسی به تجهیزات
|
OB122
|
نکات طراحی پروژههای EPC
در پروژههای EPC، کیفیت نرمافزار PLC تنها به صحت عملکرد برنامه محدود نمیشود؛ بلکه ساختار اجرای برنامه باید به گونهای طراحی شود که توسعه، عیبیابی و نگهداری سیستم در طول عمر پروژه نیز ساده باشد. بر همین اساس رعایت نکات زیر توصیه میشود:
• از OB1 تنها برای هماهنگی و مدیریت چرخه اصلی استفاده کنید و منطقهای زمانحساس را به OBهای اختصاصی منتقل نمایید.
• حلقههای کنترلی PID، نمونهبرداری سریع و پردازشهای دورهای را در OB35 اجرا کنید.
• عملیات وابسته به زمان واقعی مانند گزارشگیری، تغییر شیفت و Batch را در OB10 پیادهسازی نمایید.
• برای توالیهای راهاندازی و توقف تجهیزات از OB20 استفاده کنید.
• سیگنالهای حفاظتی و وقفههای سختافزاری را در OB40 مدیریت کنید.
• تمامی پیامهای Diagnostic را در OB82 ثبت و به HMI یا SCADA ارسال نمایید.
• برای سیستمهای دارای Remote I/O، منطق Fail Safe را در OB86 و OB122 پیشبینی کنید.
• در OB100 وضعیت اولیه تجهیزات و متغیرها را مقداردهی کرده و از راهاندازی ناخواسته فرآیند جلوگیری نمایید.
• در OB121 اطلاعات خطاهای نرمافزاری را ثبت کنید تا تحلیل علل ریشهای (Root Cause Analysis) در مراحل بهرهبرداری و تعمیرات آسانتر شود.
• از قرار دادن پردازشهای سنگین در OBهای وقفهای خودداری کنید تا زمان پاسخ سیستم حفظ شود.
اشتباهات رایج مهندسان PLC
حتی در پروژههای بزرگ نیز برخی خطاهای طراحی بهطور مکرر مشاهده میشوند که میتوانند بر عملکرد و قابلیت اطمینان سیستم اثر منفی بگذارند:
• قرار دادن تمام منطق برنامه در OB1 و بیتوجهی به Organization Blockهای تخصصی.
• اجرای حلقههای PID در OB1 به جای OB35.
• عدم استفاده از OB100 برای مقداردهی اولیه و راهاندازی ایمن CPU.
• حذف OB121 و از دست دادن اطلاعات ارزشمند خطاهای نرمافزاری.
• نادیده گرفتن OB122 در پروژههای دارای Remote I/O و شبکههای صنعتی.
• انجام پردازشهای سنگین و زمانبر در OBهای وقفهای.
• ثبت نکردن پیامهای تشخیصی در OB82 و OB86.
• طراحی بدون در نظر گرفتن شرایط FAT، SAT و Commissioning.
• وابسته کردن عملکرد سیستم به Scan Time بهجای استفاده از OBهای مناسب.
• مستندسازی ناقص ساختار Organization Blockها که نگهداری پروژه را دشوار میکند.
پرسشهای متداول (FAQ)
1. Organization Block یا OB در PLC زیمنس چیست؟
OBها بلوکهایی هستند که توسط سیستمعامل CPU فراخوانی میشوند و ترتیب و شرایط اجرای برنامه PLC را مدیریت میکنند.
2. مهمترین Organization Block در STEP7 کدام است؟
OB1، زیرا چرخه اصلی اجرای برنامه در آن انجام میشود.
3. تفاوت OB10 و OB20 چیست؟
OB10 در ساعت مشخص اجرا میشود، اما OB20 پس از سپری شدن یک زمان تأخیر از وقوع یک رویداد فعال میشود.
4. چرا برای PID از OB35 استفاده میشود؟
زیرا OB35 با دوره زمانی ثابت اجرا میشود و دقت نمونهبرداری را حفظ میکند.
5. OB40 چه کاربردی دارد؟
برای پاسخ سریع به وقفههای سختافزاری مانند ESD، Limit Switch یا سنسورهای حفاظتی.
6. وظیفه OB82 چیست؟
مدیریت پیامهای تشخیصی تجهیزات و ماژولهای سختافزاری.
7. OB86 چه زمانی اجرا میشود؟
در صورت قطع ارتباط Rack یا Remote I/O.
8. OB100 چه زمانی اجرا میشود؟
پس از انتقال CPU از حالت STOP به RUN.
9. کاربرد OB121 چیست؟
ثبت و مدیریت خطاهای برنامهنویسی در زمان اجرای برنامه.
10. OB122 چه مشکلی را مدیریت میکند؟
خطاهای ناشی از دسترسی به آدرسهای I/O نامعتبر یا تجهیزات در دسترس نبودنی.
11. آیا همه پروژهها به تمام OBها نیاز دارند؟
خیر، انتخاب OBها به معماری سیستم، نیازهای فرآیند و تجهیزات مورد استفاده بستگی دارد.
12. آیا استفاده از OBها باعث افزایش سرعت CPU میشود؟
خیر، اما باعث بهینهسازی ساختار برنامه، کاهش زمان پاسخ در رویدادهای خاص و افزایش قابلیت اطمینان سیستم میشود.
13. آیا OBهای وقفهای جایگزین OB1 هستند؟
خیر، آنها مکمل OB1 هستند و برای مدیریت رویدادهای خاص طراحی شدهاند.
14. بهترین روش طراحی پروژههای نفت و گاز چیست؟
تقسیم منطق برنامه بر اساس وظایف و استفاده از Organization Block مناسب برای هر نوع رویداد.
15. چرا شناخت کامل Organization Blockها برای مدیران پروژه اهمیت دارد؟
زیرا معماری صحیح نرمافزار PLC مستقیماً بر زمان راهاندازی، قابلیت توسعه، هزینه نگهداری و دسترسپذیری سیستم کنترل اثر میگذارد.
نتیجهگیری نهایی
در پروژههای مدرن اتوماسیون صنعتی، شناخت Organization Blockها تنها یک موضوع آموزشی نیست، بلکه بخشی از دانش مهندسی طراحی سیستمهای کنترل محسوب میشود. انتخاب صحیح هر OB، تفکیک مناسب وظایف و رعایت اصول معماری نرمافزار، باعث افزایش کیفیت پروژه، کاهش ریسک در مراحل راهاندازی و بهرهبرداری، و بهبود قابلیت نگهداری در کل چرخه عمر سیستم خواهد شد. برای مدیران پروژه، این رویکرد به معنای کاهش هزینههای توقف، افزایش قابلیت اطمینان و تحویل پروژهای استاندارد و توسعهپذیر است. در این مقاله آموزش کامل Organization Block (OB) با تمام جزئیات مورد نیاز مدیران پروژه تشریح گردید در صورت نیاز به مشاوره و یا داشتن سوالات تخصصی در زمینه OBها کارشناسان الکترونت که جمعی از مهندسین مجرب تشکیل می دهند آماده پاسخ گویی می باشند.