آخرين ارسالهاي تالار

آموزش سيمولينك (قسمت ششم) مشاهده در قالب PDF چاپ فرستادن به ایمیل
نوشته شده توسط مجتبی آیتی نیا   
سه شنبه, 27 اردیبهشت 1390 ساعت 16:46

سلام خدمت دوستان

در اين قسمت از آموزش سيمولينك ابتدا بنا به درخواست برخي از دوستان، يك معادله‌ي ديفرانسيل رو شبيه‌سازي مي‌كنيم. اين معادله‌ي ديفرانسيل ممكن است معادله‌ي هر نوع سيستمي باشد. حال فرض كنيد معادله‌ي سيستم ما به‌شرح زير باشد:

 

 

 

 

همان‌طور كه مي‌بينيد اين معادله از نوع درجه دو، و ورودي آن نيز پله است. شرايط اوليه براي متغيير خروجي، غير صفر مي‌باشد. حال براي  شبيه‌سازي اين معادله‌ي ديفرانسيل به صورت بلوكي، و بدست آوردن خروجي، به‌صورت زير عمل كنيد:

 

 

طبق معمول ابتدا يك مدل جديد باز كرده و بلوك‌هاي مورد نياز را از مسيرهاي زير وارد آن مي‌كنيد:

Simulink >> Sources >> Step

Simulink >> Sources >> Constant

Simulink >> Math Operations >> Sum

Simulink >> Math Operations >> Gain

Simulink >> Continuous >> Integrator

Simulink >> Signal Routing >> Bus Creator

Simulink >> Sinks >> Scope

 

حال بلوک‌ها را مانند شکل زیر مرتب کرده و بعد از اعمال تنظيمات لازم، بلوك‌ها را سیم کشی کنید:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

تنظيمات بلوک‌ها:

  • روي بلوك Step دوبار كليك نموده و مقدار Step time را 0 قرار دهيد.
  • روي بلوك Constant دوبار كليك نموده و مقدارآن را 0.5 قرار دهيد.
  • روي بلوك Gain دوبار كليك نموده و مقدارآن را 0.5 قرار دهيد.
  • روي بلوك Gain2 دوبار كليك نموده و مقدارآن را 3 قرار دهيد.
  • روي بلوك Sum دوبار كليك نموده و در قسمت List of signs علامت هاي --+| را وارد كنيد.
  • روي بلوك Integrator دوبار كليك نموده و در قسمت Initial condition source حالت external را برگزينيد.

تنظيمات مدل:

  • مقدار Stop time را 20 ثانيه قرار دهيد.

حال مدلتان را Run کنید تا ورودي و خروجي را مشاهده كنيد:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

در مثال بعدي مدار بلوكي جالبي رو بهتون معرفي مي‌كنم كه بوسيله‌ي آن قادر خواهيد بود، ميزان تغييرات گام زماني حل‌گر سيمولينك را مشاهده كنيد. همان‌طور كه احتمالا مي‌دانيد، سيمولينك دو نوع حل‌گر گام‌ثابت و گام‌متغيير دارد كه پيش‌فرض آن بر روي گام‌متغيير قرار داده شده است. هر كدام از اين حل‌گرها درجاي خودشان كاربرد دارند، اما براي اكثر مدل‌ها پيشنهاد مي‌شود كه از حل‌گر گام‌متغيير استفاده شود. اين حل‌گر بنا به نياز، ميزان گام زماني را بطور اتوماتيك تغيير مي‌دهد. حال براي پياده‌سازي اين مدار به‌صورت زير عمل كنيد:

Simulink >> Sources >> Clock

Simulink >> Math Operations >> Sum

Simulink >> Discrete >> Memory

Simulink >> Sinks >> Scope

Simulink >> Sinks >> Display

 

حال بلوک‌ها را مانند شکل زیر مرتب کرده و بعد از اعمال تنظيمات لازم، بلوك‌ها را سیم کشی کنید:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

تنظيمات بلوک‌ها:

  • روي بلوك Sum دوبار كليك نموده و در قسمت List of signs علامت هاي +-| را وارد كنيد.

حال مدلتان را Run کنید:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

همان‌طور كه مشاهده مي‌شود، حل‌گر سيمولينك اين مدل را با گام زماني ثابت 0.2 حل كرده است، در حالي كه نوع حل‌گر در حالت گام‌متغيير قرار دارد.(چرا؟)

