پرینت

آموزش GUI در MATLAB (قسمت دوم)

منتشر شده در رابط گرافیکی کاربر GUI

در ادامه ی آموزش GUI بنا دارم در چند قسمت، یک مثال نسبتا کامل را به شما معرفی کنم، تا با مطالعه ی دقیق این مثال بتوانید برنامه های کاربردی خودتان را پیاده سازی کنید. در مطالعه ی این قسمت و همچنین قسمت های بعدی، پیش فرض آن است که دوستان یا قسمت اول آموزش را مطالعه کرده اند و یا اطلاعات اولیه را دارند، پس از ذکر جزئیات خودداری شده است.

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

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

برای شروع ابتدا guide را تایپ و اینتر کنید. سپس OK کرده و مانند شکل زیر قطعات را به میزان کافی آورده و مرتب کنید:

سپس مانند شکل زیر قطعات را نام گذاری و مرتب کنید:

توجه کنید که همه ی این قطعات در قسمت اول آموزش، معرفی شده اند. مشخصه ی tag ، برای کلیه ی قطعات را در حالت پیش فرض خود قرار دهید. برای اولین عنصر Pop-up Menu ، مقادیر Step و Impulse را به صورت زیر وارد کنید:

و برای دومین عنصر Pop-up Menu ، به ترتیب مقادیر:

  1. Root Locus
  2. Pole-Zero map

و همچنین برای سومین عنصر Pop-up Menu ، به ترتیب مقادیر:

  1. Bode diagram
  2. Nyquist
  3. Nichols

را وارد کرده و OK کنید.

توجه داشته باشید که حالت پیش فرض تمامی عناصر، همانی باشد که در شکل نشان داده شده است.

توضیح طرح:

