در این قسمت از آموزش سیمولینك، ابتدا با نحوه‌ی درون‌یابی و برون‌یابی(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

تنظیمات بلوك‌ها:

  • روی بلوك Lookup Table دوبار كلیك كرده و در قسمت Vector of input values بردار x و در قسمت Table data بردار y را قرار داده و OK كنید. حال باید نمودار داده‌ها را روی بلوك مشاهده كنید

تنظیمات مدل:

با فشردن كلید 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

 

بصورت زیر بلوك‌ها را مرتب كنید:

 

تنظیمات بلوك‌ها:

  • روی بلوك Gain دوبار كلیك نموده و مقدار آن را 0.5- قرار دهید
  • روی بلوك Sine Wave دوبار كلیك نموده و مقدار فركانس آن را 20*pi قرار دهید
  • روی بلوك Constant دوبار كلیك نموده و مقدار آن را 0 قرار دهید
  • روی بلوك Constant1 دوبار كلیك نموده و مقدار آن را 0 قرار دهید
  • روی بلوك Relational Operator دوبار كلیك نموده و در قسمت Relational operator عملگر < را انتخاب كنید
  • روی بلوك Relational Operator1 دوبار كلیك نموده و در قسمت Relational operator عملگر < را انتخاب كنید
  • روی بلوك Relational Operator2 دوبار كلیك نموده و در قسمت Relational operator عملگر > را انتخاب كنید
  • روی بلوك Relational Operator3 دوبار كلیك نموده و در قسمت Relational operator عملگر > را انتخاب كنید
  • روی بلوك Logical Operator دوبار كلیك نموده و در قسمت Icon shape نوع نمایش را distinctive انتخاب كنید
  • روی بلوك Logical Operator1 دوبار كلیك نموده و در قسمت Icon shape نوع نمایش را distinctive انتخاب كنید
  • روی بلوك Data Type Conversion دوبار كلیك نموده و در قسمت Output data type نوع داده‌ی خروجی را double انتخاب كنید
  • روی بلوك Data Type Conversion1 دوبار كلیك نموده و در قسمت Output data type نوع داده‌ی خروجی را double انتخاب كنید
  • روی بلوك Counter دوبار كلیك نموده و در قسمت Maximum count عدد 1e100 و در قسمت Output حالت Count و Reset input را غیرفعال كنید
  • روی بلوك Counter1 دوبار كلیك نموده و در قسمت Maximum count عدد 1e100 و در قسمت Output حالت Count و Reset input را غیرفعال كنید

تنظیمات مدل:

با فشردن كلید 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 است):

خروجی بصورت زیر است: