matlab راﺰﻓامﺮﻧ ﺎﺑ...

87
1 اﻟﺮﺣﻴﻢ اﻟﺮﺣﻤﻦ اﷲ ﺑﺴﻢ ﺷﻴﺮاز ﺻﻨﻌﺘﻲ داﻧﺸﮕﺎه ﺑﺮق داﻧﺸﻜﺪه ﻧﺮم ﺑﺎ آﺷﻨﺎﻳﻲ اﻓﺰارMATLAB ﻛﻨﺘﺮل در آن ﻛﺎرﺑﺮد و ﺻﻔﺮي ﺑﻬﺮوز ﻧﮋادﻳﺎن

Upload: others

Post on 17-Nov-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

1

, State Space, Modelling

بسم االله الرحمن الرحيم

دانشگاه صنعتي شيراز دانشكده برق

MATLABافزار آشنايي با نرم و كاربرد آن در كنترل

نژاديان بهروز صفري

Page 2: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

2

فهرست

MATLABافزار آشنايي با نرم: قسمت اول MATLABآشنايي با توابع و عمليات ماتريسي در : فصل اول MATLABآشنايي با رسم نمودار و برنامه نويسي در : فصل دوميل بـا اسـتفاده از ديفرانـس معـادلات تعريف توابع، حل معادلات غيـر خطـي و آشنايي با : فصل سوم

MATLAB Simulinkآشنايي با : فصل چهارم

MATLABهاي ديناميكي و طراحي كنترل كننده با استفاده از سازي سيستم مدل: قسمت دوم

هاي ديناميكي، مفهوم خطاي حالت ماندگار سازي رياضي سيستم مدل:فصل پنجم اسـتفاده از تـاثير مكـان هندسـي هاي كنترلي بـا و تحليل سيستم PIDطراحي كنترلر :فصل ششم

ها ريشه هاي كنترل در فضاي حالت، روش كنترل ديجيتال تحليل و طراحي سيستم: مفصل هفت

Cruise(سيستم تثبيت سرعت خـودرو : طراحي كنترل كننده براي يك سيستم نمونه :فصل هشتم

Control(

ها پروژه: قسمت سوم DC كنترل سرعت موتور :پروژه اول DC كنترل موقعيت موتور :ومپروژه د

سيستم كنترل موقعيت گوي بر روي ميله :پروژه سوم

Page 3: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

3

MATLABآشنايي با توابع و عمليات ماتريسي در : فصل اول مقدمه

MATLAB ويژه جبرخطـي سـرو و افزاري قوي براي كساني است كه با محاسبات عددي و به ، يك برنامه نرمگرفته شده و هدف اوليه آن عبارت است MATrix LABoratory انگليسي نام اين برنامه از عبارت. كار دارند

از قادر ساختن مهندسان و دانشمندان به حل مسائل شامل عمليات ماتريسي، بدون نياز به نوشتن برنامـه در . Cنويسي متداول همچون هاي برنامه زبان

MATLABگذاري متغيرها در قوانين نامگـذاري قـوانين زيـر در نـام . هـا اسـتفاده كـرد ان از هر اسمي براي متغيرها و نام فايـل تو افزار نمي در اين نرم

:ها حاكم است متغيرها و نام فايلاي وجود داشته باشد يا از نقطه بين حروف استفاده متغير بايد يك كلمه بوده و نبايد بين حروف آن فاصله •

.شود با هـم تفـاوت a و Aبه عنوان مثال دو حرف . شود ل ميافزار بين حروف بزرگ و كوچك تفاوت قائ اين نرم •

.دارند .نام متغيرها بايد با يك حرف آغاز شود • . استفاده كرد'_' و 'a-z' ،'A-Z' ،'0-9'توان از حروف گذاري مي در نام • . كاراكتر باشد31نام متغير بايد كمتر از •توان به عنوان نام را نمي... و if ،for، break، return ، endافزار همانند كلمات كليدي تعريف شده در نرم •

.در نظر گرفت

: انجام دهيدفزار، محاسبات ساده رياضي زير راا در ابتدا براي مشاهده عملكرد اين نرم: مثال>> 2+3 ans = 5 >> 2^3 ans = 8 >> 1/0 Warning: Divide by zero. ans = Inf

Page 4: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

4

نسبت دهيد و در انتهاي خط دوم از سميكالن b را به متغير 2 و مقدار a را به متغير 10ار در خط بعد مقد . استفاده كنيد) ;(

. نمايش داده نشودbشود مقدار باعث مي) ;(سميكالن >> a=10 a = 10 >> b=2; >> b b = 2 >> c=a+b c = 12

و log و توابـع لگـاريتمي ماننـد sin ،cosد توابـع مثلثـاتي تمامي توابع رياضي معمول همانن MATLABدر log10اند و غيره تعريف شده.

>> x=pi/6; >> sin(x) ans = 0.5000

. بر حسب راديان استxتوجه كنيد كه متغير >> sin(90*pi/180) ans = 1

متغيرهاي خاصans :باشدنام متغير پيش فرض مي.

pi : 3.14قطر دايره نسبت محيط بهπ =. inf,Inf : بي نهايت)infinity ( 1به عنوان مثال/ 0

Nan,nan : 0عددي وجود ندارد به عنوان مثال / 0 date :دهدتاريخ فعلي كامپيوتر را به صورت رشته نمايش مي.

realmax :1.79وجود كه برابر بزرگترين عدد م 308e .باشد ميinfعدد بزرگتر از اين عدد . است+realmin : 2.22كوچكترين عدد موجود كه برابر 308e .باشد مطلق مي0عدد كوچكتر از اين عدد . است−

ها ها و عمليات رياضي روي آرايه آرايه

:توان تعريف كرد كه عبارتند از چهار نوع آرايه مي MATALB در .اعداد اسكالر كه تك عضوي هستند - 1 .باشند و به عبارتي يك بعدي هستند بردارها كه شامل يك سطر يا يك ستون مي -2 .شوند تشكيل ميها كه از اعضاي چيده شده در يك آرايش مربعي ماتريس -3

Page 5: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

5

.ها با ابعاد بيش از دو بعد آرايه - 4

x = 2.5000 >> y = [0 1 2 3 4 5] y = 0 1 2 3 4 5 >> z = [0,1,2,3,4,5] z = 0 1 2 3 4 5

.شود استفاده مي) ;(هاي ستوني از سميكالن براي توليد آرايه>> x=[0;1;2;3;4;5] x = 0 1 2 3 4 5

:شود استفاده مي) '(براي تبديل يك آرايه سطري به ستوني يا بالعكس، از عملگر ترانهاده

>> x=[0;1;2;3;4;5]' x = 0 1 2 3 4 5 >> transpose(x) ans = 0 1 2 3 4 5

چند دستور ديگر را MATLABبنابراين . گير است هاي بالا وقت ستفاده از روش هاي بزرگتر ا براي توليد آرايه :اين دستورات عبارتند از. كند معرفي مي

Page 6: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

6

linspace(a,b,c) : ،اين دستورc هاي مساوي در بازه نقطه با فاصله[a,b] اگـر . كنـد توليد مـيc .د خواهد بو100گفته نشده باشد، به صورت پيش فرض مقدار آن برابر

>> x=linspace(0,pi,6) x = 0 0.6283 1.2566 1.8850 2.5133 3.1416

logspace(a,b,c) : ،اين دستورc هـاي لگـاريتمي در بـازه نقطـه بـا فاصـله[10^a,10^b] توليـد . خواهد بود50 گفته نشده باشد، به صورت پيش فرض مقدار آن برابر cاگر . كند مي

>> x=logspace(0,4,5) x = 1 10 100 1000 10000

c جلو برو تا به b شروع كن، هر بار به اندازه aاز ": اين دستور به اين معناست كه : a:b:cدستور بـصورت bمقـدار . توانـد مثبـت يـا منفـي باشـد گام حركت بـوده و مـي bتوجه كنيد كه . "برسي

.باشد مي1فرض يشپ>> x1 = 1:2:13 x1 = 1 3 5 7 9 11 13 >> x2 = 9:-1:1 x2 = 9 8 7 6 5 4 3 2 1 >> x3 = 0.5:5 x3 = 0.5000 1.5000 2.5000 3.5000 4.5000

بطور مثال براي دسترسي به مؤلفه سوم . كنيم هاي يك آرايه از انديس آن استفاده مي براي دسترسي به درايه

: داريمx3بردار سطري >> x3(3) ans = 2.5000

كند دستور زير مؤلفه دوم را پاك مي>> x3(2)=[]

Page 7: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

7

x3 = 0.5000 2.5000 3.5000 4.5000

. بريم ها بين دو براكت بهره مي ر از نوشتن انديسبراي دسترسي به چند مؤلفه از يك بردا

>> x=[0.1 0.2 0.4 0.5 0.55 0.7 0.9]; >> y = sin(x) y = 0.0998 0.1987 0.3894 0.4794 0.5227 0.6442 0.7833 >> x([1 5 2]) ans = 0.1000 0.5500 0.2000 >> y([2:5]) ans = 0.1987 0.3894 0.4794 0.5227 >> y(1:2:end) ans = 0.0998 0.3894 0.5227 0.7833

چند دستور مفيد ديگرتوان ليستي از تمامي متغيرهاي موجـود در فـضاي كـاري را در پنجـره ميwhoبا استفاده از دستور

.دستورات نمايش دادتوان ليستي از نام، سايز و بقيه مشخصات تمامي متغيرهاي موجود در مي whosبا استفاده از دستور

.فضاي كاري را در پنجره دستورات نمايش داد .توان صفحه پنجره دستورات را پاك كرد ميclcبا استفاده از دستور .توان تمامي متغيرهاي موجود در فضاي كاري را پاك كرد ميclear allبا استفاده از دستور . را پاك كردx,yتوان فقط متغيرهاي ميclear x yفاده از دستور با است .شود استفاده ميformat compactبراي حذف خطوط اضافي موجود در پنجره دستورات از دستور :مثال

>> d=3 d = 3 >> a=d

Page 8: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

8

a = 3 >> format compact >> d=3 d = 3 >> a=d a = 3

format، چهـارده رقـم اعـشار format short اعداد تا چهار رقـم اعـشار، از دسـتور براي نمايش long چهار رقم اعشار با نماد علمي، از دستور ،format short e و چهارده رقم اعـشار بـه صـورت

.شود استفاده ميformat long eنماد علمي، از دستور :مثال

>> pi ans = 3.1416 >> format long >> pi ans = 3.14159265358979 >> format short e >> pi ans = 3.1416e+000 >> format long e >> pi ans = 3.141592653589793e+000

:باشد استفاده كرد كه به دو فرم زير ميdispتوان از دستور ها مي براي نمايش خروجي disp(variable) → a=2; disp(a) disp(string) → disp('what is your name?')

توابع كاربردي در عمليات ماتريسي

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

[a,b]=sort(x) : بردارxدر آن،. كند را به صورت صعودي منظم مي a بردار مرتب شده و b بردار .موقعيت اعداد است

>> x=[-1 6 -10 5 12 1]; >> [a,b]=sort(x)

length(x) : طول بردارxگرداند را برمي. >> length(x) ans = 6

max(x) : كند بزرگترين عدد را در يك آرايه پيدا مي. >> max(x)

Page 9: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

9

ans = 12

min(x) : كند كوچكترين عدد را در يك آرايه پيدا مي. >> min(x) ans = -10

mean(x) : كند يه را محاسبه ميميانگين اعداد يك آرا. >> mean(x) ans = 2.1667

std(x) : كند انحراف معيار اعداد يك آرايه را محاسبه مي. >> std(x) ans = 7.4677

sum(x) : هاي حاصل جمع مؤلفهxكند را محاسبه مي. >> sum(x) ans = 13

prod(x) : هاي حاصل ضرب مؤلفهxكند را محاسبه مي. >> prod(x) ans = 3600

size(x) : سايز ماتريسx) گرداند را برمي) تعداد سطر و ستون. >> size(x) ans = 1 6

:هاي بيشتر توليد كرد هايي با سطرها و ستون توان آرايه هاي سطري و ستوني مي با تركيب آرايه: نكته>> a=[1 2 3]; >> b=[4 5 6]; >> c=[7 8 9]; >> d=[a b], f=[a;b;c] d = 1 2 3 4 5 6 f = 1 2 3 4 5 6 7 8 9

:توابع رياضي ساده abs(x) : قدر مطلق آرايهxرا محاسبه مي كند .

>> abs(-2.5) ans = 2.5000

sign(x) : تابع علامت >> sign(-3.5) ans = -1

exp(x) : تابع نمايي >> exp(1) ans = 2.7183

log(x) : لگاريتم طبيعي آرايهxكند را محاسبه مي.

Page 10: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

10

>> log(2.7183) ans = 1.0000

log10(x) : آرايه 10لگاريتم در مبناي xكند را محاسبه مي. >> log10(10) ans = 1

sqrt(x) : جذر آرايهxكند را محاسبه مي. >> sqrt(2) ans = 1.4142

ceil(x) : كند عدد را به سمت بالا، به نزديكترين عدد صحيح گرد مي. >> ceil(-3.5) ans = -3

floor(x) : كند عدد را به سمت پايين، به نزديكترين عدد صحيح گرد مي. >> floor(-3.5) ans = -4

fix(x) : قسمت صحيح عددxگرداند را برمي. >> fix(sqrt(2)) ans = 1

rem(x) : باقيمانده عددx بر yدهد را به عنوان خروجي نمايش مي. >> rem(10,4) ans = 2

MATLABهاي استاندارد در آرايه

ones(n,m) : ماتريسn در mكندهاي يك توليد مي با درايه.

>> a=ones(2,4) a = 1 1 1 1 1 1 1 1

zeros(n,m) : ماتريسn در mكندهاي صفر توليد مي با درايه. >> b=zeros(3,4) b = 0 0 0 0 0 0 0 0 0 0 0 0

ones(n) : ماتريسn در nكندهاي يك توليد مي با درايه. zeros(n) : ماتريسn در nكندهاي صفر توليد مي با درايه. eye(n) : ماتريسn در nكندهاي قطري يك توليد مي با درايه.

>> eye(2) ans = 1 0

Page 11: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

11

0 1

rand(n,m) : ماتريسn در mكند توليد مي1-0هاي تصادفي بين با درايه. >> rand(4,5) ans = 0.9501 0.8913 0.8214 0.9218 0.9355 0.2311 0.7621 0.4447 0.7382 0.9169 0.6068 0.4565 0.6154 0.1763 0.4103 0.4860 0.0185 0.7919 0.4057 0.8936

rand(n) : ماتريسn در nكند توليد مي1-0هاي تصادفي بين با درايه. randn(n) : ماتريسn در n توليـد 1هاي تصادفي با توزيع گوسي با ميانگين صفر و واريـانس ه با دراي

.كندمي>> randn(4) ans = -0.4326 -1.1465 0.3273 -0.5883 -1.6656 1.1909 0.1746 2.1832 0.1253 1.1892 -0.1867 -0.1364 0.2877 -0.0376 0.7258 0.1139

randn(n,m) : ماتريسn در m 1هاي تصادفي با توزيع گوسي با ميـانگين صـفر و واريـانس با درايه .كندتوليد مي

randperm(n) : تا 1اعداد nدهد را به صورت تصادفي در يك بردار سطري قرار مي. >> randperm(10) ans = 4 1 5 7 10 6 9 2 8 3

magic(n) : هاي هر سطر، ستون و قطر با هم برابرندماتريسي است كه حاصل جمع درايه. >> magic(3) ans = 8 1 6 3 5 7 4 9 2

هاتوابع كاربردي مورد استفاده در ماتريس

توضيحات دستورdiag(a) اگرa گردانـد و اگـر يـك بـردار باشـد، لي را بـر مـي يك ماتريس باشد، عناصر روي قطر اص ـ