همان طوری که احتمالا می دانید، ما به چندین روش می توانیم مشخصات یک سیستم کنترلی را بیان کنیم. از جمله معروف ترین این روش ها، یکی روش ضرایب چندجمله ای صورت و مخرج تابع تبدیل سیستم است و دیگری بیان صفرها و قطب های سیستم، به همراه گین تابع تبدیل می باشد. همان طور که در شکل مشخص است، ما هر دو روش فوق را آورده و پیش فرض را در روش اول قرار داده ایم. و برای هر دو روش نیز سیستمی را به صورت پیش فرض نوشته ایم. در ادامه قسمتی را برای اعمال تأخیر(تأخیر در فاز سیستم تغییر ایجاد می کند) به سیستم گذاشته ایم تا در مواقع لزوم بتوانیم به سیستم تأخیر اعمال کنیم. برای اعمال تأخیر، باید ابتدا Check Box را فعال کرده و سپس عدد تأخیر را بر حسب ثانیه در کادر مقابل آن وارد کنید. در پانل بعدی شما می توانید سیستم مورد نظرتان را به صورت حلقه باز ویا حلقه بسته آنالیز کنید(پیش فرض به صورت حلقه باز می باشد). اگر سیستم (G(s ، تابع تبدیل حلقه باز شما باشد، تابع تبدیل حلقه بسته به صورت زیر است(H(s)=1):

در پانل بعدی کاربر می تواند پاسخ سیستم را به ازای ورودی های پله و یا ضربه رسم نماید. کاربر می تواند زمان پاسخ را در حالت پیش فرض و یا حالت انتخابی قرار دهد. اگر کاربر حالت انتخابی را برگزیند، باید مقدار زمان موردنظر را بر حسب ثانیه در کادر مقابل آن وارد کند. در پانل بعدی کاربر می تواند مکان هندسی ریشه ها و یا مکان ریشه های سیستم را در منحنی جداگانه ای ترسیم نماید. و در پانل آخری نیز کاربر برحسب انتخاب خود می تواند دیاگرام بود یا نمودار نایکوئیست و یا نمودار نیکولز سیستم را در منحنی جداگانه ای ترسیم کند. در قسمت پائین پانل اصلی نیز دو دگمه قرار دارد که دگمه ی Run ، تغییرات ایجاد شده را اعمال کرده و منحنی ها را ترسیم می کند و دگمه ی Reset نیز کلیه ی مقادیر و شکل ها را در حالت پیش فرض خود قرار می دهد. سه عدد Axes نیز وجود دارد که وظایف آن ها کاملا مشخص است.

نکته: برای تعویض رنگ زمینه ی عناصر می توانید به تنظیمات آن عنصر رفته و به دلخواه رنگ پیش فرض را تغییر دهید. از مسیر Tools >> GUI Options به تنظیمات GUI بروید و مانند شکل زیر عمل کنید:

شما با قرار دادن Proportional در قسمت Resize Behavior قادر خواهید بود تا GUI موردنظرتان را به هر سایزی درآورید(مثلا آن را Full Screen کنید).

در مرحله ی بعد می خواهیم برای GUIیمان، منوهای مختلفی را ایجاد کنیم. این منوها به شرح زیر می باشند:

برای ایجاد این منوها، از مسیر Tools >> Menu Editor وارد ویرایشگر منو شوید. سپس یک منو جدید ایجاد کرده و نام آن را File قرار دهید و در قسمت tag عبارت file_menu و یا هر عبارت دیگری که براساس کاراکترهای مجاز بوده و بدون فاصله باشد، را بنویسید. سپس منوی دیگری را ایجاد کرده و نام آن را Reset قرار داده و یک tag دلخواه برای آن بنویسید. بعد از آن در قسمت Accelerator حرف R را قرار دهید. شما با این کار قادر خواهید بود که با کلیدهای Ctrl+R عمل ریست کردن را انجام دهید. آیتم Check mark this item را نیز فعال کنید. پس از آن بوسیله ی دگمه های جهتی، این آیتم را به زیرمجموعه ی آیتم File منتقل کنید. مانند شکل زیر:

در ادامه منوی دیگری ایجاد کرده و نام آن را Print گذاشته و برای آن یک tag انتخاب کنید. این آیتم را در زیرمجموعه ی File قرار دهید. سپس Separator above this item را فعال کنید. با انجام این کار، دو آیتم Reset و Print را از یکدیگر جدا کرده اید(درواقع بین آن ها یک خط گذاشته اید). سپس چهار منوی جداگانه تعریف کرده، و نام های آن را به ترتیب زیر قرار دهید:

  1. Figure
  2. Response of LTI System
  3. Roots analysis
  4. Frequency response

سپس براساس کاراکترهای مجاز، tagی متفاوت برای هرکدام انتخاب کنید. مثلا به صورت زیر:

  1. fig_print_menu
  2. res_print_menu
  3. root_print_menu
  4. freq_print_menu

ضمناً می توانید برای زیبایی کار، در منوی Response of LTI System گزینه ی Separator above this item را فعال کنید. در ادامه منوی دیگری با نام Exit ایجاد کرده و tag آن را exit_menu بنامید. سپس آن را از Print جدا کنید. حال تمای زیرمنوهای منوی اصلی File را ایجاد کرده ایم، پس به سراغ منوی Tools می رویم. این منو را با نام Tools ایجاد کنید(tag آن به کار ما نمی آید و همچنین tag کلیه ی منوهایی که دارای زیرمنو باشند) و دو منو را با نام های Show grid و Hide grid و تگ های show_menu و hide_menu را به زیرمجموعه ی آن اضافه کنید. منوی دیگری ایجاد کنید و نام آن را Help قرار داده و دو منوی دیگر را با نام های Using the ControlTool و About ControlTool و تگ های use_menu و about_menu را به زیرمجموعه ی آن ببرید. این دو را با یک خط از یکدیگر جدا کرده و برای Using the ControlTool در قسمت Accelerator، دگمه ی H را قرار دهید.

کار ایجاد منوها به پایان رسیده و به صورت زیر درآمده اند:

در مرحله ی آخر از طراحی GUI ، می خواهیم یک نوارابزار برای GUIیمان قرار دهیم. برای اینکار از مسیر Tools >> Toolbar Editor وارد ویرایشگر نوارابزار شوید. سپس ابزار پرینت را انتخاب و Add کنید. در ادامه ابزار Zoom In را اضافه کرده و گزینه ی Separator on left side را فعال کنید. با انجام این کار، بین دو ابزار اضافه شده، یک خط قرار می دهید. سپس ابزار Zoom Out را اضافه کنید. بعد از آن ابزار Pan را اضافه کرده و آن را از ابزار Zoom Out جدا کنید. در نهایت نیز ابزار Data Cursor را اضافه کرده و آن را از ابزار Pan جدا کنید.

کار ایجاد نوارابزارها به پایان رسیده و به صورت زیر درآمده اند:

OK کنید.

اکنون کار طراحی GUIیمان به پایان رسیده و نوبت کدنویسی آن شده است. GUI را Run کرده و با نام ControlTool ذخیره کنید.

اگر سؤالي داشتيد مي توانيد در بخش نظرات آن را مطرح كنيد.

براي رفتن به قسمت بعد، به روي لينك زير كليك كنيد:

آموزش GUI (قسمت سوم)

براي رفتن به ديگر قسمت ها، به روي لينك هاي زير كليك كنيد:

آموزش GUI (قسمت اول)

آموزش GUI (قسمت دوم)

آموزش GUI (قسمت سوم)

آموزش GUI (قسمت چهارم)

You have no rights to post comments