در مدل‌های بزرگ سیمولینک، تعداد زیاد سیگنال‌های ورودی و خروجی می‌تواند باعث شلوغی نمودار و دشوار شدن مدیریت ارتباط میان زیرسیستم‌ها شود. Bus یکی از مهم‌ترین ابزارهای سیمولینک برای سازمان‌دهی چنین سیگنال‌هایی است و امکان می‌دهد چند سیگنال مستقل در قالب یک ساختار منسجم میان بخش‌های مختلف مدل جابه‌جا شوند. کتابخانه Signal Routing نیز بلوک‌های Bus Creator، Bus Selector و Bus Assignment را برای ایجاد، استخراج و اصلاح عناصر گذرگاه در اختیار قرار می‌دهد. 

مفهوم Bus در سیمولینک

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

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

Busها می‌توانند شامل سیگنال‌های معمولی و حتی Busهای تو در تو باشند و به همین دلیل برای مدل‌های دارای ساختار سلسله‌مراتبی بسیار مناسب هستند. 

ایجاد گذرگاه با Bus Creator

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

در حالت معمول، Bus Creator یک Virtual Bus ایجاد می‌کند. این نوع Bus بیشتر برای سازمان‌دهی و مسیریابی سیگنال‌ها در نمودار مدل استفاده می‌شود و الزاماً به معنای ایجاد یک ساختار داده مستقل در زمان اجرا نیست.

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

نام‌گذاری عناصر Bus

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

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

نام‌گذاری مناسب باعث می‌شود انتخاب و ردیابی سیگنال‌ها در Bus Selector و Bus Assignment بسیار ساده‌تر شود.

ساختارهای تو در توی Bus

Bus می‌تواند شامل Busهای دیگری نیز باشد. در این حالت یک ساختار سلسله‌مراتبی شکل می‌گیرد که به آن Nested Bus گفته می‌شود.

برای مثال، می‌توان اطلاعات مربوط به سنسورها را در یک Bus قرار داد، اطلاعات کنترل‌کننده را در Bus دیگری گروه‌بندی کرد و سپس این دو ساختار را در یک Bus اصلی قرار داد.

این معماری برای پروژه‌های بزرگ بسیار مفید است، زیرا داده‌ها را بر اساس عملکرد و حوزه کاربرد دسته‌بندی می‌کند. MathWorks نیز Bus Creator را برای ایجاد چنین ساختارهای تو در تو پشتیبانی می‌کند. 

استخراج سیگنال‌ها با Bus Selector

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

این بلوک می‌تواند عناصر موردنظر را بر اساس نام از ساختار Bus استخراج کند. خروجی‌ها می‌توانند به‌صورت چند سیگنال مستقل ارائه شوند یا در صورت نیاز به شکل یک Virtual Bus جدید در اختیار بخش بعدی مدل قرار گیرند. 

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

انتخاب عناصر از Busهای تو در تو

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

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

تغییر عناصر Bus با Bus Assignment

یکی از قابلیت‌های مهم در مدیریت پیشرفته Bus، امکان تغییر مقدار یک عنصر بدون خارج کردن آن از Bus و ساخت مجدد کل ساختار است.

بلوک Bus Assignment دقیقاً برای این هدف استفاده می‌شود. این بلوک مقدار عناصر مشخصی از Bus را با مقادیر جدید جایگزین می‌کند، در حالی که ساختار کلی Bus حفظ می‌شود. 

این ویژگی در مدل‌هایی که Bus شامل تعداد زیادی سیگنال است اهمیت زیادی دارد؛ زیرا برای تغییر یک یا چند مقدار نیازی نیست کل Bus را بازسازی کنیم.

تفاوت Bus Assignment با Bus Selector و Bus Creator

Bus Selector برای استخراج عناصر استفاده می‌شود، Bus Creator برای گروه‌بندی سیگنال‌ها و ایجاد Bus کاربرد دارد و Bus Assignment برای جایگزین کردن مقدار عناصر موجود استفاده می‌شود.

بنابراین یک فرآیند معمول مدیریت Bus می‌تواند شامل ایجاد ساختار با Bus Creator، استخراج اطلاعات موردنیاز با Bus Selector و اصلاح برخی مقادیر با Bus Assignment باشد.

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

مزیت Bus Assignment در مدل‌های بزرگ

فرض کنید یک Bus شامل ده‌ها سیگنال مختلف است و یک زیرسیستم تنها باید مقدار چند سیگنال را تغییر دهد. استفاده از Bus Selector برای استخراج آن‌ها، پردازش جداگانه و سپس Bus Creator برای ساخت مجدد ساختار می‌تواند مدل را پیچیده کند.

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

مدیریت Bus در رابط زیرسیستم‌ها