.كند كه عناصر روي قطر اصلي آن بردار و بقيه عناصر صفر هستندماتريسي توليد ميtrace(a) كندحاصل جمع عناصر روي قطر اصلي را محاسبه مي. minfo(a) گردانداطلاعاتي درباره ماتريس مورد نظر بر مي. flipud(a) كند به سطر وسط عوض ميجاي سطرها را نسبت. fliplr(a) كندها را نسبت به ستون وسط عوض ميجاي ستون. rot90(a) چرخاند درجه در جهت پادساعتگرد مي90ماتريس را به اندازه.

Page 12: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

12

tril(a) كندماتريس پايين مثلثي توليد مي. triu(a) كندماتريس بالا مثلثي توليد مي. repmat(a) ماتريسaعداد را به ت m در nكند تكرار مي. cat(n,a,b) دو ماتريسa و bكند را ملحق مي .nنشان دهنده جهت الحاق است . inv(a) كندماتريس وارون را محاسبه مي. det(a) كنددترمينان ماتريس مربعي را محاسبه مي. rank(a) كندمرتبه يك ماتريس را محاسبه مي. eig(a) كنديژه ماتريس مربعي را محاسبه ميمقادير و بردارهاي و. poly(a) اي مشخصه ماتريس چند جملهaكند را توليد مي.

تمرينات تكميلي

10xاگر - 1 = ،20y 30z و = .دست آوريد زير را بهc و a ،b باشند، مقادير =12

23 2

3 15 6 7 , , 14 5

ya x y z b cx z x

−⎛ ⎞= − + = = +⎜ ⎟− ⎝ ⎠

اگر - 26 9 5 1 4 88 7 2 3 3 7

,1 3 4 4 2 35 2 8 2 5 1

A B

⎡ ⎤ ⎡ ⎤⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥= =⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥⎣ ⎦ ⎣ ⎦

:، در اين صورت

را بسازيدE1، ماتريس A از دو ستون مياني ماتريس - 1- 2 .را بسازيد E2 ماتريس A با استفاده از سر اول و دوم و ستون دوم و سوم ماتريس - 2- 2 . را بسازيدE3 ماتريس B و E1هاي با كنار هم گذاشتن ماتريس- 3- 224هاي حاصل ضرب مؤلفه- 4- 2 12,A Bرا بدست آوريد .

در صورتيكه - 312.11 7.9 9.235.06 6.35 21.73.34 2.67 14.38

A−⎡ ⎤

⎢ ⎥= ⎢ ⎥⎢ ⎥−⎣ ⎦

: باشد

. را بدست آوريدAهاي ماتريس لگاريتم طبيعي قدر مطلق مؤلفه- 1- 3 . را بدست آوريدAهاي ماتريس قدر مطلق مؤلفه10اريتم مبناي لگ- 2- 3 . را بدست آوريدAهاي ماتريس مؤلفه جذر- 3- 3 . را بدست آوريدAهاي ماتريس كسينوس هايپربوليك مؤلفه- 4- 3 . را به عدد صحيح بزرگتر گرد كنيدA هر مؤلفه ماتريس - 5- 3 .ست آوريد را بدAهاي هر ستون ماتريس مجموع مؤلفه-6- 3 . را بدست آوريدAهاي هر سطر ماتريس حاصلضرب مؤلفه- 7- 3 . را بدست آوريدA بزرگترين و كوچكترين مقدار هر سطر ماتريس - 8- 3

Page 13: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

13

. را بصورت صعودي مرتب كنيدA هر ستون ماتريس - 9- 3 . را بدست آوريدA سايز ماتريس - 10- 3 .يد ميانگين مقادير هر ستون ماتريس را بدست آور- 11- 3 :دستگاه معادلات روبرو را حل نماييد - 4

6 3 4 4112 5 7 26

5 2 6 14

x y zx y zx y z

− + =⎧⎪ + − = −⎨⎪ − + + =⎩

Page 14: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

14

MATLABآشنايي با رسم نمودار و برنامه نويسي در : فصل دوم

ترسيم نمودارهاي دو بعدي و سه بعدي

plotرسم نمودار با استفاده از دستور

.باشد ترين تابع رسم نمودارهاي دوبعدي مي متداولplotتابع plot(y)هاي نمودار دادهyفرض، مقادير كند و به طور پيش را رسم ميxگيرد را اعداد طبيعي در نظر مي. :مثال

>> y=rand(1,20); >> plot(y)

0 2 4 6 8 10 12 14 16 18 200

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

توجه داشته . شود رسم مي x بر حسب yباشد كه در آن نمودار مي plot(x,y)فرم رايج رسم نمودار به صورت

.رابرند بx و yباشيد كه اندازه بردار :مثال

>> x= 0:pi/40:4*pi; >> y=sin(x); >> plot(x,y)

Page 15: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

15

0 2 4 6 8 10 12 14-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

آيـد يـك رشـته ميy و xاين آرگومان كه پس از . توان به همراه آرگومان سومي نيز بكار برد را مي plotتابع

.باشد ها مي كاراكتري است كه مشخص كننده نوع خطوط و رنگ آن

Line Style SpecifierSolid line (default)- Dahsed line -- Dotted line : Dash-dot line -.

Color SpecifierRed r

Green g Blue b Cyan c

Magentam Yellow y Black k White w

Marker TypeSpecifier

Plus sign + Circle o

Asterist * Point .

: مثالplot(x,y,'--r')

Page 16: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

16

0 2 4 6 8 10 12 14-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

plot(x,y,'*b')

0 2 4 6 8 10 12 14-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

ها، تعيين انـدازه و هاي ديگري نيز داشته باشد؛ مثلا تغيير اندازه خطوط منحني تواند آرگومان مي plotدستور

.اند رنگ ماركرها كه در مثال زير آورده شده>> x=-pi:pi/10:pi; >> y=tan(sin(x))-sin(tan(x)); >> plot(x,y,'--rs','Linewidth',2,'Markersize',10,... 'MarkerFaceColor','g','MarkerEdgeColor','k')

-4 -3 -2 -1 0 1 2 3 4-3

-2

-1

0

1

2

3

Page 17: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

17

ها بررسي چند دستور مفيد در رسم منحني Xlabel(' ') : برچسب محورxكند ها را مشخص مي.

Ylabel(' ') : برچسب محورyكند ها را مشخص مي.

Title(' '):دهد عنوان را در بالاي نمودار نشان مي.

grid on :كند اي نمودار را فعال مي خطوط شبكه.

grid off :كند اي نمودار را غيرفعال مي خطوط شبكه. hold on,off :دهند چند منحني در يك نمودار قرار بگيرند اين دستورات اجازه مي.

figure(n) : پنجره شمارهnكند را براي رسم نمودار توليد مي.

close(n) : پنجره و شكل شمارهnبندد را مي.

close all :بندد ا را ميه تمام پنجره شكل.

axis([xmin xmax ymin ymax]) : محدوده محورهاي مختصاتx و yدهد را تغيير مي.

Legend(' ') : در صورتيكه چند نمودار در يك پنجره باشند، از اين دستور به عنوان راهنمـاي نمـودار .شود استفاده مي

رسم چند نمودار در يك صفحه

.اند در يك پنجره رسم شده در مثال زير دو تابع درجه دوم:مثالx=0:0.1:5; f1=x'.^2-3*x'+2; f2=2*x'.^2+x'-3; f=[f1 f2]; plot(x,f) title('Multiple Function Plot') xlabel('x'),ylabel('y') grid on legend('F1','F2')

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-10

0

10

20

30

40

50

60Multiple Function Plot

x

y

F1

F2

.داستفاده كني hold on در برنامه بالا براي روي هم انداختن دو نمودار از دستور :تمرين

X=0:0.1:5; f1=x'.^2-3*x'+2;

Page 18: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

18

f2=2*x'.^2+x'-3; plot(x,f1) hold on plot(x,f2)

: روش ديگر براي رسم چند نمودار در يك پنجره استفاده از فرمت زير است:نكتهplot(x1,y1,x2,y2,x3,y3,…) >> x=linspace(0,5); >> plot(x,0.1*x.^2,'k',x,cos(x).^2,'b--',x,exp(-0.3*x),'r')

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

0.5

1

1.5

2

2.5

بعدي هاي سه رسم منحني .كنيم استفاده ميcontour و mesh ،surf ،plot3بعدي از دستورات براي رسم نمودارهاي سه

) رسـم منحنـي تـابع دومتغيـره :مثال ) 2 22 0.3, 80 , 2.1 2.1, 6 6x yf x y y e x y− −= − ≤ ≤ − ≤ بـا توابـع ≥contour ،mesh و surf.

[x,y]=meshgrid(-2.1:0.15:2.1,-6:0.15:6); z=80*y.^2.*exp(-x.^2-0.3*y.^2); mesh(x,y,z) figure contour(x,y,z)

Page 19: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

19

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2-6

-4

-2

0

2

4

6

Page 20: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

20

رسم منحني :مثال( ) ( )( ) ( )

( )

0.02

0.02

sincos

t

t

x t e ty t e t

z t t

⎧ =⎪ =⎨⎪ =⎩

.plot3 با تابع

>> t = 0:pi/50:10*pi; >> plot3(exp(-0.02*t).*sin(t),exp(-0.02*t).*cos(t),t);

-1-0.5

00.5

1

-1

-0.5

0

0.5

10

5

10

15

20

25

30

35

كنترل برنامهود كه بتواند در حين اجرا تصميمات لازم را اتخاذ كـرده براي اينكه به برنامه نوشته شده اين قابليت اضافه ش

چندين دستور براي كنترل جريـان محاسـبات معرفـي MATLABو ترتيب اجراي دستورات را كنترل كند، :كنيم ها را بررسي مي در ادامه آن. كند مي

Page 21: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

21

هاي تكرارحلقه

for-end while-end

ساختارهاي تصميم if-else-end switch-case

توقف اجراي برنامه

break, return, keyboard pause, pause(n), waitforbuttonpress

If-else-endشرط :بينيد ساختاركلي اين دستور را در زير مي

If 1شرط 1دستورات Elseif 2شرط 2دستورات Elseif 3شرط 3دستورات Else 4دستورات End

و elseالبتـه اسـتفاده از . استفاده كردend و else و يك else if، بيشمار ifتوان از يك در حالت كلي مي

elseifاختياري است . elseifدر غير اين صورت شـرط روبـروي . شوند اجرا مي 1 درست باشد، دستورات شماره ifاگر شرط مقابل

در غير اين صورت شـرط . شود اجرا مي elseif روبروي شود، در صورتي كه درست باشد دستورات بررسي مي else شرط بررسي شده نادرست بودند، دسـتورات قـسمت nدر صوررتي كه ... بررسي مي شود تا الي آخر 3

.اجرا مي شوند

اي بنويسيد كه در صورتيكه كلمه عبور وارد شده از طرف كاربر درست بود پيغام مناسـب نـشان برنامه: مثال :دهد

x = input('Enter your password:'); if x==206 disp('your password is correct')

Page 22: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

22

elseif (x>206 | x<206) disp('your password is incorrect') end

switch-caseشرط .شود از اين ساختار براي تصميم گيري چندگانه بر اساس مقادير مختلف يك متغير استفاده مي

:مثال

a=input('a='); switch a case 1 disp('one') case 2 disp('two') case 3 disp('three') otherwise disp('a>3') end

. اختياري استotherwise استفاده از :نكته

ليد كرده و سپس پيغام دهد كه اين عـدد بطور تصادفي تو 9 تا 0اي بنويسيد كه يك عدد بين برنامه :تمرين .زوج، فرد و يا صفر است

forحلقه

.آورد كه تعدادي از دستورات به تعداد دفعات از قبل تعيين شده تكرار شوند اين حلقه اين امكان را بوجود مي :شكل كلي اين دستور به صورت زير است

for variable = a دستورات end

بـه . گيـرد قرار مي variableدار است كه در هر بار تكرار حلقه، يك مقدار از اين بردار در يك بر aكه در آن .شود تكرار ميaهاي اين ترتيب، حلقه به تعداد ستون

را محاسـبه n تـا 1 را از كاربر گرفته و فاكتوريـل اعـداد n يك برنامه بنويسيد كه عدد for با حلقه :تمرين .كرده و نمايش دهد

n = input('n= ') fact = 1; for k = 1:n fact = k*fact; disp([k fact]) end

تـوان هـاي تـو در تـو مـي بطور مثال با اسـتفاده از حلقـه . توان به صورت تودرتو استفاده كرد را ميforحلقه :جدول ضرب ايجاد كرد

for i = 1:10

Page 23: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

23

for j = 1:10 S(i,j)=i*j; end end disp(S)

whileحلقه .كند كه عبارت شرطي درست باشد اين حلقه دستورات را تا زماني تكرار مي

while شرط دستورات end

breakدستور

