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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

مدل در لینک زیر قابل دسترس است:



دانلود مدل


اگر سؤالی داشتید در بخش نظرات آن‌را مطرح کنید.

برای رفتن به قسمت بعد، به‌روی لینک زیر کلیک کنید:


آموزش سیمولینک (قسمت پنجم)

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد