模糊PID學習筆記

2021-09-18 06:04:32 字數 3019 閱讀 7705

​ 傳統pid本質上時微分方程,p通過誤差調節訊號變化幅度,i加強p,也就是誤差在系統中的作用,以增加精度,d通過上一次的誤差差分得到訊號的變化趨勢,並抑制該趨勢,該方法對非線性系統有很好的控制效果。

​ 其公式可為

​ 控制器輸出

​ 以上例子為四軸飛行器串級pid,串級pid個人理解上的本質是在單級pid上加強控制。

​ 以某篇博文中以伺服電機為例,伺服電機自帶一層電流環pid,其完全由伺服電機內部控制。

​ 而我們的外部pid,比如輸出pwm控制該伺服電機,屬於偏外層的pid,在該系統中成為速度環。

​ 最外層是pid是位置環,需要根據實際情況總結。

​ 最後將三者控制量相加得到最終的控制量(具體情況需要具體考慮),越多的環需要越多的計算。

​ 模糊,就如筆者對於前面所述的pid講解的pid甚為模糊(雖然在這裡不是什麼好詞)。

​ 模糊控制的含義就是最接近人體感知的控制,影象處理中的濾波可以稱作一種模糊化的處理,而深度學習中的卷積神經網路也是對資料進行了一層模糊化處理,從而進行分析其中的特徵,(模仿人對影象的認識)。

​ 可以總結為下圖

​ 筆者曾經寫過一種自美名曰為「動態pid」的pid方法。因為當時的情況下系統隨時間變化,所以在當時起到了挺好的作用,但是這讓筆者認識到了乙個道理,對於時變非線性系統不同時刻需要選用不同的pid引數,因此我們模糊pid控制,即利用模糊邏輯並根據一定的模糊規則對pid的引數進行實時的優化,以克服傳統pid引數無法實時調整pid引數的缺點

​ 模糊控制的輸入依然是我們熟悉的error(t)與error(t-1),步驟可分為

​ 模糊化,模糊推理,解模糊三個步驟,現在我們將從模糊化說起

1.模糊化

​ 模糊化分為一下步驟

​ 1.建立論域,例如定義為。

​ 2.函式量化,通過某量化函式將變數量化,接上例,論域為(-6,6),變數為e與ec,其中e為誤差,ec為誤差變化量,即e(t)-e(t-1),量化函式為線性函式,因為ec最大值最小值可為e的一倍,所以有兩倍的(max-min)。

f (e

)=6∗

emax

(e)−

min(

e)f(e)=\frac

f(e)=m

ax(e

)−mi

n(e)

6∗e​f(

ec)=

6∗e2

∗(ma

x(e)

−min

(e))

f(ec)=\frac

f(ec)=

2∗(m

ax(e

)−mi

n(e)

)6∗e

​ ​ 3.確定隸屬度函式,例為三角隸屬度函式。

​ 即到兩詞義(分割值)的距離大小。

2.模糊規則表

​ 可設計模糊規則表如下

​ 此表需要我們自己定製。

​ 通過我們得到的描述例如正大,正小等詞義來找到我們需要的詞義。

​ 從而得到pid引數變化值這一目的,但這不是最後的步驟。

3.解模糊

​ 我們之前的隸屬度函式在這裡起到了用處,通過我們的計算隸屬度的結果實際上得到的是我們的輸入值到兩個詞義的靠近程度,如果說,把區間分為詞義,也就是負大nb,負中nm,負小ns等描述詞的是第一層模糊的話,我們把通過描述隸屬度,也就是描述我們的輸入到這些相鄰詞義的距離則可以稱為第二層模糊,如果我們的相鄰詞義具體值分別為4,6,而我們計算出來的隸屬值為4.2的話,對於程度4的隸屬度便為(6-4.2)/(6-4),反之可算出到6的隸屬度。

​ 我們所謂的解模糊,便是通過這些模糊隸屬度推理出清晰的值。

v 0=

∑i=0

∞(mi

∗fi)

∑i=0

∞miv_0=\frac^\infty (m_i*f_i)}^\infty m_i}

v0​=∑i

=0∞​

mi​∑

i=0∞

​(mi

​∗fi

​)​​ 其中m為隸屬度,f為量化值。

​ 最後通過

k (n

)=k+

δk∗α

k(n)=k+\delta k*\alpha

k(n)=k

+δk∗

α​ α是權值,k的變化值即為v。

​ 通過該公式可分別求出kp,ki,kd。

圖載至

模糊PID演算法

在講解模糊pid前,我們先要了解pid控制器的原理 本文主要介紹模糊pid的運用,對pid控制器的原理不做詳細介紹 pid控制器 比例 積分 微分控制器 是乙個在工業控制應用中常見的反饋迴路部件,由比例單元p 積分單元i和微分單元d組成。pid控制的基礎是比例控制 積分控制可消除穩態誤差,但可能增加...

模糊PID控制

在現實控制中,被控系統並非是線性時不變的,往往需要動態調整pid的引數,而模糊控制正好能夠滿足這一需求,所以在接下來的這一節我們將討論模糊pid控制器的相關問題。模糊pid控制器是將模糊演算法與pid控制引數的自整定相結合的一種控制演算法。可以說是模糊演算法在pid引數整定上的應用。模糊演算法是一種...

模糊PID控制演算法

在pid控制演算法的c 語言實現中,文章已經對模糊pid的實質做了乙個簡要說明。基本概念和思路進行一下說明,相信有c 語言基礎的朋友可以通過這些介紹性的文字自行實現。這篇文章主要說明一下模糊演算法的含義和原理。實際上模糊演算法屬於智慧型演算法,智慧型演算法也可以叫非模型演算法,也就是說,當我們對於系...