برای مشاهده لیست علاقه مندی ها وارد شوید!

مشاهده محصولات فروشگاه

اتصال انکودر به PLC S7-1200

دسته بندی :مقالات آموزشی رایگان ۲۷ آذر ۱۴۰۰ فرهاد ترابی 2515
فنی مهندسی آروین نوین کنترل - بهترین خدمات اتوماسیون صنعتی -PLC و ابزاردقیق
فنی مهندسی آروین نوین کنترل - بهترین خدمات اتوماسیون صنعتی -PLC و ابزاردقیق

دانلود فایل آموزش اتصال انکودر به PLC S7-1200

اموزش PLC S7-1200

اتصال انکودر به S71200

انکودر چیست?

نحوه اتصال انکودر به plc زیمنس

آموزش TIA PORTAL پایه تا کاربردی را از اینجا تهیه نمایید.

آموزش TIA PORTAL پیشرفته را از اینجا تهیه نمایید.

فایل PDF ای مقاله را در انتهای مقاله دریافت نمایید.

به نام خدا

 

اتصال انکودرplc s7-1200
 
بنا به نوع plc  تعداد کانالهایی که میشود به آن انکودر یا سنسور high speed  متصل کرد به صورت ذیل می باشد :

 

 

 

همانطور که در جدول بالا مشاهده میکنید plc های 1211 و 1212  در صورت اضافه کردن سیگنال برد به تعداد 2 عدد به تعداد کل انکودرها یا سنسور high speed  اضافه میشود
و  همه plc  ها در صورتی که سیگنال تک باشه تا فرکانس 100 کیلو هرتز در برخی کانالها و 30 کیلو هرتز در دیگر کانالها ساپورت میکنند
ولی چنانچه انکودر متصل کنید به دلیل 2 فاز بودن A  و B  ماکزیمم فرکانس تا 80 کیلو هرتز در برخی کانالها و 2- کیلو هرتز در دیگر کانالها ساپورت میشود .
بنا به استفاده مورد نظر می بایست به ماکزیمم فرکانس مورد نظر توجه داشت .
برای اتصال انکودر به plc s7 1200  مراحل ذیل را باید انجام دهید :
1.
ابتدا در برنامه TIA PORTAL  ،  plcمورد نظر را انتخاب نمایید . در بخش سخت افزار ( Device view )  روی plc  کلیک کرده در پنجره پایین سر برگ properties  و زیر گروه General  مطابق شکل وارد بخش High speed counters (HSC )  شوید .

 

2.کانال مورد نظر را انتخاب نمایید . ( HSC1  یا HSC2  یا ….. ) سپس وارد زیر شاخه کانال مورد نظر شوید. در تب General در HSC مورد نظر ابتدا تیک Enable this high speed counter  را فعال کنید .

 

3. در ادامه موارد مهم تنظیمات سخت افزاری را توضیح میدهیم :
3-1
در بخش function  نوع مد کاری و دیگر موارد مربوط به آن را تنظیم میکنیم:

 

الف ) بخش Type of counting-

 

در این بخش نوع مد کاری را تعیین میکنیم :

 PLC اتصال انکودر به  
Count  :
اگر میخواهیم در مد پوزیشن از انکودر یا سنسور استفاده کنیم از مد count  استفاده میکنیم
Period  : 
اگر میخواهیم پالس های انکودر یا سنسور را در یک فاصله زمانی مشخص ( 0.01 یا 0.1 یا 1 ثانیه  در بخش frequency  measuring period  )شمارش کنیم از این مد استفاده میکنیم این مد شبیه به مد فرکانس هست با این تفاوت که در فرکانس تعداد پالس در مدت زمان یک ثانیه نشان داده میشود اما در این مد در سه بازه زمانی میتوانیم این مقدار را تنظیم کنیم
Frequency  :
اگر میخواهیم فرکانس پالس های انکودر را محاسبه کنیم از این مد استفاده میکنیم دقت کنید در این مد میتوانیم زمان رفرش شدن فرکانس را تنظیم کنیم همانند مد period  اما  تفاوتش با این مد این هست که هر زمانی تنظیم کنیم تعداد پالس های انکودر یا سنسور را در مدت یک ثانیه به ما نشان میدهد که یعنی همان فرکانس منتها زمان رفرش آن متفاوت می باشد که بنا به استفاده ما می تواند قابل تنظیم باشد .
Motion Control  :
این بخش برای زمانی هست که میخواهیم یک محور سرو یا استپ موتور را  از طریق توابع موشن و پالس خارجی راه اندازی کنیم و به صورت close loop  میخواهیم انکودر یا سنسور را به عنوان فیدبک پوزیشن ازش استفاده کنیم به کار میرود که در این فایل به توضیح آن نمیپردازیم .

 

