در این قسمت از آموزش سیمولینک، ابتدا با نحوهی درونیابی و برونیابی(Interpolation-Extrapolation) در محیط Simulink آشنا میشویم. فرض کنید در آزمایشگاه، سیستمی(سیستمی الکتریکی، مکانیکی و یا هر سیستم دیگری) با یک ورودی را مورد آزمایش قرار دادهاید و با دادن ورودیهای مختلف، خروجیهای متناظر را بدست آوردهاید بصورت زیر:
X = [1 , 1.5 , 1.8 , 2.2 , 2.7 , 3.3 , 3.9]
y = [ 2.434 , 2.667 , 2.738 , 2.956 , 2.904 , 2.819 , 2.708]
حال میخواهید منحنی تغییرات این سیستم را به ازای بازهای پیوسته از ورودی، با کمک درونیابی و برونیابی بدست آورید. بصورت زیر عمل کنید:
بلوکهای مورد نیاز:
Simulink >> Sources >> Clock
Simulink >> Lookup Tables >> Lookup Table
Simulink >> Sinks >> Scope
تنظیمات بلوکها:
تنظیمات مدل:
با فشردن کلید Ctrl+E به صفحه تنظیمات مدل رفته و مانند شکل زیر عمل کنید:
در نحوهی تنظیمات، احتمالا متوجه شدهاید که میخواهیم منحنی را در بازه [5 0] رسم کنیم و برای افزایش تعداد نقاط منحنی، از حداکثر گام 0.01 استفاده کردهایم.
حالا مانند شکل بلوکها را به یکدیگر متصل کرده و Run کنید:
خروجی به صورت زیر است:
اگر سیستم شما دو ورودی داشته باشد، از بلوک (Lookup Table (2-D و در صورت داشتن بیش از دو ورودی، میتوانید از بلوکی بهنام (Lookup Table (n-D استفاده کنید. همچنین برای ویرایش نمودن، تغییر نوع و رسم نمودار دادهها، میتوانید با کلیک کردن به روی Edit در پنجرهی تنظیمات این بلوکها، به پنجرهی Lookup Table Editor وارد شوید.
در بخش بعدی میخواهیم تعداد پیکهای مثبت و منفی یک موج سینوسی را شمارش کرده و نمایش دهیم. البته شاید این مثال، اصلا کاربردی نباشد ولی نکات موجود در آن و نیز بلوکهای معرفی شده، قطعا در مثالهای کاربردی، به کار میآید.
بلوکهای مورد نیاز:
Simulink >> Sources >> Clock
Simulink >> Sources >> Constant
Simulink >> Sources >> Sine Wave
Simulink >> Math Operations >> Gain
Simulink >> Math Operations >> Product
Simulink >> Continuous >> Derivative
Simulink >> Math Operations >> Math Function
Simulink >> Signal Routing >> Mux
Simulink >> Signal Attributes >> Data Type Conversion
Simulink >> Logic and Bit Operations >> Relational Operator
Simulink >> Logic and Bit Operations >> Logical Operator
Signal Processing Blockset >> Signal Management >> Switches and Counters >> Counter
Simulink >> Sinks >> Display
Simulink >> Sinks >> Scope
بصورت زیر بلوکها را مرتب کنید:
تنظیمات بلوکها:
تنظیمات مدل:
با فشردن کلید Ctrl+E به صفحه تنظیمات مدل رفته و مانند شکل زیر عمل کنید:
سپس بلوکها را مانند شکل زیر به یکدیگر متصل کرده و Run کنید:
در شکل زیر همانطور که مشاهده میکنید نمودار زرد رنگ، تابع ورودی و نمودار صورتی رنگ، آشکارساز پیک مثبت میباشد.
توضیح مدل:
در طراحی این مدل، از این نکته استفاده شده است که مشتق تابع سینوسی در پیک آن برابر صفر است. در نتیجه میتوان بوسیلهی عملگرهای رابطهای و منطقی، یک آشکارساز پیک طراحی کرده و سپس بوسیلهی یک شمارنده، تعداد پیکها را شمارش کرد.
توجه: در صورتی که بخواهید فرکانس موج ورودی را تا حد زیادی(مثلا 1GHz) افزایش دهید، حتما باید حداکثر گام حرکت را کاهش دهید که در غیر این صورت جواب نادرست خواهید گرفت.(چرا؟)
در مثال بعد میخواهیم یک مبدل آنالوگ به دیجیتال(ADC) بسیار ساده طراحی کنیم. همانطور که احتمالا میدانید، یکی از پارامترهای مهم در یک ADC ، تعداد بیتهای آن است که در واقع مشخص کنندهی قدرت تفکیکپذیری آن میباشد. بطور مثال یک ADC هشت بیت، میتواند 256 حالت مختلف را ایجاد کند. حال فرض کنید که ما میخواهیم یک مبدل چهار بیت طراحی کنیم(این مبدل 16 حالت مختلف را ایجاد میکند).
برای شروع کار ابتدا بلوکهای زیر را در یک مدل قرار دهید:
Simulink >> Sinks >> Scope
Simulink >> Sinks >> Display
Simulink >> Math Operations >> Sum
Simulink >> Logic and Bit Operations >> Relational Operator
Simulink >> Logic and Bit Operations >> Logical Operator
Simulink >> Sources >> Ground
Simulink >> Sources >> Constant
Simulink >> Sources >> Signal Generator
Simulink >> Signal Routing >> Switch
ابتدا باید سیگنال ورودی را به 16 قسمت مساوی تقسیم کنیم در نتیجه به بعضی از پارامترهای سیگنال ورودی احتیاج داریم(البته شاید بتوان به روشهایی این پارامترها را محاسبه کرد ولی در این مثال هدف چیز دیگری است). مثلا فرض کنید که دامنه پیک تا پیک و همچنین مینیمم سیگنال را داریم حالا باید از مقدار مینیمم شروع کرده و بهنسبت A/15 به مقدار مینیمم اضافه کرده تا به مقدار ماکزیمم سیگنال برسیم این مقادیر را بصورت پارامتری، درون 16 عدد بلوک Constant قرار میدهیم سپس سیگنال ورودی را به 17 قسمت مساوی تقسیم میکنیم تا بتوانیم از عملگرهای مقایسهای استفاده کنیم(برای تشخیص لحظهای دامنه سیگنال ورودی) پس از آن از مقدار مینیمم شروع کرده و بهنسبت A/16 به مقدار مینیمم اضافه کرده تا به مقدار ماکزیمم سیگنال برسیم این مقادیر را بصورت پارامتری، درون 17 عدد بلوک Constant قرار میدهیم.
تنظیمات تمام بلوکهای سوئیچ را بصورت زیر قرار میدهیم:
حال بصورت زیر عمل میکنیم:
زمانی که خروجی بلوک عملگر رابطهای، 1 باشد(دامنه سیگنال از مقدار P+A/16 کمتر باشد) بلوک سوئیچ، عدد P (مقدار اولیه) و در غیر این صورت این بلوک مقدار صفر را عبور میدهد.
سپس بلوکهایی مانند شکل زیر درست میکنیم:
در این شکل همانطور که ملاحظه میشود، زمانی که دامنه سیگنال ورودی از مقدار P+(2*A)/16 کوچکتر و بزرگتر و یا مساوی مقدار P+A/16 باشد، خروجی بلوک AND یک شده و بلوک سوئیچ مقدار P+A/15 را از خود عبور میدهد و در دیگر حالات زمین در مسیر خروجی قرار میگیرد.
سپس بههمین ترتیب ادامه میدهیم تا نهایتا به مدل زیر میرسیم:
نکته: میتوان یک سیگنالژنراتور و یک زمین به کار برد و برای استفاده در مکانهای دیگر از آنها انشعاب گرفت(درواقع هیچگونه اثر بارگذاری روی یکدیگر ندارند)
حال خروجی 16 بلوک سوئیچ را به یک جمعکننده با 16 ورودی میدهیم تا سیگنال دیجیتال شده را به ما تحویل دهد. سپس خروجی جمعکننده را به یک بلوک اسکوپ داده و نهایتا از کل سیستم، یک زیرسیستم تهیه کرده و آنرا ماسک میکنیم و تنظیمات ماسک را بصورت زیر قرار میدهیم:
مدل نهایی با اندکی تغییرات اضافی بصورت زیر است:
حال مدل را بهازای یک ورودی سینوسی با فرکانس 1KHz و دامنه 1 و مقدار dc برابر 0 شبیهسازی میکنیم(مقدار مینیمم سیگنال 1- و دامنه پیک تا پیک آن برابر 2 است):
خروجی بصورت زیر است:
مدل در لینک زیر قابل دسترس است:
اگر سؤالی داشتید در بخش نظرات آنرا مطرح کنید.
برای رفتن به قسمت بعد، بهروی لینک زیر کلیک کنید: