「他強由他強,清風拂山崗;他橫由他橫,明月照大江。他自狠來他自惡,我自一口真氣足。」——《九陽真經》

金庸筆下的九陽神功,人類未必能練成,但中國人發明了擁有該神功的ADRC演算法,並武裝到了高超音速飛行器、高鐵、射電望遠鏡、粒子加速器等等高精尖設備中。本文將帶大家了解ADRC演算法的工作原理、特點及行業應用。

一、PID的歷史

在講述ADRC演算法前,我們先回顧它的前輩:PID演算法。

1932年出生在瑞典後來移民美國的H?Nyquist發表了論文,採用圖形的方法來判斷系統的穩定性。在其基礎上H?W?Bode等人建立了一套在頻域範圍設計反饋放大器的方法。這套方法,後來也用於自動控制系統的分析與設計。

與此同時,反饋控制原理開始應用於工業過程中。1936年英國的考倫德(A?Callender)和斯蒂文森(A?Stevenson)等人給出了PID控制器的方法,自此PID演算法正式形成了。PID控制是在自動控制技術中佔有非常重要地位的控制方法。幾十年前的PID控制器還是機械式的,如圖1的氣壓控制器。

圖1 機械式PID氣壓控制器

時至今天,凡是有「自動控制」能力的產品,幾乎無一不採用到PID演算法,大至武器、飛機、輪船,小至家電、IOT設備、玩具等等。例如我們日常使用的空調,它是使用著PID演算法將溫度控制在我們期望值上;手機導航靠PID演算法準確分析運動狀態;無人機靠PID演算法穩定飛行姿態。 PID在我們周圍無處不在,盡心儘力地幫助人類實現「自動控制」。但和幾十年前不同,隨著計算機技術的發展,現在的PID大多是「軟控制」的,即在處理器裡面運行軟體控制,結構大為簡化。

二、 PID的原理與不足

圖2是直流電機的PID調速系統。No(t)是期望得到的電機目標速度,N(t)是電機實際的速度,U(t)是PID控制器的輸出電壓。No(t)與N(t)相比較,得出的偏差值E(t)=No(t)-N(t),經PID控制器計算後輸出控制電壓U(t),驅動電機改變速度。當實際速度偏小時,即No(t)> N(t),E(t)>0,PID控制器加大U(t)輸出,電機實際速度將提高;當實際速度偏大時,即No(t)<N(t),E(t)<0,PID控制器減少U(t)輸出,電機實際速度將降低。

圖2 直流電機PID調速系統

PID控制器使用公式1進行計算。公式的右邊有三項,分別是比例(Proportion)、積分(Integration)和微分(Differential)。

公式 1

比例環節的作用是對偏差作出快速響應,KP越大,控制能力越強,但過大的KP會增大超調量(超過給定值的量)。另外比例環節可以減少靜態誤差(穩定時與給定值比較的偏差),但不能完全消除。圖3使用比例環節把電機的轉速從零提升到2500r/min,提升過程比較快,但出現了超調,且存在靜態誤差。

圖3 比例環節的作用

積分環節的作用是消除積累下來的偏差(靜態誤差)。在控制過程中,只要有偏差存在,積分環節的輸出就不斷增大,直到偏差E(t)=0,輸出才可能穩定在某一值上。但積分環節會降低響應速度,增加超調量。TI越大,積分作用越弱。圖4是在比例環節的基礎上加上積分環節,先前的靜態誤差得到消除,電機趨於2500 r/min,但增加了另外一段超調量。

圖4 比例環節+積分環節的作用

圖5使用了PID的所用環節控制電機。每個環節各盡其職,比例環節P快速提升速度,積分環節 I 消除靜態誤差,微分環節D壓制超調量。

圖5 比例環節+積分環節+微分環節的作用

PID雖然應用廣泛,但有明顯的不足。PID反應慢,它是要等到誤差發生後,才去補償控制,如果控制力太大(比例係數KP),就有超調,如果過小,就反應慢。PID對環境變化敏感,例如無人機的螺旋槳在高速旋轉時,受到很強的壓縮空氣阻力,PID的作用力要很大才能維持穩定的速度,但是當低速時,空氣阻力非常小,在強大的PID作用力下,螺旋槳會震動、不穩定,所以這時需要另外一套較弱的PID。

三、ADRC的誕生

干擾,或者稱擾動,是指系統外部的環境出現變化,或者系統內部特性改變,最終影響了系統的性能。例如上面提到的無人機的螺旋槳,空氣阻力隨轉速變化,影響電機速度的穩定性,這個是外部擾動;當電機長時間運行後,溫度明顯上升,銅線圈的電阻值升高,原來預估的給多少V電壓就得到多少A電流的關係不存在了,這是內部擾動。

來個假設吧,如果世界一切美好、沒有任何內外擾動,那麼對於任何系統,只要調整好一次PID參數,就可在任何情況下都達到理想效果。但事與願違,擾動無處不在,如何實現「他強由他強,清風拂山崗;他橫由他橫,明月照大江」的抗擾動效果,一直是自控工程中最核心的研究工作。

自抗擾控制(ADRC)技術是已故韓京清研究員借鑒經典PID控制理論,在1999年正式系統地提出來的。他的靈感來源於指南車(又稱司南車),是中國古代用來指示方向的一種裝置。它與指南針利用地磁效應不同,它不用磁性,它是利用機械傳動系統來指明方向的一種機械裝置。

