logo

...بارگذاری

بستن

 

 

 

 

پروژه درس کنترل خطی:

طراحی کنترل کننده در حوزه زمان

 

 

 

 

نویسنده گزارش : اوژن جعغرخانی

 

 

 

 

 

بررسی سیستم :

آنچه در صورت مسئله از ما خواسته شده بود طراحی یک کنترل کننده بود که بتواند پارامتر های مربوط به سیستم را مطابق خواسته های مسئله تغییر دهد بنابراین در ابتدای کار باید پارامتر های خود سیستم را بررسی کنیم و ببینیم که آیا این سیستم پارامتر های مطلوب را دارد یا خیر سپس در صورت عدم وجود پارامتر های مطلوب کنترل کننده ای متناسب با این پارامتر ها طراحی می کنیم .

بلوک دیاگرام سیستم داده شده مطابق شکل زیر می باشد :

 

اگر پاسخ ورودی پله به این سیستم را در حوزه زمان بدست بیاوریم مشاهده میکنیم که این سیستم دارای یک پاسخ پله با زمان نشستی تقریبا معادل 10 ثانیه دارد.

 

 

که پاسخ این سیستم overdamped شده است .

اطلاعات بیشتر این سیستم در جدول زیر قابل مشاهده است:

 

 

مطابق جدول پارامتر سیستم ما با پارامتر های مورد نیاز ما تفاوت دارد.

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

بنابراین باید روت لوکاس را طوری تغییر دهیم که بر روی قطب های مورد نیاز بیفتند.

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

1-      کنترلر Phase lead-lag

2-      کنترلر PID

 

محاسبه قطب ها دلخواه بر روی روت لوکاس

برای محاسبه قطب های مورد نیاز بر روی s-plane می توان از دو پارامتر داده شده در صورت سوال استفاده کرد برای این کار مقدار zeta را از روی اورشوت محاسبه می کنیم.

 
 
همچنین برای از settle time نیز برای محاسبه قطب ها استفاده کرد .
 
 
در نتیجه میتوان بخش حقیقی و موهومی قطب های مورد نیاز را بدست آورد .
 
S1 = -1.33 +3.479j
S2 = -1.33 -3.479j
 
محاسبات مربوط به قطب های مورد نیاز:
 
 

 

خروجی مورد مربوط به این بخش:

 

کنترلر Phase lead

اصول کار این نوع کنترلر به این صورت است که ابتدا یک جبرانساز به فرم مطابق شکل زیر به صورت سری با سیستم مورد بررسی در نطر می‌ گیریم.

میتوان این کنترل کننده را به چند روش مختلف طراحی کرد که در ادامه به هر کدام از این روش ها می پردازیم .

قبل از اعلام فرآیند طراحی ابتدا یک پارامتر مهم را بدست می آوریم که با آنرا نمایش می دهند برای محاسبه این پارامتر از شرط زاویه کمک میگیریم .

 

بنابراین

 

روش اول : حذف قطب s = -2 با یک صفر

در این روش ابتدا مکان صفر را بر روی قطب s = -2 قرار می دهیم تا اثر هم را خنثی کنند یعنی z=-2 سپس با استفاده از رابطه بدست آمده از بالا مکان قطب را نیز مشخص میکنیم.

پس از مشخص کردن قطب میتوان با شرط اندازه مقدار k را نیز محاسبه کرد.

Root locus حاصله به صورت زیر میشود.

روش دوم : روش ترسیمی

φ/2θ/2θ

در این روش مطابق شکل بالا ابتدا خطی موازی محور حقیقی رسم میکنیم سپس نیمساز زاویه را رسم میکنیم به کمک نیسماز بدست آمده با تلورانس خطوطی رسم میکنیم که محور حقیقی را در نقطه های z و p قطع کند؛ این نقاط همان صفر و قطب جبران ساز هستند .

در نهایت به کمک شرط اندازه مقدار k را نیز محاسبه می کنیم.

 

روش سوم :

در این روش به این صورت عمل میکنیم که ابتدا یک جبرانساز به صورت phase lag به سیستم اضافه میکنیم که قطب s=-1 و صفر s=-0.5 را خنثی کند تا سیستم ما شبیه یک سیستم مرتبه دوم شود و پارامتر های تعریف شده را روی آن پیاده سازی کنیم اگر چه میدانیم که پارامتر های داده شده صرفا یک سری مقادیر هستند که حد ماکسیمم را بررسی می کنند و کافیست پارامتر های سیستم جدید پایین تر از آن مقادیر باشد ولی در این سیستم ما با هر مقداری که کنترل کننده را طراحی میکنیم همان مقدار را نیز دریافت میکنیم بدون هیچ خطایی!

پس از اضافه کردن phase lag یک سیستم phase lead (به روش اول) نیز به آن اضافه میکنیم که پارامتر های مربوطه اعمال شوند.

پاسخ پله این سیستم دقیقا با مقادیر خواسته شده مطابقت دارد

 

به دلیل اینکه در سیستم اول قطب s=0 را حذف نکردیم این بود که در آینده برای تنظیم کردن Kv نیاز داریم که سیستمی با type حداقل 1 داشته باشیم پس از حذف این قطب خودداری میکنیم و برای اینکه قطب و صفر خیلی از هم دور نباشند قطب s=-1 و صفر s=-0.5 را حذف کردیم.

 

طراحی کنترلر Phase lag:

برای اینکه قسمت ب خواسته های مسئله را برآورده سازیم میتوانیم از phase lag استفاده کنیم ابتدا برای هر یک از کنترلر های طراحی شده در قسمت الف Kv را محاسبه کرده و در صورت عدم بر آورده سازی خواسته سوال یک کنترلر phase lag طراحی میکنیم .