ب) بخش Operation phase

 

در این بخش نوع سیگنال مورد نظر را تعیین میکنیم :
Single phase  :
اگر یک سنسور سرعت بالا داشتیم که روی چرخ دنده محور تنظیم شده از این گزینه استفاده میکنیم . در این صورت جهت  شمارش را میتوانیم افزاینده یا کاهنده به صورت نرم افزاری  یا سخت افزاری ( به عنوان یک ورودی  دیجیتال ) تعیین کنیم .
Two phase  :
در این حالت دو سنسور سرعت بالا داریم  که یکی برای حالت افزاینده شمارش استفاده میشود و یکی برای حالت کاهنده شمارش تعیین میشود که در بخش Hardware input  در زیر گروه HSC  این ورودی ها رو می توانیم تعیین کنیم . این حالت خیلی کم استفاده میشود و کم کاربرد می باشد .
A/B counter  :
این حالت برای اتصال انکودر می باشد . انکودر افزایشی که خروجی پالس آن  24 ولت  می باشد و دو پالسو  B  آن را به ورودی های دیجیتال متصل میکنیم . در این حالت تعداد پالس ها به صورت نرمال شمارش میشود و از پالس B  به دلیل  تعیین  جهت گردش برای افزایشی یا کاهشی کانتر استفاده میشود .
A/B counter fourfold  : 
این حالت نیز برای اتصال انکودر می باشد . تنها تفاوتش این هست که به لبه های پایین و بالای هر دو پالس A  و B  انکودر شمارش میشود . در این حالت تعداد شمارش کانتر 4 برابر مد a/b counter  می باشد یعنی یک دور انکودر بزند تعداد پالس شمارش شده در کانتر 4 برابر رزولوشن انکودر می باشد . و این حالت دقت را بالاتر میبرد و در جایی که دقت بالاتری برای محاسبه پوزیشن میخواهیم از این حالت استفاده میکنیم .

 

ج ) بخش Counting direction is  specified by

 

این بخش اگر در مد operation phase  حالت single phase  انتخاب کنید این حالت فعال میشود در مابقی موارد غیر فعال می باشد .
User program ( internal direction control )  :
این حالت برای این هست که جهت گردش برای افزایشی یا کاهشی بودن شمارش پالس ها را به صورت نرم افزاری از داخل برنامه و تابع مروبطه تعیین کنیم .
Input ( external direction control ):
این حالت برای تعیین جهت گردش برای افزایشی یا کاهشی بودن شمارش پالس ها به صورت تعیین ورودی سخت افزاری می باشد که ورودی مورد نظر در بخش hardware inputs  در HSC  تعیین می شود .

 

د) بخش Initial counting direction
این بخش برای تعیین اولیه نوع افزایشی یا کاهشی بودن کانتر شمارش ( یعنی جهت حرکت ) می باشد .

 

برای افزایشی شمارش count up  و برای کاهشی بودن شمارش count down  را انتخاب میکنیم .

 

ه ) بخش Frequency measuring period
این بحش زمانی که در operation mode  حالت period  یا frequency  را انتخاب میکنیم فعال میشود و چهار حالت زمانی دارد 0.01  یا 0.1   یا 1  ثانیه  ، که میتوان هم از این قسمت تعیین کرد هم میتوان در حین برنامه با استفاده از تابع مورد نظر تغییر دهیم .

 

. بخش های capture input  و gate input  به شرح ذیل می باشد :
3-2
بخش capture input  : این بخش را اگر فعال کنیم در بخش hardware input  یک ورودی سخت افزاری به آن می توان اختصاص داد که میتوان در حالت لبه بالا یا لبه پایین یا در هر دو لبه مقدار کانتر فعال در این حالت ها ثبت شود و از آن در جایی استفاده شود مثلا میخواهیم در یک حالت خاص مقدار پوزیشن را در لحظه خاصی که محور از یک سنسور عبور میکند داشته باشیم در حالت عادی چون سرعت بالا هست شاید نتوان مقدار انکودر را در این لبه بالای این ورودی به طور دقیق ثبت کنیم اما میتوان از این حالت استفاده کرد  برای استفاده این حالت حتما باید تابع خاص انکودر استفاده شود که در ادامه توضیح خواهیم داد .

 

