اهمیت تابع نویسی در سیمولینک

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

موارد استفاده از تکنیک تابع نویسی در سیمولینک

در شبیه سازی های خود مسئله ایجاد فرآیندهای تابع گونه (فرآیندهایی که با استفاده از ورودی های مشخص ، خروجی های مشخص تولید می کنند) را به صورت الویت بندی شده زیر در نظر بگیرید.

  • آیا بلوک مورد نظر در کتابخانه متلب وجود دارد ؟ (جستجو در help متلب)
  • آیا بلوک مورد نظر در دموهای متلب وجود دارد ؟ (جستجو در help متلب)
  • آیا بلوک مورد نظر را می توان به صورت مجموعه ای از توابع از پیش تعریف شده متلب ساخت ؟
  • آیا نیاز به حلقه نویسی برای انجام نقش تابع داریم ؟
  • مسئله مورد نظر به صورت حل معادله (معادلات ) جبری یا دیفرانسیلی می باشد ؟

بطور مشخص این اولویت بندی شما را کمک می کند تا نسبت به تشکیل تابع اقدام کنید.

اما از طرفی می توان موارد زیر را برای مسئله تابع نویسی در سیمولینک مورد استفاده قرار داد :

  1. نیاز به حل حل معادلات جبری برای بدست آوردن متغیرهای مسئله در سیمولینک
  2. نیاز به حل معادلات دیفرانسیلی به منظور بدست آوردن پاسخ در سیمولینک
  3. نیاز به کدنویسی عبارت کنترلر (کنترل کننده های خطی و غیرخطی)
  4. نیاز به کدنویسی عبارت تطبیقی (انواع روش های تطبیقی خطی و یا برپایه لیاپانوف نظیر مدلغزشی)
  5. نیاز به مدل سازی سیستم هایی نظیر توربین بادی (البته مدل خطی شناخته شده ای از توربین در دموی متلب قرار دارد.)
  6. نیاز به بیان عبارات شرطی در سیمولینک
  7. نیاز به سوئیچینگ در سیمولینک متلب

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

برای تابع نویسی در سیمولینک چه باید کرد ؟

امکانات مربوط به تابع نویسی در سیمولینک در بلوک های به آدرس Simulink>>User-defined functions قرار دارد. در این بخش با توابع به صورت شکل زیر روبرو هستید.

امکانات مربوط به تابع نویسی در متلب min 300x84 تابع نویسی در سیمولینک متلب

امکانات مربوط به تابع نویسی در متلب

همانطور که می بینیم، این امکان در 6 بلوک عرضه می گردد. در ادامه درباره 3 بلوک معمول مورد استفاده در سیمولینک توضیح داده خواهد شد.

بلوک های تابع نویسی در سیمولینک

همانطور که بیان شد، 6 بلوک در متلب به این منظور قرار دارد که سه مورد متداول آن را تشریح می کنیم.

بلوک Fcn

ابتدایی ترین بلوک تابع نویسی در متلب با نام پیش فرض Fcn مشخص می شود. این بلوک در شکل بالا اولین بلوک از گوشه سمت چپ می باشد. با دابل کلیک بر روی این بلوک در صفحه سیمولینک به طور پیش فرض با کد sin(u(1)*exp(2.3*(-u(2))))l روبرو خواهیم شد. این بلوک می تواند به صورت یک مدل چند ورودی اما تک خروجی مورد استفاده قرار بگیرد. همین مسئله کاربرد این بلوک را قدری محدودتر می کند. به منظور افزایش تعداد ورودی ها بایستی از بلوک Mux که در آدرس Simulink>>Commonly used blocks قرار دارد استفاده کرد. در بلوک Mux به طور پش فرض دو ورودی به صورت بردار به خروجی منتقل می شوند. اما می توان این مقدار را در اینترفیس بلوک با دابل کلیک بر روی آن تغییر داد.

در شکل زیر نمونه ای از کاربرد این بلوک با سه ورودی نمایش داده شده است.

استفاده از بلوک Fcn در سیمولینک min 300x158 تابع نویسی در سیمولینک متلب

کاربرد بلوک Fcn در تابع نویسی در سیمولینک

بلوک MATLAB Function