منتقـل ) whileيـا (forشود، كنترل برنامه بـه اولـين خـط بعـد از حلقـه هنگامي كه اين دستور اجرا مي .شود اين دستور باعث خارج شدن از حلقه جاري ميها تودرتو باشند، اگر حلقه. شود مي

:مثال

for p=7:8 for q=3:5 for r=1:2 if q==4 break end disp([p,q,r]) end end end

pauseدستور ماند تا اينكه شـما صـفحه كليـد را فـشار برسد متوقف مي pauseهنگامي كه برنامه در حين اجرا به دستور

.يابد ادامه ميpauseدهيد و سپس اجراي برنامه از دستور بعد از pause(n) توقف به مدت nثانيه است .

returnدستور

در را ) مقـدار متغيـري كـه در جلـو آن آمـده (هرگاه روند اجراي برنامه به اين دستور برسد مقدار مورد نظـر command windowشود نمايش داده و ادامه اجراي برنامه متوقف مي.

keyboardدستور

رسـد بـه در ميان برنامه اجراي برنامه هنگامي كه به آن دستور مـي keyboardدر صورت استفاده از دستور ر چنـين حـالتي د. دهد كه عمليات مورد نظرتان را انجام دهيد شود و به شما اجازه مي طور موقت متوقف مي

Page 24: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

24

وارد شـد، برنامـه از جـايي كـه returnپـس از اينكـه دسـتور . شود روي صفحع نمايش ديده مي Kعلامت .يابد متوقف شده بود ادامه مي

رود كه بخواهيم وسط برنامه مقدار يك متغيـر را ببينيـد و آن را تغييـر كار مي اين دستور بويژه در مواقعي به .ر اجراي برنامه مشاهده نماييددهيد و اثر اين تغيير را د

waitforbuttonpressدستور

با اجراي اين دستور برنامه تا زماني كه دكمه ماوس يا يك كليد در صـفحه بـاز شـده فـشرده شـود، متوقـف .ماند مي

تمرينات تكميلي .نمودار توابع زير را در يك گراف رسم كنيد - 1

( ) ( )

( ) ( )

0.051

0.22

2 sin0 30

2 cos4

2 sin0 30

2 cos4

t

t

tx t e t

t

tx t e t

t

+= ≤ ≤

⎛ ⎞− ⎜ ⎟⎝ ⎠

+= ≤ ≤

⎛ ⎞− ⎜ ⎟⎝ ⎠

10 (ير خطي زير را رسم كنيدنمودار توابع غ - 2 10tπ π− ≤ ≤(.

( ) ( )

( ) ( )

sin 50 cos

sin 50 sin

tx t tt

ty t tt

π

π

= +

= +

1010در صورتيكه - 3 10, 10 10, 10y x ε −− ≤ ≤ − ≤ ≤ )، تابع = )( )2 2

2 2

sin,

x yz x y

x y

ε

ε

+ +=

+ + را

.رسم نماييد

Page 25: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

25

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

)function file(ساخت فايل تابعي

. انـد تعريـف نـشده MATLABگاهي اوقات ممكن است نياز به توابعي با كاربري خاص داشته باشيم كـه در بنابراين نياز داريم كه ايـن . جوابگوي ما نخواهد بود MATLABبنابراين تنها استفاده از توابع تعريف شده در

هـاي گاهي اوقات نيز بخاطر راحتي اسـتفاده مجـدد از برنامـه و كـاهش پيچيـدگي توابع را تعريف كنيم و يا .كنيمها استفاده ميfunction fileهاي جامع با ايجاد قابليت خواندن بيشتر، از برنامه

: است با اين تفاوت كه خط اول آن به صورت زير استm-fileيك فايل تابعي مانند يك

Function [outputs] = name[inputs]

در صـورتي كـه يـك . دهـيم ها را در يك متغير جداگانـه قـرار مـي ها و ورودي در اين خط هر يك از خروجي نيز نام تابع است كه نبايد مشابه توابع موجود و يـا name. خروجي داشته باشيم، ديگر نيازي به براكت نيست

ذخيـره name.mمان نام تابع يعني با اسـم ها بايد با هfunction file. باشدMATLABقبلا تعريف شده در .شوند

ذخيره fفرض جديد بازكرده، دستورات زير را در آن تايپ كنيد و آن را با همان اسم پيش m-file يك :مثال .كنيد

Function y = f(x) y = x^3 +x -3;

:بطور مثال. د را در نقاط مختلف حساب كنيf، مقادير مختلف fتوانيد با فراخواني تابع حال مي

>> f(3.5) ans= 43.3750

تابعي بنويسيد كه ورودي آن يك ماتريس و خروجـي آن موقعيـت سـطر و سـتون بزرگتـرين عـدد :تمرين

.موجود در آن ماتريس باشد

:حلfunction [r,c] = indmax(x) [m n] = size(x); xmax = x(1,1); r=1; c=1; for k=1:m for i=1:n if x(k,i)>xmax

Page 26: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

26

xmax = x(k,i); r=k; c=i; end end end

:براي تست برنامه، دستورات زير را در پنجره دستورات وارد كنيد>> A=3; B=[2 4 3]; C=[3 2; 6 1]; >> [r c]=indmax(A) >> [r c]=indmax(B) >> [r c]=indmax(C)

در . ها ايجاد شوند ها در فايل ها در پنجره دستورات يا نوشتن داده ممكن است توابع براي نمايش داده:نكته

ابتداي برنامه اين گونه توابع به صورت زير . گردد اين موارد هيچ مقداري به برنامه فراخواني شده بر نمي :باشد مي

Function name(inputs) تواند باشد در حاليكه خروجي ودي تابع يك اسكالر، بردار و يا يك ماتريس ميبطور مثال در برنامه زير، ور

.باشد برنامه نمايش يك رشته در پنجره دستورات مي

function testvar(x) [m,n] = size(x); if m==n & m==1 disp('Argument is a scalar') elseif m==1 | n==1 disp('Argument is a vector') else disp('Argument is a matrix') end

:براي تست برنامه، دستورات زير را در پنجره دستورات وارد كنيد

>> a=2; b=[2 3]; c=[4 5;6 7]; >> testvar(a) >> testvar(b) >> testvar(c)

inlineساخت تابع با استفاده از دستور

مزيـت آن . ايجـاد كـرد inlineبا استفاده از دسـتور m-fileيك توان يك تابع را در پنجره دستورات يا در مياز جمله آنكه . هايي نيز وجود دارد اما محدوديت . اين است كه به ذخيره شدن در يك فايل جداگانه نياز ندارد

: بصورت زير استinlineشكل عمومي . ديگري را فراخواني كردinlineتوان نمي

name of function = inline('function','x1','x2',…)

Page 27: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

27

x1, x2, … عنوان نمونه در مثال زير تابع به. باشند نام متغيرهاي موجود در عبارت ميh بـا اسـتفاده از تـابع inline تعريف شده است كه متغير tباشد تنها متغير آن مي.

( ) ( )( ) cos 8 cos 9h t t t= + >> h=inline('cos(8*t)+cos(9*t)','t') h = Inline function: h(t) = cos(8*t)+cos(9*t) >> h(2) ans = -0.2973 >> x = 0 : pi/40 :6*pi; >> plot(x,h(x))

0 5 10 15 20-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

t

h(t)

h(t) = cos(8t) + cos(9t)

>> g=inline('sin(t).*cos(x)','t','x') g = Inline function: g(t,x) = sin(t).*cos(x) >> g(2.5,-1) ans = 0.3234

براي محاسبه توابع تعريفي كاربرMATLABاربردي توابع ك

Page 28: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

28

در ادامه مهمترين آنهـا را . كنند چندين تابع وجود دارد كه توابع تعريفي كاربر را محاسبه مي MATLABدر .دهيم شرح مي

fminbndپيدا كردن مينيمم نسبي با استفاده از تابع

)براي پيدا كردن مينيمم نسبي تابع يـك متغيـره )f x در فاصـله a x b≤ اسـتفاده fminbnd، از تـابع ≥ :فرمت اين دستور به صورت زير است. شود مي

[x,fval]=fminbnd('F',a,b) ]اي است كه مينيمم نسبي در بازه متناظر با نقطه xمقدار ],a b رخ داده است و fval ع در نقطـه مقدار تابx ايجـاد inline نيز نام فايل تابعي است كه در يك علامت نقل قول قرار گرفته، يا تابعي اسـت كـه بـا F. است

. شده است] در بازه cosبطور مثال براي پيدا كردن مينيمم نسبي تابع :نويسيم دستورات زير را مي0,4[

>> [x,fval]=fminbnd('cos',0,4) x = 3.1416 fval = -1.0000 >> x=0:0.1:4; >> plot(x,cos(x))

) مينــيمم نــسبي تــابع تــك متغيــره :تمــرين ) 5 4 3 20.025 0.0625 0.333y x x x x x= − − را در بــازه +[ .دست آوريد به−1,4[

:حل

:كنيم ابتدا تابع را تعريف ميfunction y = f5(x) y = 0.025*x.^5-0.0625.^4-0.333*x.^3+x.^2;

:آوريم سپس مينيمم نسبي را بدست ميx = -1:0.01:4; y = 0.025*x.^5-0.0625.^4-0.333*x.^3+x.^2; plot(x,y) [x,fval] = fminbnd('f5',-1,4)

Page 29: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

29

fsolveحل معادلات غير خطي با استفاده از )، n حل عددي دستگاه معادلات غير خطي مرتبه fsolveتابع )1 2, , ,n nf x x x… با n مجهول را با اسـتفاده

]از فرض اوليه ]1 2, , ,d d d ndx x x x= :باشد فرمت اين دستور بصورت زير مي. دهد انجام مي…fsolve('F',xd)

د ايجـا inline نام فايل تابعي است كه در يك علامت نقل قول قرار گرفته، يا تابعي است كـه بـا Fكه در آن،

.باشد فرض اوليه ميdxشده است و . معادلات غير خطي زير را حل كنيد:مثال

2 21 2

21 1 2

4 52 2 3 2.5

x xx x x

⎧ + =⎨

− − =⎩

:يك فايل تابعي ايجاد كرده و دستورات زير را وارد كنيد

function F = myfun(x) F = [2*x(1) - x(2) - exp(-x(1)); -x(1) + 2*x(2) - exp(-x(2))];

:دستورات زير را در پنجره فرامين وارد كرده و پاسخ را مشاهده كنيد

>> x0=[-5 -5]; >> fsolve('myfun',x0)

dblquad و انتگرال دوگانه عددي با quad و trapzگيري عددي با استفاده از انتگرال

)دست آوردن انتگرال تقريبي تابع براي به trapz(x,y)تابع )f x رود كار مـي اي به با استفاده از روش ذوزنقه .اي سـطح زيـر منحنـي طبـق قـانون ذوزنقـه . اي وارد كـرد متناظر را بايد بصورت آرايـه y و مقادير xمقادير

:آيد صورت زير بدست مي به( ) ( ) ( ) ( ) ( )( )0 1 2 12 2 2 ,

2 n nx b aA f x f x f x f x f x x

n−

∆ −= + + + + + ∆ =…

بطـور مثـال، سـطح زيـر منحنـي تـابع . تر باشد، دقت محاسبات بيشتر خواهد بـود كوچك ∆xهر چه مقدار humps را با x∆دست آوريد تا اثر هاي مختلف بهx∆را مشاهده كنيد .

>> x=linspace(-1,2,18); >> y=humps(x); >> plot(x,y) >> area = trapz(x,y) area =

Page 30: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

30

25.1406 >> x=linspace(-1,2,401); >> y=humps(x); >> plot(x,y) >> area = trapz(x,y) area = 26.3449

)طور عددي انتگرال به quadتابع )f x را از حد پايين a تا حد بالاي bفرمـت دسـتور . كنـد حاسبه مـي م

quadبه صورت زير است : quad('function',a,b)

:آيد دست مي صورت زير به سطح زير منحني طبق قانون سيمسون به( ) ( ) ( ) ( ) ( ) ( ) ( )( )0 1 2 3 2 2 2 1 24 2 4 2 4

3

2

n n nxA f x f x f x f x f x f x f x

b axn

− −

∆= + + + + + + +

−∆ =

>> quad('humps',-1,2) ans = 26.3450

)انتگرال توابع دو متغيره )max max

min min

,y x

y x

f x y dxdy∫ فرمت عمومي . شود محاسبه مي dblquadده از تابع با استفا ∫

:باشد دستور بصورت زير ميq = dblquad('function',xmin,xmax,ymin,ymax)

) مقدار انتگرال دوگانه :مثال ) ( )( )

0

sin cos 1x x dxdyπ π

π−

+∫ .دست آوريد را به∫

:كنيم در ابتدا تابع دو متغيره را در يك فايل تابعي تعريف ميfunction z = func2(x,y) z = sin(x).*cos(y) + 1;

:در پنجره فرامين دستورات زير را وارد كنيد>> x = linspace(0,pi,20); >> y = linspace(-pi,pi,20); >> dblquad('func2',0,pi,-pi,pi) ans = 19.7392 >> [xx,yy] = meshgrid(x,y); >> zz = func2(xx,yy); >> surf(xx,yy,zz) >> xlabel('x') >> ylabel('y')

Page 31: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

31

fzeroپيدا كردن صفرهاي توابع با استفاده از ) يك جواب براي معادله fzeroتابع ) 0f x 00X در همسايگي = x= يا در بازه [ ]1 20 ,X x x= محاسبه :شدبا فرمت اين دستور بصورت زير مي. كند مي

fzero('F',X0) F نام فايل تابعي است كه در يك علامت نقل قول قرار گرفته، يا تابعي است كه با inlineايجاد شده است .

)ريشه : مثال ) ( ) ( )2cos siny x x x= را در بازه [ ]2.5 1− .دست آوريد به− :يديك فايل تابعي ايجاد كرده و دستورات زير را وارد كن

function y = f2(x) y = cos(x).*sin(x).^2;

:دستور زير را در پنجره فرامين وارد كنيد و پاسخ را مشاهده كنيد>> fzero('f2',[-2.5 -1]) ans = -1.5708

ode45حل معادلات ديفرانسيل معمولي با فرانسيل معمولي مرتبه اول به شكل معادله دي nتوان حل عددي يك سيستم با ، مي ode45با استفاده از تابع

1زير را در بازه 2t t t≤ .دست آورد به≥( ) ( )1 2 0, , , , ,i

n i idy f t y y y y t adt

= =…

:باشد بصورت زير ميode45فرمت تابع . عددي ثابت استiaكه در آن [t,y] = ode45('F',[t0,ff],[a1,a2,…,an])

Page 32: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

32

F ابعي است كه در يك علامت نقل قول قرار گرفته، يا تابعي است كه با نام فايل تinline ايجـاد شـده اسـت . مـاتريس yشـود و خروجـي تعيـين مـي ode45 يك بردار ستوني بر حسب زمان است كه توسـط tخروجي

ode45ان دوم آرگوم ـ. باشند ها مي ها برابر با جواب و ستون tها مطابق زمان اي كه سطر ها است به گونه جواب .نمايد باشد كه زمان شروع و پايان را تعيين مي يك بردار دو عضوي مي

كند و مقدار متغير حالت در زمان فعلي، عمل مي Rung-Kutta بر اساس تابع صريح ode45تابع حلگر : نكته

حل بسياري از اين حلگر، حلگر مناسبي براي . توسط مقدار متغير حالت در گام زماني قبلي محاسبه مي شود وجـود دارد كـه هـر كـدام MATLABچند تابع حلگر معادله ديفرانسيل معمولي ديگـر در . باشد مسائل مي

بطـور مثـال حلگـر . ode23tb,ode23s,ode15s,ode113,ode23: فوايد خاص خـود را دارنـد كـه عبارتنـد از ode23 بر اساس تابع صريح Rung-Kutta باشد ولي نسبت به ميode45 تر بوده ولي دقت كمتري دارد سريع

شود يا دقت قابل اجرا نمي ode45كند و زماني كه بر اساس مشتق گيري عددي عمل مي ode15sو يا حلگر . استode45فرمت استفاده از اين توابع مانند . گيرد قبولي ندارد، مورد استفاده قرار مي

) معادلات :مثال )21 1 2 2

2 1

1x x x x

x x

⎧ = − −⎪⎨

=⎪⎩0ط اوليـه را با شراي [0 0.25]x در بـازه زمـاني بـا اسـتفاده از =

ode45حل كنيد . :يك فايل تابعي ايجاد كرده و دستورات زير را وارد كنيد

function xdot = eq2(t,x) xdot = zeros(2,1); xdot(1) = x(1).*(1-x(2).^2)-x(2); xdot(2) = x(1);

:ن وارد كنيددستورات زير را در پنجره فرامي>> x0 = [0 0.25]; >> [t,x] = ode45('eq2',[0 20],x0); >> plot(t,x)

0 2 4 6 8 10 12 14 16 18 20-3

-2

-1

0

1

2

3

t

x

x1(t)

x2(t)

Page 33: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

33

:تمرينات

از طرفي مـدت زمـان اجـراي برنامـه را . را از فرمول زير محاسبه كند πاي بنويسيد كه مقدار برنامه - 1 .بدست آوريد

( )3 5 7

arctan ...3 5 7

x x xx x= − + − +

)كه در صورتي - 2 )3

2tan3 tan 3 tan

R RR y yπ πν θθ θ

⎛ ⎞= − − −⎜ ⎟⎝ ⎠

y و θاي بنويسيد كه مقادير ، برنامه 1 را براي سه شعاع νرا از كاربر بگيرد و مقدار حجم 1,2,3R . محاسبه نمايد=

: را مستقيما از سري تيلور زير محاسبه كندxeتابع نمايي اي بنويسيد كه برنامه - 3

2 3

1 ...2! 3!

x x xe x= + + + + . باشد−610محاسبات زماني بايد متوقف شوند كه آخرين ترم كوچكتر از

)در صورتيكه - 4 ) ( )2 30.5x r at bt ctϕ = − + + ،0.93c = ،0.12b = − ،0.43a و =20.5

2

xerπ

=

1و 1 0.33

tx

=+

: در آن صورت

)تابعي بنويسيدكه • )xϕرا محاسبه كند . )مقدار • )1ϕدست آوريد را به. )اي ديگر با استفاده از تابع تعريف شده، نمودار هدر برنام • )xϕ 0 را در بازه 4x≤ بـا گـام ≥

. رسم كنيد0.1

:شوند اعداد فيبوناچي با استفاده از دنباله زير حاصل مي - 51,1, 2,3,5,8,13,...

1 را با استفاده از رابطه 20F تا 0Fيبوناچي مقادير اعداد ف 2n n nF F F− −= .دست آوريد به+

Page 34: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

34

Simulinkآشنايي با : فصل چهارم

ايجاد مدل در سيمولينكهـا بـراي سـاخت از آيكـون سيمولينك . شويد در اين بخش با محيط سيمولينك و ايجاد مدل در آن آشنا مي

هـاي در سيمولينك بجاي كدنويـسي، آيكـون . كند سازي آن استفاده مي بلوك نمودار يك پروسه، حل و شبيه سـمولينك ايـن امكـان را بـه كـاربر . نماييم تا بلوك نمودار مـدل شـكل بگيـرد مورد نياز را به هم متصل مي

افزاري مكررا در اين بسته نرم . ي معمولي را حل كند راحتي معادلات ديفرانسيل خطي و غيرخط دهد كه به ميهاي خطـي و غيرخطـي توان سيستم در اين بسته مي . گردد هاي كنترلي استفاده مي صنعت و طراحي سيستم

