آشنایی با برنامه نویسی صنعتی
اتوماسیون و کنترل صنعتی در سال 1969 با برنامه نویسی منطقی نردبان بصری و تبدیل شدن به استاندارد IEC 61131-3 کمیسیون بین المللی الکتروتکنیکی (IEC) اولین بار در سال 1993 منتشر شد. این استاندارد همچنان در کمیتههای IEC و سازمان تجاری غیرانتفاعی که متشکل از طیف گستردهای از متخصصان صنعت داوطلب است که بطور مداوم کارکردهای جدیدی را برای برآورده کردن نیازهای صنعت جدید تعریف و اضافه میکنند، ارتقا و گسترش مییابد. پیشرفتهای قابل توجه در زمینه برنامه نویسی صنعتی عبارتند از ایمنی صنعتی، کنترل حرکت و روباتیک. با مقاله امروز سپیانی همراه باشید تا تمام اطلاعات لازم را درباره برنامه نویسی صنعتی کسب کنید.
مطالب مرتبط:
زبان های برنامه نویسی PLC دلتا
OOP یا OOIP؟
وقتی از معنای برنامه نویسی شیگرا پرسیده میشود. پاسخ بین اعضای انجمن کنترلهای صنعتی (OT) در مقابل اعضای جامعه علوم کامپیوتر (IT) بسیار متفاوت است. برای تمایز این دو در این مقاله، به تعبیر کنترلهای صنعتی بهعنوان برنامهنویسی صنعتی شیگرا (OOIP) اشاره میکنیم و هر کدام را بصورت زیر تعریف میکنیم:
برنامه نویسی شیگرا از مجموعه کامل تکنیکهای OOP استفاده میکند، عمدتاً مبتنی بر متن است و در درجه اول حوزه دانشمندان کامپیوتر با تحصیلات عالی است. برنامه نویسی صنعتی شی گرا فقط از کپسوله سازی، رابطها و انتزاع استفاده میکند. از آنها برای ساختن سیستمهایی از بلوکهای عملکردی قابل استفاده مجدد استفاده میکند، در درجه اول مبتنی بر گرافیک است و توسط مهندسان کنترل و تکنسینهای کارخانه با حداقل آموزش قابل استفاده است.
مهندسی نرم افزار کنترلهای صنعتی دارای الزامات منحصر بفردی برای قابلیت اطمینان بالا و سهولت استفاده توسط طیف گستردهای از کاربران است. اینها دلایلی هستند که چرا زبانهای گرافیکی پایه اصلی برنامه نویسی کنترلهای صنعتی بودهاند و مهندسان کنترلهای صنعتی تمایل دارند منتظر بمانند تا آخرین گرایشها در علوم کامپیوتر قبل از پذیرش جریان اصلی کنترلهای صنعتی به بلوغ برسد (مانند آدرس دهی نمادین و ساختارهای داده که هر دو به مدت 20 سال قبل از ورود به آن بالغ شدهاند).
حتما بخوانید:
تحولی در برنامه نویسی صنعتی
برنامه نویسی شی گرا (OOP) توسط دانشمندان کامپیوتر در دهه 1990 مورد استفاده قرار گرفت. اما بدلیل پیچیدگی و عدم وجود یک محیط زبان گرافیکی پشتیبانی، به کندی در دنیای کنترلهای صنعتی پذیرفتهشد. خوشبختانه، فروشندگان ابزار مانند CODESYS شروع به رسیدگی به این مشکلات کردهاند. برای بهرهمندی از برنامه نویسی صنعتی شی گرا، برنامه نویسان کنترل فقط به سه مفهوم OOP نیاز دارند: کپسوله سازی، رابطها و انتزاع. همه اینها به تفصیل در ادامه این مقاله توضیح داده خواهد شد.
OOIP مزایای OOP را ارائه میدهد اما به روشی که برای برنامه نویسان صنعتی آشنا است و توسط برنامه نویسان صنعتی قابل نگهداری است. این یعنی بهترین هر دو جهان را دارید: بهرهوری OOP با سادگی و قابلیت اطمینان برنامه نویسی سنتی PLC . برنامه نویسی شی گرا (OOP) برای کتابخانههای ایجاد شده توسط دانشمندان کامپیوتر بسیار آموزش دیده، مانند کتابخانههای ایجاد شده توسط برنامه نویسان در CODESYS، بخوبی کار میکند. این کتابخانهها میتوانند توسط مهندسان کنترلی که نیازی به دانستن یا درک پیچیدگیهای موجود در کتابخانه ندارند، استفاده شوند.
چرا OOIP؟
برنامه نویسی صنعتی شی گرا (OOIP) طراحی کارخانه یا تجهیزات شما را ساده میکند و استفاده مجدد از اشیاء کنترلی را در طرحهای آینده بسیار آسان تر و بیشتر میکند. دستگاه یا تجهیزات شما از اشیاء (موتورها، محرک ها، حسگرها و…) ساخته شده است. کنترل کارخانه یا تجهیزات شما نیز باید همینطور باشد! همانطور که یک موتور یک شی کاملاً مستقل است که نیازی به مونتاژ یا اصلاح ندارد، کنترل آن موتور نیز باید یک شیء مستقل باشد که نیازی به مونتاژ یا اصلاح ندارد.
در اصطلاح نرم افزاری، این بعنوان کپسوله سازی شناخته میشود. هر چیزی که برای کنترل موتور لازم است در داخل بلوک کنترل موتور محصور شده است. فقط آن را در طراحی قرار دهید و کار میکند. همانطور که طراح کارخانه یا تجهیزات برای تعیین و نصب موتور نیازی به متخصص طراحی موتور ندارد، طراح کنترل نیز برای پیکربندی و استفاده از بلوک کنترل موتور نیازی به متخصص کنترل موتور ندارد. استفاده مجدد از بلوکهای کنترلی در کد کنترل شما باید به اندازه استفاده مجدد از تجهیزات فیزیکی در کارخانه شما آسان باشد.
اشیاء تجهیزات فیزیکی مشخص، خریداری و نصب میشوند – اشیاء کنترلی قرار میگیرند، سیم کشی میشوند و پیکربندی میشوند. روند فکر یکسان است و هر دو در واقع میتوانند بصورت موازی انجام شوند. در آینده، سازندگان تجهیزات ممکن است بلوکهای کنترل OOIP را برای تجهیزات خود همراه با تجهیزات فیزیکی تامین کنند.
حتما بخوانید:
تکامل از برنامه نویسی مسطح:
در روزهای اولیه اتوماسیون صنعتی، برنامه نویسی مسطح بود. ورودیها را خواندیم، ورودیها را مقیاسبندی کردیم، آلارمهایی را روی ورودیها ایجاد کردیم، الگوریتمهای کنترلی را برای تولید خروجی انجام دادیم، هشدار را روی خروجیها انجام دادیم، خروجیها را مقیاسبندی کردیم و خروجیها را با استفاده از I/O نگاشت شدهبا حافظه نوشتیم. بعداً وقتی توابع در دسترس قرار گرفت، برخی از کدهای تکراری را ادغام کردیم، اما این فرآیند هنوز اساساً مسطح بود.
برنامه نویسی صنعتی وظیفه گرا یا شی گرا؟
هنگامی که نرم افزار کنترل شروع به انجام وظایف متعدد کرد، برنامه نویسان صنعتی یک رویکرد متمرکز وظیفه محور را اتخاذ کردند. این رویکرد، عملیات را به وظایف جداگانه تقسیم کرد و سپس دنبالهای از فرآیندهای متمرکز، هر عملیات جداگانه را بر روی برچسبهای برنامه انجام داد. کار اول همه ورودیها را میخواند، کار بعدی همه ورودیها را مقیاسبندی میکند، کار بعدی روی نقاط مقیاسشده هشدار میدهد و… .
ویژگی اصلی رویکرد مبتنی بر وظیفه، تعدادی لیست و فرآیند است که باید حفظ شوند. بعنوان مثال، در یک رویکرد مبتنی بر کار، ابتدا لیست متغیرهای جهانی اضافه میشود، سپس عملکرد در چندین لایه که از آن رشد میکند (مانند مقیاس بندی، هشدار، فیلتر کردن، ورود به سیستم، حفظ، تجسم و…) پیچ میشود. هر گونه اصلاح یا اضافه شدن به عملکرد اصلی نیاز به اصلاح یا بروز رسانی در تمام این لایهها دارد. تلاش زیاد و توجه به جزئیات لازم است تا از دست ندادن مرحلهای در آن فرآیند و ایجاد نقصهای پنهان (که البته تا بدترین لحظه ممکن ظاهر نمیشوند) جلوگیری شود.
این رویکرد متمرکز وظیفه محور پیشرفت بزرگی نسبت به رویکرد مسطح بود، اما از نیاز به اصلاح هر لیست یا کار با اضافه شدن عملکرد جدید به برنامه رنج میبرد. علاوه بر این، برنامه نویسی وظیفه محور اغلب دیدن جریان اطلاعات و درک روابط علت و معلولی در کد کنترل را دشوار میکرد. این امر اشکالات برنامه نویسی را برای طراحی دشوارتر و برای تکنسینهای کارخانه پیچیدهتر کرد.
حتما بخوانید:
برنامه نویسی Step 7 زیمنس چیست؟
ترفند های کاربردی برنامه نویسی PLC
برنامه نویسی PLC زیمنس با زبان Ladder Logic
وظیفه محور بودن در برنامه نویسی صنعتی
OOIP فرآیند وظیفه محور را به سمت خود تغییر میدهد. بجای اینکه عملکرد در میان بسیاری از وظایف پخش شود، عملکرد در داخل “اشیاء” قرار میگیرد. یک شی واحد هر چیزی را که با یک ورودی مرتبط است (خواندن، مقیاسبندی، فیلتر کردن، هشداردهنده، ماندگاری و…) انجام میدهد و آن شی واحد برای هر ورودی مجدداً استفاده میشود. برای قرار دادن ورودی دیگری، به سادگی یک شی ورودی دیگر را مشابه با اشیاء خروجی (مانند موتورها و شیرها) اضافه و پیکر بندی کنید.
در OOIP، از آنجایی که تمام کنترل در داخل شی محصور شدهاست، تنها چیزی که برای افزودن عملکرد اضافی لازم است، اضافه کردن یک بلوک مستقل دیگر است. بدون لیست جداگانه، فرآیندها، متغیرهای جهانی برای بروز رسانی و نگهداری (یا فراموش کردن بروز رسانی). تفاوت بین کنترل مبتنی بر وظیفه و کنترل مبتنی بر شی را میتوان با اشکال مختلف دولت مقایسه کرد. کنترل مبتنی بر وظیفه مشابه یک دولت متمرکز قوی است که در آن عملکرد جدید باید در دفتر مقیاسگذاری فدرال، و اداره فدرال هشدارها و غیره ثبت شود.
برنامه نویسی صنعتی مبتنی بر شی مشابه دولت غیرمتمرکز است که در آن عملکرد جدید از خود پشتیبانی میکند و میتواند تا حد زیادی از خود مراقبت کند. از آنجایی که کارخانههای کنترل صنعتی از اشیاء (مانند: موتورها، نوار نقالهها، شیرها و حسگرها) تشکیل شدهاند، برنامهنویسی شی گرا یک انتخاب طبیعی برای کنترلهای صنعتی است؛ شاید حتی بیشتر از برنامهنویسی علوم کامپیوتر که OOP در ابتدا برای آن ایجاد شد! شاید طبیعیتر باشد که OOP در دنیای PLC اختراع شده و سپس به دنیای فناوری اطلاعات گسترش یابد، نه برعکس.
حتما بخوانید:
کپسوله سازی، رابطها و انتزاع
هدف محاسبات صنعتی شی گرا (OOIP) این است که تمام پیچیدگیها را در یک شی کپسوله کند و پیچیدگی را در سطوح سلسله مراتبی که در آن پیچیدگی لازم است انتزاع کند. کپسوله سازی اجازه میدهد تا اشیایی ایجاد شود که شامل تمام عملکردها و دادههای لازم برای کنترل شی گیاهی تطبیق آن باشد. کاربر نیازی به دانستن یا درک اجرای اساسی ندارد … آنها فقط از آن استفاده میکنند!
یک قیاس خوب موتور ماشین است. این موتور پیستونها، سوپاپها، یاتاقانها و بسیاری از اشیاء دیگر و عملکردهای پیچیده را در خود جای دادهاست. راننده نیازی ندارد که بداند موتور چگونه کار میکند – آنها فقط باید رابطهای آن را درک کنند و با آن تعامل داشته باشند: دکمه استارت و پدال گاز. انتزاع جایی است که جزئیات بر اساس سطح در یک سلسله مراتب گروهبندی میشوند بطوری که برنامهنویس فقط باید با سطح پیچیدگی مربوطه در هر سطحی از طراحی برخورد کند.
ترکیب جایی است که اشیا، اشیاء دیگر را برای ساختن و تقسیم منطقی سیستمهای سلسله مراتبی بزرگ نمونه میکنند. رابطها ابزار استاندارد شدهای برای تعامل با سطح بعدی در سلسله مراتب فراهم میکنند. در قیاس، موستانگ دارای یک موتور است که دارای یک استارت، دارای آرمیچر، دارای سیم مسی است که در مکانهای خاصی در سراسر جهان استخراج و تصفیه میشود. انتزاع به شما امکان میدهد پیچیدگی تودرتوی موتور و استخراج مس آن را به دیگران بسپارید که در آن سطح از جزئیات برای سطح آنها در سلسله مراتب مناسب است. شما فقط باید رابطهای موتور را بشناسید یعنی سوئیچ احتراق و پدال گاز.
شیء متشکل از اشیاء
هدف OOIP ساخت اشیاء کاملاً مستقل و متکی به خود است که میتوانند بدون برنامهنویسی اضافی مورد استفاده قرار گیرند. (مانند افزودن متغیرهای آن به لیست متغیرهای جهانی یا افزودن آلارمهای آن به مدیر زنگ هشدار یا افزودن متغیرهای ثابت آن به مدیر پایداری و…). بلوک را به طرح اضافه کنید، پینهای ورودی برنامه و خروجی برنامه را متصل کنید، پارامترهای آن را پیکربندی کنید و از آن استفاده کنید.
زیبایی این رویکرد محصور کردن تمام عملکردها در یک شی، این است که آن شی میتواند خود بعنوان یک بلوک ساختمانی مستقل و متکی به خود استفاده شود. اگر مخازن اختلاط مجزا یکسان نباشند، ورودیهای پیکربندی برای اصلاح رفتار نمونه برای تطبیق با آن تفاوتها اضافه میشوند. این تا حدودی مشابه ساخت یک ساختمان بلند است. مخزن اختلاط تک طبقه اول است. این نشان دهنده یک پایه محکم است که بر روی آن میتوان طبقه بعدی یعنی کارخانه سه طبقه را ساخت. سپس این میتواند پایه محکمی برای ساختن طبقه بعدی کارخانه باشد. به این ترتیب میتوان یک کارخانه با هر پیچیدگی درست کرد. درست مانند یک بلندمرتبه از هر تعداد طبقه که میتوان تا زمانی که طبقات زیر بدرستی طراحی شده باشد.
حتما بخوانید:
درآمد اتوماسیون کار صنعتی و متخصص PLC
ساز و کار شی اشیا در برنامه نویسی صنعتی
از آنجایی که هر شیء مستقل و متکی به خود است، پیچیدگی با رشد برنامه ثابت میماند، بجای اینکه مانند برنامه نویسی سنتی PLC بصورت تصاعدی رشد کند. اجازه دهید از کنترل کننده موتور بعنوان مثال دیگری استفاده کنیم. از آنجایی که کنترلکننده موتور کاملاً مستقل است، آن را در طرح رها میکنیم، ورودی برنامه «Run» آن را به هر کنترلی که به موتور میگوید کار کند متصل میکنیم، پارامترهای آن را پیکربندی میکنیم (از جمله نقشهبرداری I/O فیزیکی آن)، و کار ما تمام است.
از آنجایی که کنترل کننده موتور کاملاً مستقل و متکی به خود است، تمام هشدارها، راه اندازی مجدد و… خود را کنترل میکند. در بسیاری از موارد، سطحی که از کنترل کننده موتور استفاده میکند حتی نیازی به دانستن اینکه آیا موتور واقعاً روشن شده است یا خیر. این سطح فقط به موتور میگوید که کار کند و تمام. همه چیز در داخل انجام میشود. یعنی، مگر اینکه سطح بعدی نیاز داشته باشد که بداند آیا موتور پاسخ میدهد یا خیر، همانطور که اگر سیستم یک موتور اضافی داشته باشد، این اتفاق میافتد.
حتما بخوانید:
اسکادا (SCADA) چیست؟ کاربرد آن
8 نکته طلایی فرآیندهای اتوماسیون صنعتی
جمع بندی
در این مقاله به برنامه نویسی صنعتی پرداختیم. ابتدا به تفاوتهای برنامه نویسی صنعتی و معمولی شی گرا یا OOP پرداختیم. و سپس اصول برنامه نویسی صنعتی یعنی کپسوله سازی، انتزاع و رابطها را مرور کردیم. چنانچه پس از مطالعه این مقاله سوال یا ابهامی در رابطه با برنامه نویسی صنعتی دارید میتوانید بصورت رایگان از مشاوره متخصصین سپیانی کمک بگیرید. همچنین برای خرید دستگاههای ذکر شده و دیگر تجهیزات لازم و آگاهی از قیمت و مشخصات فنی آنها میتوانید به بخش فروشگاه ما مراجعه کنید. جهت کسب اطلاعات بیشتر همین الان از طریق واتساپ با ما در تماس باشید.