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

برای مدیریت این شرایط، سیمولینک از زیرسیستم‌های فعال‌شونده، زیرسیستم‌های شرطی و Variant Subsystem استفاده می‌کند. این قابلیت‌ها امکان ایجاد مدل‌هایی را فراهم می‌کنند که هم از نظر ساختاری منظم باشند و هم بتوانند بر اساس شرایط مختلف، بخش مناسب خود را فعال یا اجرا کنند. 

مفهوم زیرسیستم پیکربندی‌پذیر

یک زیرسیستم پیکربندی‌پذیر را می‌توان ساختاری در نظر گرفت که چند پیاده‌سازی مختلف از یک عملکرد را در خود جای می‌دهد. در سیمولینک مدرن، Variant Subsystem برای این منظور استفاده می‌شود.

هر Variant می‌تواند یک روش متفاوت برای انجام یک وظیفه مشخص باشد. برای نمونه، یک کنترل‌کننده می‌تواند دارای نسخه خطی، غیرخطی و پیشرفته باشد و هرکدام به‌عنوان یک انتخاب مستقل در Variant Subsystem قرار گیرند.

در زمان اجرای مدل، تنها یکی از این انتخاب‌ها به‌عنوان Active Variant فعال است و سایر انتخاب‌ها غیرفعال می‌شوند. این ساختار باعث می‌شود چند پیاده‌سازی مختلف در یک مدل مدیریت شوند، بدون آنکه لازم باشد برای هر حالت یک مدل کاملاً جداگانه ایجاد شود. 

انتخاب Variant مناسب

انتخاب Variant فعال می‌تواند بر اساس Variant Control انجام شود. در حالت کنترل مبتنی بر Expression، هر انتخاب دارای یک شرط است و زمانی که شرط مربوط به یک Variant برقرار باشد، همان گزینه فعال می‌شود.

این روش برای مدل‌هایی مناسب است که یک جزء سیستم دارای چند طراحی یا الگوریتم جایگزین است. برای مثال، در یک سیستم کنترل می‌توان الگوریتم ساده را برای شبیه‌سازی اولیه و الگوریتم دقیق‌تر را برای تحلیل نهایی در نظر گرفت.

یکی از مزیت‌های مهم این روش آن است که تغییر Variant می‌تواند بدون تغییر ساختار اصلی مدل انجام شود. 

فعال‌سازی زیرسیستم با سیگنال کنترل

در کنار Variant Subsystem، Enabled Subsystem برای کنترل اجرای یک بخش از مدل با استفاده از سیگنال خارجی استفاده می‌شود.

در یک Enabled Subsystem، سیگنال کنترل به ورودی Enable متصل می‌شود و اجرای زیرسیستم به وضعیت این سیگنال وابسته خواهد بود. در حالت فعال بودن، محاسبات داخلی زیرسیستم انجام می‌شوند و هنگام غیرفعال شدن، رفتار وضعیت‌ها و خروجی‌ها مطابق تنظیمات زیرسیستم تعیین می‌شود. 

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

کنترل اجرای زیرسیستم با سیگنال منطقی

یکی از کاربردهای متداول Enabled Subsystem، استفاده از یک سیگنال منطقی برای فعال یا غیرفعال کردن یک الگوریتم است.

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

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

مدیریت وضعیت داخلی زیرسیستم

در زیرسیستم‌های فعال‌شونده، فقط اجرای بلوک‌ها مهم نیست؛ وضعیت داخلی بلوک‌های دارای State نیز باید مدیریت شود.

سیمولینک امکان تعیین نحوه برخورد با Stateهای داخلی هنگام فعال شدن دوباره زیرسیستم را فراهم می‌کند. بسته به تنظیمات، وضعیت‌های داخلی می‌توانند مقدار قبلی خود را حفظ کنند یا هنگام فعال‌شدن مجدد به شرایط اولیه بازگردند. 

این موضوع در مدل‌هایی مانند کنترل‌کننده‌ها، شمارنده‌ها، فیلترها و سیستم‌های دینامیکی اهمیت زیادی دارد؛ زیرا تغییر نحوه مدیریت State می‌تواند رفتار سیستم را پس از فعال‌شدن مجدد تغییر دهد.

ترکیب Enable و Trigger

در برخی کاربردها، فعال بودن زیرسیستم به‌تنهایی کافی نیست و اجرای آن باید به یک رویداد مشخص نیز وابسته باشد. برای این شرایط، سیمولینک Enabled and Triggered Subsystem را ارائه می‌کند.

این نوع زیرسیستم زمانی اجرا می‌شود که هم شرط Enable برقرار باشد و هم رویداد Trigger موردنظر رخ دهد. به این ترتیب می‌توان دو سطح از منطق کنترلی را در یک ساختار واحد ترکیب کرد. 

چنین ساختاری برای سیستم‌هایی که عملکرد آن‌ها هم به وضعیت کلی سیستم و هم به وقوع یک رویداد خاص وابسته است، بسیار مناسب است.

طراحی چند حالت عملیاتی

یکی از کاربردهای مهم Variant Subsystem، طراحی سیستم‌های چندحالته است. در این ساختار می‌توان چند الگوریتم یا مدل جایگزین را درون یک Variant Subsystem قرار داد.

