برنامه نویسی PLC با ++C
میانگین امتیاز این مقاله: 0 از 5
( تاکنون 0 نفر امتیاز داده‌اند )

در این مقاله قصد داریم با استفاده از زبان لدر (LD) به همراه ++C، یک PLC را برنامه ­ریزی کنیم. برای این کار، لدر عملیات ساده شروع به کار و توقف موتور را به عهده داشته و ++C گزارش (لاگ) این عملیات را تولید می‌کند.

بدین منظور از Eclipse IDE برای ایجاد پروژه ++C و از Phoenix Technology PLCnext Engineer برای ایجاد برنامه LD استفاده خواهد شد. توجه داشته باشید که PLCnext Engineer برای اجرای هر دو برنامه LD و ++C مورد استفاده قرار می­گیرد.

در نهایت این پروژه با استفاده از I/O و سخت ­افزارهای مورد نیاز در PLCnext Starterkit اجرا خواهد شد.

پیش زمینه و اطلاعات اولیه

پنج زبان برنامه­ نویسی تعریف شده در استاندارد IEC 61131-3 عبارتند از: زبان برنامه ­نویسی لدر یا نردبانی (Ladder Diagram)، فهرست دستورالعمل (Instruction List)، نمودار بلوک تابع (Function Block Diagram)، زبان برنامه نویسی مبتنی بر متن ساختاریافته (Structured Text) و نمودار توابع متوالی یا سلسله مراتبی (Sequential Function Chart).

اکثر نرم­ افزارهای برنامه ­نویسی PLC می­توانند حداقل از دو زبان معرفی شده در استاندارد IEC 61131-3 استفاده کنند.

به طور کلی، نرم­ افزار برنامه ­نویسی PLC قادر به برنامه ­نویسی با زبان­های سطح بالاتر، از جمله ++C نیست. در واقع برنامه ­های ++C با استفاده از نرم ­افزارهای برنامه ­نویسی دیگری ایجاد می­شوند.

در ادامه می­توان برنامه ++C حاصل را به نرم ­افزار برنامه ­نویسی PLC اضافه کرد و یا در کنار آن مورد استفاده قرار داد. به این ترتیب امکان اجرای همزمان برنامه ++C در کنار برنامه ­های معرفی شده در استاندارد IEC 61131-3 وجود خواهد داشت.

IEC

در اینجا ممکن است این سوال مطرح شود که چرا ما در پروژه‌های PLC خود از برنامه‌های زبان سطح بالاتر استفاده می‌کنیم یا اصولاً چه نیازی به آنها داریم؟

پاسخ کوتاه برای پرسش مذکور این است که وظایف پیچیده با زبان‌های سنتی معرفی شده در استاندارد IEC 61131-3 به راحتی انجام نمی‌شوند.

به عنوان مثال، به راحتی می‌توان با ++C داده‌های لاگ را برای استفاده در Predictive Maintenance تولید کرد. یک برنامه با این پیچیدگی را نمی­توان به راحتی با استفاده از زبان‌های معرفی شده در استاندارد IEC 61131-3 مانند لدر ایجاد کرد.

حال ببینیم که چگونه می‌توان برنامه‌های ++C را ایجاد کرد؟

بدین منظور می‌توانیم از ابزاری به نام محیط توسعه یکپارچه یا به اختصار IDE استفاده کنیم. IDE یک بسته کامل است که در کنار تمام ویژگی‌های خاص خود، دارای ویرایشگر برای کدنویسی نیز هست.

در حال حاضر IDEهای متنوعی برای ++C در دسترس قرار دارند که به عنوان دو نمونه بسیار رایج می­توان از Microsoft Visual Studio و Eclipse نام برد. در این میان، Eclipse یکی از ساده‌ترین ویرایشگرها محسوب می­شود و ما از آن در اینجا استفاده خواهیم کرد.

برنامه لدر یا نمودار نردبانی

بحث خود با توصیف یک برنامه لدر که برای کنترل یک موتور نوشته شده است، ادامه می­دهیم.

این برنامه دارای یک متغیر START و یک متغیر STOP بوده که به ورودی‌های IN01 و IN02 ماژول ورودی دیجیتال PLC اختصاص داده شده­ اند.

دکمه‌های فشاری که به طور معمول در حالت باز هستند به ورودی‌های IN01 و IN02 ماژول ورودی دیجیتال PLC متصل شده‌اند.

ladder sample

یک متغیر نیز با نام MOTOR تعریف شده که به خروجی OUT01 ماژول خروجی دیجیتال PLC اختصاص داده شده است.

ladder 2

لدر یا نمودار نردبانی نشان می­دهد که موتور هنگام فشردن دکمه START روشن می‌شود و تا زمانی که دکمه STOP فشرده نشود، متوقف نخواهد شد.

ladder 3

توصیف برنامه‌ ++C

همانطور که قبلاً ذکر شد برنامه‌ ++C با استفاده از ویرایشگر Eclipse IDE نوشته شده و وظیفه ثبت داده‌های لاگ مربوط به فعالیت‌های موتور را بر عهده دارد. در داخل محیط Eclipse IDE، پوشه‌های مربوط به پروژه ++C از طریق Project Explorer در دسترس قرار دارند. با باز کردن پوشه MotorStartStop، چندین فایل و زیرپوشه نمایش داده می­شود. در اینجا می­خواهیم در مورد دو فایل به نام­های MotorStartStopProgram.cpp و MotorStartStopProgram.hpp که در بین فایل­های موجود در پوشه src قرار دارند، بحث کنیم؛ در واقع برنامه‌ اصلی ++C در این دو فایل متنی نوشته شده است.

