کنترل دور موتورهای DC با روش کنترلی LQI در متلب
کنترل دور موتورهای DC با روش کنترلی LQI در متلب :پروژه متلب
پروژه متلب : برای کنترل دور موتور DC از روش LQI استفاده می گردد یک روش کنترلی بهینه می باشد.
از آنجائي كه در بخشهاي مختلف، براي مدلسازي وشبيهسازي، ما از SimUlink استفاده كردهايم سعي ميكنيم در اين فصل به طور خلاصه درباره ايجاد مدل در Sim U link برخي بلوكهاي آن كه در فصلهاي مختلف از آن استفاده شده است، توضيح ميدهيم.
پروژه متلب چهار بلوك اصلي كه در نمايش تمام سيستمهاي پيوسته خطي به كار ميروند عباتنداز : بلوك بهره، بلوك جمع ، بلوك مشتق ، بلوك انتگرالگير.
علاوه بر اين چهار بلوك اصلي ، بلوك تابع تبديل نيز اغلب در مدل سازي سيستمهاي فيزيكي و كنترل كننده استفاده ميشود . بنابراين هر كدام از اين بلوكها را به اختصار توضيح ميدهيم.
- بلوك بهره : خروجي اين بلوك ، حاصلضرب ورودي آن در يك مقدار ثابت است . توجه ميكنيم كه خروجي به طور پيوسته از ورودي تبعيت ميكند. يعني
اين بلوك در commonly used block از simulink library يافت ميشود .
- بلوك جمع : اين بلوك حداقل يك ورودي و دقيقاً يك خروجي دارد . اگر تعداد وروديها زياد باشد ، بهتر است از چند بلوك جمع متوالي استفاده شود . ( به منظور بهتر خواندن )
اين بلوك در commonly used block از simulink library يافت ميشود.
- بلوك مشتق : اين بلوك يك ورودي و يك خروجي دارد. اين بلوك در continuos از simulink library يافت ميشود .
- بلوك انتگرالگير : اين بلوك نيز، يك ورودي و يك خروجي دارد. اين بلوك در continuos از SimUlink library يافت ميشود .
- بلوكهاي تابع تبديل :
SimUlink دو بلوك براي پياده سازي تابع تبديل دارد .
- transfer Fcn : اين بلوك در continuos از Sim U link library يافت ميشود و داراي دو فيلد است : الف- Numerator شامل ضرايب صورت با توانهاي كاهشي s
ب- Denominator شامل ضرايب مخرج با توانهاي كاهشي s
- Zero – Pole : اين بلوك در continuos از SimUlink library يافت ميشود و داراي سه فيلد است .
الف – zero صفرهاي تابع تبديل
ب – pole قطبهاي تابع تبديل
ج – gain اندازه تابع تبديل
- پروژه متلب بلوك MATLAB Fcn : از اين بلوك در فصل ۳ ، استفاده شده است ، اين بلوك مانند بلوك Fcn يك بلوك غير خطي است . بلوك MATLAB Fcn سرعت كمتري نسبت به بلوك Fcn دارد ولي نسبت به Fcn اوليت دارد چون اين بلوك قادر به محاسبات ماتريسي است در صورتي كه بلوك Fcn اين قابليت را ندارد . اين بلوك در user – definded function از SimUlink library يافت ميشود .
- بلوك ثابت constant : اين بلوك كه در source library يافت ميشود براي ايجاد مقداري ثابت كه ميتواند برداري يا اسكالر باشد به كار ميرود .
- بلوك محدود كننده (saturation ) اين بلوك براي پياده سازي بلوك غير خطي اشباع به كار ميرود. اين بلوك داراي يك حد بالا(Upper limit) و يك حد پايين Lower limit ميباشد. هرگاه مقدار ورودي بين حدود باشد، مقدار خروجي برابر مقدار ورودي خواهد بود، اگر ورودي از Upper limit بيشتر شود، خروجي برابر حد بالا و اگر ورودي از Lower limit كمتر شود، خروجي برابر حد پايين ميشود. اين بلوك در Discontinuties از simUlink library يافت ميشود.
- Manual switch : هرگاه ميخواهيم ورودي بين دو مقدار Switch كند از اين بلوك استفاده ميكنيم. با دوبار كليك كردن روي اين بلوك، ورودي بين دو مقدار تعين شده، Switch ميكند. اين بلوك در Commonly Used block يافت ميشود.
- بلوك زمين (Ground) : اين بلوك به منظور جلوگيري از ايجاد پيغام خطا توسط سيمولينك به وروديها استفاده شده متصل ميگردد. اين بلوك در Commonly Used block يافت ميشود.
- بلوك To workspace و بلوكC lock :
پروژه متلب اين دو بلوك در sim U link بسيار كاربرد دارند. بلوك To workspace، سيگنال ورودي خود را در ماتريس MATLAB ذخيره ميكند. اين سيگنال بعد از توقف شبيهسازي در فضاي كاري MATLAB قابل دستيابي است. اين بلوك در Sink از sim U link library يافت ميشود.
بلوك Clock نيز، سيگنالي متشكل از زمان فعلي شبيهسازي توليد ميكند. اين بلوك در Source يافت ميشود.
پروژه متلب در واقع براي اينكه بعد از پايان شبيهسازي، سيگنالي را در Work space مشاهده كنيم از اين دو بلوك استفاده ميكنيم. سيگنالي را كه ميخواهيم مشاهده كنيم به يك بلوك To workspace وصل ميكنيم و بلوك Clock را به يك بلوك To workspace ديگر وصل ميكنيم. نكته بسيار مهم كه بايد به آن توجه كرد اين است كه در هر دو بلوك To workspace، بايد Structure را به Array تغيير دهيم. اكنون با استفاده از دستور Plot كه در Work space MATLAB تايپ ميكنيم، ميتوانيم بعد از پايان شبيهسازي نمودار سيگنال مربوطه را بر حسب زمان مشاهده كنيم.
- بلوك OUT : براي ايجاد دريچه خروجي براي زير سيستم به كار ميرود. اين بلوك در Commonly Used block يافت ميشود.
- بلوك IN : براي ايجاد ورودي براي زير سيستم به كار ميرود. اين بلوك در Commonly Used block يافت ميشود.
- بلوك Scope : از آنجائيكه بلوك Scope در Simulation مكرراً به كار ميرود اين بلوك را به طور كامل توضيح ميدهيم.
پروژه متلب بلوك Scope تقليدي از اسيلوسكوپ ميباشد. اين بلوك بخشي از سيگنال ورودي كه ميتواند برداري يا اسكالر باشد را نمايش ميدهد. گستره عمودي (محور y) و گستره افقي (زمان روي محور x) را ميتوان با هر مقدار مورد نظر تنظيم نمود. محور افقي مقدار واقعي سيگنال ورودي را نمايش ميدهد. درجهبندي محور افقي همواره از صفر شروع ميشود و به مقدار مشخص شده با عنوان Time range خاتمه مييابد. بنابراين، مثلاً اگر گستره افقي ۱۰ و زمان فعلي ۱۰۰ باشد، داده ورودي براي دوره ۹۰ تا ۱۰۰ نمايش داده ميشود؛ اگر چه عنوان محور افقي هنوز صفر تا ۱۰ ميباشد. اهداف اوليه بلوك Scope براي استفاده حين شبيهسازي ميباشد، اما بلوك قابليت ايجاد كپي پرينت شدهاي از تصوير را نيز داراست. به علاوه بلوك Scope ميتواند سيگنالي كه ترسيم ميكند را براي تحليل اضافي و ترميم، مثلاً با استفاده از دستور Plot يا دستور Simplot ، به كاري MATLAB ارسال نمايد.
بلوك Scope را ميتوانيد بدون اتصال خط سيگنال به ورودي به آن و با پيكربندي آن به صورت بلوك Scope شناور در مدل قرار دهيد. بلوك Scope شناور از هر خط سيگنالي كه در حين اجراي شبيهسازي كليك ميكنيد، به عنوان ورودي استفاده خواهد كرد.
دكمههاي بلوك Scope عبارتند از:
- دكمه Zoom : دكمه Zoom امكان تمركز روي ناحيهاي از نمايشگر را فراهم ميكند.
- دكمه Zoom x : امكان تمركز روي بخشي از نمايشگر را بدون تغيير مقياس عمودي، فراهم ميكند.
- دكمه Zoom y : دكمه Zoom y امكان تمركز روي بخشي از نمايشگر را بدون تغيير مقياس افقي، فراهم ميكند.
- Auto scale : مقياس عمودي را به نحوي تغيير ميدهد كه حد پايين آن برابر حداقل مقدار سيگنالي كه هماكنون نمايش داده ميشود و حد بالايي آن برابر حداكثر مقدار سيگنالي كه اكنون نمايش داده ميشود، باشد. براي مقياسبندي مجدد نمايشگر، حين شبيهسازي نيز ميتوانيد Auto scale را كليك كنيد.
- Save axies : مقياس فعلي را مقياس پيشفرض بلوك Scope قرار ميدهد. اگر مقياس را تغيير داده و سپس شبيهسازي را بدون اينكه ابتدا Save axis را كليك كنيد، مجدداً اجرا نماييد؛ با شروع شبيهسازي مقياس به مقدار پيشفرض بر خواهد گشت.
- دكمه Open Properties window كادر مكالمه ويژگيهاي بلوك Scope را باز ميكند. اين كادر مكالمه امكان تنظيم مقياس پيش فرض بلوك Scope و ارسال داده به فضاي كاري MATLAB را فراهم ميكند.
كادر مكالمه ويژگيهاي Scope داراي دو صفحه است:
- صفحه General كه داراي فيلدهايي براي تنظيم تعداد محورها و گستره زماني و كنترل فاصلهگذاري بين نقاط ترسيم ميباشد.
- صفحه Data history داراي فيلدهايي براي كنترل اندازه بافر داده Scope و ارسال داده نمايش يافته به فضاي كاري MATLAB ميباشد.
پروژه متلب صفحه General از دو بخش تشكيل شده است. بخش محورها كه تعداد و پيكربندي محورها را كنترل ميكند. فيلد Number of axes تعداد محورهاي نشان داده شده در پنجره Scope و تعداد وروديهاي بلوك Scope را كنترل ميكند. براي هر محور، يك ورودي را خواهيم داشت، انتخاب Floating Scope بلوك Scope را به بلوك Scope شناور تبديل ميكند، كه ورودي را ندارد و دادههاي خط سيگنالي را كه حين اجراي شبيهسازي انتخاب شده است، نمايش ميدهد. Time range مقياس محور زمان را كنترل ميكند. اگر Time range روي Auto تنظيم گردد، گستره مقياس از صفر تا زمان نهايي شبيهسازي خواهد بود. اگر Time range روي عدد بزرگتر از صفر تنظيم گردد، گستره مقياس از صفر تا مقدار تعيين شده خواهد بود. Tick lable منويي كركرهاي است كه ميتواند all، براي قرار دادن درجه بندي زماني روي هر محور زماني، none، براي نداشتن درجهبندي زماني يا Bottone axies only براي درجهبندي فقط روي محور x انتخاب شود.
بخش نمونهبرداري صفحه General شامل فهرستي كركرهاي است كه در برگيرنده دو گزينه Decimation و Sample time ميباشد. اگر Decimation انتخاب شود، در فيلد داده متناظر، ضريب تقسيم كه بايد عددي صحيح باشد، قرار داده ميشود. اگر Decimation انتخاب گردد و برابر را تنظيم شود تمام نقاط ورودي بلوك رسم ميشوند. اگر Decimation برابر ۲ تنظيم گردد، نقاط يك درميان رسم ميشوند و الي آخر. اگر Sample time انتخاب شود، در فيلد داده بايستي فاصلهگذاري مطلق بين نقاط ترسيم وارد شود. بلوك Scope نقاط ورودي را در يك بافر ذخيره ميكند. اندازه اين بافر را ميتوان با استفاده از Data history تنظيم نمود. Limit Points to Last را انتخاب كنيد و مقداري را براي تعيين اندازه بافر وارد نماييد مثلاً اگر Limit rows to Last برابر ۱۰۰۰ تنظيم شود و شبيهسازي كلاً ۲۰۰۰ نقطه توليد نمايد، پس از پايان شبيهسازي تنها ۱۰۰۰ نقطه پاياني در دسترس ميباشد.
تنظيم محور y :
پروژه متلب براي تنظيم محور y ، نمايشگر Scope را كليك راست كنيد. در كادر مكالمه ظاهر شده، Axies Properties را انتخاب كنيد. كادر مكالمه ديگري ظاهر ميشود، اين كادر مكالمه داراي فيلدهايي براي ورود حدود محورها و مشخص كردن عنوان محور ميباشد.
xy Graph
بلوك xy Graph نموداري همانند نمودار ايجاد شده توسط دستور Plot در MATLAB ايجاد ميكند. Xy Graph دو ورودي اسكالر ميپذيرد. محور افقي و عمودي را بايستي با استفاده از كادر مكالمه بلوك پيكربندي نماييد.
براي ايجاد يك مدل در simUlink مراحل زير را طي ميكنيم:
سيمولينك يكي از متعلقات MATLAB است و بايستي از درون MATLAB با كليك آيكون سيمولينك در نوار ابزار MATLAB، يا با وارد كردن فرمان simUlink در اعلان MATLAB فراخواني شود. با اين كار مرورگر كتابخانه سيمولينك باز خواهد شد. كليك آيكون New window، يك پنجره مدل خالي باز ميكند. در اين پنجره مدل خالي كه Untitled نامگذاري شده استف مدل سيمولينك را ايجاد خواهيم كرد. آيكون كتابخانه سيمولينك را دوبار كليك ميكنيم تا كتابخانه سيمولينك باز شود. توجه ميكنيم كه قاب سمت راست شامل ليستي از كتابخانهها ميباشد.
- بعد از بازكردن پنجره مدل، از كتابخانه simUlink (كتابخانههاي داخل simUlink مثل Source ، Sinks ؟، Math ، …) بلوكهاي خود را انتخاب ميكنيم.
پروژه متلب بعضي از بلوكها (در كار ما) لازم است از كتابخانه هاي ديگر به مدل كپي شوند. مثل بلوك منبع ولتاژ، بلوك اندازهگيري ولتاژ، پالس ژنراتور يكسوساز كه از كتابخانه Simpower و يا بلوك NCD كه از كتابخانه simUlink Response Optimization به مدل كپي ميشوند.
- بلوكهاي انتخابي را به داخل پنجره مدل ميكشيم.
- بين بلوكها سيگنال قرار ميدهيم.
- اگر از وسط يك سيگنال (خط) بخواهيم يك خط ديگر خارج كنيم Control را گرفته و با موس خط را ميكشيم.
- براي برگرداندن بلوك، بلوك را انتخاب ميكنيم وسپس Format: Flip Block را انتخاب ميكنيم.
- براي برگرداندن بلوك، بلوك را انتخاب كرده سپس Format: Flip Block را انتخاب ميكنيم.
- براي سايهزدن بلوك، بلوك را انتخاب كرده، سپس Format: Show Drop Shadow را انتخاب ميكنيم.
- براي تغيير اندازه بلوك، بلوك را انتخاب كرده، سپس يكي از دستگيرهها را ميكشيم.
- براي ويرايش نام بلوك، نام بلوك را كليك ميكنيم.
- براي پنهان كردن نام بلوك، نام بلوك را انتخاب كرده سپس Format: Hide Name را انتخاب ميكنيم.
- براي برگرداندن نام بلوك، نام بلوك را انتخاب كرده سپس Format: Hide Name را انتخاب ميكنيم
- براي حذف شيء، شيء را انتخاب كرده و سپس Edit: Clear را انتخاب ميكنيم.
- براي عنواندهي خط سيگنال كنار خط دوبار كليك ميكنيم و سپس متن را تايپ ميكنيم.
- براي اضافه كردن عبارات توضيحي به مدل جايي را كه ميخواهيم عبارات توضيحي را وارد نماييم، دوبار كليك ميكنيم، سپس متن را تايپ ميكنيم.
- براي اجرا Simulation ، روي Scope دوبار كليك ميكنيم Simulation-Start را انتخاب ميكنيم.
- براي Save كردن مدل، از File>Save as استفاده ميكنيم.
براي تنظيم زمان شبيهسازي از Simulation> Configuration استفاده ميكنيم. در پايان به ايجاد زير سيستم در simUlink اشاره ميكنيم:
دو روش براي ايجاد زيرسيستم وجود دارد:
- استفاده از پوشينهدار كردن بخشي از مدل موجود:
قسمتي از مدل را كه ميخواهيم زير سيستم باشد با كادر محصور ميكنيم و از گزينه Edit: Create Subsystem استفاده ميكنيم. بلوك زير سيستم ايجاد ميشود. براي باز كردن زير سيستم روي آن دوبار كليك ميكنيم.
- استفاده از بلوك زير سيستم از كتابخانه بلوك سيگنالها و سيستمها:
پنجره مدل را باز ميكنيم، از كتابخانه بلوكي سيگنالها و سيستمها، بلوك زيرسيستم را انتخاب كرده و به پنجره مدل ميكشيم. روي بلوك زيرسيستم كليك ميكنيم، پنجره ديگري باز ميشود و در اين پنجره زير سيستم را مدل ميكنيم سپس پنجره را ميبنديم. (بدون save كردن)
بلوكهاي نقابدار :
نقابزني مفهوم خلاصهسازي را توسعه ميبخشد. اگر يك زير سيستم تبديل به زير سيستم نقابدار شود، لازم نيست براي تنظيم gainها و مقدار اوليه انتگرال زير سيستم، آن را باز كرده و تكتك مواد را تنظيم كنيم بلكه با دو بار كليك كردن روي بلوك نقابدار، كادر مكالمه آن باز ميشود و تمام پارامترها را همان جا تنظيم ميكنيم.
مراحل ايجاد بلوك نقابدار:
- يك زيرسيستم (از طريق روش درم كه در بالا توضيح داده شد) ايجاد ميكنيم.
- بلوك زير سيستم را انتخاب كرده و Edit: mask subsystem را انتخاب ميكنيم.
مقدمهاي بر Simulink Response Optimization :
Simulink Response Optimization يك (Graphical User Interface) GUI را فراهم ميكند كه در طراحي سيستمهاي كنترل و سيستمهاي فيزيكي ما را ياري ميكند.
براي استفاده از Simulink Response Optimization ما فقط نياز داريم كه يك بلوك خاص، به نام بلوك Signal Constraint را در دياگرام simUlink قرار دهيم.
هر بلوك را به سيگنالي از مدل كه قرار است روي آن قيود و مرزهايي (نظير Over shoot، Setting time، Rise time، …) قرار دهيم وصل ميكنيم. Simulink Response Optimization اين قيود را به قيود يك مسئله بهينهسازي تبديل ميكند و سپس مسئله را حل ميكند. البته اين حل بوسيله روتينهاي بهينهسازي كه از Optimization Toollbox و Genetic Algorithm and Direct Search Toolbox گرفته ميشود، صورت ميگيرد.
مسئله قيود بهينهسازي كه به وسيله Simulink Response Optimization، به طور تكراري فرمولبندي شده است ، براي شبيهسازي سيستم simUlink فراخوانده ميشود، سپس نتايج با قيود هدف مقايسه ميشود و از روشهاي شيب براي تنظيم پارامترها استفاده ميشود.
لازم به ذكر است كه ما ميتوانيم هر تعداد متغير simUlink، شامل اسكالرها، بردارها، ماتريسها را با وارد كردن نام متغير در dialog box مناسب، تنظيم كنيم. علاوه بر اين ما ميتوانيم قيود نامعلوم را روي متغيرهاي مدل به منظور رسيدن به بهترين طراحي جابهجا كنيم.
در اين فصل سعي ميشود، ابتدا توضيحي كلي درباره كار با Simulink Response Optimization داده شود، و سپس جزئيات كار، به تفصيل در صفحات بعد توضيح داده ميشود.
به طور كلي براي استفاده از Simulink Response Optimization بايد مراحل زير را طي كنيم:
- ابتدا يك مدل (غير خطي) از سيستم و كنترل كننده با استفاده از MATLAB ميسازيم. سيگنالهاي ورودي (به طور مثال Steps ، ramps ، Observed data) را اضافه ميكنيم.
- يك بلوك Signal Constraint به سيگنالهايي كه ميخواهيم محدود شود (روي آنها ميخواهيم قيود قرار دهيم) وصل ميكنيم. اين بلوك در Simulink Response Optimization. از simUlink librar y browser يافت ميشود.
- اگر در حال حاضر پارامترهاي مدل در space MATLAB Work موجود نميباشند، اين پارامترها را در Work space وارد ميكنيم.
- با دوبار كليك كردن روي هر بلوك Signal Constraint در سيستم، پنجره Signal Constraint براي خروجي مورد نظر باز ميشود.
- روش مورد نظر خود (براي محدود كردن سيگنال پاسخ) را از بين Enforce single bounds و يا Track refrence signal در انتهاي پنجره Signal Constraint انتخاب ميكنيم. در مورد اين دو روش به تفضيل در بخشهاي بعد توضيح خواهيم داد.
- در پنجره Signal Constraint ما ميتوانيم قيود و يا مرزهاي مورد نظر (نظير Over shoot ، Setting time و يا Rise time …) را با كليك كردن روي آن مرز وكشيدن آن و يا با راست كليك كردن روي عبارت مرزي و انتخاب Edit از Menu اصلاح كنيم.
سيگنال مرجع را با انتخاب Goals>Desired Response در پنجره Signal Constraint و وارد كردن بردارهاي داده براي سيگنال مرجع، تعريف ميكنيم.
با انتخاب Optimization> Uncertain Parameters از پنجره Signal Constraint ما ميتوانيم پارامترهاي نامعلوم (پارامترهايي كه مقدار دقيق آنها در مدل تعيين نشده و فقط حدود آن را ميدانيم) را به پروژه بهينهسازي خود اضافه كنيم. براي اين كار بايد روي گزينه Add كليك كنيم تا پارامترهاي مورد نظر به ليست اضافه شوند.
- پروژه را Save ميكنيم براي اين كار از File> Save استفاده ميكنيم. در ضمن با استفاده از File>load ميتوانيم پروژه ذخيره شده را load كنيم. براي save كردن و reload كردن اتوماتيك مدل simUlink ، در انتهاي Check box, Save dialog box را انتخاب ميكنيم.
- از منوي Start, Optimization را انتخاب ميكنيم تا سيگنال پاسخ با تنظيم پارامترهايي كه (به عنوان پارامترهاي تنظيم شده) واردكردهايم، بهينه گردد.
Optimization Progress window مقادير جديد اين پارامترها را نشان ميدهد.
حالا كه با مراحل كلي بهينهسازي (Optimization) يك سيگنال آشنا شديم، ميتوانيم هر يك از اين مراحل را به تفضيل توضيح دهيم.
همانطور كه گفتيم بعد از اين كه پارامترهاي مدل را در Work space MATLAB وارد كرديم به سراغ پنجره Signal Constraint ميرويم و با دو بار كليك كردن روي آن، اين پنجره را باز ميكنيم. همانطور كه درشكل زير ميبينيم اين پنجره از منوهاي مختلفي تشكيل شده است كه سعي در توضيح اين منوها داريم.
هنگامي كه پاسخ بله را براي سيستم خود بهينه ميكنيم، يك روش مناسب براي قرار دادن قيود روي پاسخ بله، اين است كه مشخصات پاسخ بله مطلوب از قبيل rise time ، Setting time و Over shoot را تعريف كنيم. آنگاه Simulink Response Optimization پارامترهايي را كه ما به عنوان پارامترهاي تنظيم شده و نامعلوم وارد كردهايم را طوري تعيين ميكند، كه پاسخ بله حاصل داراي همين مقادير براي rise time، setting time، over shoot باشد. براي تعريف مشخصات پاسخ بله، در پنجره Signal Constraint Goals>Desired Response را انتخاب ميكنيم و يا در Figure window (پنجره شكل) كليك را ست كرده و سپس Desired Response را انتخاب ميكنيم. با اين كار پنجره Desired Response نمايش داده ميشود در بالاي اين پنجره دو گزينه وجود دارد كه ما گزينه Specify step response characteries را انتخاب ميكنيم تا مشخصات پاسخ بله به صورت زير نمايش داده شود.
خروجی متلب :
دیدگاه ها