《控制工程基礎-控制系統的計算機仿真.ppt》由會員分享,可在線閱讀,更多相關《控制工程基礎-控制系統的計算機仿真.ppt(48頁珍藏版)》請在裝配圖網上搜索。
1、2020/7/4,第七章控制系統的綜合與校正,1,控制工程基礎,第十章Matlab軟件工具在控制系統分析和綜合中的應用主講人:趙治國副教授,2020/7/4,第七章控制系統的綜合與校正,2,主要內容,Matlab基本特點控制系統在Matlab中的描述進行部分分式展開控制系統的時間響應分析控制系統的頻域響應分析控制系統的根軌跡圖系統穩(wěn)定性分析Simulink仿真工具,2020/7/4,第七章控制系統的綜合與校正,3,Matlab基本特點(1),Matlab簡介:1980年前后,美國moler博士構思并開發(fā);最初的matlab版本是用fortran語言編寫,現在的版本用c語言改寫;1992年推出了
2、具有劃時代意義的matlab4.0版本;并于1993年推出了其windows平臺下的微機版,現在比較新的版本是7.1版,2020/7/4,第七章控制系統的綜合與校正,4,Matlab基本特點(2),Matlab以復數矩陣為最基本的運算單元,既可以對它整體地進行處理,也可以對它的某個或某些元素進行單獨地處理。在Matlab中,數據的存儲/輸入/輸出都是以矩陣為基礎的,矩陣和其它變量不需要預先定義。Matlab語言最基本的賦值語句結構為變量名列表=表達式,2020/7/4,第七章控制系統的綜合與校正,5,matlab基本特點(3),等號右邊的表達式可以由分號結束,也可以由逗號或換行結束,但它們的含
3、義是不同的。如果用分號結束,則左邊的變量結果將不在屏幕上顯示出來,否則將把左邊返回矩陣的內容全部顯示出來。如A=1,0,1;1,0,0;2,1,0;B=1,0,2;2,1,1;1,0,1B=102211101,2020/7/4,第七章控制系統的綜合與校正,6,matlab基本特點(4),在Matlab下,矩陣A和矩陣B的乘積(假定其中A,B矩陣是可乘的)可以簡單地由運算C=A*B求出C=A*BC=203102415,2020/7/4,第七章控制系統的綜合與校正,7,而D=A.*B稱點乘積運算,即表示A和B矩陣的相應元素之間直接進行乘法運算,然后將結果賦給D矩陣,點乘積運算要求A和B矩陣的維數相
4、同。D=A.*BD=102200200,matlab基本特點(5),Matlab下提供了兩種文件格式:m文件,matlab函數M文件是普通的ascii碼構成的文件,在這樣的文件中只有由matlab語言所支持的語句,類似于dos下的批處理文件,它的執(zhí)行方式很簡單,用戶只需在matlab的提示符下鍵入該m文件的文件名,這樣matlab就會自動執(zhí)行該m文件中的各條語句。它采用文本方式,編程效率高,可讀性很強。Matlab函數是最常用的特殊m文件,這樣的函數是由function語句引導,其基本格式如下Function返回變量列表=函數名(輸入變量列表)注釋說明語句段函數體語句調用時在matlab的提示
5、符下鍵入函數名,并包括輸入變量。類似于c語言的子程序調用。如Functionplot_sin(xmin,xmax)X=xmin:min(0.01,(xmax-xmin)/100):xmax;Plot(x,sin(x));%Thisisademo,2020/7/4,第七章控制系統的綜合與校正,9,控制系統在Matlab中的描述,要分析系統,首先需要能夠描述這個系統。例如用傳遞函數的形式描述系統,在matlab中,用num=b1,b2,,bm,bm1和den=a1,a2,,an,an1分別表示分子和分母多項式系數,然后利用下面的語句就可以表示這個系統sys=tf(num,den)其中tf()代表傳
6、遞函數的形式描述系統,還可以用零極點形式來描述,語句為sys1=zpk(sys)而且傳遞函數形式和零極點形式之間可以相互轉化,語句為z,p,k=tf2zp(num,den)num,den=zp2tf(z,p,k)當傳遞函數復雜時,應用多項式乘法函數conv()等實現。例如den1=1,2,2den2=2,3,3,2den=conv(den1,den2),2020/7/4,第七章控制系統的綜合與校正,11,進行部分分式展開(1),對于下列傳遞函數,2020/7/4,第七章控制系統的綜合與校正,12,num和den分別表示傳遞函數的分子和分母的系數,即numbo,bl,,bnden1,al.,an
7、命令r,p,kresidue(num,den)將求出傳遞函數的部分分式展開式中的留數、極點和余項,即得到,進行部分分式展開(2),例:對于下列系統傳遞函數分子分母表示為num0,1,3den1,3,2采用命令r,p,kresidue(num,den)得到r,p,kresidue(num,den)r2000010000p100002.0000k即,反之,利用下列命令num,denresidue(r,p,k)可以將部分分式展開式返回到傳遞函數多項式之比的形式,即得到num,denresidue(r,p,k)num0.00001.00003.0000den=1.00003.00002.0000,當包
8、含m重極點時,部分分式展開式將包括下列m項:,例對于下列系統傳遞函數分子分母表示為num0,1,2,3den1,3,3,1采用命令r,p,kresidue(num,den),得到num0123;den1331;r,p,kresidue(num,den)r1.00000.00002.0000p1.00001.0000l.0000k即,2020/7/4,第七章控制系統的綜合與校正,17,線性系統的時間響應分析(1),Matlab的Control工具箱提供了很多線性系統在特定輸入下仿真的函數,例如連續(xù)時間系統在階躍輸入激勵下的仿真函數step(),脈沖激勵下的仿真函數impulse()及任意輸入激勵
9、下的仿真函數lsim()等,其中階躍響應函數step()的調用格式為y,x=step(sys,t)或y,x=step(sys)其中sys可以由tf()或zpk()函數得到,t為選定的仿真時間向量,如果不加t,仿真時間范圍自動選擇。此函數只返回仿真數據而不在屏幕上畫仿真圖形,返回值y為系統在各個仿真時刻的輸出所組成的矩陣,而x為自動選擇的狀態(tài)變量的時間響應數據。如果用戶對具體的響應數值不感興趣,而只想繪制出系統的階躍響應曲線,則可以由如下的格式調用step(sys,t)或step(sys),2020/7/4,第七章控制系統的綜合與校正,18,線性系統的時間響應分析(2),求取脈沖響應的函數imp
10、ulse()和step()函數的調用格式完全一致,而任意輸入下的仿真函數lsim()的調用格式稍有不同,因為在此函數的調用時還應該給出一個輸入表向量,該函數的調用格式為y,x=lsim(sys,u,t)式中,u為給定輸入構成的列向量,它的元素個數應該和t的個數是一致的。當然該函數若調用時不返回參數,也可以直接繪制出響應曲線圖形。例如t=0:0.01:5;u=sin(t);lsim(sys,u,t)為單輸入模型sys對u(t)=sin(t)在5秒之內的輸入響應仿真。,2020/7/4,第七章控制系統的綜合與校正,19,線性系統的時間響應分析(3),MATLAB還提供了離散時間系統的仿真函數,包括
11、階躍響應函數dstep(),脈沖響應函數dimpulse()和任意輸入響應函數dlsim()等,它們的調用方式和連續(xù)系統的不完全一致,讀者可以參閱MATLAB的幫助,如在MATLAB的提示符下鍵入helpdstep來了解它們的調用方式。時域分析常用函數如下:step-階躍響應impulse-脈沖響應lsim-對指定輸入的連續(xù)輸出gensig-對LSIM產生輸入信號stepfun-產生單位階躍輸入,例對于下列系統傳遞函數下列MATLABPrograml1.1將給出該系統的單位階躍響應曲線。該單位階躍響應曲線如圖1所示。----MATLABPrograml1.1----num0,0,50;den2
12、5,2,1;step(num,den)gridtitle(Unit-StepResponseofG(s)=50/(25s2+2s+1)),例對于下列系統傳遞函數下列MATLABPrograml1.2將給出該系統的單位脈沖響應曲線。該單位脈沖響應曲線如圖2所示。----MATLABPrograml1.2----num0,0,50;den25,2,1;impulse(num,den)gridtitle(Unit-ImpulseResponseofG(s)=50/(25s2+2s+1)),在MATLAB中沒有斜坡響應命令,可利用階躍響應命令求斜坡響應,先用s除G(s),再利用階躍響應命令。例如,考慮
13、下列閉環(huán)系統:,對于單位斜坡輸入量則,下列MATLABPrograml1.3將給出該系統的單位斜坡響應曲線。該單位斜坡響應曲線如圖3所示。----MATLABPrograml1.3----num0,0,0,50;den25,2,1,0;t=0:0.01:100;step(num,den,t)gridtitle(Unit-SteprampResponseofG(s)=50/(25s2+2s+1)),2020/7/4,第七章控制系統的綜合與校正,27,控制系統的頻域響應分析,已知系統的傳遞函數模型如第2節(jié)所示,則該系統的頻率響應為可以由下面的語句來實現,如果有一個頻率向量w,則Gw=polyval
14、(num,sqrt(-1)*w)./polyval(den,sqrt(-1)*w);其中num和den分別為系統的分子分母多項式系數向量。,頻率響應曲線繪制,MATLAB提供了多種求取并繪制系統頻率響應曲線的函數,如Bode圖繪制函數bode(),Nyquist曲線繪制函數等,其中bode()函數的調用格式為m,p=bode(num,den,w)這里,num,den和前面的敘述一樣,w為頻率點構成的向量,該向量最好由logspace()函數構成。m,p分別代表Bode響應的幅值向量和相位向量。如果用戶只想繪制出系統的Bode圖,而對獲得幅值和相位的具體數值并不感興趣,則可以由以下更簡潔的格式調
15、用bode()函數bode(num,den,w)或更簡潔地bode(num,den)這時該函數會自動地根據模型的變化情況選擇一個比較合適的頻率范圍。,Nyquist曲線繪制函數nyquist()類似于bode()函數,可以利用helpnyquist來了解它的調用方法。在分析系統性能的時候經常涉及到系統的幅值裕量與相位裕量的問題,使用Control工具箱提供的margin()函數可以直接求出系統的幅值裕量與相位裕量,該函數的調用格式為Gm,Pm,wcg,wcp=margin(num,den)可以看出,該函數能直接由系統的傳遞函數來求取系統的幅值裕量Gm和相位裕度裕量Pm,并求出幅值裕量和相位裕量
16、處相應的頻率值wcg和wcp。,常用頻域分析函數如下:bode-頻率響應伯德圖nyquist-頻率響應乃奎斯特圖nichols-頻率響應尼柯爾斯圖freqresp-求取頻率響應數據margin-幅值裕量與相位裕量pzmap-零極點圖使用時可以利用他們的幫助,如helpbode。另外,命令ltiview可以畫時域響應和頻域響應圖,利用helpltiview查看使用說明。,例對于下列系統傳遞函數下列MATLABPrograml1.4將給出該系統對應的伯德圖。其伯德圖如圖4所示。----MATLABPrograml1.4----num0,0,50;den25,2,1;bode(num,den)gri
17、dtitle(BodeDiagramofG(s)=50/(25s2+2s+1)),如果希望從0.01弧度秒到1000弧度/秒畫伯德圖,可輸入下列命令:w=logspace(-2,3,100)bode(num,den,w)該命令在0.01弧度秒和100弧度秒之間產生100個在對數刻度上等距離的點,例對于下列系統傳遞函數下列MATLABPrograml1.5將給出該系統對應的伯德圖。其伯德圖如圖5所示。----MATLABPrograml1.5----num=10,30;den1=1,2,0;den2=1,1,2;den=conv(den1,den2)w=logspace(-2,3,100)bod
18、e(num,den,w)gridtitle(BodeDiagramofG(s)=10(s+3)/s(s+2)(s2+s+2)),例對于下列系統傳遞函數下列MATLABPrograml1.6將給出該系統對應的乃奎斯圖。其乃奎斯特圖如圖6所示。----MATLABPrograml1.6----num0,0,50;den25,2,1,;nyquist(num,den)title(NyquistPlotofG(s)=50/(25s2+2s+1)),2020/7/4,第七章控制系統的綜合與校正,38,控制系統的根軌跡圖,通常采用下列MATLAB命令畫根軌跡rlocus(num,den)利用該命令,可以在
19、屏幕上得到畫出的根軌跡圖。增益向量K自動被確定。命令rlocus既適用于連續(xù)系統,也適用于離散時間系統。對于定義在狀態(tài)空間內的系統,其命令為rlocus(A,B,C,D)MATLAB在繪圖命令中還包含自動軸定標功能。,例對于一單位反饋控制系統,其開環(huán)傳遞函數為下列MATLABPrograml1.7將給出該系統對應的根軌跡圖。其根軌跡圖如圖7所示。---------MATLABPrograml1.7-----------num=1,3;den1=1,2,0;den2=1,1,2;den=conv(den1,den2)rlocus(num,den)v=-10101010;axis(v)gridti
20、tle(Root-LocusPlotofG(s)=K(s+3)/s(s+2)(s2+s+2)),2020/7/4,第七章控制系統的綜合與校正,41,系統穩(wěn)定性分析,給定一個控制系統,可利用MATLAB在它的時域、頻域圖形分析中看出系統的穩(wěn)定性,并可直接求出系統的相角裕量和幅值裕量。此外,我們還可通過求出特征根的分布更直接地判斷出系統穩(wěn)定性。如果閉環(huán)系統所有的特征根都為負實部則系統穩(wěn)定。,例如,給出控制系統閉環(huán)傳遞函數為num=3,2,1,4,2num=32142den=3,5,1,2,2,1den=351221z,p=tf2zp(num,den),z=0.4500+0.9870i0.4500-
21、0.9870i-1.0000-0.5666p=-1.60670.4103+0.6801i0.4103-0.6801i-0.4403+0.3673i-0.4403-0.3673Ipzmap(num,den),ii=find(real(p)0)ii=23n1=length(ii)n1=2if(n10),disp(Systemisunstable,withint2str(n1)unstablepoles);elsedisp(Syatemisstable);endSystemisunstable,with2unstablepolesdisp(Theunstablepolesare:),disp(p(i
22、i))Theunstablepolesare:0.4103+0.6801i0.4103-0.6801i以上求出具體的零極點、畫出零極點分布、明確指出系統不穩(wěn)定,并指出引起系統不穩(wěn)定的具體右根。,2020/7/4,第七章控制系統的綜合與校正,46,Simulink仿真工具,如果控制系統的結構很復雜,則若不借助專用的系統建模軟件,在過去很難準確地把一個控制系統的復雜模型輸入給計算機,對之進行分析和仿真。1990年MathWorks軟件公司為MATLAB提供了新的控制系統模型圖形輸入與仿真工具,命名為SIMULINK,這一名字的含義相當直觀,SIMU(仿真)與LINK(連接),亦即可以利用鼠標器在模型窗口上“畫”出所需的控制系統模型,然后利用SIMULINK提供的功能來對系統進行仿真或線性化。這種法的一個優(yōu)點是,可以使得一個很復雜系統的輸入變得相當容易且直觀。,首先根據一個例子來說明控制系統框圖模型的建立,這是一個簡化的調速系統。我們看如何利用Simulink工具輸入這個框圖,然后再進行分析。,下圖是Matlab中Simulink工具建立的例題框圖。可以點擊圖中Simulation下的Start圖標開始仿真,然后雙擊框圖中的Scope,查看仿真圖形。其他仿真命令大家可以自行學習。,