. سازي كرد صورت زمان پيوسته يا زمان گسسته و يا تركيبي از اين دو شبيه را به در نوار ابزار كليك كنيد يـا در پنجـره دسـتورات، Simulinkهاي سيمولينك روي آيكون براي مشاهده بلوك

Simulink هـاي كتابخانـه سـيمولينك داراي بلـوك . را تايپ كنيد تا پنجره كتابخانـه سـيمولينك بـاز شـود .مختلفي است كه در ادامه توضيح داده خواهند شد

راي اضـافه كـردن بلـوك بـه ب. را دنبال كنيد File>>New>>Modelبراي باز كردن يك پنجره جديد مسير

توان روي بلوك مورد نظـر كليـك البته مي. استفاده كردDrag and Dropتوان از روش سازي مي پنجره مدل . را انتخاب كرد تا بلوك در پنجره مدل ايجاد شودAdd to untitledراست كرده و گزينه

، لقـي )Saturation(ها مثل اشباع پيوستگيتوان بسياري از عوامل غير خطي و نا ها مي سازي سيستم در شبيه .را در نظر گرفت... و Dead Zone، هيسترزيس، )Back Lash(ها در چرخ دنده

گيري و محدود كردن سازي انتقال داده، سپس براي انتگرال را به صفحه مدل 1 موج سينوسي با دامنه :مثال

]خروجي در بازه ]0.5, 0.5− .هاي انتگرال گير و اشباع استفاده كنيد از بلوك+

:هاي مورد نظر را وارد پنجره مدل كنيد ابتدا از كتابخانه سيمولينك مسيرهاي زير را دنبال كنيد و بلوك تعداد مسير بلوك

simulink>>source>>sine wave1 simulink>>sinks>>scope 2 simulink>>continuous>>integrator 1 simulink>>discontinuities>>saturation1

زمان حل مسأله، در قسمت بالاي مدل زمان توقف براي تنظيم مدت . ها را مرتب كرده و بهم وصل كنيد بلوك

بعـد از . سازي آغاز شـود كليك كنيد تا شبيه Start Simulationروي دكمه . وارد كنيد15حل سيمولينك را كليك كرده، سپس در پنجره ظاهر شده در نوار scope1 و scopeهاي سازي روي هر يك از بلوك اتمام شبيه . كليك نماييد تا نتايج را مشاهده كنيدAutoscaleابزار روي

Page 35: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

35

MATLABهاي خروجي به فضاي كاري هاي مثلثاتي و توابع رياضي و انتقال داده آشنايي با بلوك

) مـوج :مثال ) ( ) ( ) ( ) 22sin 6 tan 2 cos 0.5y t t t t tπ π −= + − سـيمولينك ايجـاد كـرده، را در محـيط − . انتقال دهيدWorkspaceسپس مقادير ورودي و خروجي را به

:هاي مورد نظر را وارد پنجره مدل كنيد ابتدا از كتابخانه سيمولينك مسيرهاي زير را دنبال كرده و بلوك

تعداد مسير بلوك

simulink>>source>>clock3 simulink>>source>>constant 2 simulink>>sinks>>scope 1 simulink>>math operation>>gain 4 simulink>>math operation>>sum1 simulink>>math operation>>trigonometric function3 simulink>>math operation>>product1 simulink>>math operation>>math function1 simulink>>sinks>>to workspace1

. ها را مرتب كرده و بهم وصل كنيد بلوك

Page 36: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

36

ها تنظيمات بلوك

را انتخـاب rectangularگزينـه Icon shape دوبار كليك كرده و در پنجره بـاز شـده sumروي بلوك • هاي موجود در معادله موج تنظـيم –و + ها را با توجه به تعداد علامت list of signsدر قسمت . كنيد .اطراف بكشيد تا به اندازه مناسب درآيد را از sumسپس بوك . كنيد

. همان زمان اجراي سيمولينك استclockخروجي • دوبار Math Functionروي بلوك . شود براي ايجاد توابع رياضي استفاده ميMath Functionاز بلوك •

و ورودي دوم uورودي اول مقـدار . را انتخـاب كنيـد pow گزينـه functionكليك كرده و در قسمت . استvقدار مسـپس در قـسمت . دوبار كليـك كنيـد تـا پنجـره تنظيمـات ظـاهر شـود to workspaceروي بلوك •

variable name نام tبراي انتخاب نوع فرمـت ذخيـره شـدن، در قـسمت . را وارد كنيدsave format yمتغيـر را انجام دهيد و نام to workspace1همين كار را براي بلوك . را انتخاب كنيدArrayگزينه

.قرار دهيد

روش ديگـر . دوبار كليـك كنيـد scopeكليك كرده و سپس روي Start Simulationبراي اجراي مدل، روي .باشد در پنجره فرامين مي plot(t,y)براي مشاهده خروجي، تايپ دستور

و ايجاد ماسك) Subsustem(آشنايي با زير سيستم

Page 37: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

37

) سيگنال ميراي :مثال ) 0.75 sin 2.46

ty t e t π− ⎛ ⎞= −⎜ ⎟⎝ ⎠

source را توليد كرده، سپس از اين سيگنال بعنوان

dvuسازي سيستم براي شبيه bv mdt

− . استفاده كنيد=

)در ابتدا سيگنال ) 0.75 sin 2.46

ty t e t π− ⎛ ⎞= −⎜ ⎟⎝ ⎠

از براي اين كار پـس . سازيم را به عنوان ورودي سيستم مي :كنيم ل زير متصل ميها را مطابق شك ها، آن انتقال بلوك

را Create Subsystemها را انتخاب كرده و روي صفحه كليك راسـت كـرده و گزينـه سپس تمامي بلوكاز اين به بعد اين زير سيستم . شود قرار داده مي ) Subsystem(تمام مدل در يك زير سيستم . انتخاب كنيد

.شود به عنوان مدل شناخته مي . نماييم سازي مي ظر را بصورت زير در محيط سيمولينك شبيهدر ادامه سيستم مورد ن

ها تنظيمات بلوك

/1 دوبار كليك كرده و مقدار Gainروي • mرا وارد كنيد . .استفاده كنيد Ctrl+Rها از براي چرخاندن بلوك. را وارد كنيدb دوبار كليك كرده و مقدار Gain1روي •

Page 38: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

38

را Create Subsystemها را انتخاب كـرده و روي صـفحه كليـك راسـت كـرده و گزينـه مجددا تمامي بلوك . شود قرار داده مي) Subsystem(انتخاب كنيد تا تمام مدل در يك زير سيستم

.ها را مطابق شكل زير به هم متصل كنيد حال زير سيستم

startسپس دكمه . ثانيه قرار داده و مقادير زير را در پنجره دستورات وارد كنيد10سازي را برابر زمان شبيه

simulationسازي شروع شود را بزنيد تا شبيه. >>m=1; >>b=20;

)سيستم مرتبه دوم با تابع تبديل )2

2 22n

n n

G ss s

ωζω ω

=+ +

. را در نظر بگيريد

: داريمζبا توجه به مقدار . شود ناميده مي) Damping Ratio(بت ميرايي نسζدر اين رابطه 0ζاگر • .خواهد بود) Undamped System(، در آن صورت سيستم بدون ميرايي =0اگر • 1ζ< .خواهد بود) Underdampted System(، سيستم با ميرايي زير بحراني >1ζاگر • .خواهد بود) Critically Dampted System(، سيستم با ميرايي بحراني =1ζاگر • .خواهد بود) Overdampted System(، سيستم با ميرايي فوق بحراني <

ـ. سيستم مرتبه دوم بالا را در نظر بگيريـد :تمرين 10nωه ازاء ب ,0 و = 0.2,1,1.5ζ پاسـخ سيـستم بـه = .ورودي پله را در محيط سيمولينك بدست آوريد

:تمرينات تكميلي

.سازي نماييد زير را در سيمولينك شبيهVander Pol معادله ديفرانسيل -1

( )2

22

0

1 0

210,

2

d x dxk x xdt dt

k x

− − + =

−⎡ ⎤= = ⎢ ⎥

⎣ ⎦

.سازي كنيد اين سيستم را شبيه. ديفرانسيل خطي زير را در اختيار داريم سيستمي با معادلات-2

Page 39: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

39

( ) ( ) ( ) ( )

( ) ( ) ( ) ( )

11 1 1 0 10

22 1 2 2 0 20

1 2

, 20

, 0

5, 10

dx tk x t u t x t x

dtdx t

k x t x t x t xdt

k k

= − + = =

= − = =

= =

( )u t 2 و فركانس 50 سيگنال سينوسي با دامنه Hzاست . .سازي كنيد سيستم ديناميكي زير را بصورت عددي شبيه-3

( ) ( ) ( )

( ) ( ) ( ) ( ) ( ) ( )

12 1 0 10

2 21 1 2 1 2 1 2 2 0 20

1 2

1 2

1 2

,

,

: 1, 5: 1, 100: 0, 100

dx tx t x t x

dtdx t

x t k x t k k x t x t x t xdt

I k kII k kII k k

= =

= − + − =

= == == =

:شرايط اوليه برابر است با10

020

11

xx

x⎡ ⎤ ⎡ ⎤

= =⎢ ⎥ ⎢ ⎥−⎣ ⎦⎣ ⎦

Page 40: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

40

اميكي، مفهوم خطاي حالت ماندگارهاي دين سازي رياضي سيستم مدل: فصل پنجم

هاي كنترلي در حوزه زمان تعاريف معيارهاي عملكردي سيستم

)Maximum Overshoot(حداكثر جهش در واقع جهش . باشد سيستم كنترلي در حوزه زمان حداكثر جهش آن مي هاي عملكردي يك يكي از مشخصه

اگـر حـداكثر ميـزان خروجـي . گـردد بسيار زياد مطلوب نيست چون باعث كاهش ميزان پايداري سيستم مي )سيستم )C t از اعمال ورودي پله را با پسMaxC نشان دهيم و ssC نيز مقـدار حالـت مانـدگار آن بـوده و

Max ssC C≥كنيم باشد، آنگاه حداكثر جهش را بصورت زير تعريف مي: Maximum Overshoot P Max ssM C C= = −

در بسياري از موارد حداكثر جهش را به صورت درصدي از مقدار حالت مانـدگار پاسـخ پلـه سيـستم نمـايش .دهند مي

100%Max ss

ss

C CC−

= درصد حداکثر جهــش×

)در يك سيستم مرتبه دوم با تابع تبـديل )2

2 22n

n n

G ss s

ωζω ω

=+ +

مقـدار حـداكثر جهـش از رابطـه زيـر

:آيد بدست مي

21PM e

πζ

ζ−

−= : داريمζتوجه به مقدار با . شود ناميده مي) Damping Ratio( نسبت ميرايي ζدر اين رابطه

0ζاگر • .خواهد بود) Undamped System(، در آن صورت سيستم بدون ميرايي =0اگر • 1ζ< .خواهد بود) Underdampted System(، سيستم با ميرايي زير بحراني >1ζاگر • .خواهد بود) Critically Dampted System(، سيستم با ميرايي بحراني =1ζاگر • .خواهد بود) Overdampted System(، سيستم با ميرايي فوق بحراني <

10nωبـه ازاء . سيستم مرتبه دوم بالا را در نظر بگيريـد :تمرين ,0 و = 0.2,1,1.5ζ پاسـخ سيـستم بـه = .ورودي پله را در محيط سيمولينك بدست آوريد

زمان خيز بـه 5يـا از ( درصد 90 درصد به 10شود كه لازم است تا پاسخ از به زماني گفته مي) Rise Time(زمان خيز

تـا 0ي ضـعيف معمـولا از هاي با ميراي ـ براي سيستم . اش برسد مقدار نهايي ) درصد 100 به 0 درصد يا از 95تـوان بـا زمان خيز را مي . شود درصد استفاده مي 90 تا 10هاي با ميرايي شديد از درصد و براي سيستم 100

1.8رابطه r

n

. بدست آورد=

Page 41: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

41

زمان نشست مفـروض در شود كه طي آن، پاسخ سيستم به يك محدوده به زماني گفته مي) Settling Time(زمان نشست

ايـن محـدوده عمومـا بـر حـسب . از آن نيز در آن محـدوده بـاقي بمانـد اش برسد و پس نزديكي مقدار نهايي ، زمـان %2بـراي رسـيدن بـه محـدوده . شـود آن بيان مي %5 يا %2درصدي از مقدار نهايي پاسخ مانند

1 ( است3τ، برابر %5 و براي محدوده 4τنشست برابر

n

τζω

=(.

ي بلوكيسازي نمودارها ساده

)فرض كنيد تابع تبديل يك سيستم تحت كنترل ) 2

1500

G ss

ابع تبـديل كنتـرل كننـده بـه صـورت و ت=

( ) 12c

sG ss+

=+

تـوان ايـن دو مـي seriesبا استفاده از دستور . اند صورت سري با هم قرار گرفته باشد، كه به .دست آورد تابع تبديل را در هم ضرب نموده و يك سيستم معادل به

numg=[1]; deng=[500 0 0]; numh=[1 1]; denh=[1 2]; [num,den]=series(numg,deng,numh,denh); printsys(num,den)

>> num/den = s + 1 ------------------ 500 s^3 + 1000 s^2

)حال فرض كنيد دو تابع )1G s و ( )2G s رت تـابع تبـديل در آن صـو . اند به صورت موازي با هم قرار گرفته

:آيد دست مي صورت زير به سيستم معادل بهnumg=[1]; deng=[500 0 0]; numh=[1 1]; denh=[1 2]; [num,den]=parallel(numg,deng,numh,denh); printsys(num,den) >> num/den = 500 s^3 + 500 s^2 + s + 2 -------------------------- 500 s^3 + 1000 s^2

:تابع تبديل سيستم حلقه بسته برابر است با. سيستم با فيدبك واحد مثبت يا منفي زير را در نظر بگيريد

numg=[1];

Page 42: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

42

deng=[500 0 0]; numh=[1 1]; denh=[1 2]; [num1,den1]=series(numg,deng,numh,denh); [num,den]=cloop(num1,den1,-1); printsys(num,den) >> num/den = s + 1 --------------------------- 500 s^3 + 1000 s^2 + s + 1

)جاي فيدبك واحد، تابع تبديل حال به )H s در اين حالت تابع تبـديل سيـستم حلقـه بـسته . را قرار دهيد

:برابر خواهد بود باnumg=[1]; deng=[500 0 0]; numh=[1 1]; denh=[1 2]; [num,den]=feedback(numg,deng,numh,denh); printsys(num,den) >> num/den = s + 2 --------------------------- 500 s^3 + 1000 s^2 + s + 1

)اي زير، تابع تبديل سيستم حلقه بسته در سيستم چند حلقه :تمرين ) ( )

( )Y s

T sR s

در . دسـت آوريـد را به =

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

( ) ( ) ( ) ( )

( ) ( ) ( )

2

1 2 3 42

1 2 3

1 1 1 1, , ,10 1 4 4 61 , 2, 12

s sG s G s G s G ss s s s ssH s H s H ss

+ += = = =

+ + + + ++

= = =+

Page 43: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

43

: حل

clear all clc ng1 = [1]; dg1 = [1 10]; ng2 = [1]; dg2 = [1 1]; ng3 = [1 0 1]; dg3 = [1 4 4]; ng4 = [1 1]; dg4 = [1 6]; nh1 = [1 1]; dh1 = [1 2]; nh2 = [2]; dh2 = [1]; nh3 = [1]; dh3 = [1]; n1=conv(nh2,dg4); d1=conv(dh2,ng4); [n2a,d2a]=series(ng3,dg3,ng4,dg4); [n2,d2]=feedback(n2a,d2a,nh1,dh1,+1); [n3a,d3a]=series(ng2,dg2,n2,d2); [n3,d3]=feedback(n3a,d3a,n1,d1,-1);

( )R s ( )Y s +

-

- +

+

