رفتن به مطلب

کنترل مدرن


nastaran1r

ارسال های توصیه شده

کنترل مدرن شاخه‌ای از رشته مهندسی کنترل می‌باشد که به مدلسازی و کنترل سیستمها با استفاده از فضای حالت می‌پردازه. در مدل فضای حالت معادلات دیفرانسیل مرتبه n سیستم به n معادله مرتبه اول تبدیل می‌شود که به هر یک از متغیرهای به کار رفته در این معادلات مرتبه اول متغیر حالت گفته می‌شود. بنابراین یک سیستم مرتبه n دارای مدل فضای حالت با n متغیر حالت است.

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

لینک به دیدگاه

سلام

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

 

به هر حال من از همه کنترلی ها (و برقیای گل) که مدرن پاس کردن دعوت میکنم بیان تو این بحث شرکت کنن(بچه های قدرت تو ارشد مدرن میخونن اونا هم بیان!!):a030:

 

خوب...میخوایم جایابی قطب انجام بدیم...اصلا فسلفه جایابی قطب چیه؟؟؟ ما فرض میکنیم که فضای حالت از سیستمی در دسترس باشه. نشون داده میشه که اگه بشه یه از تمامی حالت ها فیدبک گرفت میشه قطب های سیستم رو هر جایی که بذاریم. به این میگن جایابی قطب...البته این امر یه شرط لازم داره....کنترل پذیری

 

کنترل پذیری کلا یعنی اینکه تمامی حالت های سیستم از ورودی تاثیر بگیرن.یعنی حالتی نباشه که از ورودی (سیگنال کنترلی منظورم هستا نه ورودی مرجع) تاثیر نگیره

نشون داده میشه که اگه سیستم کنترل پذیر باشه حتی اگه ناپایدار هم باشه میشه با فیدبک حالت پایدارش کر چون.....حالت ناپایدار هم از سیگنال کنترلی تاثیر میگیره....

جالبه که اینو بدونید که فیدبک حالت بر روی کنترل پذیری یه سیستم بی تاثیر هست...یعنی اگه یه سیستم کنترل پذیر بود بازم کنترل پذیر میمونه و اگه نبود با فیدبک حالت کنترل پذیر نمیشه....

اما میتونه بر روی رویت پذیری اثر بذاره...اگر شما قطب مطلوبتون بر روی صفر سیستم جایابی بشه حذف صفر و قطب (pole-zero cancellation) رخ میده و این یعنی رویت ناپذیری (البته هر ساده سازی صفر و قطبی رویت پذیری رو مختل نمیکنه و این امر خودش جای بحث داره....)

 

یه بابایی بود (نمیدونم جدیدا چرا این شکلی شدم اصن اسم یادم نمیمونه!!!!ولی اسمش شبیه این روسیه ای ها بود!) یه جمله طلایی در مورد فیدبک حالت داره... میگه که: فیدبک حالت کاملترین کنترل کننده معرفی شده در سیستم های خطی است و اگر با فیدبک حالت نتوان به هدف خاصی رسید با هیچ کنترل کننده دیگه ای هم نمیتوان به آن رسید...

 

این جمله هم حاصل چند سال تجربه خودم در کنترل هست:ws3:: تمامی تمامی کنترل کننده های مدرن (کنترل کننده هایی به جز اون کنترل کننده هایی که تو کنترل خطی خوندیم) مثل کنترل کننده های بهینه و یا پیشبین تماما الگوریتم جایاب قطب دارند و فقط محل قطب های مطلوب اون ها با هم متفاوت هست.... (در واقع هدف خاصی مثل پیشبینی رو با جایاب قطب انجام میدن) فقط نمیدونم چرا اسم من به اندازه اون یارو معروف نیس....حق منو خوردن:ws3:

 

 

خوب این برا بخش اول که بدونیم فیدبک حالت چیه؟؟؟ تو قسمت بعد جواب سوال بالا رو میذارم....

لینک به دیدگاه

فرض کنید که شما یه تابع تبدیل مینیمال در اختیار دارید. یعنی تابع تبدیلی که در اون هیچ‌ صفر یا قطبی ساده نشه. اگه شما از این تابع تبدیل یه تحقق بنویسید به طور قطع هم کنترل‌پذیر هست و هم رویت‌پذیر. فضای حالت زیر رو در نظر بگیرید

 