این بلوک یکی از محبوبترین بلوک ها به منظور تابع نویسی در متلب می باشد. کاربرد این بلوک ساده تر از نوع سوم (Interpreted matlab function) می باشد. در حالی که در اکثر کاربردهای مهندسی برق (مهندسی کنترل ، مهندسی قدرت) می تواند استفاده شود.
به منظور استفاده از بلوک با دابل کلیک و ورود به بخش ادیتور بلوک شروع می کنیم. در این بخش به طور پیش فرض یک سیستم با یک ورودی و یک خروجی در نظر گرفته شده است که در آن خروجی برابر ورودی می باشد. لازم است تا برای کدنویسی در این بلوک روند زیر را انجام دهید:

  1. تعیین ورودی ها و خروجی های تابع : ورودی ها به عنوان متغیرهای مورد نیاز و خروجی ها به عنوان متغیرهای تولید شده در تابع باید مشخص شوند. هر کدام از این متغیرها را با نام مناسب در سر تیتر تابع تعیین کنید.
    لازم است متغیرها را با علامت کاما “,” از هم جدا کنید. توجه به این نکته ضروری است که مجموعه ورودی ها داخل پرانتز و مجموعه خروجی ها داخل کروشهنوشته شوند. صورت زیر فرم صحیح یک بلوک با سه ورودی و چهار خروجی را نمایش می دهد:
    function [x,y,z] = fcn(u_1,u_2)l
  2. با تعیین هر کدام از ورودی ها و خروجی یک پورت متناسب آن ها در بلوک ظاهر می شود(به محض سیو برنامه و یا بستن ادیتور). از هر کدام از این پورت ها به منظور انجام اتصالات لازم استفاده می شود.
  3. در انتهای دستورات از سمیکالون استفاده کنید و سعی کنید حدالامکان متغیرهای اضافی به کار نبرید.
  4. می توان هر کدام از ورودی ها و خروجی ها را بصورت یک بردار با چند متغیر نیز در نظر گرفت. در این شرایط ورودی ها با استفاده از بلوک Mux به بردا تبدیل می شوند و خروجی ها توسط Demux به درایه های بردار برمی گردد.(این کار تا حد امکان مخصوصا برای افراد مبتدی توصیه نمی شود.)
  5. تمامی توابع پیش فرض متلب برای این بلوک قابل استفاده نیست ! این بلوک اغلب برای کدنویسی های ابتدایی مفید است و استفاده از آن برای توابع پیشرفته محدود شده است.
  6. در این بلوک می توان تا حد امکان از حلقه نویسی برای تعریف و ذخیره بردارها استفاده کرد.

از موارد استفاده برای این بلوک می توان امکانات حل معادلات دینامیکی ، جبری ، تابع نویسی کنترل کننده ها و عبارات تطبیقی سود بُرد. شکل زیر استفاده از این بلوک برای مدل سازی دینامیکی یک سیستم را نشان می دهد.

شماتیک مدل سازی دینامیکی یک سیستم با استفاده از MATLAB Function min 300x167 تابع نویسی در سیمولینک متلب

شماتیک مدل سازی دینامیکی یک سیستم با استفاده از MATLAB Function

بلوک Interpreted Matlab Fcn

می توان گفت تخصصی ترین عملیات تابع نویسی در سیمولینک توسط بلوک Interpreted Matlab Fcn انجام می گردد. در این بلوک تنها مسائلی که باید مشخص شوند، شامل نام تابع و بُعد خروجی آن می باشد. نام تابع mfile ی می باشد که در آن فرآیند مورد نظر با تابع در آن گنجانده شده است. نیاز است تا این نام آن در بخش مورد نظر در اینترفیس این بلوک قرار داده شود. بدیهی است که mfile نوشته شده بایستی در همان مسیر (فولدر ، درایو یا محل ذخیره شبیه سازی) قرار داده شود. درباره این بلوک می توان گفت :

  1. تمامی عملیات انجام شده در دو بلوک قبلی را می توان در این مورد پیاده سازی کرد.
  2. نیاز است تا از Mux و Demux برای سیستم های چند ورودی چند خروجی استفاده کرد و آن ها به پورت های بلوک ارجاع داد.
  3. تعیین بُعد خروجی یکی از اصلی ترین عملیات در این بلوک می باشد.
  4. با توجه به استفاده از mfile می توان از تمامی توابع پیش فرض متلب استفاده کرد.(در این روش محدودیتی نداریم.)
  5. حدالامکان از پیچیده سازی توابع mfile نوشته شده خودداری کنید.
  6. ممکن است در مورد هر دو بلوک اخیر MATLAB Function و Interpreted Matlab Fcn عدم سنکرون سازی با محیط سیمولینک پیش بیاید. این مورد منجر به وقوع لوپ جبری می گردد. (این مسئله بیشتر در ساختارهایی که بلوک های قدرتی یا مکانیکی حجیم با سیمولینک مورد نظر ادغام می شوند، دیده می شود.)

از موارد استفاده برای این بلوک می توان فرآیندهای مرتبط با حل معادلات ، تابع نویسی کنترل کننده ها و عبارات تطبیقی و همچنین فرآیند های مرتبط با بهینه سازی و کنترل مقاوم استفاده کرد. شکل زیر استفاده از این تابع بلوک برای مسئله مدل سازی دینامیکی را نمایش می دهد.

شماتیک مدل سازی دینامیکی یک سیستم با استفاده از Interpreted Matlab Fcn min 300x147 تابع نویسی در سیمولینک متلب

شماتیک مدل سازی دینامیکی یک سیستم با استفاده از Interpreted Matlab Fcn

منبع : برق تِک

About برق تِک

Leave a Reply

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