این پرسش به طور کلی مشابه این است که بخواهیم بدانیم چه ابزاری را با توجه به محدودیت فضا در جعبه ابزار خود قرار دهیم (بهترین انتخاب با توجه به جمیع جهات). همانطور که ابزارهای مختلف با کاربردهای متفاوت در یک جعبه ابزار وجود دارند، هر زبان برنامه نویسی PLC نیز به دلایل مشخص و برای کاربردهای خاصی ارائه شده است.
نکتهای که پاسخ به این پرسش را برای ما کمی دشوارتر میکند، این است که زبانهای برنامهنویسی مختلف در برخی کشورها و صنایع مشخص، نسبت به دیگر زبانها، محبوبتر هستند.
بنابراین، بهترین زبان برنامهنویسی PLC برای یادگیری ممکن است بسته به محل زندگی شما و صنعتی که به آن علاقمند هستید، متفاوت باشد.
در این مقاله، ویژگیهای اصلی پنج زبان برنامهنویسی IEC 61131-3 را به همراه نقاط قوت و ضعف هر یک و موارد استفاده آنها تشریح میکنیم تا شما راحتتر بتوانید تصمیم بگیرید که کدام زبانهای برنامهنویسی PLC را در اولویت خود قرار دهید.
توجه داشته باشید IEC 61131-3 استانداردی است که توسط کمیسیون بین المللی الکتروتکنیک تدوین شده و تمام زبانهای برنامهنویسی PLC را تعریف میکند.
یک برنامهنویس حرفه ای PLC باید بتواند از تمام ابزارهای موجود و در دسترس استفاده کند.
این بدان معنی است که شما باید توانایی نوشتن منطق در هر یک از زبانهای اصلی برنامهنویسی PLC را داشته باشید تا همیشه بتوانید از زبان بهینه برای یک کاربرد خاص استفاده کنید.
بحث خود را با توصیف زبان برنامه نویسی لدر(LD) ادامه میدهیم.
زبان برنامه نویسی لدر یا نردبانی (LD)
Ladder Diagram یا LD، به عنوان رایج ترین زبان برنامه نویسی PLC شناخته میشود. در واقع لدر یک زبان برنامه نویسی گرافیکی و سطح بالا است که برای خواندن و درک آسان به منظور سهولت در تعمیر و نگهداری و عیب یابی طراحی شده است.
به طور کلی Ladder Diagram اولین زبان برنامه نویسی PLC است که اغلب برنامه نویسان PLC آن را یاد میگیرند، چرا که اکثر شرکتها مایل به استخدام مهندسانی هستند که بتوانند با Ladder Diagram برنامه نویسی کنند. این امر به ویژه در آمریکای شمالی مصداق پیدا میکند.
در قطعه کد گرافیکی زیر میتوانید یک نمونه از منطق Ladder Diagram را مشاهده کنید:
هر خط کد مشابه یک پله از نردبان است و هر پله با یک ریل تغذیه عمودی (ولتاژ مثبت) شروع میشود.
در سمت راست هر پله دستورالعملهای خروجی که با نام کویل (coil) شناخته میشوند، قرار گرفته و خروجیهای فیزیکی (ماژولهای مختلف) را روشن یا خاموش میکنند. در سمت چپ هر پله نیز دستورالعملهای ورودی قرار داشته که جریان منطقی از ریل تغذیه در طول پله را مجاز یا مسدود میکنند.
زمانی که یک مسیر کامل از ریل تغذیه تا کویل وجود داشته باشد، خروجی روشن میشود.
همان گونه که مشاهده میشود، بزرگترین مزیت Ladder Diagram ماهیت گرافیکی آن است. حتی اگر شما برنامه نویس هم نباشید، در نظر گرفتن یک پله و اشکال زدایی منطقی در آن برای شما بسیار ساده خواهد بود.
شایان ذکر است که Ladder Diagram یک زبان برنامه نویسی بسیار مناسب برای منطق پیچیده بولی نیز به شمار میرود.
برای کاربردهای دیگر، به طور معمول از سایر زبانهای برنامه نویسی معرفی شده در IEC 61131-3 مانند Function Block Diagram (FBD) استفاده میشود.
نمودار بلوک تابع (FBD)
Function Block Diagram یا FBD نمونه ای دیگر از زبانهای برنامه نویسی گرافیکی برای PLCها محسوب میشود.
در FBD، بلوکهای تابع روی یک صفحه قرار گرفته و به هم متصل میشوند. نتیجه نهایی بسیار شبیه به نمودار لوله کشی و تجهیزات کنترلی ابزار دقیق (P&ID) به نظر میرسد.
مزیت عمده FBD نسبت به زبان لدر در این است که خروجی یک بلوک تابع میتواند به بلوک بعدی جریان یافته یا به عنوان فیدبک، بدون استفاده از متغیرهای میانی مورد استفاده قرار گیرد.
این ویژگی FBD باعث شده تا استفاده از آن برای کنترل فرآیندهای پیوسته که در آن مقادیر آنالوگ دائماً در حال نظارت بوده و خروجیها همواره برای حفظ مقادیر در محدوده مورد نظر تنظیم میشوند، بسیار مناسب باشد.
به دلیل شباهت FBD به P&ID و توانایی آن در کنترل آسان فرآیندهای پیوسته، از این زبان برنامه نویسی معمولاً در صنایع فرآیندی استفاده میشود.
در شکل زیر قطعه کدی از FBD نمایش داده شده که به منظور نظارت بر سطح یک مخزن مورد استفاده قرار میگیرد:
در اینجا، ورودی آنالوگ از شیر پرکننده با مقدار تعیین شده برای سطح مخزن مقایسه میشود. مقدار تعیین شده برای سطح مخزن به یک بلوک تابع وارد میشود که نوع داده اندازهگیری شده را به یک عدد صحیح تبدیل می کند.
در ادامه، این مقدار با نقاط تنظیم از پیش تعریف شده مقایسه میشود تا flagهای تعیین شده، سطح مخزن را نشان دهند.
FBD برای کنترل فرآیندهای پیوسته بسیار مناسب است، اما برای محاسبات پیچیده مانند محاسبه سطح یک مخزن، زبان برنامهنویسی ST که یک زبان مبتنی بر متن ساختاریافته است، عملکرد بهتری دارد.
زبان برنامه نویسی مبتنی بر متن ساختاریافته (ST)
Structured Text یا ST، یک زبان برنامه نویسی مبتنی بر متن برای PLC بوده و به طور معمول مورد پسند برنامه نویسان جوانتری است که با زبانهای برنامه نویسی مبتنی بر متن مانند پایتون کار میکنند.
بسیاری از مهندسان قدیمی تمایل به استفاده از زبان برنامهنویسی ST را ندارند، زیرا درک و اشکال زدایی کدها برای مهندسانی که در واحدهای تعمیر و نگهداری فعالیت میکنند، نسبت به دیگر زبانها دشوارتر است.
به طور کلی، ST برای انجام عملیات پیچیده محاسباتی و همچنین ایجاد حلقه در داده ساختارها مانند آرایهها بسیار قدرتمند است.
قطعه کد ST که در شکل زیر نمایش داده شده است، سطح پر شدن یک مخزن را بر اساس حجمی که در هر بار اسکن POU به مخزن اضافه میشود، محاسبه میکند.
نمودار توابع متوالی یا سلسله مراتبی (SFC)
Sequential Function Chart یا SFC، یک زبان برنامه نویسی مشابه با فلوچارت است که برای ساخت ماشینهای حالت و سنجش و کنترل توالی در فرآیندها مورد استفاده قرار میگیرد.
در واقع SFC یک زبان فوقالعاده ساده برای طراحی است. در این زبان برنامه نویسی برای هر حالتی که توسط فرآیند شما پشتیبانی میشود یک بلوک ایجاد کرده و عملهایی که برای حالتهای مختلف ماشین انجام میشوند را به همراه شرایطی که برای انتقال از یک حالت به حالت دیگر لازم است، برنامهریزی میکنید.
توجه داشته باشید که نظارت و اشکالزدایی SFC در زمان اجرا نیز آسان است، زیرا شما میتوانید دقیقاً ببینید چه وضعیتی فعال است و چه شرایطی باید برای انتقال به حالت بعدی برقرار باشد.
شایان ذکر است که زبان برنامه نویسی SFC تنها برای توصیف ماشینهای حالت سطح بالا و سنجش و کنترل توالی مناسب است.
در اکثر پلتفرمها، عملهایی که در حین فعال بودن یک مرحله انجام میشوند، به زبان ST نوشته شده و اغلب برنامهنویسها به منظور مدیریت این عملها، یک POU نوشته شده به زبان برنامهنویسی دیگری مانند LD یا FBD را فراخوانی میکنند.
در قطعه کد SFC زیر، ما در حال کنترل یک سنجشگر توالی هستیم که مخزنی را به طور مداوم پر و خالی میکند.
هنگامی که مخزن در حال پر یا خالی شدن است، عملیاتی برای باز و بسته کردن شیرها انجام شده و شرایط برای گذر از یک مرحله به مرحله دیگر، بسته به سطح مخزن یا عملیاتی که توسط اپراتور انجام شده، تعیین میشود.
فهرست دستورالعمل (IL)
در نهایت، زبان Instruction List یا IL یک زبان برنامه نویسی از رده خارج یا منسوخ بوده که شباهت زیادی به زبان برنامه نویسی اسمبلی دارد.
اگر در واحد تعمیر و نگهداری فعالیت میکنید، ممکن است با Instruction List مواجه شوید، اما توصیه اکثر تولیدکنندگان این است که از Instruction List برای پروژه های جدید استفاده نکنید.