5b2e180bo6fogf6e2a0.png

میدونیم که مقادیر ویژه ماتریس A در فضای حالت قطب سیستم رو نشون میدن.

قانون فیدبک حالت به صورت زیر است

6jgaktxdthogfoe8bc8z.png

که در رابطه فوق r ورودی مرجع هست و K هم بردار بهره (البته بردار برای سیستم های تک ورودی تک خروجی هست و برای سیستم چند متغیره میشه یه ماتریس). اگه سیستم فقط به حالت رگولاتوری باشه مقدار r رو برابر با صفر قرار میدیم چون نمیخوایم پروفایل خاصی (مثلا تابع پله واحد) رو تعقیب کنه اما اگه حالت ردیابی باشه بایستی r وجود داشته باشه و برابر با پروفایل باشه.خوب اگه سیگنال کنترلی رو در معادله حالت جایگذاری کنیم داریم:

 

67br00facgtyvbw101w.png

خوب حالا ماتریس حالت جدید برای این سیستم میشه A-bK پس با تنظیم K میتونیم مقادیر ویژه تا قطب های سیستم رو هر جا که دلمون میخواد بذاریم. حالا یه مثال...

مثال: سیستم ناپایدار زیر را در نظر بگیرید. جایابی قطب رو به صورتی انجام دهید که مکان قطب های حلقه بسته در 4- و 3- باشد.

 

n8r8xynhfpwkjn5ya9d2.png

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

vnzcvpxbfet7qn6p29ev.png

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

linbsstwotsrm80l6kk.png

پس ماتریس حالت سیستم حلقه بسته به صورت زیر هست

lboxh77q95ocll5tjx.png

خوب حالا طبق خواسته سوال بایستی بهره ها رو طوری انتخاب کنیم که قطب ها بره روی 3- و 4- بذاریم. پس معادله مشخصه مطلوب میشه:

mr71h7mzyp3da7qohkej.png

خوب معادله مشخصه ماتریس حلقه بسته هم میشه مقادیر ویژه اون یعنی:

nltyvp0ipu7hms6pfzc.png

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

219emc2g2f9epnn44kn.png

که میبینیم به راحتی ماتریس فیدبک به دست اومد.

تابع تبدیل سیستم حلقه بسته میشه:

j6j91ixwhe6cm1fcxlp.png

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

نکته ۱: اگه ما یکی از قطب های مطلوب رو روی 2- قرار میدادیم اونوقت صفر با قطب جدید ساده میشد و مرتبه سیستم یه درجه کاهش پیدا میکرد که در این حالت مفهوم رویت ناپذیری رو داشت.

نکته ۲: شما میتونید هر تحققی از تابع تبدیلتون بنویسید و مسلما بردار بهره تغییر میکنه به ازای هر تحقق اما چیزی که واضحه اینه که اگه شما معادله مشخصه سیستم حلقه بسته رو باز بنویسید باید به قطب های مطلوبی که سوال ازتون خواسته برسید.

نکته ۳: در نرم افزار Matlab با دستور place میتونید بهره های جایابی قطب رو پیدا کنید.

 

خوب امیدوارم که این پست تونسته باشه به شما کمک کنه....

لینک به دیدگاه

یک مثال کوچیک رو ضمیمه کردم در مورد مباحث قبلی میشه .

 

سوالات بعدی که قراره جواب داده بشه به این ترتیبه ::a030:

 

مبحث ردیابی مقام وحذف اغتشاش چی هست چطوری انجام میشه ؟

 

مبحث تخمین حالت ؟

تخمین گر حالت close loop & open loop

مثال.pdf

لینک به دیدگاه

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

چون عموما کنترل مقاوم با نا معینی ها کار داره و نا معینی ها به صورت جمعی و ضربی در توابع تبدیل مدل میشن و من ندیدم که نامعینی به صورت فضای حالت باشه که در مباحث کنترل مدرن هم دیده بشه...

اما اگه فقط ردیابی و حذف اغتشاش منظورتون هست و نه قسمت مقاومش من توضیحاتم رو میدم...اگه منظورتون همین بود بفرمایید تا بیشتر توضیح بدم...

در مورد ردیابی ورودی مرجع (حالت غیر رگولاتوری) بایستی بگم که این کا تا جایی که من میدونم به دو شیوه انجام میشه.

 