برای طراحی phase lag می توان از فرآیند زیر استفاده کرد.

ضریب خطای سرعت بدون طراحی کنترلر

ضریب خطای سرعت پس از طراحی کنترلر

 

کنترلر اول:

برای طراحی کنترلر lag مطابق کد زیر عمل کردیم:

مقدار Kvold در خروجی کد بالا برابر است با :

بنابراین با داشتن این مقدار و Kvnew می توان کنترلر را طراحی کرد .

 

مطابق شکل های بالا تمام مقادیری که در کنترلر lead طراحی کرده بودیم کمی تغییر پیدا کرده(به دلیل افزودن کنترلر lag و انتقال روت لوکاس به راست)

در بخش بعدی با tune کردن توابع بالا میتوان کنترلر ها را تنظیم کرد.

 

 

 

 

 

 

 

کنترلر دوم:

برای این کنترلر نیز میتوان مطابق فرآیند بالا پیش رفت و کنترلر lag را طراحی کرد .

خروجی Kvold در کد بالا برابر می شود با :

 

در این حالت نیز به دلیل انتقال روت لوکاس به راست پارامتر ها تغییر می کنند .

 

 

 

 

 

کنترلر سوم:

در این بخش مطابق فرآیند های بالا عمل میکنیم و کنترلر ها را طراحی می کنیم .

 

که Kvold در خروجی کد بالا به صورت مقابل می باشد :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

همانطور که در قسمت های قبل هم مشاهده شد به دلیل انتقال روت لوکاس به سمت راست پارامتر ها تغییر کرده اند.

Tune کردن کنترلر ها:

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

فرآیند tune کردن سیستم ها به این صورت است که ابتدا سعی میکنیم جبرانساز lead را با پارامتر هایی بهتر از پارامتر های خواسته شده طراحی کنیم تا با انتقال روت لوکاس توسط کنترلر lag به سمت راست تاثیر کمتری بر روی این سیستم گذاشنه شود.

برای انجام این فرآیند متغیر های Mp و settle_time که در متلب تعریف شده اند را به طور دستی تغییر می دهیم تا سیستم tune شود.

Tune کردن سیستم اول:

در این سیستم همانطور که مشاهده می شود مقدار overshoot مناسب است ولی مقدار settle time زیاد شده است بنابراین می توان با کم کردن متغیر settle_time مقدار واقعی آنرا کم کرد.

 

 

 

 

 

 

 

 

 

 

 

 

 

با قرار دادن مقدار روبرو

 

خروجی پاسخ پله به صورت زیر ظاهر می شود .

 

 

 

 

 

 

 

 

 

 

 

در نتیجه مقدار settle time کاهش یافته و تابع تبدیل به صورت زیر می شود.

 

 

 

 

 

Tune کردن سیستم دوم:

همانطور که در شکل زیر پیدا است در پاسخ پله خروجی سیستم زیر مقدار اوورشوت مناسب است و تنها settle time زیاد شده است بنابراین می توان با کاهش متغیر settle_time این مقدار را کاهش داد .

 

 

 

 

 

 

 

 

 

 

 

 
 
 

با قرار دادن مقدار روبرو

پاسخ سیستم به مقدار مطلوب می رسد:

 

همانطور که در شکل پیدا است مقدار settle time

کاهش پیدا کرده است .

 

 

 

 

 

تابع تبدیل نهایی سیستم به صورت زیر می باشد:

 

 
 
 

 

 

 

 

Tune کردن سیستم سوم:

همانطور که در شکل زیر پیدا است هم مقدار settle time زیاد شده است و هم مقدار اوورشوت افزایش پیدا کرده است بنابراین برای کاهش این دو پا رامتر هم مقدار متغیر settle_time و هم متغیر Mp را کاهش می دهیم تا سیستم به حد مطلوب برسد .

 

 
 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

با وارد کردن متغیر های Mp و settle_time به صورت زیر سیستم tune می شود :

 

       
 
   
 
 

 

 

پاسخ خروجی سیستم نهایی به صورت زیر می باشد.

 

 

 

 

 

 

 

 

 

 

 

همانطور که در شکل بالا مشاهده می شود مقدار اوورشوت و زمان نشست کاهش پیدا کرده است .

تابع انتقال نهایی سیستم به صورت زیر می شود.

 

 
 
 

 

 

 

 

 

 

طراحی کنترلر PID :

برای طراحی کنترلر PID از ابزار PID Tuner سیمولینک استفاده می کنیم برای شروع ابتدا بلوک دیاگرام سیستم را به صورت زیر میبندیم :

 

 

 

 

 

 

سپس پس از بستن سیستم بالا به کمک Tuner تابع انتقال مورد نظر را مطابق خواسته های قسمت الف طراحی می کنیم.

در ادامه میتوان با تنظیم کردن Response Time و Transient Behavior مقدار بالازدگی و زمان نشست را تنظیم کرد.

 

 

 

 

 

 

 

پس از تنظیم پارامتر ها مشاهده میکنیم که پاسخ سیستم ما به صورت بالا شده است مطابق شکل زیر معیار ها و پارامتر های مطلوب ما نیز رعایت شده اند .

 

 

 

 

 

 

 

 

 

همانطور که در بالا مشاهده می شود مقدار settle time و overshoot در هر دو حالت tune شده و tune نشده قابل مشاهده است همچنین ضرایبی که در رابطه ی زیر استفاده می شوند نیز در جدول اول آورده شده اند.

 

 

که در این رابطه P ضریب نسبی I ضریب انتگرال گیر و D ضریب مشتق گیر است و N نیز کمیتی موسوم به filter coefficient است که از آن برای ساخت یک فیلتر مرتبه اول جهت پیاده سازی سیستم مشتق گیر آورده شده است .