آموزش AutoStation Pro | بخش Program Block – System Variables (جلسه 2)
آموزش AutoStation Pro | بخش Program Block و System Variables در PLC اینوت (جلسه 2)
در جلسه دوم آموزش AutoStation Pro، با یکی از بخشهای مهم برنامهنویسی PLCهای سری TS600 اینوت آشنا میشویم. در این جلسه ابتدا سراغ System Variables یا متغیرهای سیستمی میرویم و نحوه استفاده از متغیرهایی مانند SM0، SM1، SM2، SM3 و SM10 تا SM15 را بررسی میکنیم.
این متغیرها توسط خود PLC مدیریت میشوند و میتوانند اطلاعاتی مانند وضعیت RUN، اولین سیکل اجرای برنامه، وضعیت خطا و پالسهای زمانی داخلی را در اختیار برنامه قرار دهند. در ادامه نیز به سراغ بخش Program Block در نرمافزار AutoStation Pro میرویم و ساختارهایی مانند Main Program، Subroutine و سایر بلوکهای برنامه را بررسی میکنیم.
- System Variables یا متغیرهای سیستمی
- معرفی SM0، SM1، SM2 و SM3
- بررسی پالسهای سیستمی SM10 تا SM15
- کاربرد پالسهای زمانی در برنامه PLC
- آشنایی با Program Block
- معرفی Main Program
- آشنایی با Subroutine
- نحوه استفاده از برنامههای فرعی برای ساختاردهی بهتر پروژه
System Variable در PLC اینوت چیست؟
System Variable یا متغیر سیستمی، متغیری است که وضعیت یا عملکرد داخلی PLC را در اختیار برنامه کاربر قرار میدهد. برخلاف متغیرهایی مانند M یا D که برنامهنویس میتواند از آنها برای ذخیره اطلاعات و ایجاد منطق کنترلی استفاده کند، متغیرهای سیستمی توسط سیستم PLC مدیریت میشوند.
در PLCهای سری TS600 اینوت، متغیرهای سیستمی با پیشوند SM مشخص میشوند. این متغیرها از نوع BOOL هستند و برای استفاده در منطق برنامه بسیار کاربردی هستند.
به عنوان مثال، میتوان از SM0 برای اجرای یک بخش از برنامه تنها در زمان RUN بودن PLC استفاده کرد یا از SM1 برای انجام یک عملیات فقط در اولین سیکل اجرای برنامه استفاده کرد.
SM0 در PLC اینوت چیست؟
SM0 یکی از پرکاربردترین متغیرهای سیستمی PLC است. این متغیر وضعیت RUN بودن PLC را مشخص میکند.
زمانی که PLC در وضعیت RUN قرار دارد، SM0 روشن است و زمانی که PLC در وضعیت STOP باشد، SM0 خاموش خواهد بود.
بنابراین SM0 را میتوان به عنوان یک کنتاکت سیستمی در برنامه Ladder در نظر گرفت که نشان میدهد PLC در حال اجرای برنامه کاربر است.
اگر یک دستور یا منطق کنترلی را در مدار Ladder به SM0 وابسته کنیم، آن منطق در زمان RUN بودن PLC فعال خواهد بود.
SM1؛ پالس اولیه اجرای برنامه
SM1 یک متغیر سیستمی از نوع پالس اولیه است. این بیت زمانی فعال میشود که PLC از حالت STOP به RUN تغییر وضعیت دهد و پس از یک سیکل اجرای برنامه خاموش میشود.
به همین دلیل SM1 برای انجام عملیاتهایی که باید فقط یک بار هنگام شروع اجرای برنامه انجام شوند بسیار کاربردی است.
برای مثال، میتوان از آن برای مقداردهی اولیه برخی متغیرها یا اجرای یک دستور در شروع برنامه استفاده کرد.
SM2؛ تشخیص روشن شدن PLC
SM2 مربوط به وضعیت روشن شدن PLC یا Power-On Flag است. این بیت هنگام برقدار شدن سیستم فعال میشود و پس از یک سیکل اجرای برنامه خاموش خواهد شد.
بنابراین SM2 نیز میتواند برای انجام عملیات اولیه پس از روشن شدن PLC مورد استفاده قرار گیرد.
SM3؛ بیت خطای سیستم
SM3 یکی دیگر از متغیرهای سیستمی مهم TS600 است که برای وضعیت خطای سیستم استفاده میشود.
این متغیر میتواند برای تشخیص شرایط خطا در برنامه و ایجاد منطق کنترلی یا اعلام وضعیت خطا مورد استفاده قرار گیرد.
SM10 تا SM15؛ پالسهای زمانی داخلی PLC
یکی از بخشهای مهم این جلسه، آشنایی با SM10 تا SM15 است. این متغیرها پالسهای داخلی PLC هستند که با دورههای زمانی مشخص تغییر وضعیت میدهند.
این پالسها در برنامهنویسی Ladder کاربرد زیادی دارند و میتوان از آنها برای ایجاد چشمکزن، اجرای دورهای یک منطق، تولید سیگنال زمانی و بسیاری از عملیاتهای کنترلی استفاده کرد.
| متغیر | نوع | کاربرد |
|---|---|---|
| SM10 | BOOL | پالس با دوره 10 میلیثانیه |
| SM11 | BOOL | پالس با دوره 100 میلیثانیه |
| SM12 | BOOL | پالس با دوره 1 ثانیه |
| SM13 | BOOL | پالس با دوره 1 دقیقه |
| SM14 | BOOL | پالس با دوره 1 ساعت |
| SM15 | BOOL | پالس وابسته به سیکل اسکن PLC |
طبق مستندات PLC سری TS600، SM10 تا SM14 دارای دورههای 10 میلیثانیه، 100 میلیثانیه، 1 ثانیه، 1 دقیقه و 1 ساعت هستند و SM15 با هر سیکل اسکن PLC تغییر وضعیت میدهد. این متغیرها توسط سیستم کنترل میشوند و در برنامه کاربر به صورت Read Only در دسترس هستند.
تفاوت SM10 تا SM14 با تایمر چیست؟
یک نکته مهم این است که پالسهای SM با تایمر PLC یکسان نیستند. تایمر برای ایجاد یک زمانبندی مشخص بر اساس شرایط برنامه استفاده میشود، در حالی که SM10 تا SM14 پالسهای داخلی و دائمی سیستم هستند که PLC آنها را تولید میکند.
به همین دلیل در برخی کاربردهای ساده که فقط به یک سیگنال زمانی ثابت نیاز داریم، میتوان از SMها استفاده کرد و نیازی به تعریف تایمر جداگانه نخواهد بود.
SM15 و سیکل اسکن PLC
SM15 با سایر پالسهای زمانی تفاوت دارد. این متغیر به سیکل اسکن PLC وابسته است و در هر سیکل اسکن تغییر وضعیت میدهد.
به زبان ساده، PLC برنامه را به صورت متوالی اجرا میکند و در هر Scan Cycle وضعیت SM15 تغییر میکند. بنابراین SM15 میتواند برای برخی منطقهایی که باید با سیکل اجرای برنامه هماهنگ باشند مورد استفاده قرار گیرد.
دوره زمانی اعلامشده برای SMها را نباید با زمان روشن بودن خروجی اشتباه گرفت. این متغیرها به صورت پالس یا نوسان وضعیت عمل میکنند و در برنامه Ladder میتوان از تغییر وضعیت آنها برای اجرای منطق کنترلی استفاده کرد.
Program Block در AutoStation Pro چیست؟
بعد از آشنایی با System Variables، بخش دیگری که در این جلسه بررسی میکنیم Program Block در نرمافزار AutoStation Pro است.
Program Block محل سازماندهی برنامههای کاربر در پروژه PLC است. به جای اینکه تمام منطق پروژه را در یک بخش بزرگ قرار دهیم، میتوان قسمتهای مختلف برنامه را در ساختارهای جداگانه قرار داد و در صورت نیاز آنها را اجرا یا فراخوانی کرد.
این روش باعث میشود برنامه PLC ساختار مرتبتری داشته باشد و پیدا کردن، تست و عیبیابی بخشهای مختلف پروژه سادهتر شود.
Main Program چیست؟
Main Program یا برنامه اصلی، بخش اصلی اجرای منطق برنامه PLC است. در این قسمت میتوان منطق اصلی کنترل دستگاه را قرار داد و در صورت نیاز Subroutineها یا بخشهای دیگر برنامه را فراخوانی کرد.
برای مثال، فرض کنید یک ماشین صنعتی دارای سه بخش اصلی باشد:
- کنترل موتور
- کنترل سیستم جابهجایی
- کنترل آلارمها
به جای قرار دادن تمام منطق این سه قسمت در یک برنامه بسیار طولانی، میتوان منطق هر بخش را ساختاردهی کرد و از Program Blockهای مناسب برای مدیریت بهتر پروژه استفاده کرد.
Subroutine چیست؟
Subroutine یا برنامه فرعی، یک بخش مستقل از برنامه است که میتواند در زمان نیاز توسط برنامه اصلی یا یک Subroutine دیگر فراخوانی شود.
یکی از مهمترین مزایای استفاده از Subroutine، جلوگیری از تکرار کد است. اگر یک بخش از منطق برنامه چند بار مورد استفاده قرار گیرد، میتوان آن را در یک Subroutine قرار داد و هر زمان لازم بود آن را فراخوانی کرد.
در PLCهای TS600، Subroutineها با دستور CALL قابل فراخوانی هستند و ساختار برنامه از طریق Main Program و Subroutineها قابل سازماندهی است.
مزیت استفاده از Subroutine در پروژه PLC
- مرتبتر شدن ساختار برنامه
- کاهش تکرار کد
- افزایش خوانایی برنامه
- سادهتر شدن عیبیابی
- امکان تفکیک بخشهای مختلف ماشین
- امکان استفاده مجدد از یک منطق در قسمتهای مختلف پروژه
طبق مستندات TS600، Subroutine یک بخش مستقل از برنامه است که میتواند توسط Main Program یا Subroutineهای دیگر فراخوانی شود. این ساختار به کاهش حجم برنامه و استفاده مجدد از بخشهای تکراری منطق کمک میکند.
ساختار کلی اجرای Main و Subroutine
به صورت ساده میتوان ساختار را به این شکل در نظر گرفت:
↓
CALL Subroutine
↓
Subroutine
↓
RETURN
↓
ادامه اجرای Main Program
در این ساختار، Main Program بخش اصلی اجرای برنامه است. زمانی که دستور CALL اجرا شود، PLC وارد Subroutine مربوطه میشود. پس از اجرای Subroutine و بازگشت، اجرای برنامه اصلی ادامه پیدا میکند.
در این جلسه AutoStation Pro چه چیزهایی یاد میگیریم؟
در جلسه دوم، هدف این است که فقط با نام متغیرهای SM یا Program Blockها آشنا نشویم، بلکه بدانیم هرکدام چه زمانی و چرا در برنامه PLC استفاده میشوند.
- شناخت System Variables در PLC اینوت
- تشخیص وضعیت RUN با SM0
- استفاده از SM1 برای اجرای منطق در شروع برنامه
- آشنایی با SM2 و وضعیت Power-On
- شناخت SM3 به عنوان Error Flag
- استفاده از SM10 تا SM14 به عنوان پالسهای زمانی داخلی
- شناخت عملکرد SM15 بر اساس Scan Cycle
- آشنایی با Program Block
- شناخت Main Program
- شناخت Subroutine و نحوه فراخوانی آن
- درک ساختار مرتبتر برنامههای PLC
جمعبندی
در این جلسه از آموزش AutoStation Pro با دو موضوع مهم در برنامهنویسی PLCهای اینوت آشنا شدیم. بخش اول مربوط به System Variables بود؛ متغیرهایی مانند SM0، SM1، SM2 و SM3 که اطلاعاتی درباره وضعیت و عملکرد PLC در اختیار برنامه قرار میدهند و همچنین SM10 تا SM15 که برای ایجاد پالسها و نوسانهای زمانی داخلی کاربرد دارند.
در بخش دوم نیز ساختار Program Block و مفاهیمی مانند Main Program و Subroutine را بررسی کردیم. استفاده صحیح از این ساختارها باعث میشود برنامههای PLC مرتبتر، خواناتر و قابل نگهداریتر باشند.
در جلسات بعدی، وارد بخشهای عملیتر برنامهنویسی میشویم و نحوه استفاده از این مفاهیم را در پروژه PLC و محیط AutoStation Pro بررسی خواهیم کرد.