3-3بخش gate input  : این بخش را اگر فعال کنیم در بخش hardware input  یک ورودی سخت افزاری به آن میتوان اختصاص داد که اگر ورودی فعال شود کانتر عمل شمارش پالس های انکودر را انجام میدهد در غیر اینصورت اگر ورودی غیر فعال شود با اینکه پالس انکودر بیاید عمل شمارش انجام نمیشود .  ( فعال بودن ورودی را یا با سطح بالا میتوان تعیین کرد یعنی 1 منطقی یا با سطح پایین یعنی صفر منطقی ) این بخش شبیه کانترهای سری 300 در plc  های کامپکت آن سری می باشد . که می توان این حالت را نرم افزاری انتخاب کرد و این بخش را غیر فعال کرد .

 

3-4. بخش Event configuration  :
در این بخش اینتراپت ها را تنظیم میکنیم که اولین بخش آن مربوط به تنظیم شماره اینتراپتی هست که اگر مقدار کانتر با مقدار رفرنسی که از تابع انکودر به آن بدهیم برنامه به ob  اینتراپت مربوطه رود و Ob  مربوطه را اجرا نماید در حقیقت زمانی که دقیقا CV=RV  شود این اینتراپت اجرا میشود . حال اگر چندین مقدار رفرنس وجود داشته باشد توضیح خواهیم داد که چگونه با یک اینتراپت بتوانیم این کار را انجام دهیم .

 

پس از انجام مراحل بالا در بخش event configuration  و فعال کردن آن با استفاده از تابع انکودر میتوانید مقدار RV  که رفرنس هست را داخل رجیستر آن بریزید و هر موقع کانتر به این مقدار رسید میرود و اینتراپت مربوطه ( با توجه به شکل ob40  ) را اجرا مینماید که میتوانید برنامه مورد نظر را در ob40  بنویسید . همانطور که اشاره شد در ادامه بعد از توضیح تابع مثالی میزنیم که بتوانیم چندین رفرنس را فقط با یک ob اینتراپتی اجرا کنیم .

 

3-5. بخش Hardware input   :
در این بخش آدرس ورودی های سخت افزاری مورد نظر هر بخش را با توجه به فعال کردن قسمت های مختلف قبلی میتوانید وارد کنید .
به عنوان مثال اگر کانتر را به صورت دو فاز A   و  B  انتخاب کرده باشید و بخش  Gate hardware  و  Capture  را فعال کرده باشید میتوانید مطابق شکل ذیل  آدرس ورودی های موردنظر را وارد کنید .

 

3-6. بخش  I/O addresses  :
در این بخش آدرس یک  double word  را باید وارد کنید که مقدار کانتر انکودر در آن ریخته شود و در برنامه از آن استفاده کنید در حقیقت اگر تابع انکودر را نیز استفاده نکنید مقدار کانتر در صورت فعال کردن hsc  مربوطه در این ورودی ریخته میشود که به طور پیش فرض در ID1000  ریخته میشود . (  cv= ID1000  ) برای صفر کردن کانتر باید حتما تابع انکودر استفاده شود . که در ادامه توضیح داده میشود . ( در بخش start address  آدرس شروع اولین بایت داده میشود و در بخش end address  آدرس بایت آخر به طور اتومات نوشته میشود که جمعا 4 بایت می باشد چون یک double word  هست )

 

3-7. بخش  Hardware identifier  :
این بخش آدرس سخت افزاری هست که به عنوان شماره خاص برای این کانتر در نظر گرفته شده است که می بایست در تابع انکودر از آن استفاده کرد . این بخش تنظیمی نیست و فقط نمایشی می باشد .

 

پس از تنظیمات بخش سخت افزاری می توان وارد برنامه نویسی شد و با توجه به کاربرد مورد نظر و مد انتخابی تابع انکودر را استفاده کرد . در plc s7 1200  ما دو تابع انکودر داریم یک تابع به طور خاص استفاده میشود اما تابع دیگر عمومی تر می باشد . اکثر مواقع از تابع عمومی استفاده میشود اما اگر بخواهیم از تمامی قابلیت های ورودی های مختلف بخصوص capture  استفاده کنیم از تابع خاص و کلی استفاده میکنیم . ابتدا تابع عمومی را توضیح میدهیم .
الف ) استفاده از تابع CTRL_HSC  :
وارد بخش برنامه نویسی شده و در ob1  یا fc  مورد نظر از سمت راست ستون Technology   ، پوشه counting  و از زیر پوشه others ، تابع CTRL_HSC  را انتخاب کرده و وارد نتورک برنامه میکنیم :

 

یک دیتا بلاک برای تابع انتخاب میکنیم و یا به طور اتومات یک DB  برای تابع انتخاب میشود .
پایه های این تابع به شرح ذیل می باشد :
پایه HSC  :  دراین پایه می بایست شماره HSC  مورد نظر را که در بخش hardware  تنظیم کردیم وارد کنیم . منظور همان کد
Hardware identifier   
میباشد

 

