趙海濱, 顏世玉, 劉 沖, 陸志國, 于清文
(東北大學(xué) 機械工程與自動化學(xué)院, 遼寧 沈陽 110819)
滑??刂剖抢每刂谱饔玫牟贿B續(xù)性,使系統(tǒng)在兩個控制之間切換,在本質(zhì)上是一類特殊的非線性控制[1-2]?;?刂茖δP驼`差和外部干擾信號具有很強的魯棒性,并具有響應(yīng)速度快和容易實現(xiàn)等優(yōu)點,尤其是對非線性系統(tǒng)的控制具有良好的控制效果?;?刂品椒ㄒ蚓哂袃?yōu)良特性而受到越來越多的重視,并廣泛用于機器人控制[3-4]、四旋翼飛行器控制[5]和電機控制[6-7]等控制系統(tǒng)。在滑??刂频膽?yīng)用中,抖振現(xiàn)象是最主要的問題[8],目前已經(jīng)提出了神經(jīng)網(wǎng)絡(luò)[9]和模糊控制[10]等方法來削弱抖振。
本文以二階非線性系統(tǒng)為研究對象,設(shè)計滑模面和滑模控制器,分別進(jìn)行系統(tǒng)的平衡控制和軌跡跟蹤控制。在滑??刂破鞯脑O(shè)計中,采用指數(shù)趨近律,并利用Lyapunov理論對閉環(huán)系統(tǒng)的穩(wěn)定性進(jìn)行證明。為了抑制抖振現(xiàn)象,在控制器中采用飽和函數(shù)代替符號函數(shù)。采用Matlab/Simulink軟件建立了滑??刂品抡鎸嶒炏到y(tǒng),對提出的方法進(jìn)行了仿真驗證。仿真結(jié)果表明,滑模控制器具有良好的性能。該仿真實驗系統(tǒng)將滑模控制理論和具體編程相結(jié)合,不僅有助于學(xué)生對基本理論的理解,而且可以讓學(xué)生了解滑??刂频膶嶋H應(yīng)用。
對于二階非線性系統(tǒng)
(1)
其中x=[x1,x2]T為系統(tǒng)的狀態(tài)變量;f(x)和g(x)為已知連續(xù)非線性函數(shù),且g(x)≠0;u為控制輸入;d(t)為外部干擾,且|d(t)|≤D,D>0。
本文采用的二階非線性系統(tǒng)為
(2)
其中f(x)=-16x2,g(x)=125,外部干擾信號為d(t)=0.2sin(20t)。
對于非線性系統(tǒng)(1)進(jìn)行平衡控制(或鎮(zhèn)定控制)時,設(shè)計滑模面為
s1=x2+cx1
(3)
其中參數(shù)c>0。采用基于上界的滑??刂茣r,滑??刂破髟O(shè)計為
(4)
其中參數(shù)η≥D。當(dāng)干擾信號較大時,需要較大的切換增益η,會產(chǎn)生較大的抖振。
采用滑模控制器時,通常采用的指數(shù)趨近律為
(5)
采用指數(shù)趨近律時,進(jìn)行平衡控制的滑??刂破髟O(shè)計為
(6)
利用Lyapunov對式(6)的控制器進(jìn)行穩(wěn)定性證明。
取Lyapunov函數(shù)為
(7)
式(7)對時間進(jìn)行求導(dǎo),并將式(6)代入后可得
根據(jù)Lyapunov穩(wěn)定性定理,式(6)的滑模控制器能夠使二階非線性系統(tǒng)穩(wěn)定。
對非線性系統(tǒng)(1)進(jìn)行軌跡跟蹤控制時,理想的位置為θd,則誤差為e=θd-x1?;C嬖O(shè)計為
(8)
其中參數(shù)c>0。采用基于上界的滑??刂茣r,滑模控制器設(shè)計為
(9)
其中參數(shù)η≥D。當(dāng)干擾信號較大時,需要較大的切換增益η,會產(chǎn)生較大的抖振。當(dāng)采用指數(shù)趨近律時,軌跡跟蹤控制的滑??刂破髟O(shè)計為
(10)
以下對該控制器的穩(wěn)定性進(jìn)行證明。
取Lyapunov函數(shù)為
(11)
式(11)對時間求導(dǎo)后,將式(10)代入后可得
根據(jù)Lyapunov穩(wěn)定性定理,式(10)的滑??刂破髂軌蚴苟A非線性系統(tǒng)穩(wěn)定。
為了削弱抖振,在控制器中采用飽和函數(shù)sat(s)代替符號函數(shù)sgn(s),飽和函數(shù)的表達(dá)式為
(12)
其中參數(shù)δ>0,稱為邊界層。在邊界層之外采用切換控制,在邊界層內(nèi)采用線性化反饋控制。
用飽和函數(shù)代替符號函數(shù)后,平衡控制的滑??刂破鳛?/p>
(13)
用飽和函數(shù)代替符號函數(shù)后,軌跡跟蹤控制的滑模控制器為
(14)
Matlab/Simulink軟件具有強大的圖形功能和數(shù)學(xué)運算能力,而且對問題的描述和求解符合人們的思維習(xí)慣和數(shù)學(xué)表達(dá)習(xí)慣,已經(jīng)廣泛應(yīng)用于動態(tài)系統(tǒng)仿真[11-12]。Simulink是Matlab軟件最重要的組件之一,提供了一個動態(tài)系統(tǒng)建模、仿真和綜合分析的集成環(huán)境[13]。對于使用普通模塊不易搭建的復(fù)雜控制系統(tǒng),可以利用Matlab語言編寫M-Function或S-Function文件,通過用戶自定義函數(shù)模塊(user-defined functions)嵌入Simulink中[14]。M-Function文件采用Matlab語言編寫,程序代碼比較短,且容易實現(xiàn)。因此,本文采用M-Function實現(xiàn)二階非線性系統(tǒng)的滑??刂?。
利用Matlab/Simulink軟件建立的滑模控制仿真實驗系統(tǒng)如圖1所示。該仿真系統(tǒng)采用變步長的ode45算法,最大步長為0.1 ms,仿真時間為5 s。在圖1中,System模塊為根據(jù)式(2)建立的二階非線性系統(tǒng)模型。SMC1為平衡控制模塊,SMC2為軌跡跟蹤控制模塊。通過手動開關(guān)Manual Switch選擇對二階非線性系統(tǒng)進(jìn)行平衡控制或軌跡跟蹤控制。
圖1 滑模控制仿真實驗系統(tǒng)
在圖1中,積分模塊的初始值用于設(shè)置狀態(tài)變量的初始值。狀態(tài)變量的初始值為x1(0)=0.2,x2(0)=0.2。仿真結(jié)果通過To Workspace模塊保存到Matlab軟件的工作空間中。
為了削弱抖振,采用飽和函數(shù)代替符號函數(shù)。在進(jìn)行滑??刂破鞯脑O(shè)計時,飽和函數(shù)的邊界層取δ=0.001。
該二階非線性系統(tǒng)采用式(13)的滑??刂破鬟M(jìn)行平衡控制??刂破鞯膮?shù)選擇為c=3,D=0.2,k=3,ε=0.2。在圖1中,采用Matlab語言編寫的SMC1模塊內(nèi)的程序如下:
function u1 = fcn(x1, x2)
fx=-16*x2; gx=125;
c=3; k=3; D=0.2; epsilon=0.2;
s1=x2+c*x1;
delta=0.001; d=abs(s1/delta);
if d<=1
sat=s1/delta;
else
sat=sign(s1/delta);
end
u1=-(fx+c*x2+k*s1+(D+epsilon)*sat)/gx;
對系統(tǒng)進(jìn)行平衡控制時,狀態(tài)變量x1和x2的響應(yīng)如圖2所示,控制輸入u1如圖3所示。狀態(tài)變量x1和x2的收斂速度比較快,在約3 s時已經(jīng)接近0。由于采用飽和函數(shù)代替符號函數(shù),控制輸入u1比較平滑,沒有出現(xiàn)抖振現(xiàn)象。
圖2 平衡控制時狀態(tài)x1和x2的響應(yīng)
圖3 平衡控制時控制輸入u1
對于該二階非線性系統(tǒng),采用式(14)的滑??刂破鬟M(jìn)行軌跡跟蹤控制。參數(shù)選擇為c=3,k=3,D=0.2,ε=0.2。在進(jìn)行軌跡跟蹤控制時,期望的軌跡為
在圖1中,SMC2模塊進(jìn)行軌跡跟蹤控制,采用Matlab語言編寫的程序如下:
function u2 = fcn(x1, x2, thd, dthd, ddthd)
fx=-16*x2; gx=125;
c=3; k=3; D=0.2; epsilon=0.2;
s2=(dthd-x2)+c*(thd-x1);
delta=0.001; d=abs(s2/delta);
if d<=1
sat=s2/delta;
else
sat=sign(s2/delta);
end
n=k*s2+(D+epsilon)*sat;
u2=(-fx+ddthd+c*(dthd-x2)+n)/gx;
圖4 軌跡跟蹤控制時狀態(tài)x1的響應(yīng)
圖5 軌跡跟蹤控制時狀態(tài)x2的響應(yīng)
軌跡跟蹤控制時,控制輸入u2如圖6所示。由于采用飽和函數(shù)代替符號函數(shù),控制輸入u2比較平滑,沒有出現(xiàn)抖振現(xiàn)象。
圖6 軌跡跟蹤控制時控制輸入u2
本文研究了二階非線性系統(tǒng)的滑??刂茊栴}。在滑??刂破鞯脑O(shè)計中,選擇不同的滑模面,分別進(jìn)行了平衡控制和軌跡跟蹤控制,并采用Lypaunov理論對閉環(huán)系統(tǒng)的穩(wěn)定性進(jìn)行了證明。在滑??刂破髦胁捎蔑柡秃瘮?shù)代替符號函數(shù)以削弱抖振現(xiàn)象。該仿真實驗系統(tǒng)將滑模控制的理論學(xué)習(xí)和編程實現(xiàn)相結(jié)合,有助于學(xué)生對滑??刂评碚摵蛯嶋H應(yīng)用的理解。以該仿真實驗系統(tǒng)為平臺,學(xué)生可以對控制算法進(jìn)行改進(jìn)或自行編寫算法,然后進(jìn)行動態(tài)仿真實驗。