اكنون با فشردن كليد Ctrl+E به صفحه تنظيمات مدل رفته و نوع حل‌گر را گام‌ثابت انتخاب كرده و مقدار Fixed-step size را 0.005 قرار داده و OK كنيد.

حال مدلتان را مجدد Run کنید:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

بله در اين حالت از همان ابتدا تا انتها، گام زماني ثابت و برابر 0.005 مي‌باشد.(چرا؟ اينكه معلومه ديگه كلك!)

در مثال بعدي مدار يك اسيلاتور موج مربعي رو بهتون نشون مي‌دم كه بچه‌هاي برق به اون نوسان‌ساز حلقوي مي‌گن(ring oscillator). البته هدف من از معرفي اين مدار توليد موج مربعي نيست، چرا كه همان‌طور كه مي‌دانيد مولدهاي متنوعي در كتابخانه‌ي سورس سيمولينك وجود دارد در واقع نكته‌اي در اين مدار هست كه فهميدن آن خالي از لطف نيست.

بلوك‌ها:

Simulink >> Logic and Bit Operations >> Logical Operator

Simulink >> Discrete >> Unit Delay

Simulink >> Sinks >> Scope

تنظيمات بلوک‌ها:

  • روي بلوك‌هاي Logical Operator دوبار كليك نموده و نوع عملگر را NOT انتخاب كرده و سپس در قسمت Icon shape نوع نمايش را distinctive انتخاب كنيد.

حال بلوک‌ها را مانند شکل زیر مرتب کرده و سیم کشی کنید:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

مدلتان را Run کنید:

 

 

 

 

 

 

 

 

 

 

 

توضيح مدل:

اگر تعداد فرد گيت معكوس‌كننده را پشت سر هم ببنديم و خروجي آخرين گيت را به ورودي اولين گيت وصل كنيم، يك تناقض منطقي بوجود مي‌آيد. اين تناقض منطقي سبب ناپايدارشدن مدار شده و مدار شروع به نوسان مي‌كند. فركانس نوسانات اين مدار بستگي به تاخير در انتشار گيت‌ها دارد كه مسلما هرچه اين تاخير بالاتر باشد، فركانس پايين‌تر است. اما گيت‌هاي NOT موجود در سيمولينك، تاخير ندارند و بايد تاخير بيروني به مدار اعمال كنيم، در غير اين صورت سيمولينك نمي‌تواند مدل را حل كند(چرا؟).

در مثال آخر شما را با بلوكي آشنا مي‌كنم كه شما مي‌توانيد به راحتي آن را با كدهاي متلب برنامه‌ريزي كنيد. اين بلوك مانند يك بلوك FPGA است كه با يك زبان توصيف سخت‌افزاري مثل VHDL ، پيكربندي مي‌شود. از جمله مزاياي استفاده از اين بلوك انعطاف‌پذيري آن است، بدين معني كه شما با وجود اين بلوك به گستره‌ي عظيم توابع متلب دسترسي پيدا خواهيد كرد. حالا يك مثال ساده مخابراتي رو براي معرفي اين بلوك بررسي مي‌كنيم. اين مثال مدولاسيون AM است. مي‌خواهيم با داشتن دو موج پيام و حامل، موج مدوله شده AM را بدست آوريم.

بلوك‌ها:

Simulink >> Sources >> Constant

Simulink >> Sources >> Signal Generator

Simulink >> User-Defined Functions >> Embedded MATLAB Function

Simulink >> Sinks >> Scope

تنظيمات بلوک‌ها:

  • روي بلوك Constant1 دوبار كليك نموده و مقدار آن را 0.5 قرار دهيد.
  • روي بلوك Signal Generator دوبار كليك نموده و مقدار فركانس آن را 1000 هرتز وارد كنيد.
  • روي بلوك Signal Generator1 دوبار كليك نموده و مقدار فركانس آن را 10000 هرتز وارد كنيد.
  • روي بلوك Scope دوبار كليك نموده و سپس به منوي Parameters رفته و تعداد محورها را برابر 3 قرار دهيد.
  • روي بلوك Embedded MATLAB Function دوبار كليك نموده و در ويرايشگر باز شده، كد زير را وارد كنيد:

function AM = fcn(Message,Carrier,Ac,m)

% Modulation AM

AM = Ac*(1+m*Message)*Carrier;

 

تنظيمات مدل:

  • مقدار Stop time را 10 ميلي ثانيه قرار دهيد.
  • مقدار Max step size را 10 ميكرو ثانيه قرار دهيد.

