فروش تجهیزات و آموزش اتوماسیون صنعتی

آموزش رایگان نرم افزار wplsoft قسمت دوم دستورات برنامه

30 1/ 03
اشتراک گذاری

چکیده مطلب:

در این مقاله دستورات نرم افزار WPLSoft آموزش داده شده. برای شما پرکابردترین دستورات به زبانی ساده با مثال های متفاوت گفته شده. شما می‌توانید با مطالعه این مقاله قسمت مقدماتی plc را یاد گرفته و شروع به برنامه نویسی کنید.


در قسمت اول این آموزش با محیط داخلی نرم افزار wplsoft آشنا شدید و حالا می‌خواهیم کمی جلوتر برویم و دستورات و اصطلاحات برنامه‌نویسی را یاد بگیریم. یادگیری این دستورات می‌تواند به شما کمک کند برنامه نویسی پی ال سی دلتا را به صورت مقدماتی شروع کنید. ما در تیم نیک صنعت با تهیه مقالات، فیلم‌های رایگان آموزش پی ال سی دلتا و همچنین برگزاری دوره‌ آموزشی پی ال سی دلتا صنعتی سعی کرده‌ایم به بهبود یادگیری اصولی این مهارت مهم کمک کنیم.

فهرست دستورات نرم افزار wplsoft

مثال
با زدن لحظه ای شستی (X0)، خروجی به طور دائم روشن شود و با فشردن شستی دیگر به طور آنی (X1) خروجی خاموش شود.

دستورRST

دستور ZRST
زمانی که بخواهید چندین خروجی را به طور همزمان خاموش کنید از دستور ZRST استفاده کنید. اینگونه حجم برنامه نیز کم می شود.
مثال :
برنامه ای بنویسید که با فشردن کلید ورودی(X0)  سه خروجی (Y0 ,Y1 ,Y2) روشن شوند و با فشردن ورودی دیگر، تمامی خروجی ها خاموش شوند.

دستور ZRST

دستور ALT
این دستور می‌تواند وضعیت خروجی را معکوس کند. یعنی اگر خروجی روشن باشد آن را خاموش می‌کند و اگر خروجی خاموش باشد آن را روشن می‌کند.
نکته: وقتی این دستور را استفاده می‌کنید باید ورودی لبه بالا رونده (Rising Edge) یا پایین رونده (Falling Edge) انتخاب کنید. البته می‌توانید بجای ALT از ALPT استفاده کنید.
زمانی که شما X را تحریک کنید تعداد بسیاری پالس به دستور ALT می‌رسد. این امر موجب ناپایداری این دستور می‌شود. برای همین از تیغه حساس به لبه یا دستور ALTPاستفاده می شود تا تنها یک پالس در هنگام تحریک ورودی به دستور برسد.
در مثال زیر با هر بار set on یا set off ورودی X1، وضعیت خروجی Y0 تغییر وضعیت می دهد.

دستور ALT

مثال بالا را به شکل زیر هم می‌توان نوشت:

دستور ALT

دستور المان‌های حساس به لبه پالس
بعضی مواقع در برنامه‌نویسی نیاز است در لحظه قطع یا وصل یک کنتاکت، یک پالس موقت تولید شود.

در مثال زیر، به محض فعال شدن ورودی X0 (لبه ی بالا رونده)، پالسی به مدت یک سیکل، خروجی Y0 را روشن می‌کند. کلید میانبر این دستور F3است.

دستور المان‌های حساس به لبه پالس

منظور از یک سیکل، اجرای یک دورکامل یک برنامه است. همه المان‌ها می‌توانند حساس به لبه بالا رونده باشند.
چنانچه بخواهید در صورت تحریک چند المان ورودی یک پالس با لبه بالا رونده تولید شود از دستور NP استفاده کنید.

NP

برای شرکت در دوره آموزشی پی ال سی دلتا، با شماره تلفن 87700210 تماس حاصل فرمایید.


همان گونه که در مثال بالا مشاهده می‌کنید. ابتدا X0 فعال شده است. اگر به محض فعال شدن X1 و بعد از آن M0 وصل شود. آنگاه یک پالس با مدت زمان سیکل تولید‌می‌شود.

از مثال بالا متوجه می‌ شوید چندین المان به صورت موازی و سری می‌توانند قبل از دستور NP قرار بگیرند.

