
برای روشنشدن یک چراغ پس از سه ثانیه، به تایمر نیاز داریم؛ برای اعلام رسیدن پنج قطعه، به کانتر. در این درس از مجموعه آموزش PLC دلتا، دو برنامه کوچک میسازیم و بعد آنها را ترکیب میکنیم: تأخیر با TMR، شمارش با CNT و پاککردن شمارنده با RST. هدف این است که فقط دستور را وارد نکنید؛ بتوانید نتیجه را در مانیتورینگ توضیح دهید.
پیشنیاز: آشنایی با حافظههای X، Y، M، T، C و D و ساخت اولین برنامه در WPLSoft. مثالها برای آموزش منطق پایه روی خانواده DVP-SS2 و بهویژه DVP14SS2 نوشته شدهاند؛ جدول تایمرهای یک خانواده را به همه PLCهای دلتا تعمیم ندهید.
تفاوت تایمر و کانتر در PLC دلتا چیست؟
| سؤال | ابزار مناسب | مثال این درس |
|---|---|---|
| آیا زمان انتظار تمام شده؟ | تایمر T با دستور TMR | اعلام آمادهبودن پس از سه ثانیه |
| آیا تعداد لازم جمع شده؟ | کانتر C با دستور CNT | اعلام تکمیل یک گروه پنجتایی |
| آیا باید شمارش از ابتدا شروع شود؟ | ریست شمارنده با RST | شروع گروه بعدی با فرمان مستقل |
در مانیتورینگ، «مقدار جاری» را از «وضعیت کنتاکت» جدا کنید. برای تمرین پنجتایی، دیدن عدد ۳ یعنی سه رخداد ثبت شده است، نه اینکه کنتاکت C0 حتماً روشن باشد. در برگه آزمون خود دو ستون جدا برای عدد و وضعیت ON/OFF بنویسید؛ این عادت، بسیاری از اشتباههای خواندن برنامه را آشکار میکند.
دستور TMR در WPLSoft و معنی K30
TMR T0 K30
در این عبارت، T0 آدرس تایمر و K30 مقدار تنظیمیِ دهدهی است. مبنای T0 در DVP-SS2 برابر ۱۰۰ میلیثانیه است؛ بنابراین ۳۰ واحد آن، سه ثانیه میشود. رابطه محاسبه زمان این است: زمان تنظیمی = مقدار تنظیمی × مبنای زمانی تایمر. تایمر عادی با قطع شرط اجرا صفر میشود؛ تایمر تجمعی رفتار دیگری دارد. برای این قواعد به بخش ۲٫۱۰ و دستور API 96 در راهنمای برنامهنویسی دلتا مراجعه کنید.
| زمان هدف | محاسبه | مقدار دستور |
|---|---|---|
| ۱ ثانیه | 1 ÷ 0.1 = 10 | K10 |
| ۳ ثانیه | 3 ÷ 0.1 = 30 | K30 |
| ۵ ثانیه | 5 ÷ 0.1 = 50 | K50 |
| ۱۰ ثانیه | 10 ÷ 0.1 = 100 | K100 |
کنار نام تایمر در کامنت پروژه بنویسید: «تأخیر آمادهبودن، ۳ ثانیه، مبنای ۱۰۰ms». این توضیح از خود K30 مفیدتر است؛ نفر بعدی میفهمد هدف طراحی چه بوده است. اگر آدرس یا مدل CPU را تغییر دادید، همین کامنت یادآوری میکند که محاسبه را دوباره کنترل کنید. برای اولین تمرین از عدد ثابت استفاده کنید تا تغییرات احتمالی HMI وارد آزمایش نشود.
مثال اول: روشنشدن چراغ بعد از سه ثانیه
فرض تمرین: X0 یک کلیدِ نگهداشتنیِ مجوز است و Y0 فقط چراغ میز آموزشی. با وصل X0 منتظر میمانیم؛ اگر مجوز سه ثانیه برقرار بماند، چراغ روشن میشود. اگر زودتر قطع شود، آزمایش بعدی باید از ابتدا شروع شود. این مثال خودنگهدار ندارد؛ یک ضربه کوتاه به شستی قرار نیست چراغ را سه ثانیه بعد روشن کند.
فهرست دستورهای متناظر
LD X0
TMR T0 K30
LD T0
OUT Y0
END
هر خط را در نمای مناسب نرمافزار وارد کنید یا شبکههای متناظر را در Ladder بسازید. این بلوک برای خواندن ترتیب دستورهاست و فایل پروژه WPLSoft محسوب نمیشود.
| کار شما | انتظار از Y0 | چه چیزی را ثبت کنید؟ |
|---|---|---|
| X0 از ابتدا خاموش است | خاموش | مقدار اولیه T0 |
| X0 را حدود یک ثانیه روشن و سپس قطع کنید | در این آزمون روشن نمیشود | بازگشت مقدار تایمر به صفر |
| X0 را بیش از سه ثانیه روشن نگه دارید | پس از تأخیر روشن میشود | عدد T0 و وضعیت کنتاکت آن |
| پس از روشنشدن چراغ، X0 را قطع کنید | خاموش میشود | آمادگی برای تکرار آزمایش |
این برنامه «تأخیر در وصل» است، نه «تأخیر در قطع». برای آزمون، فقط روشنشدن نهایی را نبینید؛ قطع شرط در میانه زمان را هم امتحان کنید. زمان مشاهدهشده در نمایش آنلاین را اندازهگیری دقیق آزمایشگاهی فرض نکنید؛ نمایش نرمافزار و چرخه اجرای PLC میتوانند روی مشاهده شما اثر بگذارند.
مثال دوم: دستور CNT برای شمارش پنج قطعه
فرض تمرین: X1 وضعیت سنسور قطعه، X2 فرمان ریست و Y1 چراغ «گروه کامل» است. بین دو قطعه باید وضعیت سنسور به صفر برگردد. برای شروع، بهجای عبور واقعی محصول، پنج تغییر وضعیت آهسته و مجزا ایجاد کنید تا بتوانید عدد کانتر را پس از هر رخداد یادداشت کنید.
دستور CNT C0 K5 شمارنده عادی ۱۶ بیتی را با هدف پنج راه میاندازد. شمارش روی تغییر شرط از OFF به ON انجام میشود. پس از رسیدن به هدف، شمارنده در همان مقدار میماند و کنتاکت آن فعال میشود؛ RST C0 عدد را صفر و کنتاکت را خاموش میکند. منبع: بخش ۲٫۱۱ و دستور CNT در راهنمای دلتا.
LD X1
CNT C0 K5
LD X2
RST C0
LD C0
OUT Y1
END
در این ترتیب، شبکه ریست پس از شمارش و پیش از فرمان چراغ قرار گرفته است. اگر X2 برقرار باشد، ریست پیش از خواندن کنتاکت C0 اجرا میشود. برای جلوگیری از ابهام در آزمون، ابتدا X1 را خاموش کنید، X2 را لحظهای فعال و سپس آزاد کنید؛ پس از آن گروه بعدی را بشمارید.
| رخداد | مقدار C0 | چراغ Y1 |
|---|---|---|
| ریست | ۰ | خاموش |
| اولین تغییر X1 از صفر به یک | ۱ | خاموش |
| X1 همچنان روشن است | ۱ | خاموش |
| چهارمین رخدادِ جداگانه | ۴ | خاموش |
| پنجمین رخدادِ جداگانه | ۵ | روشن |
| رخداد ششم بدون ریست | ۵ | روشن |
| ریست دوباره | ۰ | خاموش |
چرا یک قطعه ممکن است دو بار شمرده شود؟
قبل از تغییر برنامه، مسیر مشاهده را کوتاه کنید: سنسور، LED ورودی، X1 در مانیتور و سپس عدد C0. آیا قطعه هنگام عبور میلرزد؟ آیا سنسور مرز قطعه را چند بار میبیند؟ آیا شستی مکانیکی جهش کنتاکت دارد؟ پاسخ این سؤالها مشخص میکند که اشکال را باید در نصب سنسور، کیفیت سیگنال یا منطق پردازش دنبال کرد.
اضافهکردن یک تأخیر ثابت بدون اندازهگیری میتواند قطعات سالم بعدی را هم حذف کند. در آزمون واقعی، حداقل فاصله بین قطعات و مدت روشنبودن سنسور را ثبت کنید. اگر ورودی سریع است، کانتر عادی این درس انتخاب خودکارِ درستی نیست؛ مسیر شمارش پرسرعت باید جداگانه و متناسب با CPU طراحی شود.
مثال سوم: سه ثانیه بعد از تکمیل پنج قطعه اعلام کن
اکنون دو شرط داریم: اول گروه پنجتایی کامل شود، بعد سه ثانیه انتظار بگذرد. در این پروژه مستقل از C0 برای گروه و T0 برای انتظار استفاده میکنیم. خروجی Y0 فقط چراغ اعلام است؛ قرار نیست مستقیماً موتور یا مکانیزم بستهبندی را راه بیندازد.
LD X1
CNT C0 K5
LD X2
RST C0
LD C0
TMR T0 K30
LD T0
OUT Y0
END
آزمون پیشنهادی: چهار قطعه را شبیهسازی کنید و چند ثانیه منتظر بمانید؛ نباید چراغ اعلام روشن شود. قطعه پنجم را ثبت کنید و زمان انتظار را ببینید. دفعه بعد، در میانه انتظار X2 را فعال کنید؛ گروه باطل میشود و چراغ باید خاموش بماند. برای گروه جدید، ورودی قطعه را به حالت خاموش برگردانید و ریست را آزاد کنید.
چطور برنامه را در WPLSoft وارد و بررسی کنیم؟
- پروژه آموزشی جدید بسازید. نوع PLC را با CPU مورد استفاده تطبیق دهید و نامی روشن مثل «تمرین تایمر سهثانیهای» انتخاب کنید.
- کامنت آدرسها را بنویسید. برای X0 مجوز، برای T0 تأخیر و برای Y0 چراغ تعریف کنید. در تمرین دوم، X1 و X2 را با نقش جدیدشان مشخص کنید.
- شبکهها را به ترتیب بسازید. یک کنتاکت برای شرط، یک بلوک برای TMR یا CNT و شبکه جدا برای کنتاکت تکمیل و کویل خروجی در نظر بگیرید.
- برنامه را تبدیل یا Compile کنید. خطاهای نحو و آدرس را پیش از انتقال برطرف کنید. نام و محل فرمانها ممکن است در نسخههای نرمافزار متفاوت باشد.
- محیط آزمون را ایمن کنید. در صورت پشتیبانی نسخه شما، شبیهسازی را برای منطق پایه به کار بگیرید؛ بررسی سیمبندی و رفتار واقعی ورودی جای خود را دارد.
- در مانیتور، ورودی، عدد و کنتاکت را کنار هم ببینید. فقط رنگ یک شبکه برای نتیجهگیری کافی نیست. جدول آزمون همان مثال را مرحلهبهمرحله پر کنید.
- حالتهای قطع و ریست را هم امتحان کنید. سپس پروژه و نتیجه آزمون را ذخیره کنید؛ «یک بار درست کار کرد» معیار کافی برای تحویل دستگاه نیست.
اگر ارتباط با PLC برقرار نمیشود، ابتدا راهنمای اتصال DVP14SS2 به WPLSoft را بررسی کنید. اگر وضعیت ورودی با سنسور تطبیق ندارد، به سیمبندی ورودی و خروجی دلتا و اتصال S/S برگردید؛ تغییر K تایمر مشکل سیمبندی را حل نمیکند.
عیبیابی تایمر و کانتر PLC دلتا
| علامت | بررسی اول | آزمون پیشنهادی |
|---|---|---|
| تأخیر با انتظار شما فرق دارد | مبنای تایمر و مقدار K | برای همین T0، هدف سه ثانیه و K30 را کنترل کنید. |
| تایمر هیچوقت تمام نمیشود | پایداری شرط ورودی | ببینید X0 پیش از پایان زمان قطع میشود یا نه. |
| کانتر فقط یک بار میشمارد | بازگشت سنسور به OFF | بین دو رخداد، خاموششدن X1 را مشاهده کنید. |
| عدد شمارنده همیشه صفر است | فرمان ریست | وضعیت X2 و همه دستورهای RST C0 را پیدا کنید. |
| شمارش بیشتر از قطعات است | چندبار تغییرکردن سیگنال | آزمون آهسته با یک قطعه و بررسی نصب سنسور انجام دهید. |
| کنتاکت تکمیل روشن است ولی چراغ نه | فرمان خروجی و مدار بار | نوشتن تکراری Y، تغذیه بار و سیمبندی را جداگانه بررسی کنید. |
| در سرعت بالا قطعه جا میافتد | مدت پالس و روش شمارش | نیاز به شمارنده پرسرعت و تنظیم ورودی را بررسی کنید. |
پرسشهای متداول
آیا K30 یعنی ۳۰ ثانیه؟
خیر. در مثال T0 این درس، مبنای زمان ۰٫۱ ثانیه است؛ پس K30 یعنی سه ثانیه. پیش از تغییر آدرس تایمر، مبنای آدرس جدید را بررسی کنید.
چرا با نگهداشتن شستی، کانتر بالا نمیرود؟
در مثال CNT، یک تغییر از خاموش به روشن یک رخداد است. برای آزمون بعدی، شستی باید آزاد و دوباره فعال شود. روشنماندن شستی را با رخدادهای جداگانه اشتباه نگیرید.
آیا میتوان زمان را از HMI تنظیم کرد؟
مقدار تنظیمی TMR میتواند از رجیستر D خوانده شود. پیش از افزودن این قابلیت، واحد نمایش، محدوده مجاز و زمان مجازِ تغییر تنظیم را در طراحی مشخص کنید. تمرین فعلی عمداً عدد ثابت دارد.
آیا قطع ورودی کانتر همان ریست است؟
نه؛ برای شروع گروه جدید در این تمرین از X2 و RST C0 استفاده میکنیم. هنگام بررسی، ورودی شمارش و ورودی ریست را جداگانه مشاهده کنید.
مقدار تایمر و کانتر بعد از قطع برق باقی میماند؟
برای همه آدرسها پاسخ یکسانی وجود ندارد. ناحیه ماندگار، نوع تایمر و تنظیمات CPU را بررسی کنید و رفتار شروع پس از وصل برق را بهعنوان آزمونی مستقل در برنامه تحویل پروژه قرار دهید.
تمرین تکمیلی و ادامه مسیر
تأخیر مثال اول را به پنج ثانیه و هدف مثال دوم را به ده قطعه تغییر دهید. قبل از اجرا، مقدار K و نتایج مورد انتظار را روی کاغذ بنویسید. سپس یک آزمون قطع زودهنگام و یک آزمون ریست انجام دهید؛ اگر پیشبینی شما با مشاهده یکسان شد، منطق پایه را فهمیدهاید.
برای مرور پیشنیازها از نقشه راه آموزش PLC دلتا و راهنمای آدرسها و حافظهها استفاده کنید. قدم پیشنهادی بعدی، ساخت منطق Start/Stop و خودنگهدار با اولویت توقف است؛ هنوز صفحه مستقلی برای آن در این درس معرفی نشده است.
منابع و محدوده اعتبار
- راهنمای تألیف دلتا، DVP-ES2/EX2/EC5/SS2/SA2/SX2/SE/SE2 & TP — نسخه میزبانیشده در Device.report؛ بخشهای ۲٫۱۰، ۲٫۱۱ و دستورهای TMR و CNT.
- صفحه رسمی DVP-SS2 دلتا و مسیر دریافت مستندات مدل.
مثالها و جدولهای آزمون برای این آموزش طراحی شدهاند؛ فایل پروژه کامپایلشده یا نتیجه تست روی PLC فیزیکی ارائه نشده است. پیش از استفاده صنعتی، برنامه باید با سختافزار، سیمبندی و شرایط واقعی پروژه اعتبارسنجی شود.