۱-روش اول ضرب معکوس بهره دیسی سیستم حلقه بسته به عنوان یه پیشفیلتر در پشت سیستم حلقه بسته هست (البته این پیشفیلتر فرکانسی نیست و شما میتونید ورودی رو با هر فرکانس دلخواهی دخیل کنید تا سیستم ردیابی کنه). خوب مثل این میمونه شما سیستمتون خطای حالت ماندگار داشته باشه بعد بیاید با یه ضریب اونو اصلاح کنید.مثلا اگه سیستم بره حالت ماندگارش رو نیم وایسته به ازای ورودی پله شما یه عدد ۲ تو سیستم حلقه بسته از پشت ضرب میکنید که این مورد حل بشه...اما این سیستم نسبت به اغتشاش نمیتونه "رد پاسخ" نشون بده چون ردیابی رو شما به صورت پیشفیلتر و یا بهتر بگم "حلقه باز" جبران کردید. البته بایستی بگم که باز هم روش کنترلی ما در این سیستم مهمون روش فیدبک حالت یا جایابی قطب هست.پس روش اول رفع حالت اغتشاش نداره

۲- روش دوم استفاده از کنترل انتگرال هست و به این صورت هست که شما اول سیستم جایاب قطب رو میبندید و یک حلقه دوم کنترلی با کنترل کننده انتگرال گیر از بیرون میبندید. این کنترل کننده انتگرال گیر که به صورت حلقه باز به سیستم حلقه بسته جایاب قطب ما اضافه شده میدونیم که در صورت پایداری تضمین رفع خطای حالت ماندگار رو به ما میده. و چون به صورت حلقه بسته هم هست (به حلقه کنترلی خارجی توجه کنید) تضمین رفع اغتشاش پله ای از هر جای سیستم حلقه بسته رو به ما میده... پس روش دوم رفع حالت اغتشاش داره...

 

تخمین گر حالت هم مبحث جدیدی نیست و کلا همون جایاب قطب هست(این دو مساله اصن دوگان هم هستن). در این حالت سیستم بایستی رویت پذیر باشه...حالا میشه هم رویتگر مرتبه کامل رو بحث کرد هم ناقص رو که من اینجا فقط کامل رو توضیح میدم .

این سوال رو اولین بار لیونبرگر مطرح کرد‌(البته بازم فکر کنم چون مطمئن نیستم:ws52: حافظم دو بیتی شده کلن!!!) که آقا شما که میخوای فیدبک حالت بزنی اصن حالت ها رو داری یا نه؟؟؟؟ ببینید مساله این نیست که آیا ما فضای حالت سیستم رو داریم یا نه؟؟؟؟ چون معلومه که شما هر تابع تبدیلی داشته باشی میتونی ماتریس های فضای حالتش رو بگی...این که اصن فکر کردن نداره...منظور ما این هست که آیا X رو داریم یا نه؟؟؟؟ (به معادلات پست قبلیم مراجعه کنید)

خوب همه گفتن نه...چرا چون معلوم نبود سیستم از چه شرایط اولیه ای شروع به حرکت کرده و الان کجاس؟؟....تازه به صرفه نبود برای یه سیستم که حتی حالت هاشم قابل اندازه گیری بود سنسور بذارن...چون اگه سیستم مرتبه اش خدایی نکرده ۲۰ بود(داریم از این سیستم ها!!! مثلا یه نوع هواپیمای جنگی فک کنم مرتبش ۱۶ بود....عدد ماخ و از این جور چرت و پرتا داشت!!! بچه های هوافضایی اینجا نیستن خدا رو شکر:whistle:...) بایستی ۲۰ تا سنسور بذاریم که خودشون ممکنه گرون باشن (همه سنسور ها که یه قیمت نیستن) تغذیه یا جریان خاصی بخوان، نویز سفید یا رنگی بگیرن و هزار تا مشکل دیگه.. اما چیزی که همه قبول داشتن این بود که اون حالت ها الان هر جا که باشن (مقدارشون رو بر حسب زمان عرض میکنم) از همون معادلات دیفرانسیل سیستم تبعیت میکنن و همون ماتریس های حالت هستن که همه کاره هستن.

 