دستور المان حساس به لبه ی پایین رونده

دستور المان حساس به لبه ی پایین رونده

همان طور که می‌بینید این بار با فعال کردن X0 هیچ پالسی فرستاده نمی‌شود اما به محض غیرفعال کردن ورودی X0 (لبه پایین رونده)، پالسی به مدت یک سیکل تولید شده است. بعد از آن خروجی Y0 روشن می‌شود. کلید میانبر این دستور F4 است.
چنانچه بخواهیم در صورت تحریک چند المان ورودی، یک پالس با لبه ی پایین رونده تولید شود از دستور PN استفاده کنید.
دستورSET
می‌توانید به جای استفاده از خروجی (Y0) از دستور (SET Y0) استفاده کنید.

دستورRST
هر زمانی که از دستور SET در برنامه استفاده کردید، برای غیر فعال کردن خروجی مورد نظر از دستور RST استفاده کنید در غیر این صورت خروجی به طور دائم روشن می‌ماند!
حال مثال زیر را در نظر بگیرید:

ورودی با المان‌های متفاوت

چناچه ورودی المان‌ها به هم وصل شود هیچ پالسی تولید نمی‌شود. فرض کنید ورودی های X0 ،X1, و M0 وصل شده باشند. به محض قطع یکی از ورودی‌ها (لبه‌ پایین رونده) خروجی Y0 مدت یه سیکل روشن و سپس خاموش خواهد شد.
در این جا نیز می‌توانید چندین ورودی با المان‌های متفاوت به صورت سری و موازی قبل از دستور PN استفاده کنید.

دستور NOT
اگر بخواهید برنامه مورد نظر، به طور معکوس عمل کند از دستور INV استفاده کنید.
این دستور منطق برنامه را معکوس می‌کند.

دستور NOT

در این مثال اگر یکی یا همه ورودی‌ها غیرفعال باشند آنگاه به صورت معکوس عمل می‌کند. در نتیجه خروجی Y0 روشن می‌شود. در صورتی که هر سه ورودی وصل باشند خروجی Y0 خاموش می‌شود. یعنی در این دستور کاملا برعکس خواهد شد.

دستور تایمرها (Timer)
دستورات متعددی برای زمان‌سنجی وجود دارد. در این مبحث در مورد برخی از این تایمرها توضیحاتی در اختیار شما قرار می‌دهیم.
در ابتدا لازم به ذکر است که تایمرها با توجه به شماره‌ای که دارند به سه دسته تقسیم می‌شوند:
  1. تایمر با ضریب (رزولوشن) 100 میلی ثانیه
  2. تایمر با ضریب (رزولوشن) 10 میلی ثانیه
  3. تایمر با ضریب (رزولوشن) 1 میلی ثانیه
تایمرهای 100ms حداقل زمانی را که می توانند زمان سنجی کنند 100ms است. برای اطلاع از مشخصات تایمر های PLC ها به فایل راهنمای آن مراجعه کنید.

دستور TMR
از دستورات پر کابرد تایمر است. با استفاده از این دستور می‌توانیم تایمر های تاخیر در وصل (ON DELAY) و تاخیر در قطع (OFF DELAY) را بسازیم.
دستور TMR به ورودی خود وابسته است. یعنی اگر ورودی این دستور خاموش باشد تایمر نیز متوقف می‌شود و ورودی روشن باشد تایمر نیز فعال می‌شود.
حال چند مثال متفاوت را باهم بررسی می‌کنیم:
​مثال:
 با زدن شستی استارت (X1)، موتور (Y1) روشن شود و پس از 10 ثانیه خاموش شود.

دستور NOT

در برنامه بالا با تحریک X1 موتور Y1 روشن می‌شود و تیغه ی Y1، تایمر را فعال کرده است. در ادامه تایمر شروع به شمارش می‌کند. بعد از آن که به زمان داده شده رسید از تیغه داخلی تایمر استفاده کرده و موتور را خاموش می‌کند. علت اینکه ما به تایمر K100 دادیم چون مدت زمان برحسب میلی ثانیه است، برابر 10 ثانیه می‌شود.
مثال:
برنامه ای بنویسید که با تحریک ورودی با تحریک ورودی X0 خروجی Y0 فعال شود و بعد از 3 ثانیه خروجی Y1 روشن شود و بعد 5 ثانیه هر دو خروجی خاموش شود.

