آموزش شبیه سازی (قسمت اول)
بنابر درخواست دوستان از این به بعد هر چند هفته یک بار مطالبی در خصوص نحوه شبیه سازی معادلات مختلف و همچنین آشنایی با بلوک های سیمولینک ارائه می کنیم.
برای وارد شدن به محیط سیمولینک بر روی آیکون آن کلیک کنید یا در قسمت Command دستور simulink را وارد کنید تا محیط سیمولینک نمایش داده شود:
همان طور که مشخص است در محیط Library کتابخانه های مختلفی برای شبیه سازی قرار داده شده است که با کلیک بر روی هر کتابخانه محتوای آن نمایش داده می شود. ممکن است هر زیرکتابخانه ای نیز دارای بخش های مختلفی باشد که با کلیک بر روی هر کدام محتوای آن قسمت در سمت راست نمایش داده می شود:
در پست های آینده محتوای هر کتابخانه را توضیح خواهیم داد.
برای رسم بلوک دیاگرام می توانید از قسمت File وانتخاب گزینه New و Model یک محیط جدید را باز کنید. قبل از اینکه شبیه سازی را شروع کنید بهتر است تنظیمات حل (Solve) شبیه سازی را مشخص کنید.
همان طور که می دانید نرم افزار متلب مبتنی بر روش های عددی می باشد بدین معنی که معادلات خود را بر اساس روش های عددی حل می کند و چون روش های عددی متنوع می باشد بر اساس دقت و سرعت حل بهتر است گزینه مناسبی را انتخاب کنید.
برای انتخاب نوع روش حل و تغییر دادن تنظیمات آن دکمه Ctrl+E را زده یا مطابق شکل زیر گزینه مشخص شده را بزنید تا صفحه مربوط به تنظیمات باز شود:
همان طور که مشخص است این قسمت دارای بخش های مختلف می باشد:
در قسمت Simulation time می توانید زمان شروع و پایان شبیه سازی را انتخاب کنید.
در قسمت Solver option می توانید تنظیمات مربوط به شبیه سازی را انجام دهید. در این قسمت ابتدا باید نوع حل که خود دو روش می باشد را انتخاب کنید:
روش گام متغیر (Variable-step) :
بعضی از روش های حل بسته به پاسخ دینامیکی مقدار گام را تغییر می دهند تا بتوانند سریع تر به جواب برسند. روش های گام متغیر برای مدل هایی که حالت ها در آن سریع تغییر می کنند یا شامل المان های discontinue هستند پیشنهاد می شود. بنابراین برای دقیق بودن جواب اگر حالت ها سریع تغییر می کنند بهتر است میزان گام را کاهش دهیم در غیر این صورت اگر حالت ها به آرامی تغییر می کردند بهتر است میزان گام را افزایش داده تا گام های غیر لازم را حل نکند.
نرم افزار متلب بصورت پیش فرض (auto) مقادیری را برای بیشترین، کمترین و مقدار اولیه گام در نظر گرفته است.برای مثال اگر در قسمت Max step size مقدار auto را قرار دهید بدین معنی است که نرم افزار مقدار پیش فرض خودش که در این مورد از رابطه زیر حساب می شود را قرار می دهد:
در قسمت Solver نیز می توانید روش های حلی که مبتنی بر گام متغیر هستند را انتخاب کنید که عبارت اند از:
Discrete (no continuous states)
ode45 (Dormand-Prince)
ode23 (Bogacki-Shampine)
ode113 (Adams)
ode113
ode15s (stiff/NDF)
ode23s (stiff/Mod. Rosenbrock)
ode23t (Mod. stiff/Trapezoidal)
ode23tb (stiff/TR-BDF2)
هر کدام از روش ها خاصیت خود را دارا می باشند ولی معروف ترین آن ها روش ode45 می باشد که برای حل بیشتر مسائل مورد استفاده قرار می گیرد. روش ode15s نیز برای مسائلی که روش ode45 نمی تواند آن را حل کند پیشنهاد شده است.
دو گزینه خطای نسبی (Relative) وخطای مطلق (Absolute) نیز بطور پیش فرض مقدار دهی شده اند.
روش گام ثابت (Fixed-step) :
در این روش بر خلاف روش بالا میزان گام در طول شبیه سازی ثابت در نظر گرفته می شود. در قسمت Fixed-step size می توانید مقدار گام را مشخص کنید:
در قسمت Solver نیز می توانید روش های حلی که مبتنی بر گام ثابت هستند را انتخاب کنید که عبارت اند از:
Discrete (no continuous states)
ode3 (Bogacki-Shampine)
ode8 (Dormand-Prince RK8(7))
ode5 (Dormand-Prince)
ode4 (Runge-Kutta)
ode2 (Heun)
ode1 (Euler)
ode14x (extrapolation)
پس اگر مدلی را شبیه سازی کردید و جواب نگرفتید سعی کنید تنظیمات مربوط به روش حل آن را تغییر دهید.
پس از انتخاب روش حل به سراغ شبیه سازی می رویم. برای وارد کردن بلوک ها داخل مدل پس از کلیک کردن بر روی بلوک دکمه Ctrl+I را بزنید یا می توانید بلوک را گرفته و داخل مدل رها کنید.
در این قسمت برای مثال نحوه شبیه سازی موتور DC را به سه روش آموزش می دهیم:
1) همان طور که در پست مدل موتور DC اشاره شد می توان مدار معادل موتور را بصورت زیر در نظر گرفت:
2) تابع انتقال موتور را می توان بصورت زیر نمایش داد:
به ازای مقادیر زیر تابع انتقال برابر است با:
3) می توان تابع انتقال را بفرم معادلات دیفرانسیل بصورت زیر نوشت:
می خواهیم پاسخ پله موتور را بدست آوریم. بلوک های مورد نیاز برای شبیه سازی را می توانید از قسمت های زیر انتخاب کنید:
Simulink>>Commonly Used Blocks>>Constant
Simulink>>Commonly Used Blocks>>Gain
Simulink>>Commonly Used Blocks>>Integrator
Simulink>>Commonly Used Blocks>>Scope
Simulink>>Commonly Used Blocks>>Sum
Simulink>> Continuous >>Transfer Fcn
خروجی بلوک Constant یک مقدار ثابت می باشد. این مقدار ثابت می تواند یک عدد اسکالر باشد یا یک ماتریس ثابت:
در اینجا چون بعنوان ورودی پله می باشد مقدار یک را درآن قرار می دهیم.
بلوک Gain نیز ورودی خود را در مقدارش ضرب کرده و به خروجی خود می فرستد. همانند بلوک قبلی این بلوک نیز می تواند بصورت ضرب اسکالر عمل کند یا بصورت ضرب ماتریسی. برای انتخاب نوع عملیات ضرب مطابق با شکل زیر عمل کنید:
گزینه اول مربوط به ضرب اسکالر و سه گزینه دیگر مربوط به ضرب ماتریسی می باشد (از سمت راست یا چپ و یا بصورت برداری). توجه کنید که در صورتی که ضرب ماتریسی را انتخاب کردید باید ابعاد ماتریس ورودی با ابعاد ماتریس ضرب متناسب باشد در غیر این صورت با پیام خطا مواجه خواهید شد.
بلوک Integrator همان عمل انتگرال گیری را برای ما انجام می دهد. برای مقدار دهی اولیه انتگرال می توانید از قسمت Initial condition استفاده کنید. همچنین اگر می خواهید انتگرال را صفر کنید می توانید از قسمت External reset استفاده کنید. صفر کردن انتگرال بیشتر مواقع برای پارامترهایی مناسب می باشد که متناوب هستند. برای مثال زمانی که از سرعت موتور انتگرال می گیرید خروجی که زاویه روتور می باشد نباید بیشتر از 2π شود. می توانید با بلوکی ساده زمانی که خروجی انتگرال گیر بیشتر از 2π شد مقدار آن را دوباره صفر کنید. همچنین می توانید حد اشباع برای انتگرال گیر تعریف کنید:
یکی از پرکاربردترین بلوک ها، بلوک Scope می باشد که برای مشاهده خروجی بلوک ها استفاده می شود. با دو بار کلیک کردن بر آن و انتخاب کلیک Parameters می توانید تنظیمات مربوط به آن را انجام دهید:
همان طور که از شکل مشخص است تنظیمات اسکوپ سه قسمت دارد:
1) در قسمت General می توانید تعداد منحنی ها را مشخص کنید.
2) در قسمت History می توانید مشخص کنید که چه مقدار از داده ها نمایش یا ذخیره شوند.
3) در قسمت Style می توانید رنگ نمودارها و ضخامت خطوط را مشخص کنید.
بلوک بعدی بلوک Sum یا جمع کننده می باشد. با دو بار کلیک کردن بر آن می توانید تنظیمات مربوط به آن را انجام دهید:
در قسمت Icon shape نوع شکل بلوک را می توانید مشخص کنید و در قسمت List of sign با قرار دادن علامت مثبت و منفی می توانید تعداد ورودی های جمع کننده و علامت آن ها را مشخص کنید.
بلوک آخری که برای شبیه سازی نیاز دارید بلوک Transfer Fcn می باشد. این بلوک برای تابع انتقال در حوزه S مورد استفاده قرار می گیرد. با وارد شدن به بخش تنظیمات شکل زیر نمایش داده می شود:
در قسمت Numerator ضرایب معادله صورت و در قسمت Denomirator ضرایب معادله مخرج را بصورت ماتریسی می توانید قرار دهید. توجه کنید که برای استفاده از این بلوک، درجه مخرج حتماً باید بیشتر از صورت باشد.
برای شبیه سازی هر سه روش مطابق شکل زیر بلوک ها را به هم متصل کرده و مقدار دهی کنید:
نتیجه شبیه سازی بصورت زیر می باشد:
برای دانلود شبیه سازی بر روی عکس کلیک کنید.
19 Comments
rasool
درباره10 سال agoسلام بسیار عالی بود ممنون
پاسخahmadreza
درباره10 سال agobesyar ali va khoub,mamnoun az site e ghashngetooon
پاسخامین
درباره10 سال agoسلام خسته نباشید خیلی عالی بود خداوند مرده هاتو بیامرزه مرسی
پاسخامین
درباره10 سال agoقسمت های بعد رو هم ارائه بدید
پاسخموسی
درباره10 سال agoسلام سایتتان فوقالعاده است مطالبتون خیلی به کار می آید
پاسخسعید
درباره10 سال agoسلام خیلی ممنون آموزشی مفید و عالی هست امیدورم که ادامه بدید موفق باشید ;)
پاسخomid
درباره9 سال agoسلام سایتتون بسیار عالی و مفید بود بسیار ممنون
پاسخdavood
درباره9 سال agoمرسی از مطالبتون خیلی عالی بود
پاسخmahdi
درباره9 سال agoاقا حرف نداری خدایی . بهترین سایته
پاسخهادی نجفی
درباره9 سال agoسلام با تشکر از زحمات شما. واقعا عالیه. موفق و پیروز باشید.
پاسخمجنون
درباره8 سال agoاز زحماتتون تشکر میکنم واقعا سایت قشنگی دارین... میخواستم بدونم کتاب کراوس ترجمه فارسیش هست ، اگه هست لطف کنین لینک دانلودشو تو سایت قرار بدین.
پاسخAdmin
درباره8 سال agoاین کتاب ترجمه شده است ولی باید آن را بخرید.
پاسخمجنون
درباره8 سال agoببخشید، قیمت کتابه چه قده ؟
پاسخAdmin
درباره8 سال agoبه لینک زیر مراجعه کنید:
http://www.adinehbook.com/gp/product/9646029460
پاسخعلیرضا
درباره8 سال agoسلام ممنون از سایت خوبتون مطالب زیادی از سایتتون یاد گرفتم. سوالی داشتم بنده دارم روی پروژه کارشناسیم که مربوط به طراحی درایو IFOC ماشین های القایی هست، کار میکنم.در شبیه سازی هر چقدر تحقیق کردم نتونستم مطلبی در رابطه با تنظیمات داخلی بلوکهایی چونFlux Weakening و کنترل کننده ها مختلف اسن سیستم پیدا کنم.میشه لطف کنین و بنده را راهنمایی کنین. تشکر
پاسخAdmin
درباره8 سال agoباید به کتاب های مرجع نظیر Control of Electric Machine Drive Systems - Seung-Ki Sul مراجعه کنید.
پاسخفخرالدین
درباره8 سال agoممنون ازسایت خوبتون
پاسخmehdi
درباره7 سال agoسلام من با متلب خیلی کم کار کردم و بهم پروژه کنترل دور موتورdc باpid رو دادن میتونین راهنماییم کنین. باتشکر از سایت خوبتون...
پاسخAdmin
درباره7 سال agoسلام
پروژه مورد نظر شما در قسمت پروژه های انجام شده سایت
در بخش پروژه های رایگان موجود هست. میتونید دانلود کنید
پاسخ