پایه DIR  :
 
این پایه مربوط به زمانی هست که در مد تک سیگنال هستیم و میخواهیم جهت کانتر ( افزایشی یا کاهشی ) را به صورت نرم افزاری تعیین کنیم انتخاب میکنیم . دقت کنید که این پایه برای فعال کردن جهت جدید استفاده میشود به این صورت که یک ورودی بیت میگیرد و اگر این ورودی فعال شود  مقدار جهت جدید با توجه به پایه NEW_DIR  داده میشود چنانچه میخواهیم جهت افزایشی یا کاهشی کانتر را انتخاب کنیم میتوان این پایه را همواره یک داده و عدد NEW_DIR  را تغییر داد .

 

پایه CV  :
این پایه برای انتقال مقدار جدید کانتر می باشد . بدین صورت که اگر این پایه فعال شود هر مقدار که در پایه NEW_CV  هست به مقدار CV  ( که در بخش آدرس دهی رجیستر ID1000  به عنوان مثال تنظیم شده است ) منتقل می شود . به عنوان مثال از این پایه میتوان برای صفر کردن مقدار کانتر انکودر استفاده کرد . بدین صورت که در این پایه یک بیت آدرس دهی میکنید مثلا M10.0  سپس مقدار صفر را به پایه NEW_CV  میدهید با فعال کردن M10.0  مقدار صفر در رجیستر کانتر انکودر (  CV  )  یا همان آدرس سخت افزاری به طور پیش فرض ID1000  ریخته میشود . میتوان به جای M10.0  ورودی یک سنسور سخت افزاری مثلا I1.0  را بدهیم که این سنسور نقطه شروع حرکت محور باشد که همان حالت Homing  را نیز اجرا نماید و هنگامی که محور حرکت به این سنسور برسد مقدار کانتر انکور صفر شود .

 

پایه RV  :
این پایه برای فعال کردن  انتقال مقدار NEW_RV  به رجیستر RV  یا همان رفرنس هست . همانطور که در بخش تنظیمات سخت افزاری توضیح دادیم میتوان اینتراپتی تعریف کرد که اگر مقدار فعلی کانتر انکودر یا همان CV  با مقدار رجیستر رفرنس یعنی RV  برابر شود برنامه اینتراپت بخورد و OB  مربوط به این اینتراپت اجرا شود . حال اگر بخواهیم مقادیر مختلفی را داخل رفرنس قرار دهیم میتوان پایه Rv  در این تابع را یک بیت آدرس دهی کنیم به عنوان مثال M10.1  و با فعال شدن این پایه مقداری که در رجیستر NEW_RV  آدرس داده باشیم به رجیستر RV  منتقل میشود .

 

پایه PERIOD  :
این پایه زمانی احتیاج میشود که کانتر در مد فرکانس یا پریودیک باشد . پنانچه بخواهیم زمان پریدویک شمارش پالس ها برای محاسبه فرکانس یا پریودیک را تغییر دهیم از این پایه استفاده میکنیم . برای اینکار می بایست این پایه را یک ورودی بیت دهیم و با فعال شدن این پایه مقداری که در پایه NEW_ PERIOD  هست به عنوان زمان پریود جدید در نظر گرفته میشود . این حالت فقط در مد فرکانس و پریودیک استفاده قرار میگیرد .

 

مقدار کانتر پالس در ورودی سخت افزاری که تعیین کردیم در دسترس می باشدبه عنوان مثال به صورت دیفالت ID1000  برای کانال اول می باشد  ) .

 

نکته خیلی مهم :
پس از تنظیم ورودی های سخت افزاری برای پالس های A  و B  می بایست طبق شکل ذیل زمان فیلتر برای این ورودی ها را
را روی مینیمم ترین حالت یعنی 0.1 میکرو ثانیه قرار دهید . در غیر اینصورت پالس ها به درستی شمارش نمیشود .!!!!!!

 

مثال 1 :
یک انکودر 1024 پالس به یک موتور متصل شده است این موتور به یک گیربکس با ضریب نسبت 5 به 1 متصل شده و در نهایت یک شفت با قطر 100 میلیمتر میچرخاند. این انکودر را به plc 1200  متصل کردیم مطلوبست محاسبه موارد ذیل :
1.
فرکانس محور
2. rpm  
محور
3.
سرعت خطی بر حسب m/min  ( متر بر دقیقه )

 