تایمر


دستور ATMR
تفاوت آن با TMR آن است که می‌تواند مستقیما خروجی را فعال کند.

استفاده از دیتا رجیسترها (D) به جای اعداد ثابت
از دیتا رجیسترها که با D نمایش داده می‌شوند می‌توان به جای اعداد ثابت که با پیشوند K هستند استفاده کرد. که انواع آن را می‌توانید در قسمت راهنمای نرم افزار WPLSoft مشاهده کنید. زمانی از این رجیسترها استفاده می‌شود که مقدار همیشه متغییر است.
در دستورات 32 بیتی، دو رجیستر به طور متوالی اشغال می‌شوند.

دستور HOUR
این دستور به ساعت سنج معروف است. شما می توانید با استفاده از این دستور مدت زمان فعال و غیر فعال بودن خروجی را ثبت کنید.
مثال:
با فشردن شستی  X0 موتور  Y0روشن می شود. دستور HOUR بعد از گذشت مثلا 10 ساعت(K10) ، M0 فعال می‌شود و Y0 را خاموش می‌کند.
مدت زمان مورد نظر برحسب ساعت در D0 و برحسب ثانیه در D1 ذخیره می شود. دو رجیستر متوالی اشغال شدند.

دستور HOUR

ساختن پالس با استفاده از تایمر
با استفاده از تایمرها می توان سیگنال پالس ساخت. البته دستورهای مختلفی برای تولید پالس در PLC DELTA وجود دارد. اما در این بخش می خواهیم با استفاده از تایمرها این کار را انجام دهیم. به طور کلی برای ساختن پالس زیر به دو تایمر احتیاج است.

ساختن پالس با استفاده از تایمر

با توجه به شکل زمان ton را به یک تایمر و زمان toff را به یک زمان دیگر اختصاص می دهیم.
برنامه زیر مربوط به ساختن پالس است. در این برنامه خروجی بیت T0 همان پالسی است که مد نظر ماست.

ساختن پالس با استفاده از تایمر

در این برنامه D0 رجیستری است که مقدار زمان toff را برای تایمر T0 تنظیم می‌کند و همچنین D1 رجیستری است که مقدار ton را برای تایمر T1 ست می‌کنیم. می‌توانید مقادیر ثابتی را برای رجیسترها تنظیم کنید.

دستور شمارنده CNT
این دستور به ازای هر پالس در ورودی، یک واحد به مقدار قبلی خود اضافه می‌کند. کانترها به دسته‌های 16 بیتی، 32 بیتی، کانترهای سرعت بالا (سخت افزاری و نرم افزاری) تقسیم می‌شوند. برای به دست آوردن اطلاعات کانترها به فایل راهنمای هر PLC مراجعه کنید.
مثال:
برنامه بنویسید که تعداد محصولات تولید شده را توسط یک نوارنقاله حمل و توسط یک سنسور دیجیتال شمارش می شوند را کنترل کنیم و هنگامی که تعداد 10 محصول شمارش شد، سیستم برای هشدار به اپراتور چراغ آلارمی را به مدت 5 ثانیه روشن کند و نوار نقاله نیز متوقف شود.

دستور شمارنده CNT

در برنامه بالا مشخص است با فعال شدن استارت (X0) و خاموش بودن آلارم (Y1) نوار نقاله روشن می‌شود (Y0). با روشن شدن نوار نقاله و با هر بار محصول دیدن سنسور (X3) کانتر شمارش می‌کند تا به 10 بار محصول دیدن برسد. با روشن شدن (C0) نوار نقاله و کانتر غیرفعال و آلارم روشن می‌شود. پس از 5 ثانیه آلارم نیز خاموش می‌شود.

دستور CNTD
زمانی که تعداد دفعات ارسال پالس به کارنتر از محدوده‌ی یک عدد 16 بیتی یعنی 32767 بیشتر شود، باید از یک کانتر 32 بیتی برای شمارش استفاده شود. برای آگاهی از شماره کانترها در PLC های مختلف به فایل راهنمای آن PLC مراجعه کنید.

