بلوک Subsystem در سیمولینک
به نام خدا و سلام.
به جلسه چهارم از سری جلسات آموزش رایگان سیمولینک متلب خوش آمدید. آموزش متلب و سیمولینک به صورت تخصصی از وبسایت متلب پلاس ارائه میشود. در جلسات قبل اپراتورهای ریاضی، بلوکهای انتگرال گیر و مثلثاتی و همچنین Mux و Demux معرفی شد. این مباحث را در جلسات اول تا سوم میتوانید مشاهده کنید. در این جلسه به معرفی بلوک Subsystem برای ایجاد نظم در شبیه سازی میپردازیم.
با متلب پلاس همراه باشید.
همانگونه که میدانید معادلات یک سیستم از بخشها و کانالهای مختلفی تشکیل میشوند. طبیعتا باید این کانال یا بخشها از هم دیگر جدا باشند تا کار بر روی آنها آسان تر باشد. این مورد در شرایطی که درجه آزادی سیستم بالا باشد بسیار اهیمت پیدا میکند. در حقیقت بدون بخشبندی، بینظمی افزایش یافته و کار با مدل دشوار خواهد شد. امروز قصد داریم به بلوک Subsystem و بلوکهای مرتبط با آن یعنی Input و Output بپردازیم. کار اصلی بلوک Subsystem در سیمولینک، جداسازی کانالها و بخشهای مختلف سیستم است.
بلوک Subsystem در سیمولینک
در این جلسه برای آموزش بلوک Subsystem در سیمولینک، از یک مثال کاربردی شروع میکنیم. با این کار علاوه بر آموزش بلوک Subsystem سیمولینک، مباحث جلسات قبل نیز مرور میشود. سیستم موردنظر برای بررسی بصورت زیر درنظر گرفته شدهاست:
سیستم زیر معادلات خطی یک کوادکوپتر در حرکت Planar را نشان میدهد.
براساس شکل بالا، مشخص میشود که این سیستم دارای سه کانال یا بخش متفاوت است. همچنین با کمی دقت متوجه میشویم که کانال اول و سوم با هم دیگر در ارتباط هستند. اکنون با مرور مباحث جلسات قبل قصد داریم تا این معادلات را در سیمولینک شبیه سازی کنیم. در حین انجام شبیه سازی، بلوک Subsystem نیز معرفی خواهد شد.
ابتدا نرم افزار سیمولینک را باز کرده و به قسمت کتابخانه (Simulink Library Browser) آن میرویم. در بخش Simulink > Commonly Used Blocks بلوک Subsystem را پیدا کرده و به مدل اضافه میکنیم.
پس از اضافه کردن بلوک Subsystem به مدل میتوان روی آن دابل کلیک کرد. پس از دابل کلیک کردن روی آن، وارد Subsystem شده و با تصویر زیر مواجه میشویم.
در تصویر فوق دو بلوک Input و Output نیز مشاهده میشود. در ادامه با این بلوکها آشنا میشویم.
شبیه سازی معادله دیفرانسیل اول در Subsystem
مقدار g در معادله دیفرانسیل اول همان شتاب گرانش زمین و برابر با 9.81 است. آن را با استفاده از یک بلوک Constant به مدل اضافه میکنیم. روی بلوک Constant دابل کلیک کرده و در فیلد Constant value مقدار 9.81 را اضافه میکنیم.
از دستگاه معادلات واضح است که φ از رابطه سوم به دست میآید. برای اعمال این متغیر در سیمولینک از ورودی استفاده میکنیم. در واقع φ بایستی از معادله سوم محاسبه شده و سپس وارد معادله اول شود. بدیهی است که این اتفاق بدلیل کوپل بودن دستگاه معادلات افتاده است. در این مثال ساده اهمیت بلوک Input مشخص میشود.
پس ورودی Subsystem همان φ میباشد. برای داشتن ظاهر بهتر در مدل سیمولینک، نام ورودی را به Phi تغییر میدهیم. برای تغییر نام یک بلوک در سیمولینک، روی آن کلیک کرده و پس از ظاهر شدن نام پیشفرض، آن را تغییر دهید. آنچه تاکنون در سیمولینک پیاده سازی شده بصورت شکل زیر است:
در معادله دیفرانسیل اول دیده میشود که φ در g با مقدار منفی ضرب میشود. پس ابتدا ارتباط ورودی و خروجی را قطع کرده و سپس ورودی Phi را در g ضرب میکنیم. برای قطع کردن ارتباط بین ورودی و خروجی، روی خط کلیک کرده و دکمه delete را میزنیم. برای ضرب نیز از بلوک product استفاده میکنیم. معرفی و آموزش کامل بلوک Product در جلسه اول آموزش سیمولینک متلب ارائه شد. این بلوک نیز در بخش Commonly Used Block کتابخانه سیمولینک موجود است. پس از انجام این موارد، مدل سیمولینک بصورت زیر خواهد شد:
تا اینجای کار، سمت راست معادله دیفرانسیل اول را پیاده سازی کردهایم. اما ما میدانیم که مقدار y برای ما اهمیت دارد. پس باید دوبار از سمت راست معادله (یعنی ضرب φ در g) انتگرال گرفت تا مقدار y به دست آید. برای انتگرال گیری، از بلوک Integrator سیمولینک استفاده میکنیم. تشریح کامل بلوک انتگرال در سیمولینک در جلسه دوم ارائه شد (برای مشاهده، روی لینک قرمز رنگ 👆 کلیک کنید).
پس سیگنال خروجی از Product را به انتگرال گیر و سپس یک انتگرال گیر دیگر میدهیم. خروجی نهایی همان y خواهد بود. این سیگنال را با خروجی Subsystem متصل میکنیم. نتیجه به صورت شکل زیر خواهد بود.
دقت کنید که شرایط اولیه برای بلوک انتگرال گیر را بصورت پیشفرض (شرایط اولیه صفر) درنظر میگیریم.
مشاهده Subsystem در مدل اصلی
حال که ایجاد معادله دیفرانسیل اول مدل به اتمام رسید، از Subsystem خارج میشویم. برای خارج شدن از Subsystem از نوار بالای مدل روی untitled کلیک میکنیم. حال شکل بیرونی بلوک Subsystem دیده میشود.
نکته) ممکن است در یک مسئله برای یک Subsystem بیش از یک ورودی (Input) و خروجی (Output) احتیاج داشته باشیم. برای افزودن به Commonly Used Block در کتابخانه رفته و در آنجا بلوک In1 یا Out1 را انتخاب میکنیم.
ضمنا توجه کنید که میتوان به تعداد نامحدود بلوکهای Input یا Output را در یک زیرسیستم داشته باشیم.
شبیه سازی معادله دیفرانسیل دوم و سوم در زیرسیستم
پیاده سازی معادله دیفرانسیل دوم نیز تا حدودی مشابه آنچه برای معادله اول داشتیم، میباشد. در معادله دیفرانسیل دوم مقدار جرم m برابر با 5 کیلوگرم است. u1 ورودی و z نیز خروجی این معادله است.
ابتدا یک زیرسیستم (Subsystem) جدید به مدل اضافه میکنیم. ورودی u1 را در معکوس m ضرب کرده و با منفی g جمع میکنیم. از نتیجه آنها، دو بار انتگرال گیری میکنیم تا z ایجاد شود. نتیجه به شکل زیر خواهد بود:
برای پیاده سازی معادله دیفرانسیل سوم نیز یک زیرسیستم (Subsystem) جدید به مدل اضافه میکنیم. در معادله دیفرانسیل سوم Ixx ممان اینرسی کوادکوپتر است که مقدار آن ثابت و برابر 0.01 است. u2 ورودی این معادله دیفرانسیل است که بایستی در معکوس ممان اینرسی (100) ضرب شود (و یا تقسیم بر خود آن). سپس دوبار انتگرال گیری شود تا φ بدست آید. پس خروجی این معادله Phi است که ورودی زیرسیستم اول نیز بود. نتیجه نهایی بصورت شکل زیر خواهد بود.
دقت کنید که در معادلات این سیستم u1 و u2 ورودیهای کنترلی بوده و فعلا مورد بحث ما نیستند.
حال از زیرسیستم سوم خارج شده و نمای کل دستگاه معادلات دیفرانسیل را مشاهده میکنیم.
باتوجه به کوپل بودن دستگاه معادلات، خروجی زیرسیستم سوم را به ورودی زیرسیستم اول متصل میکنیم.
به این ترتیب اگر ورودیهای کنترلی u1 و u2 مشخص باشد، میتوان سیستم را اجرا کرد. پس از اجرای سیستم، دستگاه معادلات دیفرانسیل حل شده و y و z بدست میآیند.
در اینجا شبیه سازی دستگاه معادلات دیفرانسیل و همچنین معرفی و استفاده از بلوک زیرسیستم (Subsystem) در سیمولینک به اتمام رسید.
جمعبندی
جلسه چهارم از مجموعه جلسات آموزش رایگان سیمولینک در اینجا به پایان رسید. در این جلسه از سری جلسات آموزش رایگان سیمولینک با بلوک بسیار مهم Subsystem آشنا شدیم. همچنین دو بلوک مرتبط با آن یعنی Input و Output نیز معرفی شد. بلوک Subsystem برای نظم دادن به مدل و ایجاد زیرسیستمهای جدید مناسب است. بدون استفاده از این بلوک، مدل ما بسیار شلوغ و پیچیده خواهد شد. این موارد را در پیاده سازی یک دستگاه معادله دیفرانسیل در سیمولینک مشاهده کردیم.
توصیه میشود که حتما مباحث این جلسه را به دقت بررسی و مثالهای آن را در سیمولینک حل کنید. هدف تیم متلب پلاس ارائه محتوای آموزشی درجه یک برای شما عزیزان است.
اگر سوال و ابهامی درباره مباحث این جلسه دارید در بخش نظرات (پایین همین صفحه) به ما بگید. از فهرست سمت راست👉 هم میتونید به محتوای بقیه جلسات آموزش سیمولینک متلب دسترسی داشته باشید.
2 Comments
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام ممنون آموزشتون عالی بود تشکر می کنم
با درود فراوان
ممنون از اینکه نظر خود را با ما به اشتراک گذاشتید، تمام تلاش ما در تیم متلبپلاس تولید محتوای آموزشی باکیفیت است.