حل :
در تنظیمات plc  چون نهایتا ما سرعت را فقط میخواهیم مد تنظیمی را در مد فرکانس تنظیم میکنیم ( رجوع شود به بخش تنظیمات فرکانس در plc1200  )  . سپس در ID1000  ما فرکانس پالس انکودر را داریم .

 

برای محاسبه فرکانس محور ابتدا فرکانس موتور را محاسبه میکنیم به صورت ذیل :
برای محاسبه فرکانس موتور ابتدا باید فرکانس پالس انکودر را بر رزولوشن انکودر تقسیم کنیم بنابراین  داریم :

 

در MD10  ما فرکانس موتور را داریم حال باید برضریب گیربکس تقسیم کنیم تا فرکانس محور را داشته باشیم :

 

در MD14  فرکانس محور را داریم . حال اگر بخواهیم rpm  یا همان دور در دقیقه را داشته باشیم کافیه فرکانس را در عدد 60 ضرب کنیم :

 

برای محاسبه سرعت خطی بر حسب واحد متر بر دقیقه ابتدا باید محیط محور یا شفت را بدست بیاوریم
برای محاسبه محیط شفت بر حسب متر باید قطر شفت یا محور را بر حسب متر در عدد پی ضرب کنیم
 
میلی متر  0.314= 3.14   *0.1   = محیط شفت
برای محاسبه سرعت خطی کافیه سرعت محور بر حسب rpm  را در محیط شفت یا محور ضرب کنیم قبل از آن باید ابتدا سرعت را به صورت عدد اعشاری تبدیل کنیم پس از آن در عدد محیط ضرب کنیم :

 

در نهایت سرعت خطی ( متر بر دقیقه ) را در MD26  داریم.

 

مثال 2 : یک انکودر با رزولوشن 2000 پالس به محور یک  نوار نقاله متصل شده است انکودر را به plc1200  متصل کرده ایم  روی این نوار نقاله یک شی به طول های متفاوت تولید میشود یک سنسور خازنی به طور ثابت در یک طرف نوار نقاله متصل شده است هنگامی که جسم تولید شده به این سنسور میرسد سنسور فعال میشود تا از جلوی آن عبور کند میخواهیم توسط انکودر و سنسور طول هر جسم را بر حسب میلیمتر حساب کرده و در HMI  نمایش دهیم . (هر 500 پالس از انکودر معادل 1 میلیمتر حرکت روی نوار نقاله می باشد )

 

حل مثال 2 :
ابتدا می بایست در plc 1200  تنظیمات را روی حالت count  و از نوع A/B  که مربوط به انکودر هست تنظیم کنیم ( میتوانیم برای دقت بیشتر روی حالت 4 بار شمارش گذاشت اما در این مثال روی حالت عادی شمارش میگذاریم . رجوع شود به بخش تنظیمات انکودر در بخش plc1200  )

 

عدد انکودر را در ID1000  داریم برای اینکه موقعی عدد انکودر را شمارش کنیم که جسم جلوی سنسور هست بنابراین ورودی سنسور را به ورودی gate  میدهیم و در بخش gate input  آن را تنظیم میکنیم و آدرس ورودی ها را در بخش hardware inputs  تنظیم میکنیم مطابق شکل :

 

حال تابع انکودر را فراخوانی میکنیم :

 

برای اینکه بتوانیم تابع انکودر را در مواقع لازم و در موقعی که جسم از کنار سنسور رد شد و برای جسم بعدی آماده  شمارش شود از بیت M0.0  به عنوان ریست انکودر استفاده کردیم که در ادامه نحوه فعال شدن آن را بیان می کنیم با فعال شدن بیت M0.0  مقدار صفر که در پایه New_cv  هست در مقدار کانتر یعنی ID1000  ریخته میشود .
حال باید مقدار کانتر یعنی ID1000  را بر اساس مقدار میلیمتر کالیبره کنیم و با فعال شدن ورودی سنسور gate  باید کانتر مقدارش در رجیستر مربوط به طول جسم ریخته شود و کانتر ریست شود . برای کالیبره کردن باید مقدار کانتر را طبق صورت مثال بر  هر 500 پالس معادل 1 میلیمتر بود تقسیم کنیم بنابراین داریم :

 

در MD30  ما مقدار طول جسم را بر حسب میلیمتر هنگامی که با لبه پایین ورودی سنسور هست داریم یعنی هنگامی که جسم کاملا از جلوی سنسور رد میشود . سنسور غیر فعال میشود و با لبه پایین آن مقدار پالس شمارش شده بر عدد 500 تقسیم میشود و حاصل به عنوان
طول جسم  بر حسب میلیمتر محاسبه شده در  MD30  منتقل میشود .

 