اومدن یه کم معادلات رو پس و پیش کردن (تو مراجع کامل میتونید پیدا کنید این چند روز اینقدر سرم شلوغ بود نتونستم تایپ کنم اما معادلات رو به زودی میذارم) دیدن ای بابا!!! مساله شده شبیه به مساله جایابی قطب... شما یه سیستم پایداری رو سیستم اصلی خودتون پیاده میکنیدو حالت سیستم تخمینی بعد یه مدت میشه حالت های سیستم اصلی!!!!!!! حالا شما که دوست داری فیدبک حالت بزنی بیا از حالت های این سیستم استفاده کن.......

یعنی اینکه شما ماتریس A و C رو استفاده میکنی و معادله سیستمی A-LC رو تشکیل میدی که شبیه به معادله A-bK هست. به ماتریس L ماتریس بهره رویت گر میگن...حالا چن تا نکته...

 

نکته ۱: تو مساله رویتگر که گفتیم دوگان مساله جایاب قطبه معمولا قطب های مطلوب حلقه بسته رو نمیدن که شما بتونی راحت جایابی کنی...خوب پس باید چی کار کنیم؟؟؟اول اینکه باید بدونیم این قطب ها چی رو میگن؟؟؟؟؟ این قطب ها سرعت دمپ شدن خطای رویت گر رو میدن پس هر چی سریع تر باشن بهتره....خودمون انتخابشون میکنیم و معمولا از سریعترین قطب سیستم اصلی ۵ تا ۱۰ برابر سریعتر انتخابشون میکنیم...مثلا اگه سیستمی سریعترین قطبش رو ۲- هست میایم کند ترین قطب رویتگر رو حداقل رو ۱۰- در نظر میگیریم

 

نتیجه ۱: قطب رویتگر بایستی پایدار باشه تا خطای تخمین قطعا دمپ بشه

نتیجه ۲: اگه رویتگرمون مرتبه کامل هست بایستی به اندازه قطب سیستم قطب رویتگر انتخاب کنیم.

 

نکته ۲: شما ممکنه که هر جا دوس داری بتونی قطباتو بذاری اما ممکنه که یه انتخاب شما باعث بشه سیستم خطاش دیر دمپ بشه و اینکه نه اصن زود دمپ بشه اما محاسباتش زیاد باشه (از نظر کامپیوتری میگم) به خاطر همین کالمن اومد تو اون مقاله معروفش رویتگر بهینه رو معرفی کرد...بله...همون مقاله طلایی فیلتر کالمن!!!

 

نکته ۳: معمولا رویتگر ها قطعه یا ماژول خارجی ندارن یعنی من ندیدم که بگن این قطعه رویتگر هس!!! اینا معمولا توسط کامپیوتر محاسبه میشن و برای همین هیچ‌گاه مشکل اشباع عملکرد رو ندارن..... اینم یه برتری دیگه نسبت به فیدبک حالت چون ممکنه اونجا عملگر هامون برن اشباع!

 

نکته ۴: باز هم دستور place در نرم افزار Matlab میتونه جایابی قطب رو انجام بده فقط باید ماتریس A و C رو ترنسپوز کنی و تو این دستور استفاده کنی

 

نکته ۵: بهتره قطب های رویتگر رو تکراری انتخاب نکنید چون ممکنه ماتریس محاسباتی تون دچار "بدی شرایط" (ill condition) بشه... برای اطلاعات بیشتر از ماتریس محاسباتی هم میتونید روش بس-گیورا (البته بازم فک کنم اسمش این بود!!!!!:ws3:) رو مطالعه کنید.

 

امیداوام بتونید تو این متنی که نوشتم جواب سوالاتونو پیدا کنید....

لینک به دیدگاه
  • 3 هفته بعد...

ن یه پروژه برای درس کنترل مدرن دارم که از مثال های کتاب باید استفاده شه.برنامه نوشته شده س و برای مثال کتاب جواب میده ولی از روی مقاله ی داده شده میخوایم برنامه رو تغییر بدیم.توی این حالت نمودار حلقه بسته ی ژنراتور با پاسخ ردیاب یکی در میاد که نباید اینجوری باشه و ماتریس c رو طبق مقاله تعریف میکنیم ولی توی نمودار تاثیر نداره.توی مثال کتاب ورودی پله ی واحده ولی ما باید تغییرش بدیم که نمیدونم از کجا میشه تغییرش داد.کسی میتونه کمکم کنه؟