其原理是:靠人力來帶動兩輪的指南車行走,依靠車內的機械傳動系統來傳遞轉向時兩車輪的差動來帶動車上的指向木人與車轉向的方向相反角度,使車上的木人指示方向,不論車子轉向何方,木人的手始終指向指南車出發時設置的方向。「車雖回運而手常指南」這種思想在ADRC演算法中得到了升華。

圖6 指南車

四、 ADRC的原理

圖7是直流有刷電機ADRC調速控制框圖。ADRC的核心有三大模塊:跟蹤微分器、擴張狀態觀測器和狀態誤差反饋控制律。

對於電機速度控制,跟蹤微分器的輸入是目標速度;輸出是跟蹤速度和跟蹤加速度,跟蹤速度等於目標速度,跟蹤加速度就是目標加速度。

擴張狀態觀測器的輸入分別是:實際速度、輸出電壓u和係數b0的乘積;輸出分別是觀測速度、觀測加速度和觀測擾動,其中觀測速度等於實際速度,觀測加速度等於實際加速度,觀測擾動是系統內部和外部的總擾動,它除以b0後,減去狀態誤差反饋控制律輸出的電壓u0,即得到給電機的電壓u。

狀態誤差反饋控制律根據速度誤差(跟蹤速度-觀測速度)、加速度誤差(跟蹤加速度-觀測加速度),輸出電壓u0,如果兩個誤差都為零,那麼u0為零。係數b0是大致設定的參數,在這裡它表示多少V電壓對應多少轉速RPM。ADRC不管電壓和速度的真實關係,它只按自己設定的b0去控制,它認為當前電壓是u,速度應該是u*b0,如果實際速度有不同,偏差都認為是擾動(觀測擾動),可能是外部阻力變化引起的,也可能是電機內部參數估計不準引起的。觀測擾動除以b0後,直接補償到u輸出。所以ADRC就是任性,它無需專門測量擾動,「他自狠來他自惡,我自一口真氣足」。

另外,如果系統同時明確:目標速度和目標加速度,那麼可以省去跟蹤微分器,直接輸入這兩個量。

圖7 ADRC速度控制

五、ADRC的特點

1、 幾乎和模型無關

ADRC適用於從對對象模型一無所知到完全掌握對象模型的任何情況,如圖7,大致設定電壓和速度的關係b0即可。當然如果能準確捕捉到這個關係,ADRC工作強度將減輕,效果更佳。例如我們正在研究,當電機正在運行、發熱嚴重時,電機內部的電阻、電感、反向電動勢等參數都明顯變化,在不注入額外測量信號下(盡量不影響電機運行),如何利用AI人工智慧神經元技術,準確估算電機參數、重構電機模型b0,這樣ADRC的性能將更經一步提升。

2、反應敏捷

傳統PID控制都要等到誤差發生後,才能去補償控制,而ADRC將觀察到的擾動第一時間補償到輸出端。而且PID中的微分項D,雖然說有預測功能,但是它僅僅是將本次的誤差減去上一次的誤差,得到很粗劣的微分結果,而ADRC使用跟蹤微分器,準確跟蹤目標值的微分(圖7的跟蹤加速度),以及用擴張狀態觀測器得出實際值的微分(圖7的觀測加速度),兩個相減即為準確的誤差微分。

圖8是在京東熱賣的某產品的電機速度圖。它採用基於PID的FOC技術,電機要不停地加減速運動,黃線是目標速度,紅線是實際速度。實際的加減速還是很快的、跟蹤效果還可以,這個效果已經是行業領先了。曾幾何時我們想,如果不換電機,這個效果已經無法再好了。

圖8 基於PID的FOC

但某一天,如圖9,我們將FOC裡面的PID代碼直接換成了ADRC,出現了驚人的一幕。目標速度和實際速度兩條線幾乎重合,幾乎沒有超調、沒震動、沒靜態誤差,而且加減速提高了30%以上、雜訊降低2db、能效提高5%!

圖9 基於ADRC的FOC

3、 易用性

ADRC在最初推出時雖然性能驚人,但是要調試的參數非常多,不容易使用。但是隨著Scaling and Bandwidth-Parameterization等理論的提出,ADRC參數調整變得簡單多了,例如周立功的ADRC庫,只要分步調整擴張狀態觀測器的帶寬、狀態誤差反饋控制律的帶寬2個參數,系統即可大致調好。

4、 靈活性

ADRC是在PID的啟發下發展出來的,一般的只要有PID的地方,都可以直接用ADRC替換。

六、ADRC的應用

目前ADRC已在多個領域使用,如高超音速飛行器、磁懸浮、超導粒子加速器、大型射電望遠鏡、坦克火控系統、核電站冷卻系統等等,又如工業機器人、伺服電機驅動器、無人機飛控系統、掃地機器人,甚至網站搜索引擎等等。

圖10 高超音速飛行器

還有周立功的無人機電調、工業電機驅動器、汽車水泵電調、汽車風機電調、無刷電機專用控制晶元、基於NXP i.MXRT的多電機FOC方案等等,都內置了自行研發的高效ADRC演算法。

圖11 內置ADRC演算法的S32K FOC汽車電調

下一期,我們將進一步探討ADRC的技術原理,敬請關注!感興趣的可以加我微信號繼續聊:zlgmcu-888。

推薦閱讀:

相关文章