在現實控制中,被控系統並非是線性時不變的,往往需要動態調整pid的引數,而模糊控制正好能夠滿足這一需求,所以在接下來的這一節我們將討論模糊pid控制器的相關問題。模糊pid控制器是將模糊演算法與pid控制引數的自整定相結合的一種控制演算法。可以說是模糊演算法在pid引數整定上的應用。模糊演算法是一種基於智慧型推理的演算法,雖然稱之為模糊演算法其實並不模糊,實際上是一種逐步求精的思想。乙個模糊控制器主要是由模糊化,模糊推理機和精確化三個功能模組和知識庫(包括資料庫和規則庫)構成的。在此我們近討論模糊控制的幾個主要問題。
輸入資料都是精確的,要實現模糊演算法需要現對其實現量化。所謂量化就是通過量化函式將輸入量投射到一定的數字級別,一般都是相對於0對稱的數字區間。具體投射到怎樣的區間根據實際情況而定,因為這會直接影響到計算的精度。
模糊化是模糊演算法非常重要的一步,首先確定對應各語言變數的模糊子集,然後根據量化的結果,我們就可以判斷該輸入所屬的集合並計算出對應的隸屬度。計算隸屬度的方法有很多,最常用的是使用三角形隸屬度函式或梯形隸屬度函式等來計算獲得。
規則庫是基於控制量的模糊化而的味道的,是實現模糊推理的基礎,很大程度上依賴於經驗來完成。規則庫的表現形式可以有多種,具體實現的形式根據我們實現的方便。
推理決策才是模糊控制的核心,它利用知識庫中的資訊和模糊運算方式,模擬人的推理決策的思想方法,在一定的輸入條件下啟用相應的控制規則給出適當的模糊控制輸出。
我們通過模糊推理,得到一系列的模糊表達,需要進行解模糊操作才能得到緊缺的資料。常用的解模糊方法有:
系統控制輸出是乙個精確的數,但不是可以直接用於物件控制的物理量,所以在最後還要按照我們的需要進行轉換。比如對應pid的引數則可進行必要的轉換和修正在輸出給pid控制器。
輸入值的模糊化就是將用於計算的輸入對應到標準化的數值區間,並根據量化結果和模糊化子集得到該輸入對子集的隸屬度。我們在使用偏差e和偏差增量ec作為輸入實現控制引數調整則需要對e和ec進行模糊化。
首先,我們確定e和ec的模糊子集,對於pid控制我們選則:負大[nb]、負中[nm]、負小[ns]、零[zo]、正小[ps]、正中[pm]、正大[pb]等7個語言變數就能夠有足夠精度表達其模糊子集。所以我們定義e和ec的模糊子集均為。
確定了模糊子集,我們怎麼將e和ec的具體值和模糊集對應上呢?我們需要引入量化函式。要確定量化函式,我們先引入e和ec模糊集對應的論域,定義為。對於任何乙個物理量測量訊號都有乙個量程範圍,我們記為vmax和vmin,和自然在pid調節時設定值的範圍預期相同,所以偏差e的範圍就是vmin-vmax到vmax-vmin的範圍內,而偏差的增量範圍則是其兩倍。這裡我們採用線性方式量化,則其函式關係為:
利用上述的量化函式就可以將e和ec量化,我們可以採用如4舍5入的方式獲取確定的模糊子集。但考慮到e和ec的變化是連續變化的,4舍5入對控制精度可能存在影響,所以我們引入隸屬度來實現這一過程。
最後我們確定e和ec在模糊子集上的隸屬度。隸屬度是乙個介於0和1之間的值,用以描述對應乙個輸入屬於某乙個模糊自己的程度。一般我們描述成隸屬度函式,可採用的隸屬度函式很多,我們在次採用線性的隸屬度函式,或者稱為三角隸屬度函式,其函式關係如下:
如果我們量化後的結果是1,那麼屬於zo的隸屬度為0.5,同樣屬於ps的隸屬度也是0.5。至此,模糊化全部完成。
前面我們簡述了輸入的模糊化,但模糊推理才是模糊控制的根本。為了實現模糊推理首先我們要建立模糊推理的規則庫或者稱知識庫,然後建立推理機進行推理。
首先,我們來建立模糊規則庫,在這裡我們要對kp、ki和kd三個引數進行調整,所以要建立這3個變數的模糊規則庫。
在pid控制器中,kp值的選取決定於系統的響應速度。增大kp能提高響應速度,減小穩態偏差;但是,kp值過大會產生較大的超調,甚至使系統不穩定減小kp可以減小超調,提高穩定性,但kp過小會減慢響應速度,延長調節時間。因此,調節初期應適當取較大的kp值以提高響應速度,而在調節中期,kp則取較小值,以使系統具有較小的超調並保證一定的響應速度;而在調節過程後期再將kp值調到較大值來減小靜差,提高控制精度。基於上述描述我們定義kp的模糊規則如下:
在系統控制中,積分控制主要是用來消除系統的穩態偏差。由於某些原因(如飽和非線性等),積分過程有可能在調節過程的初期產生積分飽和,從而引起調節過程的較大超調。因此,在調節過程的初期,為防止積分飽和,其積分作用應當弱一些,甚至可以取零;而在調節中期,為了避免影響穩定性,其積分作用應該比較適中;最後在過程的後期,則應增強積分作用,以減小調節靜差。依據以上分析,我們制定的ki模糊規則如下:
微分環節的調整主要是針對大慣性過程引入的,微分環節係數的作用在於改變系統的動態特性。系統的微分環節係數能反映訊號變化的趨勢,並能在偏差訊號變化太大之前,在系統中引入乙個有效的早期修正訊號,從而加快響應速度,減少調整時間,消除振盪.最終改變系統的動態效能。因此,kd值的選取對調節動態特性影響很大。kd值過大,調節過程制動就會超前,致使調節時間過長;kd值過小,調節過程制動就會落後,從而導致超調增加。根據實際過程經驗,在調節初期,應加大微分作用,這樣可得到較小甚至避免超調;而在中期,由於調節特性對kd值的變化比較敏感,因此,kd值應適當小一些並應保持固定不變;然後在調節後期,kd值應減小,以減小被控過程的制動作用,進而補償在調節過程初期由於kd值較大所造成的調節過程的時間延長。依據以上分析,我們制定kd的模糊規則如下:
接下來,根據偏差e和偏差增量ec模糊化的結果以及規則庫推理出∆kp、∆ki、∆kd對應的模糊子集。由於前面我們設計的是採用隸屬度函式來定義輸入輸出量在模糊子集的隸屬度,所以推理出來的∆kp、∆ki、∆kd的模糊子集通常是乙個由模糊變數組成的矩陣。而輸入量e和ec則是乙個由模糊變數組成的向量。
最後,我們需要明確不同的模糊變數所對應的量化資料。這個量化資料與物理量的對應則根據具體的不同物件是完全不一樣的。
對於求得的目標物件,我們還需要將其你模糊處理以使其與具體的物理量相對應。在模糊pid調解中,我們需要的是kp,ki和kd,所以我們需要根據模糊推理的結果得到我們想要的kp,ki和kd值。
我們前面設計了三角隸屬度函式,並採用相同的量化目標即論域,所以在某一時刻,輸入輸出所處的模糊變數的隸屬度是相同的,基於這一基礎,我們採用重心法計算各輸出量的量化值。其公式如下:
其實因為我們採用的隸屬度函式的特性,在任何方向的計算隸屬度的和均為1,所以分母可以省略。於是每乙個物件的計算實際上就是矩陣操作,公式如下:
如果使用的是量化值,則還需要轉為實際值,關於這一點直接使用物理量值也是沒問題的,怎麼處理根據實際需要確定。得到增量後,我們也可以引入係數來放大和縮小kp,ki和kd變化量,具體實現公式如下:
其中∆k為我們所計算得到的值,而α為係數,設定增量對最終值的影響。
模糊pid演算法是模糊演算法在pid引數整定上的應用,與純粹的模糊控制演算法是有區別的。普通的模糊控制器適用於直接推理控制器的輸出,而模糊pid演算法使用模糊演算法修改pid引數,最終的控制器輸出依然是由pid控制器來實現的。
模糊控制本身是非常複雜且具體應用方式很多。大多是針對特定物件的專業控制器,已經脫離了pid這種通用性控制器的範疇。此外比較熱門的還有模糊多變數控制器是屬於先進控制系統(apc)的範疇,有機會再討論。
模糊PID控制演算法
在pid控制演算法的c 語言實現中,文章已經對模糊pid的實質做了乙個簡要說明。基本概念和思路進行一下說明,相信有c 語言基礎的朋友可以通過這些介紹性的文字自行實現。這篇文章主要說明一下模糊演算法的含義和原理。實際上模糊演算法屬於智慧型演算法,智慧型演算法也可以叫非模型演算法,也就是說,當我們對於系...
模糊PID控制(理論 simulink)
經典pid控制原理簡單,使用方便,適應性強的特點,但是缺點是精度低 抗干擾能力差等,因此為了改善pid效果,我們希望pid的引數不是固定不變的,而是根據當前的系統狀態實時調整pid引數,於是就產生了很多自適應調參的方法,其中之一就是模糊pid控制方法。模糊pid控制方法 以誤差e 和誤差變化率ec ...
模糊PID演算法
在講解模糊pid前,我們先要了解pid控制器的原理 本文主要介紹模糊pid的運用,對pid控制器的原理不做詳細介紹 pid控制器 比例 積分 微分控制器 是乙個在工業控制應用中常見的反饋迴路部件,由比例單元p 積分單元i和微分單元d組成。pid控制的基礎是比例控制 積分控制可消除穩態誤差,但可能增加...