隨著系統(tǒng)功能的日益復(fù)雜,以自適應(yīng)控制為代表的先進(jìn)控制理論與算法越來越多地被投入到工程應(yīng)用當(dāng)中。而隨著大家對被控物理系統(tǒng)特性本身和控制理論更加深入的研究,像魯棒控制、模型預(yù)測控制、模糊邏輯控制,甚至是強化學(xué)習(xí),都逐漸成為了控制工程師口袋中的武器。
然而對于傳統(tǒng)的嵌入式應(yīng)用而言,成本上的考量使得硬件算力的進(jìn)一步提升成為一種奢望,也從一定程度上限制了更加“智能”的控制算法的應(yīng)用。例如在自動駕駛或者自主系統(tǒng)控制領(lǐng)域頗為流行的非線性模型預(yù)測控制,很難直接應(yīng)用于算力更加緊張,但也更廣泛的傳統(tǒng)嵌入式場景當(dāng)中,工程師們也只能去選擇更加“簡化”的控制算法來實現(xiàn)部署,這也是為什么在傳統(tǒng)的嵌入式控制場景中,基于經(jīng)典線性控制理論的PID 控制器依然很流行。
但隨著被控對象系統(tǒng)的動態(tài)越來越復(fù)雜,其非線性程度、外部擾動和不確定性越來越高,PID 明顯力不從心。相比于直接使用類似非線性模型預(yù)測控制這類運算復(fù)雜、對硬件算力要求極高的控制算法,工程師們開始越來越多地探索如何在傳統(tǒng) PID 控制中添加一些“自適應(yīng)”因素,讓其能夠在有限的硬件資源限制下,盡可能地響應(yīng)和處理真實物理系統(tǒng)中的未知干擾與不確定性,從而也能達(dá)到更好的控制效果。
MathWorks 作為工具廠商也在積極響應(yīng)用戶類似的需求,在過去的幾個版本中,陸續(xù)添加了諸如模型參考自適應(yīng)控制、自抗擾控制和模型預(yù)測控制等功能(詳見之前的文章《讓閉環(huán)控制器的參數(shù)調(diào)節(jié)事半功倍-SimulinkControl Design更新探討》)。在今天的文章中,我們將重點討論在24b 版本中新添加的滑??刂疲⊿liding Mode Control, SMC)模塊支持以及相關(guān)案例。
滑??刂疲⊿MC)是一種以其魯棒性和高效性著稱的非線性控制策略。自 20 世紀(jì) 50 年代首次提出以來,滑??刂埔蚱湓谔幚聿淮_定性系統(tǒng)和外部擾動方面的卓越性能,逐漸成為自動控制領(lǐng)域的重要研究方向?;?刂频淖畲髢?yōu)勢在于其對系統(tǒng)參數(shù)變化和外部干擾的強魯棒性,這使得它在實際應(yīng)用中能夠有效應(yīng)對各種不確定性(包括不限于系統(tǒng)的非線性特性、外部擾動等等)。此外,滑??刂平Y(jié)構(gòu)簡單,易于實現(xiàn),且能夠提供快速的動態(tài)響應(yīng),在傳統(tǒng)嵌入式應(yīng)用硬件算力受限的情況下依然適用。在現(xiàn)代控制系統(tǒng)中,滑??刂票粡V泛應(yīng)用于電機控制、機器人系統(tǒng)、車輛動態(tài)控制以及航空航天等領(lǐng)域。
滑??刂圃砀攀?/p>
聽起來滑??刂茻o所不能是不是?它是如何保證上述這些優(yōu)勢的?這就需要簡單介紹一下它的原理。
滑??刂剖且环N特殊的變結(jié)構(gòu)控制,它與常規(guī)控制的區(qū)別在于控制的不連續(xù)性,其核心思想是根據(jù)系統(tǒng)所期望的動態(tài)特性來設(shè)計一個滑模面(Sliding Surface),通過控制器使系統(tǒng)狀態(tài)從滑模面之外向其快速收斂并保持在該面上。系統(tǒng)一旦到達(dá)滑模面,控制器通過反饋控制將保證系統(tǒng)沿該面到達(dá)系統(tǒng)原點(目標(biāo)穩(wěn)態(tài)工況)。由于系統(tǒng)的特性和參數(shù)只取決于設(shè)計的滑模面而與外界干擾沒有關(guān)系,所以滑??刂凭哂泻軓姷聂敯粜?。
文字看起來比較繞?我們用下面的公式來幫助理解。
考慮用如下公式表征的一般非線性系統(tǒng),
其中,代表系統(tǒng)固有的動態(tài)特性,代表控制輸入對系統(tǒng)的影響,則反應(yīng)了隨時間影響系統(tǒng)行為的外部干擾。
該公式反映了系統(tǒng)本身的動態(tài)特性,控制輸入和外部未知干擾的耦合。如前面我們提到的,SMC 是一種變結(jié)構(gòu)的控制,其在兩種不同的結(jié)構(gòu)之間切換,從數(shù)學(xué)上描述為:
在這里,我們分別定義了兩組不同的控制輸入和,分別用于系統(tǒng)處于滑模面的不同側(cè)。假設(shè)系統(tǒng)有 nu?個控制輸入,則 nu?個 Sk?便可以組成滑模面函數(shù)?S(x)。
為了保證狀態(tài)變量能夠收斂于滑模面,并保持其軌跡始終沿著滑模面,合理設(shè)計控制輸入u和滑模面S(x)至關(guān)重要。當(dāng)系統(tǒng)狀態(tài)到達(dá)滑模面后,滑模面函數(shù)能夠滿足S(x)=0,要使得如前述公式所示的一般非線性系統(tǒng)能夠達(dá)到并穩(wěn)定在滑模面中,我們必須要求滑模面與其導(dǎo)數(shù)滿足如下關(guān)系:
我們可以用如下的平面圖來解釋這樣的關(guān)系,假設(shè)圖中的直線表示滑模面S(x),其導(dǎo)數(shù)必須與S(x)呈相反的符號,才能保證系統(tǒng)狀態(tài)穩(wěn)定在S(x)上。
圖1 滑模面的二維等效解釋
那么如何來快速定義控制輸入和滑模面呢?顯然如果沒有工具加持,大多數(shù)情況下我們依然無從下手。在最新的 MATLAB R2024b 版本中,用戶可以使用 SlidingMode Controller (Reaching Law)[1]模塊,使用一種動態(tài)調(diào)整控制動作(趨近率,ReachingLaw)以有效地將系統(tǒng)狀態(tài)引導(dǎo)到滑模面,從而實現(xiàn)滑??刂啤T谠撃K中,我們支持兩類滑動模態(tài)模式,以幫助用戶快速定義滑模面函數(shù)和控制輸入。
第一類:調(diào)節(jié)模式,當(dāng)我們希望將系統(tǒng)穩(wěn)定在一個固定工況點時使用此模式,此時系統(tǒng)的所有狀態(tài)變量 x為零,
第二類,跟蹤模式,通常情況下,閉環(huán)控制希望的是讓系統(tǒng)的狀態(tài)跟隨一個參考的軌跡指令 xref。
易見,第一類問題是第二類問題的一種特殊情況。在上述公式中,滑動系數(shù)矩陣 C決定了滑模面S(x)的形狀,我們可以用它來定義滑模面 S(x)。h(s(x)) 則被叫做趨近率(Reaching Law),它表征了系統(tǒng)以什么樣的動態(tài)特性收斂并保持在滑模面上,我們用它來定義控制輸入 u,Reaching Law 有幾種不同的方式,在現(xiàn)有模塊中提供了三種方式:
恒定速率(Constant rate):系統(tǒng)以恒定速率達(dá)到滑模面,較大的恒定速率可以使得系統(tǒng)更快地收束到滑模面,但可能會引發(fā)執(zhí)行器控制飽和或者控制不穩(wěn)定。
指數(shù)速率(Exponential):通過給恒定速率添加比例增益項以避免恒定速率引發(fā)的問題,比例增益項使得系統(tǒng)狀態(tài)偏離滑模面較大時提供更快的收斂速率,而在偏差變小時作用減弱。
功率比(Power Rate):不同于固定常數(shù)的比例增益,通過增加一個0到1之間的系數(shù) 來平滑調(diào)節(jié)系統(tǒng)狀態(tài)與滑模面偏差不同時的收斂速度,以兼顧收斂速度和平穩(wěn)性。
典型案例分析之一彈簧阻尼系統(tǒng)
公式介紹完了,相信大家能夠了解滑??刂频幕驹?,知道在滑??刂浦校钪匾氖嵌x滑模面S(x)和控制輸入 u,也知道 MATLAB/Simulink 現(xiàn)在有“即插即用”的模塊來幫助我們定義。但如果要向其它人解釋什么滑模面S(x),以及如何通過調(diào)節(jié)它來提升滑??刂频男阅?,作者在寫到這里的時候也跟大家一樣都是一頭霧水。因為相比于那些傳統(tǒng)的控制理論,這個不是平面,卻又叫做“面” S(x)的實在是太過抽象,干憑冥想理解它著實不容易。我們需要一個簡單的物理場景來具像化它,幫助我們理解。在 MATLAB R2024b的幫助文檔中就給出這樣一個例子,SlidingMode Control Design for Mass-Spring-Damper System[2],下面就讓我們一起來探討一下。
我們考慮如下一個簡單的質(zhì)量-彈簧-阻尼系統(tǒng),視為質(zhì)點的質(zhì)量為 M 的質(zhì)量塊,在彈性系數(shù)為 K,阻尼系數(shù)為 D 的約束下,被大小為 F 的力驅(qū)動(視為控制輸入)。
圖2 質(zhì)量-彈簧-阻尼系統(tǒng)示例
我們可以很輕易地得到反映其動態(tài)的系統(tǒng)方程,
其中,x 代表質(zhì)量塊的橫向位移,即圖中的y,那么 x ?和 x自然代表它的速度和加速度。
等一下,這個系統(tǒng)動態(tài)的方程跟我們一開始定義的一般非線性系統(tǒng)表征不太一樣,為了保持一致,我們需要先做一些修改,
我們在系統(tǒng)中定義兩個變量,橫向位移為 x?,速度為 x?,則系統(tǒng)動態(tài)可以表示為
其中,,。 為何選了這樣一個系統(tǒng)?因為如果我們將系統(tǒng)中的兩個狀態(tài)分別置于平面坐標(biāo)系的橫軸和豎軸上,它就會形成一個“平面”。
圖3 質(zhì)量-彈簧-阻尼系統(tǒng)相平面
由圖上我們可以知道,系統(tǒng)的“軌跡”(兩個狀態(tài)變量的變化),永遠(yuǎn)是跟隨著圖中藍(lán)色的箭頭來行進(jìn),即位移絕對值達(dá)到最大值時,速度都是零。那么在圖中,我們可以找到這樣一條分割線,x?+x?= 0,無論當(dāng)系統(tǒng)的工作狀態(tài)處于分割線左邊或者右邊時,都會向這條線“收斂?!?/p>
圖4 質(zhì)量-彈簧-阻尼系統(tǒng)滑模面
顯然,圖中這條線就滿足之前我們對滑模面S(x)的討論,在這個例子中,我們便可以定義S(x)=x?+x?,此時滑模系數(shù)矩陣 C=[11]?。
在定義好滑模面S(x)之后,我們只需要確定滑??刂破鞯幕瑒幽B(tài)方式以及趨近率方式,即可確定控制輸入 u。我們希望系統(tǒng)能夠在任何的外部干擾作用下,質(zhì)量滑塊都能沿著滑模面穩(wěn)定在原點附近,所以我們選擇“調(diào)節(jié)模式”作為滑動模態(tài)方式,并選擇指數(shù)速率作為趨近率。
當(dāng)然這些設(shè)置在 MATLAB 中都非常容易實現(xiàn),只需要在 Sliding ModeController (Reaching Law) 模塊的對應(yīng)位置給定參數(shù)即可。
圖5Simulink SMC 模塊設(shè)置
我們希望控制器能在系統(tǒng)存在外部輸入干擾的情況下,讓質(zhì)量滑塊穩(wěn)定在原點,建立如下 Simulink 模型來查看仿真結(jié)果。
圖6Simulink SMC閉環(huán)模型
在圖5 的 SMC 模塊設(shè)置中,除了我們已經(jīng)介紹過的參數(shù),還出現(xiàn)了一個參數(shù)叫做“Boundary Layer”,這就涉及到滑??刂频囊淮笕秉c-“顫振”。還是考慮圖4所示的滑模面,滑??刂频睦硐肭闆r是當(dāng)系統(tǒng)狀態(tài)到達(dá)滑模面時,不再離開滑模面,沿著其移動。但在實際物理系統(tǒng)中,“誤差”不可避免地存在,所以實際上系統(tǒng)狀態(tài)在到達(dá)滑模面時,并不“嚴(yán)格”沿著其移動,而會在其附近“來回晃動”(如圖中藍(lán)色折現(xiàn)所示)。
圖7 滑模面實際工況示例
我們在一開始概述的時候講到,滑模控制與常規(guī)控制的區(qū)別在于控制的不連續(xù)性,其在滑模面兩邊的控制輸入完全不同,在滑模面附近晃動會使得系統(tǒng)的控制輸入呈現(xiàn)“高頻開關(guān)”的狀態(tài),從而導(dǎo)致“顫振”現(xiàn)象的發(fā)生。
圖8SMC控制輸入“顫振”現(xiàn)象
為了防止這種現(xiàn)象的發(fā)生,我們需要設(shè)定一個合理的“邊界”,當(dāng)系統(tǒng)的狀態(tài)沒有偏離滑模面到邊界值時,視為其仍然在滑模面上,不做控制輸入的切換,實現(xiàn)一定程度上的“滯回”作用(如圖中虛線所示)。
圖9SMC 模塊中Boundary Layer的設(shè)定意義
圖10 不同Boundary Layer 參數(shù)下的輸入顫振對比
典型案例分析之二變參數(shù)機械臂控制
現(xiàn)實世界中的真實物理系統(tǒng)當(dāng)然遠(yuǎn)比上述的質(zhì)量-彈簧-阻尼系統(tǒng)復(fù)雜得多,外部干擾對系統(tǒng)本身的影響也大得多。簡單的被控對象可以幫我們充分理解滑??刂频脑硪约皟?yōu)缺點,并幫助我們應(yīng)用在更加貼近物理實際的場景當(dāng)中。在 24b 的幫助文檔中,還內(nèi)置了另外一個更加復(fù)雜的 SMC 機械臂應(yīng)用案例,SlidingMode Control Design for a Robotic Manipulator [3]。
示例中,我們考慮帶有兩個關(guān)節(jié)的機械臂,并且其本身的動態(tài)特性(狀態(tài)方程中的矩陣參數(shù))與標(biāo)稱值是有偏移的,當(dāng)下圖中機械臂狀態(tài)矩陣的估計器(Estimator)無法準(zhǔn)確估計真實的機械臂系統(tǒng)時,SMC暫展示出了良好的控制性能,能夠應(yīng)對系統(tǒng)中的未知干擾與不確定性。
圖11 機械臂滑??刂剖纠?/p>
因為篇幅的關(guān)系,此案例就不作詳細(xì)介紹了,各位可以參閱幫助文檔鏈接,在軟件中打開模型進(jìn)一步研究。
寫在最后
MathWorks 在近些年來的版本中持續(xù)關(guān)注著廣大用戶對于非線性控制的需求,陸續(xù)添加了許多“即插即用”的控制算法模塊(如前文提到的自控擾控制、模型參數(shù)自適應(yīng)控制、極值搜索控制、模型預(yù)測控制等等),使得控制工程師們不必糾結(jié)于如何用代碼實現(xiàn)相對成熟的控制理論本身,而是把精力更多地放在充分了解自身的被控物理對象特性,有理有據(jù)地調(diào)節(jié)控制算法中的參數(shù),從而快速實現(xiàn)并基于自動代碼生成無縫部署到嵌入式硬件中。
除了本文提到的滑??刂疲谛掳姹局?,MATLAB/Simulink 還發(fā)布了迭代學(xué)習(xí)控制(Iterative LearningControl, ILC)模塊,幫助有需要的用戶快速實現(xiàn)并部署該算法。 我們也樂于聽到大家的心聲,如果您有更多關(guān)于先進(jìn)控制算法的使用需求和場景,不妨通過留言告訴我們,幫助 MATLAB/Simulink 持續(xù)提升!
-
matlab
+關(guān)注
關(guān)注
185文章
2976瀏覽量
230464 -
機器人
+關(guān)注
關(guān)注
211文章
28418瀏覽量
207081 -
Simulink
+關(guān)注
關(guān)注
22文章
535瀏覽量
62396 -
航空航天
+關(guān)注
關(guān)注
1文章
389瀏覽量
24290
原文標(biāo)題:高效應(yīng)對“外部干擾與非線性” - Simulink 滑??刂疲⊿MC)更新探討
文章出處:【微信號:MATLAB,微信公眾號:MATLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論