برای مثال، یک سیستم صنعتی ممکن است سه حالت عملکرد داشته باشد: حالت عادی، حالت اضطراری و حالت تعمیرات. هر حالت می‌تواند الگوریتم یا ساختار محاسباتی متفاوتی داشته باشد و Variant Subsystem امکان سازمان‌دهی این گزینه‌ها را در یک ساختار واحد فراهم می‌کند.

این رویکرد از ایجاد مدل‌های موازی و تکراری جلوگیری کرده و مدیریت نسخه‌های مختلف یک سیستم را ساده‌تر می‌کند. 

تفاوت Variant با Enabled Subsystem

این دو قابلیت اگرچه هر دو برای کنترل رفتار مدل استفاده می‌شوند، اما هدف یکسانی ندارند.

Enabled Subsystem بیشتر برای کنترل اجرای یک زیرسیستم در زمان شبیه‌سازی استفاده می‌شود. یعنی یک سیگنال خارجی تعیین می‌کند که آن بخش در چه شرایطی اجرا شود.

در مقابل، Variant Subsystem برای مدیریت چند پیاده‌سازی یا پیکربندی جایگزین طراحی شده است. در این حالت، هدف اصلی انتخاب یکی از چند ساختار ممکن برای یک جزء سیستم است. 

بنابراین اگر مسئله «چه زمانی این بخش اجرا شود؟» باشد، زیرسیستم‌های شرطی مانند Enabled یا Triggered معمولاً مناسب‌تر هستند؛ اما اگر مسئله «کدام پیاده‌سازی از این بخش مورد استفاده قرار گیرد؟» باشد، Variant Subsystem انتخاب مناسب‌تری خواهد بود.

کنترل سیگنال در ساختارهای Variant

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

MathWorks امکان استفاده از زیرسیستم‌هایی مانند Enabled، Triggered، Reset و Function-Call را به‌عنوان انتخاب‌های Variant فراهم کرده است. این قابلیت برای مدل‌هایی که علاوه بر تفاوت الگوریتم، تفاوت در منطق اجرا نیز دارند، اهمیت ویژه‌ای دارد. 

مدیریت مدل‌های پیچیده

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

در نتیجه، مدل اصلی تنها یک جزء منطقی را نمایش می‌دهد، در حالی که پیاده‌سازی‌های مختلف در سطح داخلی Variant Subsystem قرار گرفته‌اند. این روش پیچیدگی مدل را کاهش داده و مدیریت تغییرات را آسان‌تر می‌کند. 

کاربرد در کنترل‌کننده‌های چندگانه

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

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

این رویکرد در توسعه نمونه اولیه، مقایسه الگوریتم‌ها و بررسی عملکرد چند معماری کنترلی بسیار مفید است.

جایگاه زیرسیستم‌های فعال‌شونده در مدل‌سازی مهندسی

Enabled Subsystem و ساختارهای مشابه زمانی اهمیت بیشتری پیدا می‌کنند که اجرای همه بخش‌های مدل در تمام لحظات ضروری نباشد. می‌توان عملکردهای اختیاری، مراحل پردازشی و الگوریتم‌های خاص را تنها در زمان موردنیاز فعال کرد.

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

نکات مهم در طراحی

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

در مرحله بعد، باید رفتار Stateها هنگام فعال و غیرفعال شدن مشخص باشد. همچنین در مدل‌های Variant باید شرایط فعال شدن گزینه‌ها به‌گونه‌ای تعریف شوند که انتخاب فعال به‌صورت مشخص و بدون ابهام تعیین شود. 

در مدل‌های بزرگ نیز بهتر است هر Variant یا زیرسیستم شرطی وظیفه مشخص و محدودی داشته باشد تا ساختار کلی مدل قابل نگهداری باقی بماند.

جمع‌بندی

طراحی زیرسیستم‌های پیکربندی‌پذیر و فعال‌شونده یکی از روش‌های مهم برای ایجاد مدل‌های انعطاف‌پذیر در سیمولینک است. Enabled Subsystem اجرای یک بخش را به سیگنال کنترل وابسته می‌کند، در حالی که Variant Subsystem امکان مدیریت چند پیاده‌سازی متفاوت از یک جزء را در یک ساختار واحد فراهم می‌سازد.

ترکیب Variantها با زیرسیستم‌های شرطی مانند Enable و Trigger می‌تواند برای طراحی سیستم‌های چندحالته، کنترل‌کننده‌های جایگزین، الگوریتم‌های اختیاری و مدل‌های پیچیده مهندسی بسیار کاربردی باشد. نتیجه این رویکرد، مدلی ساختاریافته‌تر است که تغییر پیکربندی، مقایسه روش‌های مختلف و کنترل اجرای اجزای آن با سهولت بیشتری انجام می‌شود.

کلیدواژه ها : Configurable Subsystem-زیرسیستم پیکربندی‌پذیر- Variant Subsystem-زیرسیستم متغیر- Enabled Subsystem-زیرسیستم فعال‌شونده- Control Signal-سیگنال کنترل- Enable Signal-سیگنال فعال‌ساز- Conditional Subsystem-زیرسیستم شرطی- Variant Control-کنترل واریانت- Active Variant-واریانت فعال- Variant Choice-انتخاب واریانت- Conditional Execution-اجرای شرطی- Trigger Signal-سیگنال راه‌انداز- Enabled and Triggered Subsystem-زیرسیستم فعال‌شونده و راه‌اندازی‌شونده- Multi-Mode System-سیستم چندحالته- Simulink-سیمولینک