《控制系統(tǒng)的MATLAB計算及仿真》由會員分享,可在線閱讀,更多相關(guān)《控制系統(tǒng)的MATLAB計算及仿真(38頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、控制系統(tǒng)的MATLAB計算及仿真哈爾濱工業(yè)大學(xué)(威海) 信息科學(xué)與工程學(xué)院 內(nèi)容提要:n 1、MATLAB的基礎(chǔ)知識n 2、MATLAB的控制工具箱n 3、Simulink與控制系統(tǒng)仿真 MATLAB的基礎(chǔ)知識n MATLAB概述n MATLAB的主要功能n MATLAB的語言規(guī)則n MATLAB的變量n MATLAB數(shù)據(jù)的輸入n MATLAB的基本語句結(jié)構(gòu) n MATLAB的M-文件n MATLAB的圖形可視化 MATLAB概述n Matlab=Matrix Laboratory:矩陣實驗室n Matlab 語言的首創(chuàng)人是 C. Molern到九十年代初期,在國際上 30 幾個數(shù)學(xué)類科技應(yīng)用
2、軟件中, Matlab 在數(shù)值計算方面獨占鰲頭,而 Mathematica 和 Maple 則分居符號計算軟件的前兩名。 MATLAB的主要功能n數(shù)值計算功能n符號運算功能n繪圖功能n編程功能n豐富的工具箱(ToolBox)n Simulink動態(tài)仿真集成環(huán)境 命令窗口當(dāng)前工作目錄當(dāng)前工作空間輸入命令的歷史記錄命令提示符 MATLAB的語言規(guī)則n Matlab 區(qū)分大小寫,它的命令和函數(shù)全是小寫的n一行可以輸入幾個命令,用分號“;” 或逗號“,”隔開 n續(xù)行符: “”(三個點),如果語句很長,可用續(xù)行符將一個語句寫成多行。續(xù)行符的前最好留一個空格。 n注釋符: “%”,其后面的內(nèi)容為注釋,對
3、Matlab 的計算不產(chǎn)生任何影響 MATLAB的變量n Matlab中變量名是以字母開頭,可以由字母、數(shù)字或下劃線組成n who,whos,clc,clearn系統(tǒng)預(yù)定義變量:eps, pi, Inf, NaN, i, j MATLAB數(shù)據(jù)的輸入n直接輸入:同一行中各元素之間用“空格”或“,” (英文狀態(tài)下) 分開;行與行之間用 “;” 或“回車”分開 a=1 2 ; 3, 4 n冒號 “:” 運算符:初值 : 步長 : 終值 a=1:5, b=0:pi/4:pi n由向量或小矩陣生成:X=a ; bn交互式輸入:input n=input(Please input n: ) MATLAB的
4、基本語句結(jié)構(gòu)n賦值語句q直接賦值語句:賦值變量=賦值表達(dá)式(賦值表達(dá)式后無分號“;”: 命令窗直接顯示賦值結(jié)果 賦值表達(dá)式后加分號“;”:命令窗不顯示結(jié)果,變量保留在workspace) q函數(shù)調(diào)用語句:返回變量列表=函數(shù)名(輸入變量列表) MATLAB的基本語句結(jié)構(gòu)n循環(huán)語句q for語句:for 變量=向量,循環(huán)體,end; s=0; for i=1:2:100s=s+i; end q while語句:while (條件式),循環(huán)體,end; s=0;i=1; while(i=100) s=s+i; end MATLAB的基本語句結(jié)構(gòu)n跳轉(zhuǎn)語句q if語句: if (條件1) 語句組1;
5、elseif(條件2) 語句組2; else 語句組2; end MATLAB的基本語句結(jié)構(gòu)n跳轉(zhuǎn)語句q switch語句: case (表達(dá)式1) 語句組1; case (表達(dá)式2) 語句組2; , otherwise 語句組n; end MATLAB的M-文件n M-腳本文件n M-函數(shù) function 返回變量列表=函數(shù)名 (輸入變量列表) function a=dbness(n)a=2*n; end MATLAB的圖形可視化n plot函數(shù):1.1, 1.1, 1.1 1.11.1, 1.1xy x xx clc;x=-5:0.02:5;m,n=size(x); %返回矩陣x的維數(shù)f
6、or a=1:1:nif x(a)-1.1 y(a)=-1.1; elseif x(a)=-1.1 y(a)=x(a); else y(a)=1.1; end endplot(x,y); 內(nèi)容提要:n 1、MATLAB的基礎(chǔ)知識n 2、MATLAB的控制工具箱n 3、Simulink與控制系統(tǒng)仿真 內(nèi)容提要:n 1、MATLAB的基礎(chǔ)知識n 2、MATLAB的控制工具箱n 3、Simulink與控制系統(tǒng)仿真 MATLAB的控制工具箱n連續(xù)線性系統(tǒng)的數(shù)學(xué)模型n離散線性系統(tǒng)的數(shù)學(xué)模型n系統(tǒng)模型的相互轉(zhuǎn)換n離散線性系統(tǒng)的性能分析 連續(xù)線性系統(tǒng)的數(shù)學(xué)模型n傳遞函數(shù)模型設(shè)單變量連續(xù)線性系統(tǒng)的傳遞函數(shù)為:
7、1 1 2 11 21 2 1.( ) .m m m mn n n n nbs b s b s bG s s a s a s a s a 1 2 , 1 1 2 1num , ,., ;den 1, , ,., , ;(num,den);m mn nb b b ba a a aG tf 傳遞函數(shù)表示為:例:22 31sG s s num=2,3;den=1 1 1;G=tf(num,den); 連續(xù)線性系統(tǒng)的數(shù)學(xué)模型n傳遞函數(shù)模型MATLAB還支持一種特殊的傳遞函數(shù)的輸入格式,在這樣的輸入方式下,應(yīng)該先用s=tf(s),定義傳遞函數(shù)的算子,然后直接輸入系統(tǒng)的傳遞函數(shù)。例: 22 31sG s
8、s s=tf(s);G=(2*s+3)/(s2+s+1);延遲環(huán)節(jié) :se G.ioDelay 連續(xù)線性系統(tǒng)的數(shù)學(xué)模型n零極點模型設(shè)單變量連續(xù)線性系統(tǒng)的傳遞函數(shù)為:例:2( 1)( 2)( 3)( 4)s sG s s s Z=-1;-2;P=0;-3;-4;G=zpk(Z,P,2)1 2 1 2( )( ).( )( ) ( )( ).( )mns z s z s zG s K s p s p s p 傳遞函數(shù)表示為:1 21 2 . ; . ; ; ;( , , ); ; mnZ z z zP p p pG zpk Z P Kpzmap(G):可以直接繪制傳遞函數(shù)的零極點分布圖 連續(xù)線性系
9、統(tǒng)的數(shù)學(xué)模型n狀態(tài)方程模型設(shè)線性系統(tǒng)的狀態(tài)方程為:狀態(tài)方程表示為:( , , , )G ss A B C Dx(t)=Ax(t)+Bu(t)y(t)=Cx(t)+Du(t) 離散線性系統(tǒng)的數(shù)學(xué)模型n傳遞函數(shù)模型設(shè)單變量連續(xù)線性系統(tǒng)的傳遞函數(shù)為:1 0 1 11 21 2 1.( ) .n n n nn n n n nb z b z b z bH z z a z a z a z a 0 1 1, 1 2 1num , ,., ;den 1, , ,., , ;(num,den,Ts,T);n nn nb b b ba a a aH tf 傳遞函數(shù)表示為:例:22 31zH z z num=2,3
10、;den=1 1 1;H=tf(num,den,Ts,1); 離散線性系統(tǒng)的數(shù)學(xué)模型n傳遞函數(shù)模型MATLAB還支持一種特殊的傳遞函數(shù)的輸入格式,在這樣的輸入方式下,應(yīng)該先用z=tf(z,T),定義傳遞函數(shù)的算子,然后直接輸入系統(tǒng)的傳遞函數(shù)。例: 22 31zH z z z=tf(z,1);H=(2*z+3)/(z2+z+1);延遲環(huán)節(jié) :nz H.ioDelay n 離散線性系統(tǒng)的數(shù)學(xué)模型n零極點模型設(shè)單變量連續(xù)線性系統(tǒng)的傳遞函數(shù)為:例:2( 1)( 2)( 3)( 4)z zH z z z Z=-1;-2;P=0;-3;-4;H=zpk(Z,P,2,Ts,1)1 2 1 2( )( ).(
11、 )( ) ( )( ).( )mnz z z z z zH z K z p z p z p 傳遞函數(shù)表示為:1 21 2 . ; . ; ; ; ;( , , , ,; ); mnZ z z zP p p pH zpk Z P K Ts Tpzmap(G):可以直接繪制傳遞函數(shù)的零極點分布圖 離散線性系統(tǒng)的數(shù)學(xué)模型n狀態(tài)方程模型設(shè)線性系統(tǒng)的狀態(tài)方程為:狀態(tài)方程表示為:( , , , , , )H ss F G C D Ts T( 1)k k kk k kx =Fx( )+Gu( )y( )=Cx( )+Du( ) 系統(tǒng)模型的相互轉(zhuǎn)換n連續(xù)模型 離散模型函數(shù):Gz=c2d(Gs,T,參數(shù) )
12、參數(shù):zoh:零階保持器法 foh: 一階保持器法 imp: 脈沖響應(yīng)不變法 tustin: 雙線性變換法 prewarp: 改進(jìn)的雙線性變化法 matched: 零極點匹配法( ) ( ) ( )hH z Z G s G s( ) ( )H z Z G s 例:1( ) , 1G s Ts 采樣周期Gs=tf(1,1 0)Gz=c2d(Gs,1,zoh) 系統(tǒng)模型的相互轉(zhuǎn)換n離散模型 連續(xù)模型函數(shù):Gs=d2c(Gz,參數(shù) ) 參數(shù):zoh:零階保持器法 tustin: 雙線性變換法 prewarp: 改進(jìn)的雙線性變化法 matched: 零極點匹配法例:( ) , 11zG z Tz 采樣
13、周期 Gz=tf(1 0,1 -1,Ts,1);Gs=d2c(Gz,zoh); 離散線性系統(tǒng)的性能分析設(shè):計算機控制系統(tǒng)如圖所示: 0 0.1 9.1544( 0.98)( ) , ( ) , 0.2( 0.1) 0.8187zG s D z Ts s z 離散線性系統(tǒng)的性能分析n求系統(tǒng)的閉環(huán)脈沖傳遞函數(shù):clear; % 清除變量num=0.1;den=1 0.1 0;G0s=tf(num,den) %G0(s)的脈沖傳遞函數(shù)Z=0.98;P=0.8187;K=9.1544;Dz=zpk(Z,P,K,Ts,0.2) %控制器D(z)G0z=c2d(G0s,0.2,zoh) %G0z=Z(Gh
14、(s)*G0(s)Gz=Dz*G0z %開環(huán)脈沖傳遞函數(shù) faiz=feedback(Gz,1); %閉環(huán)脈沖傳遞函數(shù),1表示反饋,本題為單位負(fù)反饋 離散線性系統(tǒng)的性能分析n求系統(tǒng)的階躍響應(yīng):step(faiz, t) %t表示仿真時間 離散線性系統(tǒng)的性能分析n求系統(tǒng)的根軌跡:rlocus(Gz) Gz表示開環(huán)脈沖傳遞函數(shù) 離散線性系統(tǒng)的性能分析n求系統(tǒng)的奈奎斯特圖:nyquist(Gz) Gz表示開環(huán)脈沖傳遞函數(shù)n求系統(tǒng)的伯德圖:bode(Gz) Gz表示開環(huán)脈沖傳遞函數(shù) 內(nèi)容提要:n 1、MATLAB的基礎(chǔ)知識n 2、MATLAB的控制工具箱n 3、Simulink與控制系統(tǒng)仿真 Simu
15、link與控制系統(tǒng)仿真:n Simulink環(huán)境是系統(tǒng)建模、分析和仿真的理想工具,它提供的模塊有一般線性、非線性系統(tǒng)所需的模塊,也有更高級的模塊,適合于系統(tǒng)的建模與仿真。 離散線性系統(tǒng)的性能分析設(shè):計算機控制系統(tǒng)如圖所示: 0 0.1 9.1544( 0.98)( ) , ( ) , 0.2( 0.1) 0.8187zG s D z Ts s z 脫離工具箱,直接利用差分方程編程( ) ( ) ( )e k r k y k 119.1544( 0.98) 9.1544(1 0.98 ) ( )( ) 0.8187 1 0.8187 ( )z z U zD z z z E z ( ) 0.818
16、7 ( 1) 9.1544 ( ) 9.1544*0.98 ( 1)( ) 0.8187 ( 1) 9.1544 ( ) 9.1544*0.98 ( 1)u k u k e k e ku k u k e k e k 1 20 2 1 20.001987 0.001974 0.001987 0.001974 ( )( ) 1.98 0.9802 1 1.98 0.9802 ( )h z z z Y zG G z z z z z U z ( ) 1.98 ( 1) 0.9802 ( 2)0.001987 ( 1) 0.001974 ( 2)y k y k y ku k u k 脫離工具箱,直接利用差分方程編程clear;clc;error_1=0; %e(k-1)=0u_1=0; %u(k-1)=0u_2=0; %u(k-2)=0y_1=0; %y(k-1)=0for k=1:100 y(1)=0; r(k)=1; error(k)=r(k)-y(k); u(k)=0.8187*u_1+9.1544*error(k)-9.1544*0.98*error_1; y(k+1)=1.98*y(k)-0.9802*y_1+0.001987*u(k)+0.001974*u_1; y_1=y(k); error_1=error(k); u_2=u_1; u_1=u(k);endplot(y);