سپس باید با لبه بالای سنسور بیت مربوط به ریست کانتر انکودر فعال شود بنابراین داریم :

 

در اینصورت هربار جسم از جلوی سنسور در حال عبور هست ابتدا کانتر ریست میشود و در حالی که سنسور فعال هست کانتر شروع به شمارش میکند و در پایان که جسم از جلوی سنسور میگذرد عدد طول جسم محاسبه شده و در رجیستر مربوطه نمایش داده میشود .

 

حالا اگر بخواهیم کل طول جسم تولید شده را بر حسب  میلیمتر داشته باشیم میتوان در هنگامی که طول جسم محاسبه شد هر بار با لبه بالا یا پایین  سنسور گیت مقدار طول هر جسم را با یک رجیستر جمع کرد و در خود آن رجیستر ذخیره کرد :

 

بنابراین ما طول آخرین جسم تولید شده را انلاین همواره در MD30  داریم و طول کل جسم تولید شده را در MD40  داریم که میتوانید  به جای MD40  یک حافظه از دیتا بلاک که ماندگار هست تعیین کنید که با خاموش شدن برق plc  مقدار کل تولید شده ریست نمیشود.

 

مثال 3:  یک انکودر با تعداد پالس 1000 پالس در یک دور  به یک محور نوار نقاله متصل کردیم روی این نوار نقاله یک ورق مقوا به طور پیوسته در حال حرکت هست میخواهیم هنگامی که شروع به شمارش شد یک کاتر که با  یک شیر برقی فرمان میگیرد برش ها باید هر باید  به ترتیب  50 سانت و 100 سانت  و 150 سانتی متر پشت سر هم باشد یعنی یکبار 50 سانتی بار دوم 100 سانتی متر و بار سوم 150 سانتی متر  از مقوا  را برش دهد  و مجددا از 50 سانتی متر شروع کند هر بار برای فرمان برش میبایست plc  به مدت 500 میلی ثانیه به کاتر فرمان دهد و سپس فرمان را قطع کند . هر 2000 پالس از انکودر معادل یک سانت می باشد . این برنامه را در plc1200  پیاده سازی کنید .

 

حل مثال 3 :
دقت کنید که در این مثال ما با استفاده از مقایسه کننده ها نمیتوانیم مقدار انکودر را مقایسه کنیم به دلیال اینکه دقت کار بالا میخواهیم و این کار با مقایسه کننده های عادی امکان پذیر نیست . بنابراین ما از اینتراپت استفاده میکنیم . بنابراین باید از اینتراپت مخصوص انکودر استفاده کنیم و مقدار پالس معادل سانتی متر مورد نظر را در پایه RV  لود کنیم و هر بار که عمل اینتراپت انجام شد میبایست مجددا مقدار RV  را تغییر دهیم این مثال بسیار پرکاربرد می باشد و خیلی در صنعت مشابه این مثال استفاده میشود :
ابتدا پالس های معادل هر سانتی متر خواهسته شده را محاسبه میکنیم :

 

ابتدا پالس های معادل هر سانتی متر خواهسته شده را محاسبه میکنیم :
(
طبق اطلاعات داده شده هر 2000 پالس معادل یک سانتی متر است )
  100000   =  50 × 2000   
برای 50 سانتی متر مقدار انکودر باید به مقدار 100،000 پالس برسد
      200000  =   100 × 2000
برای 100 سانتی متر مقدار انکودر باید به مقدار 200،000 پالس برسد
  300000   =  150 × 2000
برای 150 سانتی متر مقدار انکودر باید به مقدار 300،000  پالس برسد

 

بنابراین ما باید مقدار انکودر را شمارش کنیم و در هر بار در سه نقطه متفاوت مقدار Rv  را که به عنوان رفرنس برای  اینتراپت هست مقادیر 100،000 ، 200،000 و 300،000  منتقل کنیم تا هنگامی که مقدار کانتر یعنی CV  با مقدار RV  برابر شد ( CV=RV  ) اینتراپت مورد نظر را اجرا نماید دقت کنید در اینتراپت ما باید خروجی مورد نظر شیر برقی کاتر را فعال کنیم و سپس در بیرون از ob  اینتراپت تایمر مربوطه برای ریست کردن آن را مینویسیم سپس در ادامه اینتراپت ما از مقایسه کننده استفاده میکنیم تا هر بار مقدار جدید Rv  را در رجیستر مربوطه که در تابع به مقدار  NEW-RV  دادیم را منتقل کنیم تا اینتراپت بعدی با توجه به مقدار جدید RV  اجرا شود .

 