( )1G s ( )2G s ( )3G s ( )4G s

( )1H s

( ) ( )2 4H s G s

( )3H s

+

( )R s ( )Y s +

-

- +

+

( )1G s ( )2G s ( )3G s ( )4G s

( )1H s

( )2H s

( )3H s

+

Page 44: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

44

[n4,d4]=series(ng1,dg1,n3,d3); [num,den]=cloop(n4,d4,-1) printsys(num,den) t=0:0.01:8; [y,x,t]=step(num,den,t); plot(t,y) xlabel('Time (sec)') ylabel('Amplitude') >> num/den = s^5 + 4 s^4 + 6 s^3 + 6 s^2 + 5 s + 2 ---------------------------------------------------------------- 12 s^6 + 205 s^5 + 1066 s^4 + 2517 s^3 + 3128 s^2 + 2196 s + 712

خطاي حالت ماندگار

راي بيان مفهوم نوع سيستم، سـاختار ب. پردازيم مي نوع سيستم قبل از بررسي خطاي حالت ماندگار به بررسي فيدبك واحد نشان داده شده در شكل زير را در نظر گرفته و نوع سيستم را با توجه به تابع تبديل حلقـه بـاز

.كنند آن تعريف مي

( ) ( )( )

( )( )1 2

1 2N

K s z s zG s

s s p s p+ +

=+ +

K بهره سيستم و Nكند نوع سيستم را مشخص مي .

) اگر در بلوك دياگرام زير :تمرين ) ( )1

1G s

s s=

+) و ) 3

3H s

s=

+ باشد، نوع و مرتبه سيستم را تعيـين

.كنيد

:حل

( )E s ( )C s

( )R s +

-

( )G s

( )H s

( )C s ( )E s

( )R s +

-

( )G s

Page 45: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

45

( )( )

( )( ) ( )

( )( )

( )( )

( )( ) ( ) ( )

( ) ( ) ( )

3 2

2

31 4 3 3

31 4 2

eqeq

eq

C s G s A ssR s G s H s s s s B s

G sA s A s sG sB s G s B s A s s s s

+= = =

+ + + +

+= ⇒ = =

+ − + +

.يك و از مرتبه سوم استبنابراين سيستم نوع

با فرمول زير به راحتي مي توان تابع تبديل حلقه باز معادل را از روي سيـستم فيـدبك غيرواحـد بـالا :نكته .دست آوريم به

تابع تبديل حلقه باز معادل ( )( ) ( )

=1 1

G sG s H s+ −⎡ ⎤⎣ ⎦

هاي نوع صفر سيستم)م كه در آن نوع صفر به صورت زير داري2فرض كنيد يك سيستم مرتبه )G sبرابر است با :

( ) ( )( )1

2 3G s

s s=

+ +

ورودي پله .ترين نوع ورودي است اين ورودي ساده

0( )

0 0R t

u tt≥⎧

= ⎨ <⎩

num = 1; den = conv([1 2],[1 3]); sys = tf(num,den); sys_cl = feedback(sys,1); [y,t] = step(sys_cl); u = ones(size(t)); plot(t,y,'r',t,u,'b') axis([0,3,0,1.1]) xlabel('Time(secs)') ylabel('Amplitude') title('Input-blue, Output-red')

Page 46: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

46

0 0.5 1 1.5 2 2.5 30

0.2

0.4

0.6

0.8

1

Time(secs)

Am

plitu

de

Input-blue, Output-red

.براي اين مثال مقدار خطاي ماندگار ثابت است

ورودي شيب0

( )0 0

Rt tu t

t≥⎧

= ⎨ <⎩

num = 1; den = conv([1 2],[1 3]); sys = tf(num,den); sys_cl = feedback(sys,1); t = 0:0.1:200; u = t; [y,t,x] = lsim(sys_cl,u,t); plot(t,y,'r',t,u,'b')

0 50 100 150 2000

50

100

150

200

Time(secs)

Am

plitu

de

Input-blue, Output-red

.نهايت است در اين مثال، خطاي حالت ماندگار برابر بي

هاي نوع يك سيستم) نوع يك، تابع تبديل 3 در يك سيستم مرتبه :تمرين )G sشود بصورت زير تعريف مي:

Page 47: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

47

( ) ( )( )1

2 3G s

s s s=

+ +

.پاسخ سيستم را به ورودي پله واحد و شيب واحد رسم كنيد

Page 48: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

48

هاي كنترلي با استفاده از تاثير مكان هندسي و تحليل سيستمPIDطراحي كنترلر : فصل ششم ها ريشه

PID طراحي كنترلر -1

:ا در نظر بگيريددر اين قسمت سيستم فيدبك واحد زير ر

:باشد به صورت زير ميPIDتابع تبديل كنترلر

2I D P I

P DK K s K s KK K ss s

+ ++ + =

نـشان دهنـده eمتغيـر . بهره مشتق گير مي باشد DKنتگرالي و ، بهره ا IK، بهره تناسبي، PKكه در آن . شود ناشي مي Y و خروجي واقعي سيستم يعني Rخطاي ردگيري است كه از اختلاف بين ورودي مطلوب

شود و كنترلر، انتگرال و مشتق خطـاي ورودي را محاسـبه كـرده و در مي PIDخطا وارد كنترلر اين سيگنال :آيد بصورت زير بدست ميuنهايت خروجي

P D Ideu K e K K edtdt

= + + ∫

D و P ،Iهاي خصوصيات كنترل كنندهكند ولي آن را حـذف زمان خيز را كاهش داده و خطاي حالت ماندگار را كم مي ) PK(كنترل كننده تناسبي

كند ولي ممكن اسـت پاسـخ حالـت خطاي حالت ماندگار را حذف مي ) IK(كنترل كننده انتگرالي . كند نميي سيـستم را افـزايش داده، مقـدار جهـش را كـاهش پايـدار ) DK(كنترل كننده مـشتقي . گذرا را بدتر كند

.كند دهد و پاسخ گذرا را بهتر مي مي

:كنيد هاي تناسبي، مشتق گير و انتگرال گير را در جدول زير مشاهده مي تاثير هر يك از كنترل كننده خطاي حالت ماندگار زمان نشست جهش زمان خيز نوع كنترلر هشكا تغيير اندك افزايش كاهش تناسبي حذف افزايش افزايش كاهش گير انتگرال تغيير اندك كاهش تغيير اندك تغيير اندك گير مشتق

، به يكديگر وابسته هـستند PK و IK ،DKچون اين مقادير . توجه كنيد كه اين روابط كاملا دقيق نيستند

.گذارد تغيير يكي از اين متغيرها روي دو متغير ديگر تاثير مي

Page 49: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

49

: يك جرم و فنر و دمپر ساده را در نظر بگيريد:مثال

:شود سازي معادله زير حاصل مي بعد از مدل

Mx bx kx F+ + = :پس از گرفتن تبديل لاپلاس داريم

( ) ( ) ( ) ( )2. . .Ms x s bs x s k x s F s+ + = )تابع تبديل بين ورودي )F s و جابجايي ( )x sبرابر است با :

( )( ) 2

1x sF s Ms bs k

=+ +

:گيريم مقادير زير را براي پارامترها در نظر مي1, 1, 10, 20F M b k= = = =

هدف از اين مسئله آن است كه كنترلي طراحي كنيم كه زمان خيز سـريع، حـداقل جهـش و خطـاي حالـت .ماندگار صفر داشته باشيم

پاسخ پله سيستم حلقه باز

.كنيم در ابتدا پاسخ پله سيستم حلقه باز را بررسي ميnum = 1; den = [1 10 20]; step(num,den)

.شود رنامه نمودار زير حاصل ميبعد از اجراي ب

Page 50: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

50

%95 است يعني مقدار خطـاي حالـت مانـدگار برابـر 0.05مقدار نهايي خروجي سيستم به ورودي پله برابر

. ثانيه است1.5 ثانيه و زمان نشست حدود 1زمان خيز حدود . بوده و اين مقدار بسيار زياد است

بينيم كه كنترلر تناسبي مقدار زمان خيز و زمان نشست را كـاهش از جدول بالا مي :كنترل كننده تناسبي :باشد تابع تبديل سيستم با كنترلر تناسبي به صورت زير مي. دهد افزايش ميدهد ولي مقدار جهش را مي

( )( ) ( )2 10 20

P

P

x s KF s s s K

=+ + +

.دهيم قرار مي300مقدار بهره تناسبي را برابر Kp = 300; num = [Kp]; den = [1 10 20+Kp]; t = 0:0.01:2; step(num,den,t)

:شود بالا نمودار زير حاصل ميبا اجراي برنامه

Page 51: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

51

از روي نمودار مشخص است كه بهره تناسبي باعث كاهش زمان خيز و خطاي حالـت مانـدگار شـده و مقـدار . جهش نيز افزايش پيدا كرده است

بينـيم از جدول بالا مـي . پردازيم مي PD حال به بررسي كنترل كننده :ير و تناسبي گ كنترل كننده مشتق تابع تبديل سيستم حلقه بسته با . دهد مقدار جهش و زمان نشست را كاهش مي ) DK(كه كنترلر مشتق گير

:باشد به صورت زير ميPDكنترلر ( )( ) ( ) ( )2 10 20

D P

D P

x s K s KF s s K s K

+=

+ + + +

,300دهيم يقرار م 10P DK K= پـس دسـتورات زيـر را وارد . كنيم و خروجي كنترل شده را مشاهده مي = :كنيد

Kp = 300; Kd = 10; num = [Kd Kp]; den = [1 10+Kd 20+Kp]; t = 0:0.01:2; step(num,den,t)

دهـد مقدار زمان جهش را كاهش مي IKبينيم كه از جدول بالا مي :گير و تناسبي كنترل كننده انتگرال بـراي سيـستم . كند خطاي حالت ماندگار را نيز حذف مي. دهد ولي مقدار جهش و زمان نشست را افزايش مي

: بسته به صورت زير مي باشدداده شده تابع تبديل حلقه( )( ) ( )3 210 20

P I

P I

x s K s KF s s s K s K

+=

+ + + +

,30اجازه بدهيد كه قرار دهيم 70P IK K= پس دسـتورات زيـر . و خروجي كنترل شده را مشاهده كنيم = :را وارد كنيد

Kp = 30;

Page 52: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

52

Ki = 70; num = [Kp Ki]; den = [1 10 20+Kp Ki]; t = 0:0.01:2; step(num,den,t)

گير گير و تناسبي و مشتق كنترل كننده انتگرال

تابع تبديل سيستم حلقـه بـسته بـا كنتـرل كننـده . بپردازيم PIDحال اجازه بدهيد به بررسي كنترل كننده PIDباشد به صورت زير مي:

( )( ) ( ) ( )

2

3 210 20D P I

D P I

x s K s K s KF s s K s K s K

+ +=

+ + + + +

,350بعد از چند بار سعي و خطا و انتخاب مقادير 50, 300P D IK K K= = .رسيم ، به پاسخ دلخواه مي=

Kp=350; Ki=300; Kd=50; num=[Kd Kp Ki]; den=[1 10+Kd 20+Kp Ki]; t=0:0.01:2; step(num,den,t)

Page 53: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

53

ها ترسيم مكان هندسي ريشه-2

اگـر سيـستم . هاي حلقه بـسته آن بـستگي دارد رفتار حالت گذراي يك سيستم حلقه بسته به موقعيت قطب هاي حلقـه بـسته بـا تغييـر ايـن بهـره يك بهره متغير و قابل تنظيم داشته باشد در آن صورت موقعيت قطب

هاي حلقه بسته با تغيير بهره بنابراين در طراحي سيستم كنترل بايد از روند تغييرات قطب . يير خواهد كرد تغتوان معادله مشخصه سيستم حلقه بسته را حـل هاي حلقه بسته مي براي تعيين قطب . آن اطلاع داشته باشيم

.كرد

ها تعريف مكان هندسي ريشهنهايـت از صفر تا بـي ) بهره كنترلي (Kيستم كنترل، وقتي پارامتر هاي معادله مشخصه يك س به محل ريشه

.شود هاي آن گفته مي كند، مكان هندسي ريشه تغيير مي

:لا برابر است باتابع تبديل سيستم حلقه بسته با

( )( )

( )( )

.1 .

Y s k H sR s k H s

=+

)هـا، هاي سيستم حلقه بسته مقاديري هستند كه با ازاي آن بنابراين قطب )1 . 0k H s+ حـال اگـر . شـود =

( ) ( )( )

b sH s

a s :توان به فرم زير نوشت ، معادله بالا را مي=

( )( ) ( ) ( )1 0 . 0

b sk a s k b s

a s+ = ⇒ + =

Page 54: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

54

) مرتبه n كه فرض كنيد )a s و m مرتبه ( )b s تمام مقادير مثبت . باشدK اگـر . گيـريم را در نظـر مـي0K )ه بسته برابر هاي حلق ، در آن صورت قطب → ) 0a s )هاي يا قطب = )H s است و اگر K ، در ∞→

)هاي حلقه بسته برابر آن صورت قطب ) 0b s ) يا صفرهاي = )H sباشد مي.

ي يك تابع تبديلها برا رسم مكان هندسي ريشه :فرض كنيد تابع تبديل يك سيستم حلقه باز به صورت زير باشد

( ) ( )( )( )

75 15 20

sH ss s s s

+=

+ + +

