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