در مدلهای پیچیده سیمولینک، همه سیگنالها را نمیتوان یا بهتر است با خطوط مستقیم میان بلوکها منتقل کرد. گاهی لازم است یک مقدار در بخشی از مدل ذخیره شود و بخشهای دیگری در زمان مناسب به آن دسترسی داشته باشند. برای چنین شرایطی، سیمولینک ابزارهایی مانند Memory و مجموعه Data Store Memory، Data Store Read و Data Store Write را در اختیار قرار میدهد.
این ابزارها اگرچه همگی با مفهوم نگهداری داده ارتباط دارند، اما کاربرد آنها یکسان نیست. Memory بیشتر برای نگهداری مقدار یک سیگنال در روند اجرای مدل کاربرد دارد، در حالی که Data Store یک فضای داده نامگذاریشده ایجاد میکند که چند بخش مدل میتوانند به آن دسترسی داشته باشند.
مدیریت مقدار سیگنال با Memory
بلوک Memory برای نگهداری مقدار سیگنال و استفاده از مقدار ذخیرهشده در ادامه اجرای مدل به کار میرود. این بلوک در شرایطی مفید است که لازم باشد مقدار قبلی یک سیگنال در محاسبات بعدی در دسترس باشد.
استفاده از Memory میتواند در مدلهایی که مسیرهای بازگشتی یا وابستگی به مقدار قبلی دارند، به کنترل بهتر ترتیب محاسبات کمک کند. بنابراین مفهوم اصلی آن، ایجاد یک مرحله حافظهای در مسیر سیگنال است، نه ایجاد یک حافظه مشترک برای بخشهای مختلف مدل.
تفاوت Memory با Unit Delay
Memory و Unit Delay هر دو میتوانند برای نگهداری مقدار قبلی یک سیگنال استفاده شوند، اما مفهوم زمانی آنها یکسان نیست. Memory مقدار سیگنال را با توجه به ترتیب اجرای مدل در اختیار بخش بعدی قرار میدهد، در حالی که Unit Delay مشخصاً برای ایجاد تأخیر در سیستمهای گسسته استفاده میشود.
به همین دلیل، انتخاب میان این دو باید بر اساس ساختار مدل و هدف زمانی آن انجام شود. اگر هدف اصلی ایجاد یک تأخیر نمونهای مشخص باشد، Unit Delay معمولاً مفهوم مناسبتری دارد؛ اما اگر مسئله به استفاده از مقدار قبلی در ترتیب محاسبات مربوط باشد، Memory میتواند گزینه مناسبتری باشد.
Data Store Memory چیست؟
Data Store Memory یک فضای داده نامگذاریشده در مدل ایجاد و مقدار اولیه آن را تعریف میکند. این فضای داده میتواند توسط بلوکهای Data Store Read و Data Store Write مورد دسترسی قرار گیرد. محل قرارگیری Data Store Memory در سلسلهمراتب مدل، محدوده دسترسی به آن را نیز مشخص میکند.
اگر Data Store Memory در سطح بالای مدل قرار داشته باشد، بخشهای مختلف مدل میتوانند به آن دسترسی داشته باشند. اگر درون یک Subsystem قرار گیرد، دسترسی میتواند به همان Subsystem و زیرمجموعههای آن محدود شود. بنابراین Data Store علاوه بر ذخیره داده، ابزاری برای سازماندهی محدوده دسترسی به اطلاعات نیز محسوب میشود.
خواندن داده با Data Store Read
بلوک Data Store Read برای دریافت مقدار ذخیرهشده در یک Data Store استفاده میشود. این بلوک بر اساس نام Data Store مشخص میکند که باید از کدام فضای داده مقدار دریافت کند.
مزیت مهم این روش آن است که مسیر فیزیکی مستقیمی بین محل تولید داده و محل مصرف آن لازم نیست. در نتیجه چند بخش مختلف مدل میتوانند به یک داده مشترک دسترسی داشته باشند، بدون اینکه خطوط سیگنال طولانی میان آنها ایجاد شود.
نوشتن داده با Data Store Write
بلوک Data Store Write وظیفه ذخیره مقدار جدید در Data Store را بر عهده دارد. این بلوک داده ورودی را دریافت کرده و آن را در فضای دادهای که با نام مشخص شده است قرار میدهد.
در یک مدل میتوان چند Data Store Write را برای یک فضای داده در نظر گرفت، اما در این حالت باید ترتیب اجرای عملیات با دقت کنترل شود. اگر چند بخش در یک گام زمانی مقدار یک Data Store را تغییر دهند، ممکن است نتیجه به ترتیب اجرای آنها وابسته شود. بنابراین مدیریت صحیح عملیات نوشتن برای دستیابی به نتایج قابل اعتماد اهمیت زیادی دارد.
چرخه خواندن و نوشتن داده
در یک ساختار Data Store معمولاً سه نقش اصلی وجود دارد: Data Store Memory فضای داده را تعریف میکند، Data Store Write مقدار جدید را در آن قرار میدهد و Data Store Read مقدار موجود را دریافت میکند.
این تفکیک باعث میشود منبع داده، محل ذخیره و محل مصرف داده از یکدیگر مستقل باشند. چنین ساختاری بهخصوص در مدلهایی که چند زیرسیستم به یک مقدار مشترک نیاز دارند، میتواند طراحی را سادهتر کند.
محدوده دسترسی به Data Store
یکی از مهمترین ویژگیهای Data Store، امکان کنترل محدوده دسترسی است. Data Store Memory میتواند در سطح ریشه مدل یا درون یک Subsystem قرار گیرد و همین جایگاه تعیین میکند کدام بخشها امکان خواندن و نوشتن داده را داشته باشند.
این ویژگی برای طراحی مدلهای سلسلهمراتبی اهمیت زیادی دارد، زیرا میتوان دادههای مشترک را فقط در محدودهای که واقعاً مورد نیاز است در دسترس قرار داد. چنین رویکردی از ایجاد ارتباطات بیش از حد گسترده در مدل جلوگیری میکند.
Data Store بهعنوان حافظه مشترک
Data Store را میتوان از نظر مفهومی مشابه یک فضای داده مشترک در نظر گرفت. چند بخش مستقل مدل میتوانند بدون اتصال مستقیم سیگنال، اطلاعات را در یک محل مشخص ذخیره یا از آن دریافت کنند.
با وجود این مزیت، MathWorks هشدار میدهد که استفاده بیش از حد از Data Store میتواند شفافیت مدل را کاهش دهد و فرآیند بررسی و اعتبارسنجی آن را دشوارتر کند. برای مسیریابی ساده سیگنال در مدلهای بزرگ، در بسیاری از موارد Goto و From گزینه مناسبتری هستند.
کنترل ترتیب دسترسی به حافظه
در مدلهایی که چند بخش به یک Data Store دسترسی دارند، ترتیب خواندن و نوشتن اهمیت زیادی دارد. شرایطی مانند خواندن قبل از نوشتن، نوشتن پس از خواندن یا چند عملیات نوشتن در یک گام زمانی میتوانند باعث ایجاد رفتارهای ناخواسته شوند.
به همین دلیل، هنگام طراحی Data Store باید مشخص باشد که کدام بخش داده را تولید میکند، چه زمانی مقدار جدید نوشته میشود و کدام بخشها پس از آن مقدار را میخوانند. ابزارهای تشخیصی سیمولینک نیز میتوانند برخی مشکلات مربوط به ترتیب دسترسی به Data Store را شناسایی کنند.
مدیریت داده در مدلهای بزرگ
Data Store زمانی ارزش بیشتری پیدا میکند که چند قسمت مدل نیازمند دسترسی به یک داده مشترک باشند. برای مثال، یک زیرسیستم میتواند مقدار مشخصی را تولید و ذخیره کند و چند زیرسیستم دیگر بدون اتصال مستقیم به منبع اصلی، همان مقدار را دریافت کنند.
با این حال، استفاده از Data Store باید هدفمند باشد. اگر تعداد زیادی داده بهصورت سراسری در مدل تعریف شوند، ارتباطات میان بخشها کمتر قابل مشاهده میشود و عیبیابی مدل دشوارتر خواهد شد. بنابراین بهتر است محدوده Data Store تا حد امکان متناسب با نیاز واقعی مدل انتخاب شود.
جمعبندی
Memory برای نگهداری مقدار سیگنال در مسیر اجرای مدل کاربرد دارد، در حالی که Data Store Memory یک فضای داده نامگذاریشده ایجاد میکند که توسط Data Store Read و Data Store Write قابل دسترسی است. این ساختار امکان اشتراک داده میان بخشهای مختلف مدل را بدون ایجاد خطوط مستقیم سیگنال فراهم میکند.
تفاوت میان حافظه موقت و حافظه مشترک، همچنین شناخت محدوده دسترسی و ترتیب عملیات خواندن و نوشتن، از مفاهیم مهم در طراحی مدلهای حرفهای سیمولینک است. استفاده صحیح از این قابلیتها میتواند مدلهای بزرگ را منظمتر و مدیریت داده میان زیرسیستمها را سادهتر کند.
کلیدواژه ها : Memory Block-بلوک Memory-مدیریت حافظه موقت-Data Store Memory-حافظه مشترک Data Store-Data Store Read-خواندن از حافظه مشترک-Data Store Write-نوشتن در حافظه مشترک-Data Store-مدیریت داده مشترک-Signal Memory-حافظه سیگنال-Shared Data-داده مشترک-Data Store Management-مدیریت Data Store-Signal Routing-مسیریابی سیگنال در Simulink-مدیریت حافظه در سیمولینک-آموزش Simulink