این برنامه ی مثال کتابه:

clear all

%----- PARAMETERS DEFINITION -----

a11=-0.0507;

a12=-3.861;

a21=-0.00117;

a22=-0.5164;

a31=-0.000129;

a32=1.4168;

a33=-0.4932;

b1=0;

b2=-0.0717;

b3=-1.645;

g=9.81;

%----- OPEN-LOOP SYSTEM: X_dot=AX+BU ----

A=[a11 a12 0 -g;a21 a22 1 0;a31 a31 a33 0;0 1 0 0];

B=[b1;b2;b3;0];

%----- OPEN-LOOP ANALYSIS ----------------

openloop_eigenvalues=eig(A)

controlability_rank=rank(ctrb(A,B));

%----- STATE FEEDBACK DESIGN ------------

P=[-0.9+1.9i -0.9-1.9i -1.8+0.6i -1.8-.6i];

% Desired Closed-Loop Ploes

K=acker(A,B,P); % State-Feedback Gain

%--------------------------------------------

%----- SIMULATION OF REGULATION PROBLEM -----

%--------------------------------------------

t=.01:.01:10; % simulation time

[rt,ct]=size(t);

x(:,1)=[0;1;0;0]; % initial condition

for k=2:ct

u(k)=-K*x(:,k-1);

x(:,k)=x(:,k-1)+.01*(A*x(:,k-1)+B*u(k));

end

%~~~~~ PLOTTING STATES ~~~~~

subplot(2,2,1);plot(t,x(1,:));

title('Regulation Problem, state:X_1');

subplot(2,2,2);plot(t,x(2,:));

title('Regulation Problem, state:X_2');

subplot(2,2,3);plot(t,x(3,:));

title('Regulation Problem, state:X_3');

subplot(2,2,4);plot(t,x(4,:));

title('Regulation Problem, state:X_4');

%~~~~~ PLOTTING CONTROL SIGNAL ~~~~

figure;plot(t,u);

title('Regulation Problem, Control Signal (u)');

%*****************************

%----------------------------------------------

%------ SIMULATION OF TRACKING PROBLEM --------

%----------------------------------------------

C=[1 0 0 0]; % selecting 'teta' as system output

D=0;

CL_sys=ss(A-B*K,B,C-D*K,D); % Closed-Loop System

CL_gain=dcgain(CL_sys);

% DC-Gain of closed-loop system

K_r=inv(CL_gain); % control signal: u=-K*x+K_r*yd

yd=1; % desired value for output (teta)

%~~~ SIMULATION ~~~

x(:,1)=[0;1;0;0]; % initial condition

for k=2:ct

u(k)=-K*x(:,k-1)+K_r*yd;

x(:,k)=x(:,k-1)+.01*(A*x(:,k-1)+B*u(k));

end

%~~~~~ PLOTTING STATES ~~~~~

figure;subplot(2,2,1);plot(t,x(1,:));

title('Tracking Problem, state X_1');

subplot(2,2,2);plot(t,x(2,:));

title('Tracking Problem, state:X_2');

subplot(2,2,3);plot(t,x(3,:));

title('Tracking Problem, state:X_3');

subplot(2,2,4);plot(t,x(4,:));

title('Tracking Problem, both:X_4 and Output');

%~~~~~ PLOTTING CONTROL SIGNAL ~~~~

figure;plot(t,u);

title('Tracking Problem, Control Signal');

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