مراحل کار را به ترتیب ذیل  انجام میدهیم :
1.
ابتدا طبق موارد قبل تنظیمات انکودر را انجام میدهیم .

 

2. در بخش سخت افزار و در زیر شاخه همان hsc  برای تنظیم و فعال کردن اینتراپت همانطور که قبلا توضیح داده شد وارد بخش Event configuration  میشویم و مطابق شکل ob  اینتراپتی را تنظیم میکنیم :

 

با توجه به مراحل بالا اینتراپت مربوط به انکودر OB40  ایجاد میشود که در ادامه برنامه مربوط به آن را توضیح میدهیم

 

3. پس از تنظیم موارد سخت افزاری انکودر و ایجاد OB  مربوط به اینتراپت وارد OB1  میشویم و تابع انکودر را فرخوانی میکنیم :

 

در برنامه بالا M0.0  برای ریست کانتر می باشد و رجیستر MD50  برای بارگذاری مقادیر مقایسه کانتر انکودر می باشد . در ابتدا باید با بیت M1.0  که در بخش هاردور به عنوان بیت first scan  تنظیم کرده ایم  ( سیکل اول اسکن plc  فقط ست می باشد (  مقدار اولیه 100000  را برای 50 سانتی متر بارگذاری میکنیم :

 

در خط بعدی برای خروجی کاتر که Q0.0  در نظر گرفته ایم یک تایمر on delay  میگذاریم که هر گاه کاتر در OB40  فعال شد پس از 500 میلی ثانیه آن را ریست کند .

 

حال برنامه مهم را در OB40  مخصوص اینتراپت کانتر انکودر به صورت ذیل مینویسیم :

 

در نتورک 1 ، خروجی Q0.0  که مربوط به کاتر می باشد فعال میکنیم که همانطور که در OB1  نوشتیم پس از 500 میلی ثانیه خروجی ریست میشود . در ادامه با مقایسه کننده عدد مربوط به اینتراپت بعدی که در رجیستر MD50  به پایه RV  تابع انکودر دادیم بارگذاری
می شود . بار اول در عدد 100000 اینتراپت اجرا میشود سپس چون مقدار 100000 در رجیستر MD50  می باشد عدد بعدی 200000 برای 100 سانتی متر می باشد و بار دوم که اینتراپت در عدد 200000 فعال میشود اینبار عدد 300000 در رجیستر MD50  ریخته میشود و سپس بار سوم که اینتراپت برای 150 سانتی متر فعال میشود مجددا عدد 100000 در رجیستر MD50  بارگذاری میشود .

 

ب)  استفاده از تابع CTRL_HSC_EXT  :
برای استفاده از تمامی امکانات تابع انکودر از تابع CTRL_HSC_EXT  استفاده میکنیم . این تابع تمامی امکانات لازم را به ما میدهد . یکی از کاربرد این تابع استفاده پایه capture  می باشد . این پایه که در بخش هاردور می باشد فقط با این تابع قابل اجرا و استفاده می باشد . برای فراخوانی این تابع در OB1  از بخش COUNTING  مطابق  شکل تابع را فراخوانی میکنیم :

 

پایه های این تابع به شرح ذیل می باشد :

 

پایه HSC  :  دراین پایه  همانند تابع قبلی HSC  می بایست شماره HSC  مورد نظر را که در بخش hardware  تنظیم کردیم وارد کنیم . منظور همان کد
Hardware identifier   
میباشد .
پایه CTRL  :  در این پایه می بایست یک بخش STATIC  از یک DATA BLOCK  را که مخصوص HSC  هست بیاوریم . برای این منظور به ترتیب ذیل عمل میکنیم :

 

1.ابتدا یک DATA BLOCK  دلخواه به صورت عمومی ایجاد میکنیم :

 

2. وارد دیتا بلاک میشویم و در قسمت DATA TYPE  عبارت  ((  HSC_COUNT  ))  را تایپ میکنیم و اینتر میزنیم .

 

یک STATIC  ایجاد میشود . دقت کنید که حتما می بایست عبارت HSC_COUNT  را تایپ کنید وبه صورت تایپ آماده قابل جستجو و انتخاب نیست . اگر این آرایه را باز کنید شامل پایه های مهمی می باشد که در شکل صفحه بعد مشاهده میکنید .

 

یک STATIC  ایجاد میشود . دقت کنید که حتما می بایست عبارت HSC_COUNT  را تایپ کنید وبه صورت تایپ آماده قابل جستجو و انتخاب نیست . اگر این آرایه را باز کنید شامل پایه های مهمی می باشد که در شکل صفحه بعد مشاهده میکنید .

 

پس از انجام موارد فوق تمامی موارد در دیتا بلاک مورد نظر قابل دسترسی می باشد . دقت کنید که حتما هر موردی که خواستیم فعال شود می بایست پایه  مربوط به Enable  آن مورد را در دیتا بلاک فعال کنیم مثلا خود کانتر را اگر بخواهیم فعال کنیم باید پایه EnHSC  را ست کنیم.
یکی از کاربردهای مهم این تابع برای هنگامی است که از پایه capture  بخواهیم استفاده کنیم . با مثال ذیل کاربرد این پایه را بهتر می توانید درک کنید .

 

مثال کاربردی از پایه capture  در انکودر :
بر روی یک دستگاه کاتر لفاف نایلون  می خواهیم هنگامی که سنسور چشمی فتوسل  روی  لفاف  نایلون را  دید عدد کانتر  انکودر را در رجیستری ثبت کنیم بدون اینکه کانتر انکودر را ریست کنیم .

 

حل مثال :
برای اینکار چون سرعت ورودی سنسور بسیار هست در حقیقت فرکانس سنسور زیاد هست بنابراین نمیتوان از لبه بالای سنسور استفاده کنیم در برنامه OB1  و طوری بنویسیم که با لبه بالا عدد کانتر را در رجیستری انتقال دهد این کار دقیق نیست و قطعا خطا داریم اما چنانچه بخواهیم این کار را با دقت انجام دهیم از تابع CTRL_HSC_EXT استفاده میکنیم برای این منظور طبق موارد بالا تابع را تعریف میکنیم . و ورودی سنسور چشم برای فتوسل را به پایه capture  میدهیم . ابتدا  HSC  را در بخش هاردور فعال کرده طبق موارد قبلی و سپس پایه capture  را از بخش هاردور بخش HSC  فعال میکنیم . ( این پایه برای ورژن های بالاتر فریم ورک plc  هست بنابراین اگر در برخی plc  ها موجود نبود به دلیل ورژن انتخابی plc  می باشد )

 

سپس از بخش Hardware inputs  آدرس ورودی سنسور را برای پایه capture input  مشخص می نمائید :

 

دقت کنید که برای ورودی capture  نیز همانند ورودی های پالس A  و B  انکودر می بایست فیلتر زمانی را در بخش Digital Inputs  روی حداقل زمان  تنظیم کنید .

 

سپس در OB1  همانند مواردی که توضیح داده شد . تابع CTRL_HSC_EXT  و دیتا بلاک مروبوطه را ایجاد میکنیم.

 

حال باید در دیتا بلاک مروبطه که به پایه CTRL  متصل کردیم پایه های EnHSC  و EnCapture  را حتما فعال کنیم . برای این کار میتوانیم این دو بیت را همواره ست کنیم .

 

با اجرای برنامه هر بار که سنسور چشمی فتوسل را ببیند با لبه بالای ورودی عدد انکودر در رجیستر  CapturedCount  در دیتا بلاک مربوط به کانتر در بخش HSC_COUNT  که به پایه CTRL  متصل کردیم ثبت میشود .

 

توضیح پایه Sync input  :
این پایه همانند پایه ریست در تابع انکودر می باشد . در حقیقت ریست سخت افزاری کانتر انکودر می باشد . چنانچه این پایه را در بخش HSC  در تابع انکودر فعال کنیم . و یک ورودی به آن اختصاص دهیم می توان این ورودی را به صورت Normaly open  (Active High  )  یا به صورت Normaly close  ( Active Low )  تعریف نمود . چنانچه این پایه فعال شود کانتر انکودر ریست و صفر می شود .

 


 

.

فرهاد ترابی

راه آسان‌تری برای ارتباط با کاربران‌مان پیدا کرده‌ایم :) عضویت در کانال

مطالب زیر را حتما بخوانید:

قوانین ارسال دیدگاه در سایت

  • چنانچه دیدگاهی توهین آمیز باشد تایید نخواهد شد.
  • چنانچه دیدگاه شما جنبه ی تبلیغاتی داشته باشد تایید نخواهد شد.
  • چنانچه از لینک سایر وبسایت ها و یا وبسایت خود در دیدگاه استفاده کرده باشید تایید نخواهد شد.
  • چنانچه در دیدگاه خود از شماره تماس، ایمیل و آیدی تلگرام استفاده کرده باشید تایید نخواهد شد.
  • چنانچه دیدگاهی بی ارتباط با موضوع آموزش مطرح شود تایید نخواهد شد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

لینک کوتاه:
8