Busها یکی از ابزارهای مهم برای کاهش پیچیدگی رابط میان Subsystemها و Modelها هستند. به‌جای ایجاد تعداد زیادی ورودی و خروجی مستقل، می‌توان مجموعه‌ای از سیگنال‌های مرتبط را در یک رابط Bus قرار داد.

این رویکرد باعث می‌شود نمودار اصلی مدل خلوت‌تر شود و تغییرات آینده در رابط‌ها نیز ساده‌تر مدیریت شوند. MathWorks استفاده از Busها را برای کاهش پیچیدگی رابط‌های کامپوننت‌ها توصیه می‌کند. 

در مدل‌های جدیدتر می‌توان از In Bus Element و Out Bus Element نیز برای دسترسی مستقیم به عناصر Bus در رابط زیرسیستم استفاده کرد. این روش می‌تواند پیچیدگی خطوط و اتصالات نمودار را بیشتر کاهش دهد. 

Virtual Bus و Nonvirtual Bus

یکی از مفاهیم مهم در مدیریت حرفه‌ای Bus، تشخیص تفاوت میان Virtual و Nonvirtual Bus است.

Virtual Bus بیشتر برای سازمان‌دهی گرافیکی و مسیریابی سیگنال‌ها استفاده می‌شود و انعطاف بالایی دارد. در مقابل، Nonvirtual Bus ساختار مشخص‌تری دارد و می‌تواند بر اساس یک Simulink.Bus Object تعریف شود.

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

مدیریت Bus با Simulink.Bus

در پروژه‌های کوچک، ممکن است استفاده از Bus Creator و Bus Selector برای مدیریت سیگنال‌ها کافی باشد؛ اما در پروژه‌های بزرگ‌تر، تعریف یک ساختار رسمی برای Bus می‌تواند مزایای بیشتری داشته باشد.

Simulink.Bus Object می‌تواند مشخصات مورد انتظار Bus را تعریف کند. هنگام شبیه‌سازی یا به‌روزرسانی مدل، سیمولینک می‌تواند بررسی کند که ساختار Bus متصل‌شده با مشخصات تعریف‌شده مطابقت دارد یا خیر. 

این قابلیت برای استانداردسازی رابط‌ها و جلوگیری از خطاهای ناشی از تغییر ناخواسته ساختار داده بسیار ارزشمند است.

استفاده از Bus در سیستم‌های کنترل

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

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

اگر یک زیرسیستم مقدار خاصی را تغییر دهد، Bus Assignment می‌تواند همان عنصر را به‌روزرسانی کند، بدون اینکه سایر اطلاعات موجود در Bus تحت تأثیر قرار گیرند.

استفاده در مدل‌های تشخیص خطا

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

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

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

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

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

همچنین در پروژه‌های بزرگ بهتر است مشخصات Busهای مهم به‌صورت رسمی و قابل اعتبارسنجی تعریف شوند.

جمع‌بندی

Bus Creator، Bus Selector و Bus Assignment سه ابزار مهم برای مدیریت حرفه‌ای گذرگاه‌ها در سیمولینک هستند. Bus Creator سیگنال‌ها و Busهای مختلف را در یک ساختار منسجم گروه‌بندی می‌کند، Bus Selector امکان استخراج عناصر موردنیاز را فراهم می‌سازد و Bus Assignment اجازه می‌دهد مقدار عناصر مشخص بدون بازسازی کل Bus تغییر کند. 

ترکیب این ابزارها با Nested Bus، Virtual و Nonvirtual Bus، Bus Object و Bus Element Ports امکان طراحی رابط‌های تمیز، ساختاریافته و قابل توسعه را در مدل‌های بزرگ فراهم می‌کند. در نتیجه، مدیریت Bus تنها یک روش برای کاهش تعداد خطوط نمودار نیست؛ بلکه بخشی از معماری داده و طراحی ساختاری مدل‌های حرفه‌ای سیمولینک محسوب می‌شود.

کلیدواژه ها : Bus Creator-ایجادکننده گذرگاه-Bus Selector-انتخابگر گذرگاه-Bus Assignment-انتساب گذرگاه-Simulink Bus-گذرگاه سیمولینک-Virtual Bus-گذرگاه مجازی-Nonvirtual Bus-گذرگاه غیرمجازی-Nested Bus-گذرگاه تو در تو-Bus Object-شیء گذرگاه-Simulink.Bus-ساختار Simulink Bus-Bus Element-عنصر گذرگاه-Bus Routing-مسیریابی گذرگاه-Signal Routing-مسیریابی سیگنال-Bus Management-مدیریت گذرگاه-Bus Hierarchy-سلسله‌مراتب گذرگاه-Composite Signals-سیگنال‌های ترکیبی-In Bus Element-عنصر ورودی گذرگاه-Out Bus Element-عنصر خروجی گذرگاه-Data Routing-مسیریابی داده-Subsystem Interface-رابط زیرسیستم-Model Interface-رابط مدل-Simulink-سیمولینک