با افزایش پیچیدگی مدلهای سیمولینک، قرار دادن همه بلوکها در یک محیط واحد باعث شلوغی، دشواری در دنبالکردن مسیر سیگنالها و افزایش احتمال خطا میشود. Subsystem یکی از مهمترین قابلیتهای Simulink برای حل این مشکل است که به کمک آن میتوان مجموعهای از بلوکهای مرتبط را در قالب یک واحد عملکردی سازماندهی کرد.
زیرسیستمها علاوه بر مرتبسازی مدل، امکان ایجاد ساختار سلسلهمراتبی، رابطهای ورودی و خروجی، تفکیک عملکردها و مدیریت بهتر مدلهای بزرگ را فراهم میکنند. MathWorks نیز Subsystem را ابزاری برای گروهبندی بلوکها و ایجاد سلسلهمراتب در مدل معرفی میکند.
مفهوم Subsystem در سیمولینک
Subsystem را میتوان مانند یک محفظه عملکردی در نظر گرفت که چند بلوک مرتبط را درون خود جای میدهد. در نمای اصلی مدل، این مجموعه به شکل یک بلوک واحد دیده میشود، اما با ورود به آن میتوان تمام اجزای داخلی را مشاهده و مدیریت کرد.
برای مثال، در یک مدل کنترل دیجیتال ممکن است بخشهای مختلفی مانند دریافت ورودی، پردازش سیگنال، کنترلکننده، فیلتر و تولید خروجی وجود داشته باشند. بهجای قرار دادن تمام این اجزا در یک صفحه، میتوان هر بخش را در یک Subsystem مستقل قرار داد.
این ساختار باعث میشود مدل از حالت یک دیاگرام بزرگ و پیچیده به مجموعهای از اجزای کوچکتر و قابل مدیریت تبدیل شود.
چرا از Subsystem استفاده میکنیم؟
یکی از مهمترین دلایل استفاده از زیرسیستمها، کاهش پیچیدگی بصری مدل است. زمانی که تعداد بلوکها افزایش پیدا میکند، پیدا کردن ارتباط بین آنها دشوار میشود. Subsystem این بلوکها را در یک سطح بالاتر پنهان میکند و تنها رابط اصلی آنها را نمایش میدهد.
مهمترین مزایای استفاده از Subsystem عبارتاند از:
- سازماندهی بهتر بلوکها
- کاهش شلوغی نمودار
- تفکیک عملکردهای مختلف
- ایجاد ساختار سلسلهمراتبی
- سادهتر شدن عیبیابی
- خوانایی بیشتر مدل
- امکان ایجاد رابط مشخص برای هر بخش
- مدیریت بهتر مدلهای بزرگ
- آمادهسازی مدل برای توسعه و استفاده مجدد
طبق مستندات رسمی Simulink، Subsystemها میتوانند بلوکهای مرتبط از نظر عملکرد را در کنار یکدیگر نگه دارند و یک رابط مشخص برای ورودیها و خروجیها ایجاد کنند.
ساخت Subsystem از مجموعهای از بلوکها
یکی از روشهای رایج ساخت Subsystem این است که تعدادی از بلوکهای موجود در مدل انتخاب شوند و به یک زیرسیستم تبدیل شوند.
در این حالت، مجموعه بلوکهای انتخابشده درون یک Subsystem قرار میگیرند و در سطح اصلی مدل، بهجای آن مجموعه بزرگ، یک بلوک Subsystem نمایش داده میشود.
این روش زمانی بسیار مفید است که مدل از قبل ساخته شده باشد و کاربر بخواهد ساختار آن را مرتبتر کند.
MathWorks امکان ایجاد Subsystem از بخش انتخابشده یک Block Diagram را مستقیماً در محیط Simulink فراهم کرده است.
ایجاد Subsystem جدید
روش دیگر، قرار دادن یک Subsystem جدید در مدل و سپس اضافه کردن بلوکهای موردنیاز درون آن است.
این روش برای طراحی مدل از ابتدا مناسبتر است؛ زیرا کاربر ابتدا ساختار کلی سیستم را مشخص میکند و سپس هر Subsystem را متناسب با وظیفهای که بر عهده دارد تکمیل میکند.
یک Subsystem جدید بهصورت پیشفرض دارای رابط ورودی و خروجی است. بنابراین میتوان آن را بهعنوان یک واحد مستقل در ساختار مدل در نظر گرفت.
ساختار سلسلهمراتبی در Simulink
یکی از مهمترین ویژگیهای Subsystem ایجاد Hierarchy یا ساختار سلسلهمراتبی است.
در سطح اول، ممکن است مدل تنها شامل چند Subsystem اصلی باشد. با ورود به یکی از آنها، اجزای داخلی آن مشاهده میشوند. اگر داخل آن Subsystem نیز زیرسیستمهای دیگری وجود داشته باشند، میتوان یک سطح دیگر به داخل مدل رفت.
در نتیجه، یک مدل پیچیده میتواند به چندین سطح منطقی تقسیم شود.
این ساختار برای مدلهای بزرگ اهمیت زیادی دارد، زیرا کاربر مجبور نیست تمام جزئیات سیستم را همزمان مشاهده کند.
سازماندهی عملکردی Subsystemها
یک روش مناسب برای طراحی مدل این است که Subsystemها بر اساس وظیفه و عملکرد تقسیم شوند، نه صرفاً بر اساس موقعیت فیزیکی بلوکها.
برای مثال، در یک سیستم کنترل دیجیتال میتوان بخشهای زیر را بهصورت جداگانه سازماندهی کرد:
- تولید ورودی
- پردازش سیگنال
- کنترلکننده
- فیلتر
- مدل سیستم
- محاسبه خروجی
- ثبت و نمایش نتایج
این روش باعث میشود هر Subsystem یک مسئولیت مشخص داشته باشد و درک ساختار کلی مدل سادهتر شود.
مدیریت ورودیهای Subsystem
هر Subsystem میتواند یک یا چند ورودی داشته باشد. ورودیها مشخص میکنند چه سیگنالهایی از محیط بیرونی وارد بخش داخلی Subsystem میشوند.
در داخل Subsystem، بلوکهای Inport مسئول دریافت این سیگنالها هستند. هر Inport با یک ورودی در سطح بیرونی Subsystem ارتباط دارد. ترتیب و شماره پورتها نیز بر اساس تنظیمات Inportها مدیریت میشود.
بنابراین هنگام طراحی Subsystem باید مشخص باشد:
- چه سیگنالهایی وارد آن میشوند؟
- هر ورودی چه کاربردی دارد؟
- ترتیب ورودیها چگونه است؟
- نام هر ورودی چیست؟
- نوع و ویژگی سیگنال ورودی چگونه باید باشد؟
مدیریت خروجیهای Subsystem
در طرف دیگر، Subsystem باید نتایج پردازش داخلی خود را به محیط بیرونی منتقل کند.
این کار با استفاده از Outport انجام میشود. Outportها سیگنالهای داخلی را به خروجیهای Subsystem منتقل میکنند و امکان ارتباط آن با سایر قسمتهای مدل را فراهم میسازند.
بنابراین یک Subsystem میتواند چندین خروجی داشته باشد که هرکدام یک نتیجه یا سیگنال مشخص را به سطح بالاتر منتقل میکنند.
نامگذاری Subsystemها
نامگذاری مناسب یکی از سادهترین اما مهمترین اصول مدیریت مدل است.
استفاده از نامهایی مانند «Subsystem1»، «Subsystem2» و «Subsystem3» در مدلهای کوچک شاید مشکل زیادی ایجاد نکند، اما با افزایش اندازه مدل، تشخیص وظیفه هر بخش دشوار خواهد شد.
بهتر است نام Subsystem مستقیماً بیانگر عملکرد آن باشد؛ برای مثال:
- کنترلکننده سرعت
- پردازش سیگنال
- فیلتر دیجیتال
- مدل موتور
- محاسبه خطا
- تولید فرمان
نام مناسب باعث میشود کاربر بدون ورود به داخل Subsystem بتواند عملکرد کلی آن را تشخیص دهد.
نامگذاری پورتها
نامگذاری فقط به خود Subsystem محدود نمیشود. ورودیها و خروجیهای آن نیز باید نامهای معنادار داشته باشند.
در Simulink، نام Inport و Outport میتواند برای مشخص کردن رابط Subsystem مورد استفاده قرار گیرد و این نامها در نمایش پورتهای Subsystem نیز قابل انعکاس هستند.
این موضوع در مدلهای گسسته اهمیت بیشتری پیدا میکند، زیرا ممکن است یک Subsystem چندین سیگنال با نرخ نمونهبرداری یا نقشهای متفاوت دریافت کند.
مدیریت چند ورودی و چند خروجی
یک Subsystem محدود به یک ورودی و یک خروجی نیست. میتوان برای آن چندین ورودی و خروجی تعریف کرد.
برای مثال، یک Subsystem مربوط به یک کنترلکننده ممکن است همزمان سیگنال مرجع، خروجی سیستم و یک سیگنال کنترلی اضافی را دریافت کند و در مقابل، فرمان کنترل و برخی سیگنالهای پایش را تولید کند.
در چنین شرایطی، نظمدهی پورتها و نامگذاری دقیق اهمیت زیادی پیدا میکند.
مستندات Simulink نیز ارتباط مستقیم بین پورتهای روی Subsystem و Inport/Outportهای داخلی آن را مشخص میکند.
Subsystemهای تو در تو
Subsystem میتواند خودش شامل Subsystem دیگری باشد. این قابلیت به ایجاد مدلهای چندسطحی کمک میکند.
برای مثال، در سطح اول میتوان یک سیستم کنترل کامل داشت. داخل آن، Subsystem مربوط به کنترلکننده قرار میگیرد و درون کنترلکننده نیز بخشهایی مانند پردازش خطا و تولید فرمان میتوانند به Subsystemهای جداگانه تقسیم شوند.
این روش برای مدلهای پیچیده بسیار قدرتمند است، اما نباید بیش از حد از آن استفاده کرد؛ زیرا ایجاد سطوح بسیار زیاد ممکن است دنبال کردن مسیر سیگنالها را دشوار کند.
Virtual و Nonvirtual Subsystem
Subsystemها از نظر نحوه رفتار در شبیهسازی به دو گروه کلی Virtual و Nonvirtual تقسیم میشوند.
Virtual Subsystem بیشتر برای ایجاد ساختار گرافیکی و سازماندهی مدل استفاده میشود و الزاماً به معنای اجرای کل مجموعه بهعنوان یک واحد مستقل نیست.
در مقابل، Nonvirtual Subsystem علاوه بر ایجاد سلسلهمراتب گرافیکی، میتواند رفتار اجرایی مشخصی داشته باشد و مجموعه بلوکهای داخلی را بهعنوان یک واحد اجرایی مدیریت کند.
بنابراین انتخاب نوع Subsystem باید بر اساس هدف مدل و نحوه اجرای موردنظر انجام شود.
مدیریت Subsystemهای شرطی
Simulink فقط Subsystemهای معمولی را ارائه نمیدهد. برای مدلهایی که اجرای یک بخش به شرایط خاص وابسته است، انواع مختلفی از Subsystemهای کنترلی نیز وجود دارند.
برای نمونه، میتوان از ساختارهایی مانند:
- Enabled Subsystem
- Triggered Subsystem
- Enabled and Triggered Subsystem
- Function-Call Subsystem
- If Action Subsystem
- Switch Case Action Subsystem
- For Iterator Subsystem
- While Iterator Subsystem
استفاده کرد.
این مجموعه در کتابخانه Ports & Subsystems سیمولینک قرار دارد و برای مدلسازی منطقهای مختلف اجرای سیستم کاربرد دارد.
Subsystem در مدلسازی سیستمهای گسسته
در سیستمهای گسسته، استفاده از Subsystem فقط برای مرتبسازی ظاهری مدل نیست. میتوان قسمتهای مختلف یک الگوریتم گسسته را از یکدیگر جدا کرد.
برای مثال، یک مدل دیجیتال ممکن است شامل بخشهای مستقلی برای:
- دریافت نمونههای ورودی
- تأخیرهای گسسته
- پردازش نمونهها
- فیلتر دیجیتال
- کنترلکننده
- تولید خروجی
باشد.
جدا کردن این بخشها در قالب Subsystem باعث میشود بررسی مسیر سیگنالها و مدیریت نمونهبرداری در هر قسمت سادهتر شود.
مدیریت Sample Time در Subsystem
در مدلهای گسسته، Sample Time یکی از ویژگیهای مهم سیگنال و بلوکها است. بنابراین هنگام سازماندهی یک مدل در قالب Subsystem باید به سازگاری نرخهای نمونهبرداری نیز توجه شود.
اگر بخشهای مختلف یک Subsystem با نرخهای متفاوت کار کنند، باید نحوه انتقال و هماهنگسازی این سیگنالها بهدرستی طراحی شود.
در نتیجه، Subsystem نباید فقط بهعنوان یک محفظه گرافیکی دیده شود؛ بلکه باید بهعنوان بخشی از معماری مدل در نظر گرفته شود.
مدیریت Subsystemهای بزرگ
هرچه مدل بزرگتر شود، مدیریت Subsystemها نیز اهمیت بیشتری پیدا میکند. بهتر است هر Subsystem تا حد امکان یک وظیفه مشخص داشته باشد.
اگر یک Subsystem شامل تعداد بسیار زیادی عملکرد نامرتبط باشد، مزیت سازماندهی آن کاهش پیدا میکند.
یک اصل مناسب این است که هنگام مشاهده نام Subsystem، کاربر بتواند تقریباً تشخیص دهد این بخش چه کاری انجام میدهد.
استفاده مجدد از Subsystemها
یکی از موضوعات مهم در پروژههای بزرگ، Reuse یا استفاده مجدد از اجزای مدل است.
اگر یک عملکرد در چند قسمت مختلف مدل تکرار شود، ایجاد یک ساختار قابل استفاده مجدد میتواند از ایجاد نسخههای متعدد و ناسازگار جلوگیری کند.
Simulink برای این منظور علاوه بر Subsystem معمولی، امکاناتی مانند Referenced Subsystem و Model Reference را نیز ارائه میکند. در Referenced Subsystem، یک زیرسیستم میتواند در فایل جداگانه نگهداری شود و چند نمونه از آن در مدل مورد استفاده قرار گیرد.
مدیریت Subsystem در مدلهای پیچیده
در پروژههای حرفهای، بهتر است سازماندهی Subsystemها از ابتدا دارای یک منطق مشخص باشد.
بهعنوان نمونه، میتوان ساختار مدل را به سه سطح تقسیم کرد:
سطح اول: اجزای اصلی سیستم
سطح دوم: عملکردهای اصلی هر جزء
سطح سوم: عملیات داخلی هر عملکرد
این ساختار باعث میشود کاربر بتواند بدون مواجه شدن با جزئیات اضافی، ابتدا معماری کلی سیستم را مشاهده کند و سپس در صورت نیاز وارد سطوح پایینتر شود.
خطاهای رایج در مدیریت Subsystemها
برخی اشتباهات متداول هنگام کار با Subsystem عبارتاند از:
- استفاده بیش از حد از Subsystemهای تو در تو
- نامگذاری نامفهوم
- نامگذاری نامناسب پورتها
- بیتوجهی به ترتیب ورودی و خروجیها
- ترکیب چند عملکرد نامرتبط در یک Subsystem
- ایجاد Subsystemهای بسیار بزرگ
- نادیده گرفتن تفاوت Virtual و Nonvirtual
- بیتوجهی به Sample Time در مدلهای گسسته
- ایجاد ساختارهای پیچیده بدون نیاز واقعی
- استفاده نکردن از قابلیتهای استفاده مجدد در پروژههای بزرگ
این موارد ممکن است در ابتدا تأثیر زیادی نداشته باشند، اما با بزرگتر شدن مدل، نگهداری و توسعه آن را دشوار میکنند.
اصول طراحی یک Subsystem حرفهای
یک Subsystem مناسب باید یک وظیفه مشخص داشته باشد، ورودیها و خروجیهای واضحی ارائه دهد و ارتباط آن با سایر بخشهای مدل تا حد امکان ساده باشد.
همچنین بهتر است:
- نام Subsystem معنادار باشد.
- پورتها نامگذاری شوند.
- تعداد ورودیها و خروجیها منطقی باشد.
- عملکردهای مرتبط در کنار هم قرار گیرند.
- عملکردهای نامرتبط از یکدیگر جدا شوند.
- سلسلهمراتب مدل بیش از حد عمیق نشود.
- ساختار مدل برای توسعه آینده نیز مناسب باشد.
جایگاه Subsystem در معماری مدل سیمولینک
Subsystem یکی از پایههای اصلی Component-Based Modeling در Simulink محسوب میشود. با استفاده صحیح از آن، مدل از مجموعهای از بلوکهای پراکنده به مجموعهای از اجزای منطقی و قابل مدیریت تبدیل میشود.
در یک پروژه آموزشی یا مهندسی، این قابلیت اهمیت ویژهای دارد؛ زیرا پس از آشنایی با بلوکهای پایه، کاربر باید بتواند آنها را در قالب ساختارهای بزرگتر سازماندهی کند.
در مدلسازی سیستمهای گسسته نیز Subsystem نقش مهمی در تفکیک قسمتهای مختلف الگوریتم، مدیریت رابطها و کنترل پیچیدگی مدل دارد.
جمعبندی
Subsystem یکی از مهمترین ابزارهای سازماندهی مدل در Simulink است. با استفاده از آن میتوان مجموعهای از بلوکهای مرتبط را در قالب یک واحد عملکردی قرار داد و برای مدل ساختاری سلسلهمراتبی ایجاد کرد.
ایجاد ورودیها و خروجیهای مشخص، نامگذاری صحیح، تفکیک عملکردها، استفاده مناسب از سطوح سلسلهمراتبی و توجه به تفاوت Virtual و Nonvirtual Subsystem از مهمترین اصول مدیریت آن هستند. Simulink همچنین انواع تخصصیتری مانند Enabled، Triggered، Iterator و Function-Call Subsystem را برای مدلهای پیچیدهتر در اختیار کاربر قرار میدهد.
در ادامه این مسیر آموزشی، تسلط بر Subsystemها زمینه را برای طراحی مدلهای بزرگتر، ساخت سیستمهای گسسته سازمانیافته و در نهایت توسعه مدلهای حرفهای و قابل نگهداری در Simulink فراهم میکند.
کلیدواژه ها : Simulink Subsystem-زیرسیستم سیمولینک-Create Subsystem-ساخت زیرسیستم-Subsystem Management-مدیریت زیرسیستم-Model Hierarchy-سلسلهمراتب مدل-Subsystem Organization-سازماندهی زیرسیستم-Subsystem Ports-پورتهای زیرسیستم-Inport-پورت ورودی-Outport-پورت خروجی-Virtual Subsystem-زیرسیستم مجازی-Nonvirtual Subsystem-زیرسیستم غیرمجازی-Discrete System Modeling-مدلسازی