趙爾全,孫國法,黃鳴宇,張國巨
(青島理工大學 信息與控制工程學院,青島 266525)
伴隨著我國社會主義現代化的快速發展,國家經濟體制轉變加速,工業企業面臨著國內外日益增長的競爭壓力。在這種大背景下,控制領域要求控制系統的設計精度和控制品質也日益提高。不同時期的學者們從不同的方向為控制理論的發展做著重要的貢獻。PID控制器自20世紀二三十年代被提出以來,因其控制器結構簡單、操作性強、易于實現、控制效果好、具有良好的魯棒性等特點,深受學者青睞,在工業中獲得普遍的運用,迄今仍占主導地位[1]。但隨著科學技術的不斷進步,對于控制性能的要求越來越高,高精度控制領域中 PID難以處理復雜控制對象的缺陷逐漸顯露出來。現代控制理論產生并涌現出了如最優控制、魯棒控制、自適應控制等理論成果,大部分的現代控制理論方法均依賴于系統的數學模型,在實際應用中有局限性[2]。1989年韓京清以控制理論是“模型論”還是“控制論”[3],探討和思考控制理論的發展趨勢。發揚和繼承了經典PID控制技術“基于誤差消除誤差”的思想精髓,吸取現代控制理論的研究成果,提出了“自抗擾控制(Active Disturbance Rejection Control, ADRC)”[4-5]。自抗擾控制的特點在于不依賴受控對象的數學模型,將所有作用于受控對象的不確定因素均視為“總擾動”(內擾跟外部高頻噪聲干擾),對作用于受控對象的輸入輸出信息進行實時的估計和補償,從而把原來的非線性系統轉化成線性的積分串聯型。文獻[6]采用線性自抗擾控制技術進行設定點控制器設計,表明線性自抗擾控制器具有優良的控制性能。文獻[7-9]利用Matlab軟件進行了控制器仿真特性的研究。本文使用Simulink模塊庫對控制對象進行建模,采用子系統模塊封裝的方法進行底層、頂層設計,采用分離性原則對控制器參數進行整定,將三部分綜合構建成自抗擾控制器。利用子系統封裝技術將Simulink搭建好的系統進行封裝,能夠使整個模型變得更簡潔直觀,參數的調節也非常便捷。再將搭建好的各模塊子系統添加到Library Browser庫中,方便日后調用,節省建模時間。
自抗擾控制器能夠應用于諸多領域并受到普遍推廣的關鍵,在于它能夠處理具有大范疇和復雜結構不確定性系統的控制問題,從長盛不衰的PID控制器演化而來的自抗擾控制器繼承了PID控制器根據誤差來消除誤差的控制觀念,依據受控對象的輸入輸出關系選擇簡易的積分串聯型作為標準型,把系統動態中異于標準型的部分視為總擾動,然后利用擴張狀態觀測器對總擾動進行實時的估計和消除,從而把復雜受控對象結構轉化為積分標準型。在許多不確定因素的狀況下,仍然具備良好的控制性能。自抗擾控制器由跟蹤微分器(TD)、非線性狀態誤差反饋控制律(NLSEF)、擴張狀態觀測器(ESO)三部分構成[10]。圖1為二階對象系統的ADRC結構。

圖1 二階系統ADRC結構
跟蹤微分器是為輸入信號安排的過渡過程,可以快速地跟蹤輸入信號并得到輸入信號的微分信號。自抗擾控制器繼承了PID控制器誤差反饋控制的思想,跟蹤微分器就是一種基于誤差信號處理的算法。二階跟蹤微分器結構如圖2所示。

圖2 二階跟蹤微分器結構
圖2中v(t)為指定的輸入信號,經過跟蹤微分器TD的處理,得到兩個輸出信號x1(t)和x2(t),x1(t)是對輸入信號v(t)的跟蹤信號,x2(t)是對跟蹤信號x1(t)提取的微分信號。離散化后的非線性跟蹤微分器形式為

(1)
式中:r為速度因子,其值越大跟蹤速度就越快;h0為濾波因子,起濾波作用,其值越大濾波效果會更好;h為積分步長(采樣周期)。
引入的最速控制綜合函數fhan(x1,x2,r,h)算法如下:

(2)
將fhan中的h換為與之獨立的新變量h0,取h0為適當大于h的參數來消除系統超調現象,能很好地抑制微分信號中的噪聲。
非線性狀態誤差反饋控制律就是利用跟蹤微分器產生的跟蹤信號x1與微分信號x2和擴張狀態觀測器得到的系統狀態估計值z1,z2,得出誤差信號e1,e2。對已經轉換為積分串聯型的系統通過非線性狀態誤差反饋組合得到誤差反饋控制量u0,再經過擾動估計值z3的補償決定輸入被控對象的最終控制量。通常采用如下非線性組合:

(3)
式中:β1,β2為控制器可調增益參數;z1,z2為觀測器給出的對象估計;α為常數;δ為線性段區間長度。
fal(e,α,δ)函數具體形式如下:

