بلوک Mux و Demux در سیمولینک
به نام خدا و سلام.
به جلسه سوم از سری جلسات آموزش رایگان سیمولینک متلب خوش آمدید. آموزش متلب و سیمولینک به صورت تخصصی از وبسایت متلب پلاس ارائه میشود. در جلسات قبل اپراتورهای ریاضی موردنیاز برای شبیه سازی یک سیستم در سیمولینک معرفی شد. بلوکهای جمع، ضرب و تقسیم (جلسه اول) و بلوکهای انتگرال گیر، توابع مثلثاتی و… در جلسه دوم. در این جلسه به بررسی بلوکهای Mux و Demux میپردازیم. از این دو بلوک برای یکی کردن چند سیگنال و جدا کردن یک سیگنال چند عضوه استفاده میشود. این دو بلوک برای ترکیب چند سیگنال به یک سیگنال واحد (مجازی) و برعکس بکار میروند. برای درک بهتر این موضوع با متلب پلاس همراه باشید.
بلوک Mux در سیمولینک
فرض کنید که میخواهیم روی چند سیگنال یک عملیات مشترک انجام دهیم. برای این کار میتوان ابتدا این سیگنالها را بصورت یک سیگنال واحد درآورد. سپس بر روی آن سیگنال جدید، عملیاتهای دلخواه خود را انجام دهیم. در این صورت میتوان از بلوک Mux استفاده کرد. البته باید اشاره کرد که بلوک Mux تنها گزینه ما برای انجام این فرآیند نیست. در حقیقت روشها و بلوکهای مختلفی در سیمولینک برای این کار ارائه شدهاست. اما در این جلسه تمرکز ما روی بلوک Mux در سیمولینک و نحوه کار با آن است.
بلوک Mux ورودیهای خود را در یک بردار خروجی ترکیب میکند. ورودی این بلوک میتواند یک سیگنال اسکالر یا برداری باشد. در استفاده از بلوک Mux در سیمولینک، دقت کنید که همه ورودیها باید از یک نوع داده و عددی باشند. بلوک Mux را با نام بلوک انشعاب و یا تسهیم هم معرفی میکنند.
برای افزودن بلوک Mux به مدل خود، ابتدا به کتابخانه سیمولینک و سربرگ Commonly Used Blocks میرویم. در این لیست بلوک Mux را انتخاب کرده و به مدل خود اضافه میکنیم (مطابق شکل زیر).
حل مثال از بلوک Mux در سیمولینک
برای درک بهتر از نحوه کار بلوک Mux در سیمولینک، یک مثال ساده ارائه میکنیم. دو عدد ساده (عدد 10 و 5) را درنظر بگیرید. میخواهیم هر دوی این اعداد را در 10 ضرب کنیم. برای این کار، ابتدا این دو عدد (سیگنال) را به یک سیگنال واحد تبدیل کرده و سپس ضرب میکنیم. به بلوک دیاگرام زیر دقت کنید.
در مثال بالا اعداد 5 و 10 با بلوک Constant در سیمولینک ایجاد شده (در بخش Commonly Used Blocks). سپس این دو با استفاده از بلوک Mux به یک سیگنال تبدیل میشوند. این سیگنال جدید را وارد بلوک Gain کرده و درعدد 10 ضرب میکنیم. سیگنال Gain برای ضرب یک عدد ثابت در وردی بکار میرود. توضیحات کامل به همراه مثال را در جلسه 👈 بلوک ضرب Gain در سیمولینک👉 مشاهده کنید.
سپس سیگنال نهایی را برای مشاهده، به بلوک Display میفرستیم. بلوک Display در کتابخانه سیمولینک و بخش Sink وجود دارد. برای دسترسی به این بلوک میتوانید مطابق شکل زیر عمل کنید.
برای افزایش تعداد پورتهای ورودی، ابتدا روی بلوک Mux دابل کلیک میکنیم. سپس در قسمت Number of Inputs تعداد پورت ورودی دلخواه خود را وارد میکنیم. این تعداد بطور پیشفرض برابر با 2 است.
در ادامه آموزش کار با سیمولینک در متلب بلوکی که فرآیند معکوس Mux را انجام میدهد معرفی میکنیم.
بلوک Demux در سیمولینک
این بلوک کاملا برعکس بلوک Mux عمل میکند. یعنی اگر سیگنالی داشته باشیم که دارای چند مقدار باشد و بخواهیم آنها را جدا بررسی کنیم از این بلوک استفاده میکنیم. برای دسترسی به بلوک Demux در سیمولینک ابتدا وارد کتابخانه شده و به بخش Commonly Used Blocks میرویم. سپس بلوک Demux را از این لیست انتخاب و به مدل خود اضافه میکنیم (مطابق شکل زیر).
برای درک بهتر، مثال قبل را دوباره تکرار میکنیم و این بار سیگنالها را جدا میکنیم. در واقع پس از انجام ضرب و مشاهده نتیجه، سیگنالها را از هم جدا میکنیم.
در مثال بالا بلوک Mux یک ماتریس دو در یک ایجاد کردهاست. مولفه اول این ماتریس عدد 10 و مولفه دوم آن نیز عدد 5 است. پس از ضرب شدن این سیگنالها در عدد 10، نتیجه وارد بلوک Demux میشود. این بلوک نیز به همین ترتیب آنها را از هم جدا میکند.
دقت کنید که میتوان تعداد خروجیهای بلوک Demux را از حالت پیشفرض تغییر داد. برای این کار روی بلوک Demux دابل کلیک کرده و در قسمت Number of Outputs تعداد دلخواه را وارد کنید. این مورد در شکل زیر نشان داده شدهاست.
حل مثال از بلوک Demux در سیمولینک
فرض کنید که میخواهیم اعداد یک بردار 7 عضوی را با استفاده از بلوک Demux در 3 سیگنال جدا کنیم. برای این کار یک بلوک Constant، یک Demux و 3 بلوک Display نیاز داریم. در بلوک Constant بردار اعداد 1 تا 7 را درون براکت وارد میکنیم (مطابق شکل زیر).
سپس روی بلوک Demux دابل کلیک کرده و تعداد Number of Outputs را 3 قرار میدهیم. خروجی بلوک Constant را به ورودی بلوک Demux متصل میکنیم. در نهایت نیز 3 بلوک Display را به خروجیهای Demux متصل میکنیم. پس از اجرای مدل، نتیجه بصورت زیر خواهد بود.
حال به تقسیم بندی انجام شده بلوک Demux (بطور پیشفرض) دقت کنید. این بلوک، 3 سیگنال را در خروجی اول، 2 سیگنال در خروجی دوم و 2 سیگنال در خروجی سوم قرار دادهاست. برای تعیین تعداد سیگنالها در هر خروجی، ابتدا روی بلوک Demux دابل کلیک میکنیم. سپس در قسمت Number of Outputs یک بردار 3 عضوی با تعداد سیگنال دلخواه وارد میکنیم. مجموع اعداد این بردار بایستی برابر با تعداد سیگنالهای اصلی (در این مثال 7) باشد. مثلا اگر بردار اعداد 1، 2 و 4 (به ترتیب) را وارد کنیم، پس از اجرا خواهیم داشت:
همانطور که مشاهده میشود، تعداد اعداد در هر خروجی براساس بردار وارد شده تعیین شدهاست. به این ترتیب میتوان تعداد سیگنالهای هر خروجی در بلوک Demux را تعیین نمود.
بعنوان آخرین نکته نیز درنظر داشته باشید که میتوان تعداد سیگنال هر پورت را بصورت متغیر در آورد. یعنی تصیم گیری برای تعداد را بعهده متلب گذاشت. برای این کار میتوان در بردار Number of Outputs عدد منفی یک قرار داد. هر مؤلفهای از این بردار که شامل عدد منفی 1 باشد، تعداد آن را سیمولینک بصورت خودکار تعیین میکند.
جمعبندی
جلسه سوم از مجموعه جلسات آموزش رایگان سیمولینک در اینجا به پایان رسید. در این جلسه از سری جلسات آموزش سیمولینک با دو بلوک بسیار مهم آشنا شدیم. بلوک Mux و Demux در شبیه سازیهای سیمولینک کاربرد زیادی دارند. در جلسات آینده به تدریج مثالهای کامل و دربردارنده بلوکهای مختلف سیمولینک را ارائه میکنیم. البته این امر مستلزم شناخت کامل بلوکهای مهم در سیمولینک است. به همین دلیل در این جلسه این امکان فراهم نشد.
توصیه میشود که حتما مباحث این جلسه را به دقت بررسی و مثالهای آن را در سیمولینک حل کنید. هدف تیم متلب پلاس ارائه محتوای آموزشی درجه یک برای شما عزیزان است.
اگر سوال و ابهامی درباره مباحث این جلسه دارید در بخش نظرات (پایین همین صفحه) به ما بگید. از فهرست سمت راست👉 هم میتونید به محتوای بقیه جلسات آموزش سیمولینک متلب دسترسی داشته باشید.
دیدگاهتان را بنویسید