در این قسمت از آموزش های نمایندگی زیمنس با نحوه عملکرد زبان UDF و طرز استفاده از آن و نحوه اضافه کردن UDF به توابع نرم افزار LOGO! زیمنس آشنا خواهید شد.
در آخرین نسخه LOGO! یعنی OBA7 زبان برنامه نویسی جدیدی به اسم UDF اضافه شده که مخفف عبارتUser Defined Function است. در محیط برنامه نویسی UDF کاربر می تواند هر برنامه ای را که می نویسد به عنوان یک بلوک یا تابع ذخیره کرده و از آن در برنامه نویسی در زبان های LAD یا FBD استفاده کند. مثلاً اگر بخواهیم یک برنامه پرکاربرد را که در برنامه های دیگر نیز استفاده می شود، به صورت یک بلوک دربیاوریم از محیط UDF استفاده می کنیم. محیط برنامهنویسی UDF مشابه محیط FBD است با این تفاوت که برخی از توابع و امکانات را دارا نمی باشد که در ادامه به آنها اشاره می کنیم.
برای برنامه نویسی در محیط UDF دو راه وجود دارد، می توان این زبان را در File > New انتخاب کرد و همچنین می توان برنامه را در محیط FBD نوشت و سپس بلوک ها را انتخاب کرده و با کلیک راست کردن روی آنها گزینه Create UDF را انتخاب کرد.
با بیان یک مثال چگونگی ایجاد یک UDF را توضیح می دهیم.
مثال: مدار STOP –START را به صورت یک تابع UDF در بیاورید.
ابتدا مدار STOP –START را در محیط FBD رسم می کنیم. سپس هه بلوک ها را انتخاب کرده و کلیک راست می کنیم و گزینه Create UDF را انتخاب می کنیم.
در این حالت پس از کلیک، کادر محاوره ای مشابه زیر باز می شود:
این کادر می گوید که بلوک های I2 , I1 , Q1 را نمی توان در UDF استفاده کرد. این یکی از محدویت های زبان UDF است که در آن نمی توان از ورودی ها و خروجی های دیجیتال و آنالوگ، Flagهای سیستم، شیفت رجیستر، تابع کنترل PI، تابع Text Message , Data Logging و توابع شبکه استفاده کرد.
برای رفع اشکال به وجود آمده تنها بلوک هایی را که مجاز هستیم، انتخاب می کنیم و سپس کلیک راست کرده و Create UDF را انتخاب می کنیم. صفحه ای مانند شکل زیر باز می شود:
در این شکل دیده می شود که بلوک UDF دارای سه ورودی و یک خروجی است که می توان هر کدام از این ورودیها و خروجی ها را نام گذاری کرد. عمل ویرایش UDF را از مسیر زیر انجام می دهیم:
Edit > Edit UDF Properties
پنجره ای همانند شکل زیر باز می شود:
زبانه I/O را انتخاب می کنیم، در بالای صفحه در قسمت Identifier می توان نام بلوک UDF را تعیین کرد که در اینجا برای بلوک گفته شده به دلخوه نام mft1 را انتخاب می کنیم. در قسمت UDF password می توان با ایجاد یک password امکان دسترسی به محتویات UDF را محدود کرد و از آن محافظت کرد.
در قسمت Input Connectors می توان ترمینال های ورودی و خروجی را نام گذاری کرد. برای مثال برای این UDF ورودی و خروجی را به صورت زیر نام گذاری می کنیم.
بعد از انجام ویرایش، باید UDF طراحی شده را از طریق مسیر File > Save as ذخیره کرد. UDF با فرمت Ima ذخیره میشود.
اگر بخواهیم UDF مورد نظر را به توابع موجود در نرم افزار LOGO! Soft Comfort اضافه کنیم به این صورت است که از طریق Tools > Options > UDF > Add UDF با کلیک روی آیکن Add پنجره ای باز می شود که در این پنجره باید به آدرسی که UDF در آن ذخیره شده رفته و سپس دکمه Open را کلیک کنید.
در انتهای لیست توابع در نرم افزار LOGO! بخشی به اسم UDF اضافه می شود که بلوک های نوشته شده UDF به این بخش اضافه می شود.
همان طور که در شکل دیده می شود در این مثال UDF با نامی که برای آن تعیین کردیم یعنی mft1 به این بخش اضافه شده است:
برای استفاده از UDF مورد نظر در برنامه یک صفحه برنامه نویسی به زبان FBD باز می کنیم و در قسمت UDF بلوک mft1 ر انتخاب می کنیم و ورودی و خروجی را به صورت شکل زیر به UDF وصل می کنیم:
مثال: مدار ستاره – مثلث را به صورت یک بلوک UDF درآورید.
حل: ابتدا مدار ستاره – مثلث را در زبان FBD به صورت زیر طراحی می کنیم:
نکته: در برنامه نویسی به زبان FBD به جای استفاده از بلوک NOT می توان با دو بار کلیک روی پایه توابع، مقدار ورودی را NOT کرد. با این کار یک نقطه مشکی رنگ روی ورودی تابع نمایان می شود. در برنامه بالا از این خاصیت استفاده شده است.
نکته: در نرم افزار LOGO! می توان برای جلوگیری از شلوغ شدن برنامه از ابزاری به نام Cut/Join Connections استفاده کرد، این ابزار سیم های ارتباطی را از برنامه حذف می کند. جای این ابزار در شکل نشان داده شده است که به صورت یک قیچی است.
مدار ستاره – مثلث به این صورت می شود:
حال برای ایجاد UDF بلوک های مجاز را انتخاب می کنیم.
توجه: باید دقت شود که علاوه بر انتخاب تمامی بلوک های مجاز، همه سیم های ارتباطی بین بلوک ها نیز انتخاب شوند. در غیر این صورت UDF که ساخته می شود به درستی کار نخواهد کرد.
اسم UDF را در هنگام ویرایش S-T می گذاریم و سپس به صورت زیر و ورودی و خروجی ها را نام گذاری می کنیم:
I1: start feedback, I2: stop, I3: star start, I4: triangle feedback, I5: main feedback, I6: triangle start
Q1: main, Q2: triangle, Q3: star
نکته ای که باید حتماً مد نظر قرار داد این است که شماره ورودی ها و خروجی ها در UDF با برنامه نوشته شده در زبان FBD یکی نیستند، مثلاً در تمرین بالا خروجی Q3 در برنامه FBD خروجی مثلث در نظر گرفته شده ولی در UDF به وجود آمده Q2 خروجی مثلث است و Q3 خروجی ستاره است و همچنین در برنامه FBD ورودی I1 به عنوان STOP در نظر گرفته شده ولی در UDF به وجود آمده ورودی I2 به عنوان STOP عمل می کند؛ بنابراین هنگام نام گذاری ورودی ها و خروجی های UDF، حتماً باید دقت شود که نام ها به درستی انتخاب شوند.
بعد از ویرایش UDF آن را Save کرده و به لیست توابع اضافه می کنیم و تابع نهایی به شکل زیر است:
اگر بخواهیم یک UDF را مجدد ویرایش کنیم مثلاً نام یک یا چند ورودی را تغییر دهیم، روی بلوک آن در برنامه کلیک راست کرده و سپس گزینه Expand UDF را انتخاب می کنیم. پس از اعمال تغییرات لازم، آن را Save می کنیم، در این حالت دیده می شود که روی بلوک قدیمی یک علامت تعجب ظاهر می شود و برای این که تغییرات اعمال شده به بلوک قدیمی نیز اعمال شود روی آن کلیک راست کرده و گزینه Update UDF را انتخاب می کنیم.
نکته: یک UDF می تواند حداکثر شامل 8 ورودی و 4 خروجی و 8 پارامتر قابل تغییر باشد.