حال بلوک‌ها را مانند شکل زیر مرتب کرده و سیم کشی کنید:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Run کنید:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

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

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

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

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

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


نظر ها (468)
  • ayran
    سلام
    یک سوال فوری داشتم: چگونه از یک mfile در matlab fcn استفاده کنیم .
    با تشکر از سایت خوبتون
  • moj1001
    سلام
    اگه منظورت از matlab fcn تابع هست مي‌توني نام اون m-file رو در تابع مورد نظر وارد كني. فقط اون m-file بايد در مسير جاري متلب قرار داشته باشه.
  • seyedahmad
    سلام آقای مهندس . من متوجه نشدم . میشه بیشتر توضیح بدین . من کدمو کی می کنم و داخل باکس مطلب فانکشن میریزم . اونطوری نمیشه؟
  • ناشناس
    سلام، خسته نباشید . در سیمولینک بلوکی به نام پریودیک نویز داریم؟ کدوم قسمت؟
  • moj1001
    سلام ممنون
    اگه منظورت نويز متناوب هست من نديدم! ولي مي‌توني با بلوك مولد نويز، يك مدار مولد نويز پریودیک درست كني.
  • Saeed
    Mojtaba jan kheili aalie, jeddan ay inke in chizaee ke midooni ro be baghze ham migi kheili kheili hoobe. dorood bar to
  • moj1001
    ممنون آقا سعيد
  • ناشناس
    salam mishe ba estefade az simulink ye yeksoosaze 3 faaz ba thyristor o shabihsaazi konid?
    manoon
  • hassan
    salam agaye mojtaba
    kheyli sayte simulik ali va mofid bod fagat mikhastam bedonam emkane in ham vogod darad ke dar babe mechanik (Block diagram of filtered LQ control system)amozesh bedahid mamnon az shoma kheyli kheyli zahmat keshidid vali motmaen bashid ke binatigeh nemimanad
  • moj1001
    ممنون
    اگه فرصت شد باشه
  • امین
    سلام با تشکر ازسایت خوبتون
    یک سوال فوری داشتم.چگونه میتونم اثرصاعقه راروی سیم پیچ ترانسفورماتور مدل کرد؟
  • هوشیار رستمی  - شبیه سازی مسائل بهینه یابی
    سلام آقای آیتی نیا

    با تشکر از زحماتی که برای تهیه مطالب کشیده اید، باید بگویم این مطالب در یادگیری شبیه سازی به بنده کمک کرد.
    میخواستم خواهش کنم برای شبیه سازی مسائل بهینه یابی که یک یا چند قید دارند به من کمک کنید حال چه به روش فعلی و یا اگر امکان ندارد لطف کنید نمونه کاری در این باب برای بنده میل کنید. از کمک شما ممنون خواهم شد.

    با سپاس
    هوشیار
  • azad82
    سلام-دوست عزیز از لینک های آموزشتون خیلی متشکرم-رشته من مکانیک-اگر در زمینه مکانیک و سیمولینک کتاب یا مطالب مفیدی دارید لطفا معرفی کنید-من در زمینه simmechanics مطالب و مثال هایی دارم اگر دوست داشتین براتون بفرستم امیدوارم بدرتون بخوره.
    با تشکر
  • moj1001
    سلام
    ممنون دوست عزيز - در مورد مكانيك كتاب نيما جمشيدي هست كه يه فصل اون در مورد simmechanics است. در مورد اون مطالب هم آيا مال خودتون هستند؟
  • vahid  - کمک
    سلام.من با کمک بلوک fcn matlab یک ام فایل رو اجرا میکنم.ولی با ارور زیر مواجح میشم.1 هفته است که گیر کردم.لطفا راهنمایی کنید
    Evaluation of expression resulted in an invalid output. Only finite double vector or matrix outputs are supported.
  • moj1001
    سلام
    احتمالا خروجي m-file محدود نشده كه اين ارور رو داده! (تو محيط متلب اجراش كن ببين چه نتيجه‌اي مي‌ده.)
  • ناشناس
    سلام موضوع پروژه من در مورد
    تبدیل سیمولینک نرم افزار متلب به فایل قابل پیاده سازی برایFPGA ‎ است لطفا من را راهنمایی کنید.
تنها کاربران عضو شده می توانند نظر ارسال کنند!
آخرین بروز رسانی در یکشنبه, 04 تیر 1396 ساعت 04:15
 
logo-samandehi