نکته: تمام شمارنده‌های 16 بیتی، شمارنده‌های Up Counter یا همان بالا رونده هستند.
نکته: تمامی شمارنده های 32 بیتی دو حالت up counter (بالارونده) و down counter (پایین‌رونده) هستند. در حالت عادی آن‌ها بالارونده هستند اما اگر بیت حافظه مخصوص شماره آن کانتر set شود آنگاه کانتر مورد نظر پایین‌رونده می‌شود.
برای مثال در PLC SS2 برای کانترهای C200 تا C223 بیت‌های M1200 تا M1223 اختصاص یافته است. این بیت‌ها به صورت LATCH می باشند یعنی اگر یک بار آنها را SET کنیم، آن وقت با خاموش و روشن شدن PLC، SET باقی می‌ماند.

دستور INC
این دستور به صورت یک شمارنده افزایشی است برای مواقعی که نیاز داریم ثبت شود، یک خروجی چند بار فعال شده است.
مثال:
در برنامه پایین ، با هربار فشردن شستی  X0، دستور INC در هر سیکل اجرای برنامه یک واحد به D0 اضافه می‌کند. چون سرعت هر سیکل خیلی بالا است. با هر بار فشردن تعدادی زیادی سیکل اجرا شده و  D0 بیشتر از یک واحد اضافه می‌شود.

دستور INC

اگر می‌خواهید با هر بار فشردن ورودی X0، فقط یک واحد D0 اضافه شود. از نکات زیر استفاده کنید:
  1. از ورودی های پالس یعنی استفاده از لبه های بالا رونده و پایین رونده.
  2. استفاده از دستور INCP.
دستور DEC
این دستور به صورت معکوس شمارش می‌کند. همانند برعکس دستور INC.

دستورات ریاضی
اعمال ریاضی برای 16 بیتی:
جمع: ADD
تفریق: SUB
ضرب: MUL
تقسیم: DIV

اعمال ریاضی برای 32 بیتی:
جمع: DADD
تفریق: DSUB
ضرب: DMUL
تقسیم: DDIV

اعمال ریاضی برای اعداد اعشاری:
جمع: DADDR
تفریق:DSUBR
ضرب: DMULR
تقسیم: DDIVR

محدوده اعداد 16 بیتی از 32768+ و 32767- است. اعداد بزرگتر از این محدوده به عنوان 32 بیتی در نظر گرفته می‌شوند.

دستور جمع (ADD) برای اعداد صحیح
با استفاده از این دستور می‌توانید دو مقدار ثابت و یا محتویات درون دو رجیستر را باهم جمع کرده و حاصل را درون یک رجیستر دیگر قرار دهید.
مثال:
دو عدد ثابت K250 و K60 را با یکدیگر جمع کنید.

دستور جمع (ADD) برای اعداد صحیح

با فعال شدن X0، مقادیر K250 و K60 با هم جمع شده و مقدار K310 در D0 ریخته شده است.
دقت کنید که حاصل اعمال ریاضی در دستورات 16 بیتی از 32768+ تا 32767- بیشتر نشود.

دستور تقسیم (DIV) اعداد صحیح
با این دستور می‌توان دو مقدار ثابت یا محتویات درون دو رجیستر را بر هم تقسیم کرد و در رجیستری دیگر قرار داد.

دستور تقسیم (DIV) اعداد صحیح

دستور تفریق (SUB) در اعداد صحیح
مثال:
دو عدد صحیح K689  و K248 را از هم کسر کنید.

دستور تفریق (SUB) در اعداد صحیح

دستور جمع (ADD) در اعداد صحیح

با توجه به مثال:
دستور جمع (ADD) در اعداد صحیح

دستورات 32 بیتی هم مانند 16 بیتی اجرا می شود. فقط دقت کنید دو رجیستر اشغال می شود. مثلا اگر در مثال بالا 32 بیتی بود، رجیستر D0 و D1 اشغال می‌شد.

تبدیل فرمت عدد صحیح (INT) به عدد اعشاری (FLOAT)
دستور FLT و DFLT

با استفاده از دستور FLT می‌توان فرمت عدد صحیح 16 بیتی را به فرمت 32 بیتی اعشاری تغییر داد و با استفاده از دستور DFLT می‌توان فرمت عدد صحیح 32 بیتی را به فرمت 32 بیتی اعشاری تغییر داد.

مثال:
در این برنامه عدد صحیح 16 بیتی درون رجیستر D0 به فرمت اعشاری 32 بیتی تبدیل شده و درون رجیسترهای D1 و D2 منتقل می‌شود.

دستور FLT و DFLT