(4)
加入擾動補償后的實際控制量為
u=u0-z3/b
(5)
式中:b作為可調參數,是決定補償強弱的“補償因子”。
擴張狀態觀測器能夠進行實時觀測未知外擾和系統產生的實時作用,采用適當方法進行補償。作為自抗擾控制器極為關鍵的組成部分,優點在于不依賴于生成擾動的具體數學模型,也無需直接測量就能對擾動進行觀測,得到估計值[11]。擴張狀態觀測器結構如圖3所示。

圖3 擴張狀態觀測器結構
設有二階非線性被控對象:

(6)


(7)
式中:w(t)為外部干擾。
將外擾當作一個新的未知狀態變量x3,則有
(8)
在此系統上建立非線性狀態觀測器:

(9)
式中:β01,β02,β03為ESO的可調增益參數;z1,z2為觀測器給出的對象估計;e為誤差。
對應的離散擴張化狀態觀測器為

(10)
則式(10)為式(7)的擴張觀測器,被擴張狀態x3的估計值z3為對總擾動中的未知擾動f進行實時估計和在線補償。
基于Matlab2018a軟件進行控制器的建模,Simulink中提供了所有封裝子系統所需的模塊,利用Create Subsystem可以對系統進行封裝,將建好的子系統可添加到自定義庫中并在庫瀏覽器中顯示,便于后續使用。
以Simulink構建跟蹤微分器為例,首先建立TD子系統中的底層fhan函數,利用fhan算法在Simulink Library Browser中查找所需模塊,添加并連接如圖4所示。

圖4 fhan函數仿真模型
除模型輸入輸出外選中其他部分,點擊Create Subsystem進行封裝,并對封裝模型進行命名,再根據離散跟蹤微分器建立頂層仿真模型如圖5所示。

圖5 跟蹤微分器子系統仿真模型
再對子系統仿真模型進行封裝,封裝后模塊如圖6中的TD所示。
最后,進入mask Editor對話框中的parameters & Dialog界面進行參數設置,見表1。

表1 參數設置窗口
擴張狀態觀測器和非線性誤差反饋控制律以同樣的方法進行建模,封裝成子系統后設置好各自參數,作為自抗擾控制器的組成部分。
為了使用戶能夠便捷地使用自己所封裝的子系統,無需頻繁地去重新建模或復制粘貼,可以將搭建好的子系統添加到Library Browser中,便于一鍵添加,方便使用。
1) 將自定義的模塊庫以slx文件格式保存在Matlab路徑之下,命名為“mylib.slx”。
2) 在同一文件下建立slblocks.m文件,程序為
function blkstruct=slblocks
Browser.Library=′mylib′;%′mylib′模塊庫名稱
Browser.Name=′My Library′;%′My Library′為顯示庫的模塊名稱
blkStruct.Browser=Browser;
end
3) 將此文件添加到Matlab路徑中,重新進入庫瀏覽器刷新就可以查看到自定義的封裝庫,如圖6所示。

圖6 自抗擾控制器自定義模塊庫
在Simulink庫瀏覽器中添加封裝完成的跟蹤微分器模塊后,分別針對階躍信號與正弦信號在濾波因子h0=0.001,速度因子r不同條件下進行實驗仿真。
從圖7、圖8的仿真效果中可以發現,隨著速度因子的增大,跟蹤微分器對于階躍信號和正弦信號的響應時間越快,跟蹤效果越精準,誤差越小,提取微分信號時滯后也越來越小。表明封裝的跟蹤微分器模塊能夠實現良好的跟蹤特性,進行參數實時調整的同時可以直觀地通過示波器觀察仿真結果,以達到最優的控制效果。

圖7 階躍信號輸入下速度因子不同時的跟蹤效果

圖8 正弦信號輸入下速度因子不同時的跟蹤效果
以二階被控對象為例:

(11)


圖9 非線性擴張狀態觀測器仿真結果
從圖9可以看出,擴張狀態觀測器輸出變量z1,z2對于系統的狀態變量x1,x2具有很好的跟蹤效果,幾乎不存在差異。輸出變量z3對于系統總擾動f(t)的觀測總體跟蹤效果良好,只是在初始時刻由于擾動的跳變導致跟蹤差異比較明顯。表明擴張狀態觀測器能夠很好地對外知擾動進行實時觀測和補償,并將含有未知外擾的非線性不確定對象用狀態反饋化為積分串聯型,再用非線性狀態誤差反饋控制算法,設計出理想的控制器,從而實現自抗擾控制器的功能。
本文針對自抗擾控制器的三個重要組成部分進行算法推導,使用Simulink模塊展示如何搭建自抗擾控制器基本結構,以及如何進行子系統封裝和自定義庫的添加。實驗證明,添加自抗擾控制器的自定義庫能夠提升工作效率,節省編程時間,也為調參帶來便捷,仿真結果驗證了自抗擾控制器跟蹤效果明顯,擁有良好的控制性能。