آموزش سیمولینک (قسمت چهارم) مشاهده در قالب PDF چاپ فرستادن به ایمیل
نوشته شده توسط مجتبی آیتی نیا   
دوشنبه, 28 تیر 1389 ساعت 21:16

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

مدل در لينك زير قابل دسترس است:

دانلود مدل

 

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

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

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


براي رفتن به ديگر قسمت‌ها، به‌روي لينك‌هاي زير كليك كنيد:

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

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

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

آموزش سیمولینک (قسمت چهارم)

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

آموزش سيمولينك (قسمت ششم)


  • masoud  - راهنمایی
    سلام/پروژه پایانی من در مورد حفاظت توان معکوس/فرکانسی/اتصال کوتاه رتور در ژنراتور ها می باشد/این حفاظت ها را باید از طریق متلب شبیه سازی کنم/در شبیه سازی هم مسلط نمی باشم/لطفا مطالب کاربردی که بتونم استفاده کنم را در اختیارم بگذارید/با تشکر
  • ناشناس  - تبديل z از سيگنال دلخواه در سيمولينك متلب
    سلام خسته نباشيد.
    ميخواستم بدونم تو سيمولينك متلب چطو ر از يه سيگنال دلخواه ميشه تبديل z گرفت؟
    من دارم تو سيمولينك متلب يه كنترل كننده ديجيتال طراحي ميكنم كه ورودي كنترل كننده ديجيتال بايد بر حسب zباشه! البته در قسمت m-fileدستور stem سيگنال رو نمونه برداري و گسسته مي كنه! ولي نميدونم اين كارو در سيمولينك بايد چطور انجام بدم؟
    خيلي ممنون ميشم اگر محبت كنيد بندرو راهنمايي بفرماييد.
  • moj1001
    سلام دوست عزيز
    اگه مي‌خواهيد در محيط سيمولينك سيگنالي رو گسسته كنيد مي‌تونيد از بلوك Quantizer استفاده كنيد:
    Simulink >> Discontinuities >> Quantizer
  • رسول  - سلام خدا قوت
    با تشكر فراوان بخاطر اين سايت خوب و مطالب عالي كه قرار دادين.
    من 1 پروژه اي دارم كه بايد حركت شي رو در محيط 2 بعدي يا3 بعدي تحت نظر بگيره يا تعقيب كنه بصورتي كه يك دايره با شعاع R هميشه بعد از شناخت محل شي (كه شي طبق الگويي خاص مثلا سينوسي يا خطي يا اريب ياحركت ميرا شونده وبا سرعت معين حركت ميكند ) مركز دايره روي شي قرار بگيرد.
    ممنون ميشم اگه اطلاعاتي در اين موضوع دارين به من بدين چون بهش نياز مبرم و فوري دارم
    با تشكر
  • عباس  - آموزش سیمولینک (قسمت پنجم)
    با سلام
    ممنون از سایت خوبتون
    من مقدمات یادگیری آموزش سیمولینک رو از سایت شما شروع کردم اما این بخش {آموزش سیمولینک (قسمت پنجم)} کلیک نمیشهلطفا چک کنید
    ممنون
    یه سوال
    واسه سیمولینک ماتریسهای چند در چند به کدوم قسمت سیمولینک باید مراجعه کرد؟
  • moj1001
    سلام دوست عزیز
    قسمت پنجم رو هنوز فرصت نکردم در سایت بنویسم.
    به کتابخانه پردازش سیگنال بروید.
  • pouya
    mamnoon az lotfi k mikonid!dar morede sim mechanic etela ati nadarid?age mishe dar zamineye robotic ya mechanic ham mesal bezanid bazam mamnoon
  • امین  - سوال
    چگونه می توان یک موج سه فاز سینوسی که با هم 120 درجه اختلاف فاز داشته باشند رسم کرد
  • moj1001
    سلام دوست عزیز
    سوالت رو دقیق مطرح کن. می خای چه کار کنی؟
  • ناشناس
    سلام باید بگم محشر بود من که خیلی خیلی استفاده کردم منتظر بخش های جدید هستم
  • محمد
    فقط میگم ایول،خدا خیرت بده انشاالله همیشه صحیح و سالم باشی و این کار با ارزشت رو ادامه بدی.
  • ناشناس  - ممنون
    سلام
    خسته نباشید
    قسمت پنجم نداره؟
    لطفا چک کنید
  • moj1001
    سلام دوست عزیز
    هنوز فرصت نکردم قسمت پنجمش رو بنویسم!
  • مسلم  - تشکر و یک درخواست
    آقا سلام واقعا خسته نباشید.من باید یک پروژه ای در مورد تحلیل میدان ها در یک سیم حام جریان،انجام بدم.ممنون میشم اگه مطالبی در این مورد تو سایتتون قرار بدید.
  • mona
    [
    سلام. واقعا ممنون مطالبتون خیلی مفیده :wink:
    یه سوال داشتم: چطوری میشه تو سیمولینک مطلب شکل رو بر حسب فرکانس رسم کرد؟
  • پیمان اسلامی  - تشکر و درخواست کمک
    سلام
    با تشکر از شما که من رو با آموزشهاتون خیلی کمک کردید.
    یک معادله دیفرانسیل مرتبه دوم دارم که قرار داخل سیمولینک شبیه سازی بشه اگه امکانش هست یا راهنمایی بفرمائید یا اینکه برای طراحی به من کمک کنید.
    با تشکر
    d^2x/dx^2=k(1-x^2)dx/dt+x=d(t),d(t)=10sin(t),k=10
  • moj1001
    سلام دوست عزیز
    سعی می کنم در قسمت های بعدی شبیه سازی معادلات دیفرانسیل رو هم آموزش بدم.
  • مهدی  - معرفی کتاب
    سلام ممنون از اموزش خوب و کاملتون
    لطفا یک مرجع آموزشی خوب به من معرفی کنید پایان نامه من سیستمه
  • نوری  - شماره تماس
    سلام
    می توانم شماره شما رو داشته باشم :!:
    سئوال داشتم.
  • ناشناس
    لطف کنید روش استفاده از m-file ها رو در متلب آموزش دهید
    ممنون
    شبیه سازی دینامیکی در محیط سیمولینک رو شرح دهید
  • زهره
    سلام خیلی عالی بود.دستتون درد نکنه.خدا قوت :P
  • sinau
    با سلام و عرض خسته نباشيد.

    يه سوال درمورد مثال دوم دارم:
    وقتي Run مي كنم نمودار روي صفحه اسكوپ از ثانيه 19.5 شروع ميشه!!!!! يعني از 0 تا 19.5ثانيه كاملا خاليه!!!
    زمانيكه اسكوپ رو مستقيما به موج سينوسي يا نمايي هم كه وصل ميكنم باز هميجوريه!!
    اما زمانيكه از قسمت configuration paratemer مقدار Max Steps sizeرو زياد ميكنم نمودار مثلا از 15.5 شروع ميشه!!!
    خواستم بپرسم مشكل از چي ميتونه باشه؟؟؟
    با تشكر فراوان
  • moj1001
    سلام
    بله دوست عزيز همين‌طور هست كه مي‌گي!
    دليلش رو دقيقا نمي‌دونم ولي اين اسكوپ نمي‌تونه گرافي رو با دقتي معادل 0.00001 در مدت 20.75 رسم كند. من هم اين نمودارها رو با Max Steps size حدود 0.005 رسم كردم. ولي به اين نكته توجه داشته باش كه اگه فركانس ورودي رو افزايش بدي بايد Max Steps size رو هم معادل اون تغيير بدي وگرنه نتايج اشتباهي مي‌گيري.
  • sinau
    ممنـــــــــــــــــــــــــــون!!! :D
  • esw1  - اسماعیل
    سلام خسته نباشید
    برای اینکه یک موتور سه فاز القایی را هارمونیک دار کنیم از چه ایتمی استفاده کنیم؟
  • هوشیار
    سلام
    با تشکر از مطالب مفیدتون سوالی داشتم

    من برای کارم برای 40 سال میخوام 40 عدد در مدلم داشته باشم
    اعدادم رو در یک فایل mat ذخیره کردم. از بلوک from file هم برای خوندنش استفاده کردم. اما احساس میکنم دیتای من درست خونده نمیشه. آیا روش خاصی برای ذخیره دیتا وجود داره یا نه؟ ضمنا اگه بخوام بدونم اغدادم درست وارد مدل میشه راهی برای دونستنش هست؟
  • moj1001
    سلام - ممنون
    مشكل كجاست؟ ارور ميده يا جواب نمي‌گيري؟
  • هوشیار
    جواب نمیگیرم
    تیکه تیکه هم که چک کردم تقریبا به این نتیجه رسیدم که دیا درست خونده نمیشه که سیستم ازش استفاده کنه!
  • moj1001
    فكر كنم ديتا بايد double باشه! حالا اگه خاستي مدلت رو آپلود كن يه نگاهي بهش ميندازم.
  • هوشیار
    کجا میتونم آپلود کنم که شما ببینید؟

    مرسی واقعا
  • admin
    دو تا سایت برای آپلود رایگان فایل
    http://www.wikiupload.com/

    http://www.uploadmb.com/
  • هوشیار
    http://www.uploadmb.com/dw.php?id=1316079926

    من فایل رو آپلود کردم!
  • moj1001
    سلام
    وارد سايت نمي‌شه!
    تو گوگل سرچ كن آپلود رايگان فايل سايت‌هاي زيادي مي‌ياد براي آپلود.
  • هوشیار  - سلام مجدد
    http://up4.iranblog.com/images/zh737506xx80pnkqcwk.rar

  • moj1001
    سلام
    شما در سه فايل k و u و h هر سه متغيير k و u و h رو ذخيره كردي! خودت با دستور load نيز مي‌توني ببيني به اين صورت:

    کد:
    load k
  • هوشیار
    من برای ذخیره هر کدوم از دیتا ها از مسیر file->new->variable رفتم و دیتام رو ذخیره کردم. اشتباهم به نظرتون کجا بوده که این مشکل پیش میاد؟ یعنی هر سه متغیر در هم ذخیره شدن!
  • vahid  - scop
    چه طور می تونم در سیمولینک متلب شکل اسکوپی که دارم رو در جایی که می خام ذخیره کنم تا بعدا پرینتش بکنم.با تشکر
  • moj1001
    مي توني عكس بگيري از اسكوپ يا با نرم‌افزارهاي توليد فايل pdf ازش pdf گرفته و بعدا اون رو چاپ كني. به هر حال روش‌هاي زيادي هست.
  • b
    dar rabate ba simulink ghodrati ha ham mitoonid mesalo matlab bezarid?
    az anasori mesle igbt v... estefade konid.
    masalan shabih sazie pwm?
  • ناشناس
    خیلی ممنون از این آموزش های بسیار مفیدتون
  • SENDRA
    سلام پروژه پایانی من شبیه سازی ست نمیتونم که چگونه باید آن را انجام دهم میشه راهنماییم کنید.
  • ناشناس  - خواهش
    سلام و خسته نباشید اگه امکان داره توضیحاتی در مورد کتابخانه و قطعات آنمثلsignal roting قرار دهید ممنونم
  • moj1001
    سلام
    اگه در مورد قطعه خاصي سوال داري بپرس.
  • ابراهیمی
    با سلام
    من یک مقاله را می خواهم شبیه سازی کنمدر بلوک دیاگرام سمولینک آن در اول دیاگرام یک بلوکی به نام set استکه ورودی ندارد وفقط خروجی دارد بعد از این بلوک بلوک saturation قرار دارد بلوکset را ازسیمولینک نمی توانیم پیدا کنم لطفا کمکم کنید
  • moj1001
    سلام
    ممكن هست بلوك set يك بلوك دست‌ساز باشه!
  • سپاهي  - مبدل dac 16بيتي
    با سلام
    چگونه ميتوانم يك مبدل dac 16 بيتي در سيمولينك داشته باشم؟
    با تشكر
  • moj1001
    سلام
    خب اگه خودت ميخاي درست كني ايده‌هاي مختلفي وجود داره! مثلا مي‌توني فاصله بين دو گام رو با يك خط راست به هم وصل كني.
نوشتن نظر
Your Contact Details:
نظر:
[b] [i] [u] [url] [quote] [code] [img]   
:D:):(:0:shock::confused:8):lol::x:P:oops::cry:
:evil::twisted::roll::wink::!::?::idea::arrow:
Security
کد آنتی اسپم نمایش داده شده در عکس را وارد کنید.
آخرین بروز رسانی در سه شنبه, 03 آبان 1390 ساعت 15:55