. ثانيه باشد1كمتر از ) rise time( و زمان خيز %5هدف ما از اين طراحي آن است كه جهش كمتر از :ها را رسم كنيد و مكان هندسي ريشه دستورات زير را وارد نموده m-fileدر يك

num = [1 7]; den = conv(conv([1 0],[1 5]),conv([1 15],[1 20])); sys = tf(num,den); rlocus(sys) axis([-22 3 -15 15])

ها روي مكان هندسي ريشه از Kانتخاب اكنـون بايـد . دهـد را نشان مـي Kهاي حلقه بسته با بهره تناسبي هاي ممكن براي قطب نمودار بالا موقعيت

كـه بـه دو sgridتوانيم با استفاده از دستور ما مي . ها قابل پذيرش است تعيين كنيم كدام قسمت مكان ريشه .هاي مطلوب را تعيين كنيم نياز دارد موقعيت قطبζ و nωآرگومان

و nω مقادير فركانس طبيعـي ميـرا نـشده %5اي و مقدار جهش ثانيه1در اين مساله با توجه به زمان خيز :آوريم دست مي را بهζنسبت ميرايي

Page 55: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

55

21

1.8 1 1.8

0.05 0.707

r nn

p

T

M eπζ

ζ

ωω

ζ−

= = ⇒ =

= = ⇒ =

:در ادامه دستورات زير را وارد كنيد

zeta = 0.7; Wn = 1.8; sgrid(zeta,Wn)

ايـن دو خـط چـين نـشان . اند درجه رسم شده 45شود كه با زاويه خط چين صاف ديده مي در شكل بالا دو 0.707ζهـا برابـر هايي هستند كه نسبت ميرايي آن دهنده قطب در بـين ايـن دو خـط چـين . باشـد مـي =

0.707ζهايي با قطب 0.707ζ و در خارج اين دو خط چين < بايد %5پس براي جهش كمتر از . است >0.707ζ . يعني بين دو خط باشيم<

1.8nωهايي با فركـانس طبيعـي نيم دايره رسم شده نيز موقعيت قطب داخـل دايـره . دهـد را نـشان مـي =1.8nω 1.8nω و خارج دايره > هـاي خـارج دايـره را ثانيه بايد قطـب 1براي زمان خيز كمتر از . باشد مي <

1.8nωانتخاب كنيم پس >. ده از توانيد با اسـتفا شما مي . ها را به منطقه دلخواه بكشاند در اين نمونه انتظار داريم كه كنترلر تناسبي قطب

خواهيـد در نمودار حاصل در جايي كليـك كنيـد كـه مـي . قطب دلخواهتان را انتخاب كنيد rlocfindدستور .ها در آن نقطه قرار بگيرند قطب

Page 56: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

56

[k,poles] = rlocfind(sys) k = 567.2830 poles = -22.8215 -11.1290 -3.0248 + 2.5467i -3.0248 - 2.5467i

پاسخ حلقه بستهبراي . براي پيدا كردن پاسخ سيستم حلقه بسته بايد تابع تبديل سيستم حلقه بسته را در اختيار داشته باشيم

. سپس پاسخ سيستم حلقه بسته به ورودي پله را حساب كنيد.كنيم استفاده مي feedbackاين كار از دستور sys_cl = feedback(k*sys,1); step(sys_cl)

Page 57: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

57

)pole-zero cancellation(حذف قطب و صفر شـود، در سـمت راسـت محـور قطب، كه باعث ناپايدار شـدن سيـستم مـي وقتي سيستم حلقه باز يك سري

شود، يك ايده براي حل اين مـشكل آن اسـت كـه يكـسري موهومي دارد كه باعث ناپايدار شدن سيستم مي ولي اين روش اساسا اشـتباه . هاي ناپايدار را حذف كند ها قرار دهيم تا قطب صفر درست در همان محل قطب

كند و يك قـسمت ها را حذف نمي شود، دقيقا قطب جاست كه وقتي صفر به سيستم اضافه مي مساله اين .استشود كه سيـستم حلقـه بـسته بنابراين باعث مي . افتد دام مي ها در نيم صفحه راست به از مكان هندسي ريشه

. ناپايدار گردد

: فرض كنيد تابع تبديل سيستم حلقه باز به صورت زير باشد:مثال( ) 2

13 2 1

G ss s

=+ −

num = 1; den = [3 2 -1]; rlocus(num,den)

از روي شكل مشخص است كه يك قطب سمت راست . هاي اين سيستم به صورت زير خواهد بود مكان ريشه اي كه قطب هنوز در سمت راسـت باشـد، سيـستم حلقـه محور موهومي قرار گرفته است و با انتخاب هر بهره

ببينيم سيستم چگونه با . توانيم سيستم را پايدار كنيم ولي با انتخاب درست بهره مي . اهد بود بسته ناپايدار خو .گردد حذف صفر و قطب پايدار مي

Page 58: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

58

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4-0.4

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

0.4Root Locus

Real Axis

Imag

inar

y A

xis

m-fileپس دستورات زير را به ادامـه . است 0.3از روي نمودار بالا مشخص است كه قطب ناپايدار در حوالي

:اضافه كنيدzero = -0.3; numOL = conv(num,[1 zero]); denOL = den; [numOL,denOL] = cloop(numOL,denOL); figure, rlocus(numOL,denOL)

-3 -2.5 -2 -1.5 -1 -0.5 0 0.5-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1Root Locus

Real Axis

Imag

inar

y A

xis

حال ببينيم پاسخ حلقه بسته بـه . از مكان هندسي بالا مشخص است كه قطب ناپايدار تقريبا حذف شده است

: اضافه كنيدm-fileپس دستورات زير را به ادامه . چه صورت مي باشدt = 0:0.01:100; figure, step(numOL,denOL,t)

Page 59: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

59

0 10 20 30 40 50 60 70 80 90 1000

0.5

1

1.5

2

2.5

3x 10

12 Step Response

Time (sec)

Am

plitu

de

سيستم هنوز ناپايدار است كه دليل اين امر آن است كه صفر اضافه شده دقيقا قطب ناپايدار را حـذف نكـرده

بع توانيم صفر را دقيقا روي قطب قرار دهيم و سيستم را به اين طريـق پايـدار كنـيم؟ از روي تـا آيا مي . است/1بينيم كه قطب دقيقا در تبديل سيستم حلقه باز مي /1حال اگـر صـفر را در . است 3 قـرار دهـيم چـه 3

: نوشته شده، تغييرات زير را اعمال كنيدm-fileافتد؟ پس در اتفاقي ميzero = -1/3;

-3.5 -3 -2.5 -2 -1.5 -1 -0.5 0 0.5-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1Root Locus

Real Axis

Imag

inar

y A

xis

حال بايـد . بينيم كه صفر دقيقا روي قطب قرار گرفته است دسي ريشه مي با اجراي برنامه و مشاهده مكان هن

:صورت زير است پاسخ پله سيستم به. سيستم حلقه بسته را بررسي كنيم كه آيا پايدار است يا خير

Page 60: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

60

0 10 20 30 40 50 60 70 80 90 1000

0.1

0.2

0.3

0.4

0.5

0.6

0.7Step Response

Time (sec)

Am

plitu

de

رود با اينكه معادله مـا ظـاهرا شود سيستم هنوز ناپايدار بوده و به سمت بينهايت مي همانطور كه مشاهده مي

.ايدار استپ

Page 61: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

61

هاي كنترلي در فضاي حالت و ديجيتال طراحي و تحليل سيستم: فصل هفتم هاي كنترل در فضاي حالت تحليل و طراحي سيستم-3-1

اي از معادلات ديفرانسيل خطي يـا غيـر هاي ديناميكي پيوسته معمولا به دسته سازي بسياري از سيستم مدل .شود خطي منجر مي

معادله مرتبه اول كه در مجموع nتوان معادلات حاصل را به صورت هاي خطي سازي مي پس از اعمال روش . خواهند بود تبديل كردnبيانگر رفتار يك سيستم مرتبه

.نامند مي) state-space(ها را روش فضاي حالت اين نحوه نمايش سيستم( ) ( ) ( )( ) ( ) ( )

x t Ax t Bu t

y t Cx t Du t

= +

= +

( )x t1ر يك برداn . موسوم به بردار حالت سيستم است ×( )u t يك بردار mها است بعدي نمايش دهنده ورودي. ( )y t يك بردار lتم است بعدي است كه نمايش دهنده خروجي سيس.

هاي حلقـه بـسته، يعنـي يابي به موقعيت مطلوب قطب هاي كنترلي در فضاي حالت، دست در طراحي سيستم

در سيستم حلقه بسته، ايـن امكـان را Aهاي معادله مشخصه و يا به عبارت ديگر مقادير ويژه ماتريس ريشههاي طراحي و عملكرد را در حـد مناسـبي طراحي كرد كه خواسته هايي را دهد كه بسادگي بتوان سيستم مي

.ارضا نمايد

)maglev(توپ مغناطيسي معلق : مثال

2 2

2

Ki d hF Ma Mg Mh dt

diV L iRdt

= ⇒ − =

= +

Page 62: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

62

h :موقعيت عمودي i :جريان عبوري از آهنرباي الكتريكي

V :ولتاژ اعمالي M :جرم توپ g :گرانش L :اندوكتانس R :مقاومت K :كند بي است كه نيروي مغناطيسي اعمالي به توپ را تعيين ميضري.

:گيريم مقادير زير را براي اين پارامترها در نظر مي

20.05 , 0.0001, 0.01 , 1 , 9.81 mM Kg K L H R gs

= = = = Ω =

:، پس)توپ به صورت معلق است(سيستم در حالت تعادل است 02 2 2

2

dhdtKi d h KiMg M h

h dt Mg

=

− = → =

0.01hمعادلات را حول نقطه m= كنيم و معادلات فضاي حالت را آمپر است خطي مي7 كه جريان عبوري . آوريم به دست مي

x ولتاژ ورودي و V خروجي، hدر اين سيستم، h h i⎡ ⎤= ⎣ .باشند متغيرهاي حالت سيستم مي⎦( ) ( ) ( )( ) ( ) ( )

x t Ax t Bu t

y t Cx t Du t

= +

= +

:باشند به صورت زير ميA,B,C,Dهاي كه در آن ماتريس

[ ] [ ]0 1 0 0

980 0 2.8 , 0 , 1 0 0 , 00 0 100 100

A B C D⎡ ⎤ ⎡ ⎤⎢ ⎥ ⎢ ⎥= − = = =⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥−⎣ ⎦ ⎣ ⎦

.هاي سيستم را پيدا كنيم ، يعني همان قطبAاولين كاري كه بايد انجام دهيم اين است كه مقادير ماتريس :شوند هاي فضاي حالت و تابع تبديل به صورت زير به هم مربوط مي نمايش

( ) ( ) 1G s C sI A B D−= − + sIمخرج معادله بالا برابر A− مقـادير ويـژه . گوينـد است كه اين معادله را معادلـه مشخـصه سيـستم مـي

0sIسيستم يا صفرهاي معادله مشخصه از رابطه A− .آيند دست مي به=>> poles=eig(A) poles = 31.3050 -31.3050 -100.0000

Page 63: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

63

توان نتايج پايداري را مي. را تعيين كردAتوان مقادير ويژه براي بررسي پايداري سيستم در فضاي حالت مي :به صورت زير خلاصه نمود

. همگي منفي باشند، سيستم پايدار استAاگر قسمت حقيقي مقادير ويژه حراني است، يعني پاسخ سيـستم نوسـانات موهومي محض باشند، سيستم پايدار ب Aاگر مقادير ويژه

تـوان در اين حالت در مورد پايداري سيستم غير خطي اصـلي چيـزي نمـي . (سينوسي غير ميرا دارد .)گفت

موهومي محض و در يك نقطه بر روي محور موهومي قرار داشته باشـند، سيـستم Aاگر چند قطب .ناپايدار است

.وهومي باشد، سيستم ناپايدار استها در سمت راست محور م اگر يكي از قطب

بـاز ها در سمت راست محور موهومي قرار گرفتـه اسـت، بنـابراين سيـستم حلقـه در مثال فوق، يكي از قطب .ناپايدار است

پـذيري و رويـت پـذيري اگر بخواهيم از فيدبك حالت براي پايدار سازي سيستم استفاده كنيم، بايـد كنتـرل .سيستم را بررسي كنيم

پذيري و رويت پذيري سيستم سي كنترلبرر

) گوينـد، اگـر سـيگنال كنترلـي پـذير كنتـرل سيـستمي را : تعريف )u t در بـازه زمـاني دلخـواه و محـدود [ ]0 1,t t t∈ وجود داشته باشد بنحوي كه سيستم مورد نظر تحت اين ورودي، از حالت اوليـه ( )0x t بـه هـر

)حالت مطلوب )1x tسير نمايد .

بسته كامل بـراي دنبال آن كنترل حلقه باز كامل و به اگر شرط كنترل پذيري وجود نداشته باشد، كنترل حلقه .سيستم تحت كنترل ممكن نخواهد بود

ــه ــذيري ب ــرل پ ــاتريس كنت ــورت م 2ص nC B AB A B A B⎡ ⎤= ⎣ ــي …⎦ ــف م ــرط تعري ــود و ش ش

. باشدA، يعني برابر با بعد ماتريس nپذيري سيستم آن است كه مرتبه اين سيستم بايد كنترل

.هاي مستقل خطي آن ماتريس است مرتبه يك ماتريس بيانگر تعداد سطرها و يا ستون

در دسـت داشـتن مقـادير گويند كه بتوان بردار شرايط اوليه سيستم را با پذير مي سيستمي را رؤيت : تعريف]ورودي و خروجي آن در يك بازه زماني دلخواه و محدود ]0 1,t t t∈صورت يكتا بدست آورد به.

2ماتريس رويت پذيري نيز به صورت 1 TnO C CA CA CA −⎡ ⎤= ⎣ .شود تعريف مي…⎦ . باشدAرابر با بعد ماتريس ، يعني بnپذيري سيستم آن است كه مرتبه اين ماتريس بايد شرط رؤيت

Page 64: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

64

.شوند پذيري استفاده مي پذيري و رؤيت دستورات زير براي تست كنترل

>> co=ctrb(A,B); >> ob=obsv(A,C); >> Controllability=rank(co) Controllability = 3 >> Observability=rank(ob) Observability = 3

است، بنـابراين سيـستم 3، يعني Aپذيري برابر با بعد ماتريس پذيري و رؤيت رلهاي كنت چون مرتبه ماتريس .باشد پذير مي پذير و رؤيت كنترل

)pole placement(طراحي كنترل كننده با استفاده از روش جايابي قطب

ختار سـا . خواهيم براي سيستم مثال قبل يك كنترل كننده بر اساس فيدبك حالت طراحي كنيم در اينجا مي .دهد زير يك سيستم كنترل حلقه بسته با فيدبك مستقيم تمام متغيرهاي حالت سيستم را نشان مي

) را بهره كنترلي ناميده و معادله مشخصه سيستم حلقه بسته از رابطـه kپارامتر )sI A BK− دسـت بـه − .آيد مي

هـاي توانيم قطـب ودن يك سيستم، با استفاده از فيدبك تمامي متغيرهاي حالت، مي در صورت كنترل پذير ب . قرار دهيمsاي از صفحه حلقه بسته را در هر نقطه

عي پـس بايـد س ـ . باشـد %5 ثانيه و جهش كمتـر از 0.5خواهيم زمان نشست كمتر از براي سيستم بالا مي 10ها را در كنيم قطب 10 j− ±) 0.7ξ . قرار دهيم−50و قطب سوم را در مكاني نسبتا دورتر مثلا در ) =

p1 = -10 + 10j; p2 = -10 - 10j; p3 = -50; k = place(A,B,[p1 p2 p3]); t = 0:0.01:2; u = 0*t; x0 = [0.005 0 0]; lsim(A-B*k,B,C,0,u,t,x0)

+

-

x Ax Buy Cx= +=

K

R y

x

u

Page 65: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

65

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-1

0

1

2

3

4

5

6

7x 10

-3 Linear Simulation Results

Time (sec)

Am

plitu

de

). شـود تعدادي صفر در تابع تبديل وجود دارد كه باعث افزايش جهش مي (مقدار جهش تا حدودي زياد است

.ها را بيشتر به سمت راست بكشيد تا پاسخ بهبود يابد قطبp1 = -20 + 20j; p2 = -20 - 20j; p3 = -100; k = place(A,B,[p1 p2 p3]); figure lsim(A-B*k,B,C,0,u,t,x0)

Page 66: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

66

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-1

0

1

2

3

4

5

6x 10

-3 Linear Simulation Results

Time (sec)

Am

plitu

de

ــه : نكتـ استفاده كرد و بايـد placeتوان از دستور اگر بخواهيد دو يا چند قطب را در يك محل يكسان قرار دهيد، نمي

. استفاده كنيدackerاز دستور K = acker (A, B, [p1 p2 p3])

اعمال ورودي مرجعكنـيم كـه يك مقدار كوچك به ورودي پله اعمال مـي (كنيم مي به سيستم كنترلي بالا يك ورودي پله اعمال

.) سازي معتبر است باقي بماند اي كه خطي در محدودهu = 0.001*ones(size(t)); figure lsim(A-B*k,B,C,0,u,t)

Page 67: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

67

0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8-4

-3.5

-3

-2.5

-2

-1.5

-1

-0.5

0

0.5x 10-6 Linear Simulation Results

Time (sec)

Am

plitu

de

شـود و پاسـخ حالـت دائـم آن در طراحي كنترلر به روش جايابي قطب تنها پاسخ گذراي سيستم تنظيم مـي

.شود يتنظيم نمدر عـوض . دليل اين امر آن است كه در ساختار كنترلي فوق، خروجي سيستم با ورودي مرجع مقايسه نـشده

. ضرب شد و نتيجه حاصل با مقدار مرجع مقايسه گرديدKگيري گرديد و در بردار ها اندازه تمام حالت Rبرابر مقدار مطلوب yار خروجي هيچ دليلي وجود ندارد كه انتظار داشته باشيم كه در حالت ماندگار، مقد

. باشدبراي جبران اين مساله بايد ورودي را بطور مناسبي مقياس بندي كنيم تا خروجي حاصل برابر ورودي مرجـع

. شود

Nbar = rscale(A,B,C,0,k) figure lsim(A-B*k,B*Nbar,C,0,u,t) Nbar = -285.7143

+

-

x Ax Buy Cx= +=

K

N R y

x

u

Page 68: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

68

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 20

0.2

0.4

0.6

0.8

1

1.2x 10

-3 Linear Simulation Results

Time (sec)

Am

plitu

de

:صورت زير بنويسيد بهm-file اول بايد تابع آن را در يك rscale براي استفاده از دستور :توجه

function [Nbar] = rscale(A,B,C,D,K) s = size(A,1); z = [zeros([1,s]) 1]; N = inv([A,B;C,D])*z'; Nx = N(1:s); Nu = N(1+s); Nbar = Nu + K*Nx;

كنترل ديجيتال-3-2

هاي زمان پيوسته به زمان گسسته تبديل سيستم:C2DMدستور

[Ad,Bd,Cd,Dd] = C2DM(A,B,C,D,Ts,'method')

، به يك سيستم زمان گسسته 'method' را با استفاده از روش ذكر شده در (A,B,C,D)سيستم پيوسته زمان .كند تبديل مي

'method'واند يكي از عبارات زير باشدت مي: 'zoh' :دار مرتبه صفر با فرض وجود يك نگه)zero order hold (كند ، سيستم را گسسته ميها در ورودي. 'foh' :دار مرتبه يك با فرض وجود يك نگه)first order hold (كند ، سيستم را گسسته ميها در ورودي.

'tustin' : با استفاده از تقريب دوخطي)Tustin يا bilinear (كند براي مشتق سيستم را گسسته مي. 'prewarp' : با استفاده از تقريب دوخطي)Tustin يا bilinear (تاب دادن فركانـسي با پيش)frequency