[A=[0 0 1 0,0 0 0 1,0 2165 -53.6 0,0 -2797 53.6 0

B=[0,0,99,-99[

C=[1 1 0 0

y=teta + alpha

لینک به دیدگاه

سلام

من برنامه رو برای شما اصلاح کردم

فقط اگه میخواید نتایجتون با مقاله یکی در بیاد به چند نکته دقت کنید:

 

۱- اول ببینید قطب های مطلوب تو مقاله کجاست؟؟؟؟؟جایابی قطبتون رو اصلاح کنید (خط ۹ برنامه)

 

۲- شرایط اولیه رو در حالت های رگولاتوری و ترکینگ چک کنید (خطوط ۱۷ و ۴۶)

 

۳-زمان شبیه سازی خودتون رو چک کنید...برای این مثالی که گذاشتید ۱۰ ثانیه هست (خط ۱۵)

 

۴-اگه میخواید ورودی مرجع رو عوض کنید خط ۴۴ برنامه رو تغییر بدید ولی به این موارد دقت کنید

-اگه سیگنال مرجع شما با زمان ثابت هست (مثلا همیشه ۵ هست) اون yd رو برابر با ۵ قرار بدید...

-اما اگر با زمان تغییرات داره (مثل ورودی های پله فیلتر شده یا شیب) بایستی اول ورودی خودتونو بسازید که یه بردار میشه و خط ۴۸ برنامه به جای yd بنویسید yd(k)....

 

۵- این نکته زیاد مهم نیست اما خدمتتون عرض میکنم که دستور acker دیگه منسوخ شده و دیگه از متلب داره حذف میشه....بهتره به جاش از دستور place حل کنید چون این دسستور خودشو محدود به روش آکرمن نمیکنه....(خط ۱۱)

 

یه نکته دیگه هم اینکه سوال خودتونو یه با تو تالار برق-کنترل بپرسید کفایت میکنه و نیاز به تکرارش نیست....پس اون پستتون که مشابه این هست رو حذف کنید:w16:

 

امیدوارم مشکلتون حل شده باشه..... اینم برنامه اصلاح شده خدمت شما

 

[font=Courier]clear all[/font]
[color=#25992D][font=Courier]%----- OPEN-LOOP SYSTEM: X_dot=AX+BU ----[/font][/color]
[font=Courier]A=[0 0 1 0;0 0 0 1;0 2165 -53.6 0;0 -2797 53.6 0];[/font]
[font=Courier]B=[0;0;99;-99];[/font]
[color=#25992D][font=Courier]%----- OPEN-LOOP ANALYSIS ----------------[/font][/color]
[font=Courier]openloop_eigenvalues=eig(A)[/font]
[font=Courier]controlability_rank=rank(ctrb(A,B));[/font]
[color=#25992D][font=Courier]%----- STATE FEEDBACK DESIGN ------------[/font][/color]
[font=Courier]P=[-0.9+1.9i -0.9-1.9i -1.8+0.6i -1.8-.6i];[/font]
[color=#25992D][font=Courier]% Desired Closed-Loop Ploes[/font][/color]
[color=#25992D][font=Courier]K=acker(A,B,P); % State-Feedback Gain[/font][/color]
[color=#25992D][font=Courier]%--------------------------------------------[/font][/color]
[color=#25992D][font=Courier]%----- SIMULATION OF REGULATION PROBLEM -----[/font][/color]
[color=#25992D][font=Courier]%--------------------------------------------[/font][/color]
[color=#25992D][font=Courier]t=.01:.01:10; % simulation time[/font][/color]
[font=Courier][rt,ct]=size(t);[/font]
[color=#25992D][font=Courier]x(:,1)=[0;1;0;0]; % initial condition[/font][/color]
[font=Courier]for k=2:ct[/font]
[font=Courier]u(k)=-K*x(:,k-1);[/font]
[font=Courier]x(:,k)=x(:,k-1)+.01*(A*x(:,k-1)+B*u(k));[/font]
[color=#0433FF][font=Courier]end[/font][/color]
[color=#25992D][font=Courier]%~~~~~ PLOTTING STATES ~~~~~[/font][/color]
[font=Courier]subplot(2,2,1);plot(t,x(1,:));[/font]
[color=#B245F3][font=Courier]title('Regulation Problem, state:X_1');[/font][/color]
[font=Courier]subplot(2,2,2);plot(t,x(2,:));[/font]
[color=#B245F3][font=Courier]title('Regulation Problem, state:X_2');[/font][/color]
[font=Courier]subplot(2,2,3);plot(t,x(3,:));[/font]
[color=#B245F3][font=Courier]title('Regulation Problem, state:X_3');[/font][/color]
[font=Courier]subplot(2,2,4);plot(t,x(4,:));[/font]
[color=#B245F3][font=Courier]title('Regulation Problem, state:X_4');[/font][/color]
[color=#25992D][font=Courier]%~~~~~ PLOTTING CONTROL SIGNAL ~~~~[/font][/color]
[font=Courier]figure;plot(t,u);[/font]
[color=#B245F3][font=Courier]title('Regulation Problem, Control Signal (u)');[/font][/color]
[color=#25992D][font=Courier]%*****************************[/font][/color]
[color=#25992D][font=Courier]%----------------------------------------------[/font][/color]
[color=#25992D][font=Courier]%------ SIMULATION OF TRACKING PROBLEM --------[/font][/color]
[color=#25992D][font=Courier]%----------------------------------------------[/font][/color]
[color=#25992D][font=Courier]C=[1 1 0 0]; % selecting 'teta' as system output[/font][/color]
[font=Courier]D=0;[/font]
[font=Courier]CL_sys=ss(A-B*K,B,C-D*K,D); % Closed-Loop System[/font]
[font=Courier]CL_gain=dcgain(CL_sys);[/font]
[color=#25992D][font=Courier]% DC-Gain of closed-loop system[/font][/color]
[color=[url="http://www.noandishaan.com/forums/usertag.php?do=list&action=hash&hash=25992D%5D%5BFONT%3DCourier%5DK_r%3Dinv%28CL_gain%29"]#25992D][font=Courier]K_r=inv(CL_gain)[/font][/url][font=Courier] % control signal: u=-K*x+K_r*yd[/font][/color]
[color=[url="http://www.noandishaan.com/forums/usertag.php?do=list&action=hash&hash=25992D%5D%5BFONT%3DCourier%5Dyd%3D1"]#25992D][font=Courier]yd=1[/font][/url][font=Courier] % desired value for output (teta)[/font][/color]
[color=#25992D][font=Courier]%~~~ SIMULATION ~~~[/font][/color]
[color=#25992D][font=Courier]x(:,1)=[0;1;0;0]; % initial condition?[/font][/color]
[font=Courier]for k=2:ct[/font]
[font=Courier]u(k)=-K*x(:,k-1)+K_r*yd;[/font]
[font=Courier]x(:,k)=x(:,k-1)+.01*(A*x(:,k-1)+B*u(k));[/font]
[font=Courier]y(k)=C*x(:,k-1)+D*u(k);[/font]
[color=#0433FF][font=Courier]end[/font][/color]
[color=#25992D][font=Courier]%~~~~~ PLOTTING STATES ~~~~~[/font][/color]
[font=Courier]figure;subplot(2,2,1);plot(t,x(1,:));[/font]
[color=#B245F3][font=Courier]title('Tracking Problem, state X_1');[/font][/color]
[font=Courier]subplot(2,2,2);plot(t,x(2,:));[/font]
[color=#B245F3][font=Courier]title('Tracking Problem, state:X_2');[/font][/color]
[font=Courier]subplot(2,2,3);plot(t,x(3,:));[/font]
[color=#B245F3][font=Courier]title('Tracking Problem, state:X_3');[/font][/color]
[font=Courier]subplot(2,2,4);plot(t,x(4,:));[/font]
[color=#B245F3][font=Courier]title('Tracking Problem, both:X_4');[/font][/color]
[color=#25992D][font=Courier]%~~~~~ PLOTTING CONTROL SIGNAL ~~~~[/font][/color]
[font=Courier]figure;plot(t,u);[/font]
[color=#B245F3][font=Courier]title('Tracking Problem, Control Signal');[/font][/color]
[color=#25992D][font=Courier]%~~~~~ PLOTTING Output SIGNAL ~~~~[/font][/color]
[font=Courier]figure;plot(t,y);[/font]
[color=#B245F3][font=Courier]title('Tracking Problem, Output Signal');[/font][/color]


لینک به دیدگاه
  • 1 سال بعد...

با سلام و خسته نباشد خدمت تمامی دوستان.من دانشجوی ارشد رشته ریاضی گرایش کنترل و بهینه سازی هستم.تشابه زیادی بین موضوع پایان نامم و مطالب اینجا دیدم.امیدوارم جواب سوالمو اینجا پیدا کنم.

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

Question.pdf

لینک به دیدگاه
  • 7 ماه بعد...
  • 3 سال بعد...

سلام

دوستان اگر کسی مطلبی در مورد جایابی قطب _رویتگر با استفاده از تابع تبدیل داره بگذاره 

توی کتاب دکتر خاکی صدیق فصل 7 چیزی در این مورد نتونستم پیدا کنم

ولی جستجویی که در اینترنت داشتم به معادله ی دیوفانتین اشاره داشت ولی نحوه ی استفاده نبود.

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...