ladder 4

فایل هدر ++C

ابتدا فایل هدر MotorStartStopProgram.hpp را مورد بررسی قرار می‌دهیم. در این فایل یک پورت ورودی به نام Motor و یک پورت خروجی به نام OUTPORT_MotorStarts تعریف شده است. پورت Motor از نوع بولین و پورت OUTPORT_MotorStarts از نوع int16 یا DINT است.

ladder 5

این پورت‌ها به ++C امکان برقراری ارتباط با برنامه لدر را می­دهد که در نرم‌افزار برنامه‌نویسی PLCnext Engineer توسعه داده شده است. به طور خلاصه، پورت ورودی داده‌ها را خوانده و پورت خروجی داده‌ها را ثبت می‌کند.

programming plc with c

در اینجا یک متغیر داخلی از نوع بولین به نام xPrevMotor نیز وجود داشته که تنها در داخل برنامه ++C استفاده می‌شود و با برنامه خارجی لدر ارتباط برقرار نمی‌کند.

programming plc with c

سورس کد ++C

اکنون فایل MotorStartStopProgram.cpp یا همان سورس کد برنامه را بررسی می­کنیم. همانطور که قبلاً ذکر شد، متغیر داخلی xPrevMotor  تنها در داخل برنامه ++C مورد استفاده قرار می­گیرد.

متغیر Motor نیز به یک پورت ورودی (INPUT Port) اختصاص یافته است.

در خط 10 برنامه (شکل زیر)، با استفاده از دستور if عملیات منطقی‌ای انجام می‌شود تا وضعیت موتور را با وضعیت قبلی آن مقایسه ‌کند:

  • علامت تعجب (!) نمایانگر عملگر منطقی NOT است.
  • دو علامت امپرسند (&&) نیز نمایانگر عملگر منطقی AND هستند.

programming plc with c++

هنگامی که موتور از حالت False به True یا از OFF به ON تغییر وضعیت می‌دهد، خط 13 یک واحد به مقدار فعلی OUTPORT_MotorStarts اضافه می‌کند. در واقع، این خط تعداد دفعات فعال‌سازی موتور را ثبت می‌کند.

به منظور تولید داده‌های لاگ، در خط 14 فراخوانی تابع log انجام می‌شود. در واقع می‌خواهیم بدانیم که موتور چند بار و در چه زمان­هایی فعال می‌شود.

هر بار که شمارنده مذکور یک واحد افزایش پیدا می‌کند، با فراخوانی این تابع، یک ورودی لاگ در یک فایل لاگ خروجی به نام Output.log تولید می‌شود (Output.log توسط PLCnext ایجاد می‌شود).

در اینجا از نرم‌افزار WinSCP برای استخراج و مشاهده محتوای فایل لاگ استفاده کرده­ایم. شایان ذکر است که WinSCP یک نرم‌افزار کلاینت برای انتقال امن فایل‌ها از طریق پروتکل انتقال فایل SFTP Secure File Transfer Protocol است.

sftp

در خط 18 مقدار قبلی متغیر بولین xPrevMotor با مقدار متغیر Motor جایگزین می­گردد تا سیستم آماده برای تغییر احتمالی بعدی در وضعیت Motor باشد.

نحوه ادغام برنامه ++C با برنامه LD

بدین منظور، با استفاده از PLCnext Engineer، برنامه ++C به برنامه LD اضافه می‌شود.

از آنجایی که نحوه عملکرد برنامه LD با توجه به مطالب قبلی ما مشخص است، نگاهی کوتاه به برنامه ++C می ­اندازیم.

پس از دانلود و راه ­اندازی برنامه­های LD و ++C در PLC، آنها را اجرا می‌کنیم.

هنگامی که دکمه‌های START و STOP را در Starterkit فعال می‌کنیم، MOTOR در وضعیت START و STOP قرار میگیرد (شروع به کار کرده و سپس متوقف می‌شود). به این ترتیب هر بار که موتور به کار می­افتد، مقدار پورت خروجی افزایش می‌یابد.

programming plc with c

فایل لاگ خروجی با استفاده از نرم­ افزار WinSCP باز می‌شود و می‌توانیم فعالیت‌های MOTOR را همراه با یک برچسب زمانی (زمان دقیق روشن و خاموش شدن موتور) مشاهده کنیم.

programming plc with c

سخن پایانی

در این مقاله نگاهی گذرا به برنامه‌نویسی PLC با ++C داشتیم.

همانطور که قبلاً ذکر شد، برنامه‌های ++C برای انجام وظایف پیچیده‌تری مورد استفاده قرار می‌گیرند که با زبان‌های سنتی معرفی شده در استاندارد IEC 61131-3 به راحتی قابل انجام نیستند.

در استفاده از زبان‌های سطح بالاتر، امکانات نامحدودی وجود دارد که با کمک آنها می‌توانیم عملکرد قوی­تری از PLC را مشاهده کنیم.

این مقاله چطور بود؟

میانگین امتیاز 0 / 5. تعداد آرا: 0

ارسال یک پاسخ

لطفا دیدگاه خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید