اینستراکشن خروجی انالوگ ۰تا ۱۰ولت
-
- کاربر تازه وارد
- پست: 23
- تاریخ عضویت: 15 می 2023, 17:29
- محل اقامت: Tehran
اینستراکشن خروجی انالوگ ۰تا ۱۰ولت
سلام استاد من میخوام از خروجی انالوگ ۰تا ۱۰ ولت استفاده کنم از کدوم ایکن برای این کار توی برنامه نویسی استفاده کنم البته کنترل از طریق hmiهستش
- mahdi.faani
- مدیر انجمن
- پست: 99
- تاریخ عضویت: 14 می 2023, 14:39
- محل اقامت: Tehran
- تماس:
Re: ایکن خروجی انالوگ ۰تا ۱۰ولت
سلام وقت بخیر
با استفاده از اینستراکشن (instruction) به نام SCP_NORM امکان تبدیل یک بازه عددی به یک بازه عددی دیگر را خواهید داشت
این اینستراکشن در بخش monitor and control قابل دسترس هست
البته از داخل کاتالوگ هم امکان سرچ کردن و پیدا کردنش رو دارید
طبق تصویر زیر از این اینستراکشن استفاده کنید
با استفاده از اینستراکشن (instruction) به نام SCP_NORM امکان تبدیل یک بازه عددی به یک بازه عددی دیگر را خواهید داشت
این اینستراکشن در بخش monitor and control قابل دسترس هست
البته از داخل کاتالوگ هم امکان سرچ کردن و پیدا کردنش رو دارید
طبق تصویر زیر از این اینستراکشن استفاده کنید
-
- کاربر تازه وارد
- پست: 23
- تاریخ عضویت: 15 می 2023, 17:29
- محل اقامت: Tehran
Re: ایکن خروجی انالوگ ۰تا ۱۰ولت
مهندس میشه درمورد اینسرتراکشن scp_norm بیشتر توضیح بدین من میخوام از hmi دور یک اینورتر رو بصورت انالوگ ۰تا ۱۰ ولت کنترل کنم و از خروجی انالوگ ماژول استفاده کنم
- mahdi.faani
- مدیر انجمن
- پست: 99
- تاریخ عضویت: 14 می 2023, 14:39
- محل اقامت: Tehran
- تماس:
Re: ایکن خروجی انالوگ ۰تا ۱۰ولت
ببینید ارتباط با hmi به تبدیل رنج اعداد ارتباطی نداره. شما در مرحله اول باید لایه برنامه نزدیک به سخت افزار رو کامل کنید به این معنی که پی ال سی بدون حضور اچ ام آی باید بتونه کارشو انجام بده
پس در مرحله اول یک تگ بسازید به عنوان ورودی scp_norm و به ورودی INV متصل کنید
مثلا قصد دارید قدرت ۰ تا ۱۰۰ درصد رو برای ایجاد گشتاور موتور به اینورتر ارسال کنید. برای این منظور باید به IN_L و IN_H به ترتیب مقادیر ۰ و ۱۰۰ رو اعمال کنید. حالا رنج خروجی رو باید تعریف کنید. رنج خروجی آنالوگ معمولا ۰ تا ۱۰ ولت یا ۴ تا ۲۰ میلی آمپر هست که برای مثال شما باید مقادیر ۰ و ۱۰ رو به ترتیب به OUT_L و OUT_H اعمال کنید. در مرحله آخر تگ مرتبط با خروجی آنالوگ رو به OUT متصل کنید
پس در مرحله اول یک تگ بسازید به عنوان ورودی scp_norm و به ورودی INV متصل کنید
مثلا قصد دارید قدرت ۰ تا ۱۰۰ درصد رو برای ایجاد گشتاور موتور به اینورتر ارسال کنید. برای این منظور باید به IN_L و IN_H به ترتیب مقادیر ۰ و ۱۰۰ رو اعمال کنید. حالا رنج خروجی رو باید تعریف کنید. رنج خروجی آنالوگ معمولا ۰ تا ۱۰ ولت یا ۴ تا ۲۰ میلی آمپر هست که برای مثال شما باید مقادیر ۰ و ۱۰ رو به ترتیب به OUT_L و OUT_H اعمال کنید. در مرحله آخر تگ مرتبط با خروجی آنالوگ رو به OUT متصل کنید
-
- کاربر تازه وارد
- پست: 23
- تاریخ عضویت: 15 می 2023, 17:29
- محل اقامت: Tehran
Re: ایکن خروجی انالوگ ۰تا ۱۰ولت
مهندس اینسترکشن scp_normتست گرفتم و به درستی خروجی ۰تا ۱۰ ولت رو با تعقیرات invگرفتم ولی اینم هم مثل hysteresisبا قطع enورودی ولتاژ خروجی وصل میمونه برای این مشکل چ کاری بایستی کنم بزای هیزترزیس and استفاده کردم درست شد
- mahdi.faani
- مدیر انجمن
- پست: 99
- تاریخ عضویت: 14 می 2023, 14:39
- محل اقامت: Tehran
- تماس:
Re: اینستراکشن خروجی انالوگ ۰تا ۱۰ولت
برای کاری که مدنظر شما هست نباید از EN و ENO استفاده کنید. این پین ها برای کنترل فرایند اجرای برنامه کاربرد دارند. وقتی EN رو 0 کنید در واقع از اجرای اون اینستراکشن دارید جلوگیری میکنید و وقتی اینستراکشن اجرا نشه طبیعی هست که خروجی هاش هم آپدیت نمیشن. یک نمونه کد در زیر پیوست کردم مشاهده بفرمایید:
نمونه کد زیر رو هم مشاهده کنید
هر دو برنامه دقیقا یک کار انجام می دهند. اینکه شما چه متدی برای برنامه نویسی انتخاب کنید به شرایط اون برنامه و روش های خودتون بستگی داره
مثلا برنامه اول و دوم، هردو 4 اینستراکشن دارند.
برنامه اول همیشه اینستراکشن SCP_NORM رو اجرا میکنه در حالی که برنامه دوم در شرایطی که تیغه فعال باشه SCP_NORMرو اجرا میکنه.
برنامه اول حداقل 3 اینستراکشن رو اجرا میکنه و در شرایطی که تیغه فعال باشه 4 اینستراکشن اجرا میکنه در حالی که برنامه دوم همیشه 3 اینستراکشن اجرا میکنه
هر دو برنامه یک کار انجام میدهند اما برنامه دوم حافظه کمتر و زمان کمتری از CPU مصرف میکنه.
به نام تگ ها و روند اجرای برنامه دقت کنید. از یک تگ بولین برای کنترل فعال یا غیر فعال شدن موتور استفاده شده. و از یک تگ Real برای نگهداری میزان پاور موتور. وقتی قرار هست کلا موتور رو خاموش کنید باید تگ MotorEN رو 0 کنید. با این کار مقدار خروجی آنالوگ فارغ از اینکه چه مقداری در MotorPower وجود داره، صفر میشه. همچنین برای خود اینورتر هم میتونید از تگ MotorEN برای ارسال خروجی دیجیتال به اینورتر برای فعال و غیر فعال کردن موتور استفاده کنید.
به نام تگ ها دقت کنید. بهتره نام تگ های گلوبال (Global) رو با حرف g شروع کنید. نام تگ هایی که در فضای خروجی (Q) قرار دارند رو با q شروع کنید. به همین ترتیب برای فضای I از i و فضای Local از l استفاده کنید. اینطور نامگذاری باعث افزایش خوانایی برنامه میشه و وقتی برنامه تون بزرگ شد باعث ابهام نمیشه.
همیشه سعی کنید خروجی های PLC رو فقط در یک نقطه از برنامه مقدار دهی کنید. از مقدار دهی به خروجی ها در چند نقطه مختلف و به خصوص در برنامه های Multi task اکیدا خودداری کنید.
با رعایت نکات ساده ای مثل نکات بالا میتونید برنامه های بزرگ رو به سادگی مدیریت و یا در صورت نیاز عیب یابی کنید
نمونه کد زیر رو هم مشاهده کنید
هر دو برنامه دقیقا یک کار انجام می دهند. اینکه شما چه متدی برای برنامه نویسی انتخاب کنید به شرایط اون برنامه و روش های خودتون بستگی داره
مثلا برنامه اول و دوم، هردو 4 اینستراکشن دارند.
برنامه اول همیشه اینستراکشن SCP_NORM رو اجرا میکنه در حالی که برنامه دوم در شرایطی که تیغه فعال باشه SCP_NORMرو اجرا میکنه.
برنامه اول حداقل 3 اینستراکشن رو اجرا میکنه و در شرایطی که تیغه فعال باشه 4 اینستراکشن اجرا میکنه در حالی که برنامه دوم همیشه 3 اینستراکشن اجرا میکنه
هر دو برنامه یک کار انجام میدهند اما برنامه دوم حافظه کمتر و زمان کمتری از CPU مصرف میکنه.
به نام تگ ها و روند اجرای برنامه دقت کنید. از یک تگ بولین برای کنترل فعال یا غیر فعال شدن موتور استفاده شده. و از یک تگ Real برای نگهداری میزان پاور موتور. وقتی قرار هست کلا موتور رو خاموش کنید باید تگ MotorEN رو 0 کنید. با این کار مقدار خروجی آنالوگ فارغ از اینکه چه مقداری در MotorPower وجود داره، صفر میشه. همچنین برای خود اینورتر هم میتونید از تگ MotorEN برای ارسال خروجی دیجیتال به اینورتر برای فعال و غیر فعال کردن موتور استفاده کنید.
به نام تگ ها دقت کنید. بهتره نام تگ های گلوبال (Global) رو با حرف g شروع کنید. نام تگ هایی که در فضای خروجی (Q) قرار دارند رو با q شروع کنید. به همین ترتیب برای فضای I از i و فضای Local از l استفاده کنید. اینطور نامگذاری باعث افزایش خوانایی برنامه میشه و وقتی برنامه تون بزرگ شد باعث ابهام نمیشه.
همیشه سعی کنید خروجی های PLC رو فقط در یک نقطه از برنامه مقدار دهی کنید. از مقدار دهی به خروجی ها در چند نقطه مختلف و به خصوص در برنامه های Multi task اکیدا خودداری کنید.
با رعایت نکات ساده ای مثل نکات بالا میتونید برنامه های بزرگ رو به سادگی مدیریت و یا در صورت نیاز عیب یابی کنید
- mahdi.faani
- مدیر انجمن
- پست: 99
- تاریخ عضویت: 14 می 2023, 14:39
- محل اقامت: Tehran
- تماس:
Re: اینستراکشن خروجی انالوگ ۰تا ۱۰ولت
صفحه 65 از System Manual رو مطالعه بفرمایید. در خصوص کاربر پین های EN و ENO توضیح داده
-
- کاربر تازه وارد
- پست: 23
- تاریخ عضویت: 15 می 2023, 17:29
- محل اقامت: Tehran
Re: اینستراکشن خروجی انالوگ ۰تا ۱۰ولت
مهندس منظورتون از تگ گلوبال چیه ؟
آخرین ویرایش توسط Amirjuibar در 20 می 2023, 00:06، در مجموع 1 بار ویرایش شده است.
- mahdi.faani
- مدیر انجمن
- پست: 99
- تاریخ عضویت: 14 می 2023, 14:39
- محل اقامت: Tehran
- تماس:
Re: اینستراکشن خروجی انالوگ ۰تا ۱۰ولت
بر اساس استاندارد IEC61131_3 متغیر های برنامه (tag) باید در چند دسته (class) مختلف تعریف شوند. این کلاس ها دسترسی های متفاوتی جهت خواندن و نوشتن دارند و به این شکل تعریف میشن:
دسترسی عمومی (global) : این تگ ها در همه جا قابل دسترس هستند. در تمام پروگرم بلاک ها (program block یا PB) میتوانید از این تگ ها استفاده کنید. تگ هایی که در جدول تگ های PLC تعریف شوند در این دسته قرار میگیرند.
دسترسی موقت محلی (Local Temp): این کلاس فقط داخل PB ها قرار دارد و تنها در درون PB میتوانید این دسته از تگ ها را بسازید. دقت کنید که با هربار اجرای PB این تگ ها با مقدار اولیه تعریف شده ساخته می شوند و بعد از اجرای برنامه از بین می روند. این کلاس در فانکشن ها (function یا fc) یا فانکشن بلاک ها (function block یا fb) قرار دارد.
دسترسی همیشگی محلی (Local Static): این کلاس فقط داخل PB ها قرار دارد و تنها در درون PB میتوانید این دسته از تگ ها را بسازید. دقت کنید که با اجرای اولیه PB این تگ ها با مقدار اولیه تعریف شده ساخته می شوند و تا پایان حیات برنامه پی ال سی مقدار خود را حفظ میکنند و از بین نمی روند. این کلاس در ارگانایزیشن بلاک ها (organization block یا ob) یا فانکشن بلاک ها (function block یا fb) قرار دارد.
برای اطلاعات بیشتر به صفحه ۳۶ system manual پی ال سی ها مراجعه فرمایید
دسترسی عمومی (global) : این تگ ها در همه جا قابل دسترس هستند. در تمام پروگرم بلاک ها (program block یا PB) میتوانید از این تگ ها استفاده کنید. تگ هایی که در جدول تگ های PLC تعریف شوند در این دسته قرار میگیرند.
دسترسی موقت محلی (Local Temp): این کلاس فقط داخل PB ها قرار دارد و تنها در درون PB میتوانید این دسته از تگ ها را بسازید. دقت کنید که با هربار اجرای PB این تگ ها با مقدار اولیه تعریف شده ساخته می شوند و بعد از اجرای برنامه از بین می روند. این کلاس در فانکشن ها (function یا fc) یا فانکشن بلاک ها (function block یا fb) قرار دارد.
دسترسی همیشگی محلی (Local Static): این کلاس فقط داخل PB ها قرار دارد و تنها در درون PB میتوانید این دسته از تگ ها را بسازید. دقت کنید که با اجرای اولیه PB این تگ ها با مقدار اولیه تعریف شده ساخته می شوند و تا پایان حیات برنامه پی ال سی مقدار خود را حفظ میکنند و از بین نمی روند. این کلاس در ارگانایزیشن بلاک ها (organization block یا ob) یا فانکشن بلاک ها (function block یا fb) قرار دارد.
برای اطلاعات بیشتر به صفحه ۳۶ system manual پی ال سی ها مراجعه فرمایید
- پیوستها
-
- Screenshot_20230519-085413_Foxit PDF.jpg
- (484.27 KiB) 6 مرتبه دانلود شده
-
- کاربر تازه وارد
- پست: 19
- تاریخ عضویت: 15 می 2023, 09:43
Re: اینستراکشن خروجی انالوگ ۰تا ۱۰ولت
مهندس سلام برنامه نوشته شده برای کنترل ولتاژ خروجی 0تا10ولتاز طریقhmiوplcتوحالت خاموش یا صفر درصد ۱.۶ولت داره و توحالت ۱۳۰درصد ولتاژ ۱۰ ولت رو میده بنظرتون مشکلش کجاست