بعد از تبدیل فرمت عدد صحیح به عدد اعشاری باید نحوه نمایش عدد در برنامه را نیز به حالت اعشاری تغییر دهیم. کافیست به ترتیب زیر عمل کنید:

نحوه نمایش عدد در برنامه

بعد از انتخاب Float، نحوه نمایش اعداد نیز به صورت اعشاری خواهد شد.

دستور جمع اعداد اعشاری (DADDR)
به عنوان مثال دو عدد اعشاری 32.8 و 123.542 را با یکدیگر جمع کرده و حاصل را در یک رجیستر مانند D0 می‌بینیم:

دستور جمع اعداد اعشاری (DADDR)

رجیستر های D0 و D1 به دلیل 32 بیتی بودن این دستور مورد استفاده می‌گیرد.
برای وارد کردن اعداد ثابت اعشاری باید از پیشوند F استفاده کرد.

دستور جمع اعداد اعشاری (DADDR) با مقدار دادن به رجیستر های برنامه:

دستور جمع اعداد اعشاری (DADDR)

برای مقدار دادن به رجیسترها بعد از دانلود برنامه روی حالت ONLINE دستور فوق را انتخاب کنید. سپس روی آن کلیک راست کرده و گزینه Change present value انتخاب می‌کنید.در پنجره باز شده از کادر سمت چپ رجیستر مورد نظر انتخاب کرده و درکادر سمت راست، عدد مورد نظر را با پیشوند F می‌نویسیم. همچنین گزینه 16 یا 32 بیتی بودن را نیز انتخاب می‌کنید.

ONLINE

دیگر دستورات ضرب، تقسیم و تفریق همانند جمع انجام می‌شوند.

دستور انتقال MOV
با استفاده از این دستور می توان مقدار درون یک رجیستر یا یک عدد ثابت را به یک رجیستر دیگر انتقال داد.
مثال:
با توجه به مثال باید دقت کنید که دستور برای اعداد 32 بیتی به صورت DMOV  است همچنین برای اعداد اعشاری DMOVR استفاده می شود.

دستور انتقال MOV

نکته: به این نکته توجه داشته باشید برای این که عدد درون رجیستر به صورت اعشاری داده شود به صورت زیر عمل کنید.
View > Monitoring Data Format > Float

دستورات مقایسه کننده
این دستورات که برای عمل مقایسه بین دو عدد است. که به صورت زیر هستند:
LD= : حالت مساوی
LD<> : حالت نامساوی
LD< :="" حالت="">
LD> : حالت بزرگتر
LD<= :="" حالت="" کوچکتر="" یا="">
LD>= : حالت بزرگتر یا مساوی

این دستورات برای اعداد 16 بیتی هستند. برای اعداد 32 بیتی کافی است به ابتدای دستورات D اضافه کنید. برای مثال LD= ، به DLD= تغییر می‌کند.
مثال:
دمای مطلوب درون سالنی 20 درجه است. اگر دما بین 20 تا 30 درجه بود چیلر اول کار کند اگر بین 30 تا 35 بود چیلر دوم هم اضافه شود اگر 35 به بالا بود هر سه چیلر باهم کار کند اگر دما به 27  درجه رسید چیلر دوم تا سوم خاموش شود و اگر از 17 درجه دما کمتر شد چیلر اول خاموش شود.
chiller 1: Y0
​chiller 2: Y1
chiller3: Y2

دستورات مقایسه کننده

در مثال بالا با دادن مقدارهای متفاوت به D0 و اجرای برنامه متوجه SET و RST شدن چیلرها می شوید.

Divider

راه‌های ارتباطی نیک صنعت:

  • تماس با نیک صنعت: 021:87700210
  • واحد فروش نیک صنعت: 09197872783
  • واحد تعمیرات نیک صنعت: 09197872789
  • ایمیل نیک صنعت: info@nicsanat.com
  • آدرس شرکت: تهران، خیابان بهشتی، خیابان میرعماد، خیابان پیمانی(یازدهم)، پلاک 17
تماس با ما

.

مقالات مرتبط
نظرات

mokhtari
mokhtari

1402/شهریور/13|10:55

تشکر, توضیحات خیلی خوبی بود. ممنون از زحماتتون /// ممنون از شما، بسیار خرسندیم که آموزش wplsoft برای شما مفید واقع شده است

مشاهده بیشتر