prewarping (فركانس گوشـه . كند سيستم را گسسته مي)critical frequency يـا corner ftrequency ( بـا :گردد ين مييك آرگومان اضافي تعي

C2DM(A,B,C,D,Ts,'prewarp',Wc)

Page 69: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

69

'matched' :صـفر تطبيـق يافتـه -با استفاده از روش قطب)pole-zero matching ( يـك سيـستمSISO را .نمايد گسسته مي

[NUMd,DENd] = C2DM(NUM,DEN,Ts,'method')

'method'ز روش ذكر شده در را با استفاده اG(s) = NUM(s)/DEN(s)سيستم پيوسته زماني با تابع تبديل

.كند تبديل ميG(z) = NUMd(z)/DENd(z)به يك سيستم گسسته زمان با تابع تبديل

:مثال :صورت زير در نظر بگيريد تابع تبديل يك سيستم پيوسته را به

( )( ) 2

1X sF s Ms bs k

=+ +

1كه , 10 / , 20 /M kg b N s m k N m= = ⋅ .باشد مي=1ا برابر ما زمان نمونه برداري ر sec

100sT وارد m-fileحـال دسـتورات زيـر را در يـك . گيـريم در نظر مي = :كنيد

M=1;b=10;k=20; num=[1]; den=[M b k]; Ts=1/100; [numDz,denDz] = c2dm(num,den,Ts,'zoh')

numDz = 1.0e-004 * 0 0.4837 0.4678 denDz = 1.0000 -1.9029 0.9048

:باشد اين تابع به صورت زير مي. آيد پس از اجراي برنامه، تابع تبديل پالسي سيستم به دست مي

( )( )

( )2

0.0001 0.4837 0.46781.902 0.9048

X z zF z z z

+=

− +

:مثال

:فرض كنيد كه مدل فضاي حالت يك سيستم پيوسته به صورت زير باشد

[ ]

1 1

2 2

1

2

0 1 01

1 0

x xFk bx x

M M Mx

yx

⎡ ⎤ ⎡ ⎤⎡ ⎤ ⎡ ⎤⎢ ⎥ ⎢ ⎥= +− −⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥⎣ ⎦ ⎣ ⎦⎣ ⎦ ⎣ ⎦⎡ ⎤

= ⎢ ⎥⎣ ⎦

: وارد كنيدm-fileدستورات زير را در يك

Page 70: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

70

m=1; b=10;k=20; A=[0 1; -k/m -b/m]; B=[0;1/m]; C=[1 0]; D=0; Ts=1/100; [F,G,H,J]=c2dm(A,B,C,D,Ts,'zoh')

:آيد دست مي بعد از اجراي برنامه، مدل فضاي حالت گسسته به صورت زير به( )( )

( )( ) ( )

( ) [ ] ( )( )

1 1

2 2

1

2

10.999 0.0095 01

10.1903 0.9039 0.0095

1 0

x k x kF k

x k x k

x ky k

x k

−⎡ ⎤ ⎡ ⎤⎡ ⎤ ⎡ ⎤= + −⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥−−⎣ ⎦ ⎣ ⎦⎣ ⎦ ⎣ ⎦

⎡ ⎤= ⎢ ⎥

⎣ ⎦

Page 71: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

71

)Cruise Control(سيستم تثبيت سرعت خودرو : تمفصل هش سازي مدل -1- 1

پوشي كنـيم و ها چشم اگر در اين مساله از اينرسي چرخ . باشد سازي سيستم كنترل كروز بسيار ساده مي مدلشـود، در آن صـورت اعمال مـي mفرض كنيم كه اصطكاك با سرعت رابطه مستقيم داشته و به بدنه با جرم

.شود مساله به سيستم جرم و دمپر تبديل مي

:توانيم به صورت زير بنويسيم هاي سيستم را مي اساس قانون نيوتن معادلهبر

F mv u bv mv

mv bv uy v

′ ′= ⇒ − =

′ + =⎧⎨ =⎩

:فرض كنيد. باشد خروجي سيستم ميy نيروي موتور و uدر اين معادلات، m=1000kg u=500N b=50Nsec/m

:تابع تبديل سيستم( ) ( ) ( )

( ) ( ) ( ) ( ) ( ) ( )( )

1msV s bV s U s Y smsY s bY s U s

Y s V s U s ms b+ =⎧⎪ ⇒ + = ⇒ =⎨ = +⎪⎩

:مدل فضاي حالت سيستم

[ ]

1

1

bv v ux Ax Bum m

y Cxy v

⎧ ⎡ ⎤ ⎡ ⎤′ = − += +⎧ ⎪ ⎢ ⎥ ⎢ ⎥⇒ ⎣ ⎦ ⎣ ⎦⎨ ⎨=⎩ ⎪ =⎩

:قيدهاي حاكم بر طراحيشرايطي داشته باشد، يعني قيـدهاي حـاكم قدم بعدي اين است كه بدانيم اين سيستم قرار است در انتها چه

.بر سيستم بايد مشخص شوند . باشد10m/s است، حداكثر سرعت بايد 500Nنيروي موتور وقتي كه ثانيه شتاب بگيرد و به اين سرعت برسد، پس زمان خيـز 5جسم متحرك بايد قادر باشد در كمتر از

)rise time ( ثانيه باشد5بايد كمتر از . .كند آسيب جدي به سيستم اعمال نمي%10حدود ) overshoot(تم جهش در اين سيس . خطاي حالت دائم براي اين سيستم قابل قبول است%2حدود

Page 72: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

72

پاسخ سيستم حلقه باز وارد m-fileدسـتورات زيـر را در يـك . بهتر است ابتدا پاسخ سيستم حلقه باز را به ورودي پله بررسي كنـيم

:كنيد %========== Open loop system =========== m=1000;b=50;u=500; num=[1]; den=[m b]; sys=tf(num,den); step(u*sys) ylabel('Velocity m/s'),xlabel('Time sec') title('Step Response of Original Plant')

د و ايـن موضـوع، رس مي 10m/s ثانيه به سرعت 120از روي شكل مشخص است كه جسم متحرك در مدت .كند ثانيه بودن زمان خيز را برآورده نمي5معيار كمتر از

PIDطراحي كنترلر -2- 1

دانـيم تـابع تبـديل مـي . ده شـده اسـت نمودار بلوكي سيستم كنترلي با فيدبك واحد در شكل زير نمايش دا : به صورت زير استPIDكنترلر

2

PID Controller: I D P IP D

k k s k s kK k ss s

+ ++ + =

زمان خيز را كاهش داد، بنـابراين ابتـدا توان به ياد داريم كه با افزايش بهره تناسبي مي PIDاز مبحث كنترل

تابع تبديل سيستم حلقه بسته با كنترلر تناسـبي بـه صـورت زيـر بدسـت . دهيم يك كنترلر تناسبي قرار مي :آيد مي

Page 73: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

73

( )( ) ( )1 1

P

P

P P

kY s kG ms b

kU s GH ms b kms b

+= = =+ + ++

+

200Pkدر معادله بالا مقدار : اضافه كنيدm-file قرار داده و دستورات زير را به ادامه =kp=200; u=10; num1=[kp]; den1=[m b+kp]; t=0:0.1:20; figure sys2=tf(num1,den1); step(u*sys2) axis([0 20 0 10])

0 2 4 6 8 10 12 14 16 18 200

1

2

3

4

5

6

7

8

9

10Step Response

Time (sec)

Am

plitu

de

از روي شكل مشخص است كه خروجي حاضر دوباره معيارهاي طراحي مثل زمان خيز و خطاي حالت دائم را

.كند برآورده نميباز استفاده توان به طور مستقيم از تابع تبديل سيستم حلقه باز مي سخ سيستم حلقه براي پيدا كردن پا :توجه .دهد اين كار را انجام ميcloopدستور . كرد

kp=200; num=[1]; den=[m b]; [numc,denc]=cloop(kp*num,den,-1); % Calculate close loop response t=0:0.1:20; sys3=tf(numc,denc); figure(3) step(u*sys3) axis([0 20 0 10])

اسـتفاده Iبراي حذف خطاي حالـت دائـم از كنترلـر انتگرالـي . در هر دو صورت به يك جواب خواهيم رسيد :به صورت زير خواهد بود) PI(انتگرالي -تابع تبديل سيستم با كنترلر تناسبي. كنيم مي

( )( ) ( )21

1

IP

P I

I P IP

kks

Y s k s kG ms bkU s GH ms b k s kks

ms b

+

++= = =+ + + ++

++

Page 74: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

74

,800و تناسبي با تنظيم بهره انتگرالي 40P Ik k= .آيد دست مي معيارهاي طراحي مورد نياز به=kp=800; ki=40; num3=[kp ki]; den3=[m b+kp ki]; sys3=tf(num3,den3); figure(4) step(u*sys3); axis([0 20 0 11])

0 2 4 6 8 10 12 14 16 18 200

1

2

3

4

5

6

7

8

9

10

11Step Response

Time (sec)

Am

plitu

de

ن تمرين تابع تبديل سيستم حلقـه باشد ولي به عنوا نمي PIDدر اين مثال خاص نيازي به استفاده از كنترلر

.آوريم را نيز بدست ميPIDبسته با كنترلر

( )( ) ( ) ( )

2

211

IP D

P P I

I D P IP D

kk k ss

Y s k s k s kG ms bkU s GH m k s b k s kk k ss

ms b

+ +

+ ++= = =+ + + + ++ +

++

%========== PID Design =========== kp=600; ki=30; kd=10; num4=[kd kp ki]; den4=[m+kd b+kp ki]; sys4=tf(num4,den4); figure(5) step(u*sys4); axis([0 20 0 11])

Page 75: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

75

0 2 4 6 8 10 12 14 16 18 200

1

2

3

4

5

6

7

8

9

10

11Step Response

Time (sec)

Am

plitu

de

)Root Locus (ها رسم مكان هندسي ريشه -3- 1دانـيم همانطور كه مـي . ها انجام دهيم خواهيم مساله كنترل كروز را با استفاده از مكان هندسي ريشه حال مي

. دهـد كند، نشان مـي از صفر تا بينهايت تغيير مي kها را، وقتي كه بهره ها موقعيت قطب مكان هندسي ريشه براي حل اين مساله در نظر گرفته، پس تابع تبديل سيستم حلقـه بـسته را pKنترلر تناسبي بنابراين يك ك

:آوريم دست مي به صورت زير به( )( ) ( )

p

p

KY sU s ms b K

=+ +

كه مقادير در ابتدا نياز داريم . ها را رسم كرد توان مكان هندسي ريشه مي sgrid و rlocusبا استفاده از دستور

nω و ζ 21هـاي تـوانيم از فرمـول هـا مـي براي بدست آوردن آن . مشخص شوندpM e

πξ

ξ−

1.8 و =−n

rtω =

0.6ξبنابراين بايد . استفاده كنيم 0.36nω و %10 تا جهش كمتر از < ثانيـه 5 تا زمـان خيـز كمتـر از < : اضافه كنيدm-fileها فرامين زير را به ادامه حال براي رسم مكان هندسي ريشه. گردد

m=1000;b=50;u=10; numo=[1]; deno=[m b]; figure(1) axis([-0.6 0 -0.6 0.6]); rlocus(numo,deno); sgrid(0.6, 0.36) % Generate s-plane grid of axis([-.5 0 -1 1]) [kp,poles]=rlocfind(numo,deno) figure(2) numc=[kp]; denc=[m (b+kp)]; t=0:0.1:20; step(u*numc,denc,t) axis([0 20 0 10])

.شود با اجراي دستورات، خروجي زير حاصل مي

Page 76: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

76

-0.5 -0.45 -0.4 -0.35 -0.3 -0.25 -0.2 -0.15 -0.1 -0.05 0-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

0.6

0.6

0.36

0.36

Root Locus

Real Axis

Imag

inar

y A

xis

0.6ξابت ميرايي چين، نشان دهنده مكان ث خط بين دو 0.6اي كه ضريب ميرايي بيشتر از است، به گونه =بيـضي نيـز نـشان دهنـده فركـانس نـيم . گيـرد خارج اين دو خط قرار مي 0.6خط و ضريب ميرايي كمتر از

0.36طبيعي ثابت / secn radω خـارج نـيم بيـضي و 0.36اي كه فركانس طبيعي بيشتر از است به گونه = .گيرد داخل بيضي قرار مي0.36فركانس طبيعي كمتر از . كليك كنيد−0.4ها روي روي مكان هندسي ريشه

0 2 4 6 8 10 12 14 16 18 200

1

2

3

4

5

6

7

8

9

10Step Response

Time (sec)

Am

plitu

de

selected_point = -0.3999 + 0.0031i kp = 349.8953 poles = -0.3999

Page 77: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

77

lagبراي حل اين مشكل از كنترلر . است %10همانطور كه از شكل مشخص است، خطاي حالت دائم حدود .كنيم استفاده مي

Lagطراحي كنترلر

صـورت زيـر بـه lagتـابع تبـديل . كنـيم اسـتفاده مـي lagساز براي كاهش خطاي حالت دائم از يك جبران :باشد مي

( ) 0

0C

s zG ss p+

=+

:باشد صورت زير مي بهKpتابع تبديل سيستم حلقه باز بدون ( ) ( )( )

0

0OL

s zG sms b s p

+=

+ +

:آيد نيز به صورت زير بدست ميKpتابع تبديل سيستم حلقه بسته با فيدبك واحد با بهره

( ) ( )( )

02

0 0 0

pCL

p p

K s zG s

ms b mp K s bp K z+

=+ + + + +

هـا بـه سـمت نـيم باعث كشيده شدن مكان هندسي ريشه lagجبران كننده . است 0p بزرگتر از 0zبزرگي

.گردد صفحه راست مي0اجازه بدهيد كه 0.03p = 0 و − 0.3z = m-file ادامـه، دسـتورات زيـر را بـه ادامـه در. را انتخاب كنيم −

. را روي محور حقيقي انتخاب كنيد−0.4بعد از اجراي برنامه نقطه . اضافه كنيد

m=1000;b=50;u=10; Z0=0.3; P0=0.03; numo=[1 Z0]; deno=[m b+m*P0 b*P0]; figure(1) hold on axis([-0.6 0 -0.4 0.4]); rlocus(numo,deno); sgrid(0.6, 0.36) % Generate s-plane grid of [Kp,poles]=rlocfind(numo,deno) figure(2) numc=[kp kp*Z0]; denc=[m b+m*P0+Kp b*P0+Kp*Z0]; t=0:0.1:20; step(u*numc,denc,t) axis([0 20 0 12])

Page 78: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

78

-0.5 -0.4 -0.3 -0.2 -0.1 0-0.4

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

0.4

0.6

0.6

0.36

Root Locus

Real Axis

Imag

inar

y A

xis

.آيد دست مي و جواب مطلوب بهشود كه خطاي حالت دائم برابر صفر بوده پاسخ زير حاصل مي

0 2 4 6 8 10 12 14 16 18 200

2

4

6

8

10

12Step Response

Time (sec)

Am

plitu

de

Page 79: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

79

DCكنترل سرعت موتور : پروژه اول

سازي سيستم بر اساس اصول فيزيكي و استخراج معادلات سيستم مدلباشد كه به طـور مـستقيم حركـت دورانـي و مي DCهاي كنترلي، موتور هاي رايج در سيستم يكي از محرك

مربـوط free body diagramدار الكتريكي آرميچر و نمودار م. كند طور غير مستقيم حركت خطي توليد مي به .به روتور در شكل زير نمايش داده شده است

:كنند را به دو طريق كنترل ميdcموتورهاي armature control :شود وقتي سرعت توسط ولتاژ آرميچر كنترل مي. field control : وقتي سرعت از طريق ميدانfieldرايج نيست چون حساسيت كمي (شود كنترل مي

).دارد

:armatureسازي كنترل موتور از طريق جريان مدل

( ) ( ) ( ) ( )( ) ( )( ) ( ) ( )( ) ( )

2

aa a a aa a a

a ba b

a aa a a

di V s RI s LsI s E sv Ri L Edt E s K sE K K

T s Js s bs sT J b J bT s K I sT K i K i

ωφω ωθ θθ θ ω ω

φ

⎧ = + +⎧= + +⎪ ⎪⎪ =⎪⎪ = = ⇒⎨ ⎨

= +⎪ ⎪= + = +⎪ ⎪ =′ ⎩= =⎪⎩

avولتاژ آرميچر : ورودي θسرعت شفت : خروجي

aE :back EMF

اين مقـادير از يـك . ايم براي اين مسأله فرض كنيد مقادير زير را براي پارامترهاي فيزيكي موتور انتخاب كرده .اند آزمايش واقعي استخراج شده

: ممان اينرسي روتور2

20.01kg mJs⋅

=

Page 80: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

80

0.1b: ضريب ميرايي سيستم مكانيكي Nm s= ⋅ 1R: آرميچرمقاومت الكتريكي = Ω

0.5L: آرميچراندوكتانس الكتريكي H= 0.01

0.01

a

b

N mKAmp

V sKrad

⋅=

⋅=

تابع تبديل سيستم

.شوند سيستم شرايط اوليه صفر در نظر گرفته ميتوجه كنيد براي بدست آوردن تابع تبديل ( ) ( ) ( ) ( )

( ) ( ) ( )

( ) ( ) ( ) ( ) ( )

( )( ) ( )( )

2

2

a b a a

a a

a ba

a

a a b

V s K s s RI s Ls I s

K I s Js s bs s

Js s bs sV s K s s R Ls

Ks K

V s K K Js b Ls R

θ

θ θ

θ θθ

ω

− ⋅ ⋅ = + ⋅⎧⎪⎨

= +⎪⎩+

⇒ − = +

⇒ =+ + +

مدل فضاي حالت سيستم

بنـابراين . را به عنوان متغيرهـاي حالـت در نظـر بگيريـد ميچررآدر اين مسأله سرعت دوراني روتور و جريان :صورت زير نوشت توان به معادله بالا را مي

[ ]

01

1 0

a

aba a

a

Kbd J J V

Kdt Ri iLL L

i

θ θ

θθ

−⎡ ⎤ ⎡ ⎤⎢ ⎥⎡ ⎤ ⎡ ⎤ ⎢ ⎥= +⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ ⎥− −⎢ ⎥⎣ ⎦ ⎣ ⎦ ⎣ ⎦⎢ ⎥⎣ ⎦⎡ ⎤

= ⎢ ⎥⎣ ⎦

يك سيستم درجـه اول باشد 0L اگر . يك سيستم درجه دوم است dcشود كه يك موتور ديده مي :نكته

دليـل سـريع بـودن آن صـرفنظر شـده خواهيم داشت، كه در اين صورت اصطلاحا از ثابت زماني الكتريكي به .است

قيدهاي حاكم بر طراحي

چه شرايطي را داشـته باشـد، ين سيستم آن است كه بدانيم اين سيستم قرار است سازي ا قدم بعدي در مدل .يعني قيدهاي حاكم بر سيستم بايد مشخص شود

Page 81: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

81

را براي آن %1از آنجايي كه سيستم قرار است با سرعت مشخص بچرخد پس خطاي حالت ماندگار .گيريم در نظر مي

.Settling time<2s: ثانيه باشد پس2ندگار بايد زمان رسيدن به سرعت ما شود پس مقـدار حـداكثر جهـش از آنجايي كه سرعت بيش از اندازه باعث خراب شدن تجهيزات مي

.گيريم در نظر مي%5سرعت را برابر

اين پروژهاهداف PIDطراحي كنترلر )Root Locus(ها رسم مكان هندسي ريشه پاسخ فركانسي طراحي فضاي حالت طراحي كنترلر ديجيتال simulink در محيط Lagطراحي جبران كننده

Page 82: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

82

DCكنترل موقعيت موتور : پروژه دوم

سازي سيستم بر اساس اصول فيزيكي و استخراج معادلات سيستم مدل

:armatureسازي كنترل موتور از طريق جريان مدل

( ) ( ) ( ) ( )( ) ( )( ) ( ) ( )( ) ( )

2

aa a a aa a a

a ba b

a aa a a

di V s RI s LsI s E sv Ri L Edt E s K sE K K

T s Js s bs sT J b J bT s K I sT K i K i

ωφω ωθ θθ θ ω ω

φ

⎧ = + +⎧= + +⎪ ⎪⎪ =⎪⎪ = = ⇒⎨ ⎨

= +⎪ ⎪= + = +⎪ ⎪ =′ ⎩= =⎪⎩

avولتاژ آرميچر : ورودي θ شفت موقعيت: خروجي

aE :back EMF

اين مقـادير از يـك . ايم أله فرض كنيد مقادير زير را براي پارامترهاي فيزيكي موتور انتخاب كرده براي اين مس .اند آزمايش واقعي استخراج شده

: ممان اينرسي روتور2

623.228 10 kg mJ

s− ⋅

= × 63.5: ضريب ميرايي سيستم مكانيكي 10b Nm s−= × ⋅

4R: مقاومت الكتريكي آرميچر = Ω 62.75: اندوكتانس الكتريكي آرميچر 10L H−= ×

Page 83: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

83

0.0274

0.0274

a

b

N mKAmp

V sKrad

⋅=

⋅=

تابع تبديل سيستم

.شوند توجه كنيد براي بدست آوردن تابع تبديل سيستم شرايط اوليه صفر در نظر گرفته مي( ) ( ) ( ) ( )

( ) ( ) ( )

( ) ( ) ( ) ( ) ( )

( )( ) ( )( )( )( ) ( )( )( )

2

2

a b a a

a a

a ba

a

a a b

a

a a b

V s K s s RI s Ls I s

K I s Js s bs s

Js s bs sV s K s s R Ls

Ks K

V s K K Js b Ls R

s KV s s K K Js b Ls R

θ

θ θ

θ θθ

ω

θ

− ⋅ ⋅ = + ⋅⎧⎪⎨

= +⎪⎩+

⇒ − = +

⇒ =+ + +

⇒ =+ + +

مدل فضاي حالت سيستم

. سرعت دوراني روتور و جريان آرميچر را به عنوان متغيرهاي حالت در نظـر بگيريـد ، موقعيت و ن مسأله در اي :صورت زير نوشت توان به بنابراين معادله بالا را مي

( ) ( ) ( )( ) ( ) ( )

[ ]

0 1 0 00 0

10

1 0 0

aa

a ab

a

Kd b Vdt J J

i ix t Ax t Bu t K RLy t Cx t Du t L L

i

θ θθ θ

θθ θ

⎧ ⎡ ⎤ ⎡ ⎤⎪ ⎢ ⎥ ⎢ ⎥⎡ ⎤ ⎡ ⎤⎪ ⎢ ⎥ ⎢ ⎥−⎢ ⎥ ⎢ ⎥⎪ ⎢ ⎥= + ⎢ ⎥⎢ ⎥ ⎢ ⎥⎪ ⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥⎪= +⎧ ⎢ ⎥⎪ ⎣ ⎦ ⎣ ⎦− − ⎢ ⎥⇒⎨ ⎨ ⎢ ⎥ ⎣ ⎦= +⎪⎩ ⎪ ⎣ ⎦⎪ ⎡ ⎤⎪ ⎢ ⎥⎪ = ⎢ ⎥⎪ ⎢ ⎥⎣ ⎦⎩

قيدهاي حاكم بر طراحي

ست چه شرايطي را داشـته باشـد، سازي اين سيستم آن است كه بدانيم اين سيستم قرار ا قدم بعدي در مدل خواهيم موتور بـا دقـت زيـاد در يـك براي اين سيستم مي.يعني قيدهاي حاكم بر سيستم بايد مشخص شود

: بايد1radموقعيت مشخص قرار بگيرد، بنابراين براي ورودي .خطاي حالت ماندگار سيستم برابر صفر باشد ميلـي 40 كمتر از رسيدن به سرعت ماندگار بايد زمانموتور به سرعت به موقعيت نهايي برسد، پس

.Settling time<40msec: ثانيه باشد پس

Page 84: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

84

.Overshoot<16%: باشد %16كمتر از مقدار جهش

اهداف اين پروژه PIDطراحي كنترلر )Root Locus(ها رسم مكان هندسي ريشه پاسخ فركانسي طراحي فضاي حالت رلر ديجيتالطراحي كنت simulink در محيط Lagطراحي جبران كننده

Page 85: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

85

سيستم كنترل موقعيت گوي بر روي ميله: سومپروژه سازي مدل

توپ در راستاي ميلـه يـك درجـه آزادي دارد و در ايـن راسـتا .در شكل زير توپي روي ميله قرار گرفته است ل و از انتهاي ديگر به يك چرخ دنـده سـرو متـصل يك بازوي اهرمي از يك انتها به ميله متص . تواند بغلتد مي

وقتـي ميلـه از . كنـد تغيير مـي αچرخد زاويه ميله به اندازه مي θدنده سرو به اندازه وقتي چرخ . شده است هدف اين پـروژه . مت پايين بلغزد شود توپ در راستاي ميله به س شود، گرانش باعث مي حالت افقي خارج مي

.اين است كه براي اين سيستم كنترلري طراحي كنيم كه موقعيت توپ قابل كنترل باشد

توان از غلتد و هيچگونه لغزشي وجود ندارد و مي ه مي در اين مسأله فرض بر اين است كه توپ در راستاي ميل

.اصطكاك بين توپ و ميله صرفنظر كرد :كنيم پارامترهاي اين سيستم را بصورت زير تعريف مي

M mass of the ball 0.11 kg R radius of the ball 0.015 m d lever arm offset 0.03 m g gravitational acceleration 9.8 m/s^2 L length of the beam 1.0 m J ball's moment of inertia 9.99e-6 kgm^2r ball position coordinate alpha beam angle coordinate theta servo gear angle

توان به صورت زير بيـان يموقعيت توپ را م . دست آورد صورت زير به توان به معادلات ديناميكي سيستم را مي

).دستگاه مختصاتي در بالاي ميله قرار گرفته است(كرد cos cos sinsin sin cos

x r x r ry r y r r

α α α αα α α α

= − = − +⎧ ⎧⇒⎨ ⎨= − = − −⎩ ⎩

:برابر است باسرعت توپ و انرژي جنبشي

Page 86: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

86

( )

( )( )

22 2 2 2

2222 2 21 1 1 12 2 2 2

V x y r r

rT mV J m r r JR

α

ω α

= + = +

⎛ ⎞= + = + + ⎜ ⎟⎝ ⎠

:انرژي پتانسيل سيستم برابر است باsinU mgr α= −

:م عبارتست ازبنابراين تابع لاگرانژ سيست

( )( )22221 1 sin

2 2

0

rLagrange L T U U m r r J mgrR

d L Ldt r r

α α⎛ ⎞= = − = = + + +⎜ ⎟⎝ ⎠

∂ ∂⎛ ⎞ − =⎜ ⎟∂ ∂⎝ ⎠

22

2

sin 0

sin 0

Jm r mr mgR

d l

J d dm r mr mgR l l

α α

θ α

θ θ

⎧⎛ ⎞+ − + =⎪⎜ ⎟⎝ ⎠⎨⎪ ⋅ = ⋅⎩⎛ ⎞ ⎛ ⎞ ⎛ ⎞+ − + =⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠

0α(با محاسبه ماتريس ژاكوبين در نقطه كاري :، معادلات خطي شده به صورت زير نوشته خواهد شد)=

2

J dm r mgR L

θ⎛ ⎞+ = −⎜ ⎟⎝ ⎠

تابع تبديل سيستم

( ) ( )

( )( )

22

2

2

1

J dm R s s mg sR L

R s mgdJs sL m

R

θ

θ

⎛ ⎞+ ⋅ = −⎜ ⎟⎝ ⎠

= −⎛ ⎞+⎜ ⎟⎝ ⎠

.گير دارد شود كه سيستم دوتا انتگرال با توجه به معادله بالا ديده مي

مدل فضاي حالت سيستم را بـه عنـوان متغيرهـاي r و rدر ايـن مـسأله . توان به فرم فضاي حالت نوشـت معادلات خطي شده را مي

:، بنابراين داريمگيريم را به عنوان ورودي در نظر ميθحالت و

[ ]

2

00 10 0

1 0

r r mgdr r JL m

Rr

yr

θ

⎧ ⎡ ⎤⎪ ⎢ ⎥⎡ ⎤ ⎡ ⎤ ⎡ ⎤⎪ ⎢ ⎥= +⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎪ ⎛ ⎞⎢ ⎥⎣ ⎦ ⎣ ⎦ ⎣ ⎦ +⎜ ⎟⎨ ⎢ ⎥⎝ ⎠⎣ ⎦⎪⎪ ⎡ ⎤

=⎪ ⎢ ⎥⎣ ⎦⎩

Page 87: MATLAB راﺰﻓامﺮﻧ ﺎﺑ ﻲﻳﺎﻨﺷآeee.sutech.ac.ir/sites/eee.sutech.ac.ir/files/groups/...نﺎﻳداﮋﻧيﺮﻔﺻ زوﺮﻬﺑ لﺮﺘﻨﻛ رد نآ دﺮﺑرﺎﻛ

نژاديان بهروز صفري و كاربرد آن در كنترل MATLABافزار آشنايي با نرم

87

,توان مدل ديگري تعريف نموده، به هر حال براي اين سيستم مي , ,r r α α را بـه عنـوان متغيرهـاي حالـت . استفاده نمودuمعرفي كرد و براي كنترل اين سيستم از گشتاور

[ ]

2

0 1 0 00

0 0 000

0 0 0 0 10 0 0 0

1 0 0 0

r rmgr rJL m uR

rr

y

α αα α

αα

⎧ ⎡ ⎤⎪ ⎢ ⎥⎡ ⎤ ⎡ ⎤ ⎡ ⎤−⎪ ⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎪ ⎛ ⎞⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ ⎥+= +⎜ ⎟⎪ ⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎝ ⎠⎪ ⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎪ ⎢ ⎥⎪⎣ ⎦ ⎣ ⎦ ⎣ ⎦

⎢ ⎥⎨ ⎣ ⎦⎪⎪ ⎡ ⎤⎪ ⎢ ⎥⎪ ⎢ ⎥=⎪ ⎢ ⎥⎪ ⎢ ⎥⎪ ⎣ ⎦⎩

قيدهاي حاكم بر طراحي

. ثانيه3زمان نشست كمتر از .%5مقدار جهش كمتر از

اهداف اين پروژه

PIDطراحي كنترلر )Root Locus(ها رسم مكان هندسي ريشه پاسخ فركانسي طراحي فضاي حالت كنترلر ديجيتالطراحي simulink در محيط Lagطراحي جبران كننده