何梅方 劉欣志
摘 要:本文首先對常規數字PID控制器進行分析,針對常規PID控制器存在參數不能兼顧動態性、靜態性和協調性的問題[1],我們加入模糊控制器,將控制量的誤差和誤差變化率進行模糊化處理和邏輯決策,通過模糊推理算法和解模糊化-重心法,最后終實現對△ki、△kp、△kd三個輸入參數的在線調控。總結出模糊數字PID控制器在線參數自整定能力強,對抑制干擾和噪聲是有效的,能提高控制系統的靜態和動態性能,具有較強的自適應能力。
對模糊控制的PID控器原理進行探討,將此算法運用到自動控制原理中的水位控制問題中,實現了對水位更精確的控制。通過matlab中的simlink仿真,運用模糊控制數字PID 控制算法,實現了對抽象化后的水位仿真控制。
1.模糊PID控制器模糊控制規則的設計
通常,PID控制器的輸出量U(t),輸人量e(t)之間的關系見式(3)式中kP為比例增益,ki為積分增益,kp為微分增益。通過操作者的經驗總結,并結合理論分析,可歸納出誤差e和誤差變化率ec跟PID控制器三個參數kp,ki,kd間的關系[2]。
基于輸入誤差e和誤差變化率ec與三個參數△ki、△kp、△kd間的定性關系,結合工程設計人員的技術知識和實踐操作經驗,以此建立合適的模糊規則表,利用(2)得到kp,ki,kd等3個參數分別對應的模糊規則表[3]。
把模糊規則表轉化成語言型模糊規則即寫成條件語句形式,只要把該表用語言描述并存人單片機,在使用時,通過調用程序就可得出相應的輸出,不必在控制過程中進行推理,實現實時控制。
在MATLAB命令窗口運行Fuzzy函數進入模糊邏輯編輯器,并建立一個新的FIS文件,選擇控制器類型Mamdani型,根據上面的分析分別輸入E、EC、△KP、△KI、△KD的隸屬函數和量化區間,可得隸屬函數圖形[5]。打開Ruler Editor窗口,以If……then的形式輸入模糊控制規則,與方式 (And method)為min;或方式(Or method)為max;推理 (Implication)為min;合成 (Aggregation)為max;去模糊(Defuzzification)為重心平均法(centroid)。這樣就建立了一個FIS文件,取名為Fuzzypid.fis。在MATLAB的M文件編輯器里建立一個名為fpid.m的文件,其內容為:martrix=readfis(‘Fuzzypid.fis);這樣就完成了模糊工具箱與SIMULINK 的鏈接,為整個系統的建立打下基礎。
2. 模糊控制器仿真
在Matlab的Simulink環境下,建立模糊控制數字PID控制器,選取被控對象的函數為:
G(s)=26.67/(1+70s)
3. 利用模糊控制PID實現對水位控制
通過上述方法模型對自動控制中常見的水箱水位控制問題進行實踐仿真,使用模糊控制器對水箱水位進行控制。
假定水箱有一個進水口和一個出水口,可以通過控制一個閥門來控制流入的水量(即水位高度),但是流出的速度取決于出水口的半徑(定值)和水箱底部的壓力(隨水箱中的水位高度變化)。系統有許多非線性特性。
我們的設計的目標是一個合適的進水口閥門的控制器,能夠根據水箱水位的實時測量結果對進水閥門進行相應控制,使水位滿足特定要求(即特定輸入信號)。一般情況下,控制器以水位偏差(理想水位和實際水位的差值)及水位變化率作為輸入,輸出的控制結果是進水閥打開或關閉的速度[4]。
4.控制水位變化的仿真過程
在Simulink編輯窗口左邊的模塊瀏覽區可以看到在水箱仿真系統中包括水箱子模型、閥門子模型及 PID 控制子模型。直接在瀏覽區中點擊或右鍵點擊它們,并在彈出菜單中選擇[look under mask],可以看到這些模塊實現的細節結構,直接利用前面設定的模糊推理系統,在它的基礎上進行修改。這里我們采用與tank . fis中輸入輸出變量模糊集合完全相同的集合隸屬度函數定義,只是對模糊規則進行一些改動,來學習模糊工具箱與仿真工具的結合運用。對于這個問題,根據經驗和直覺很顯然可以得到如下的模糊控制規則:
If (水位誤差小)then(閥門大小不變(權重 1 );If (水位低) then (閥門迅速打開)(權重 1 );If (水位高) then (閥門迅速關閉)(權重 1 );
這相當于在原有模糊系統模型上減少兩條模糊規則得到的新的模糊推理系統。改動完成后進行仿真,觀察示波器模塊,可以得到系統水位變化,如圖1所示。
從上圖的仿真控制結果曲線中可以看出上述由三條模糊規則組成的模糊控制系統的結果并不理想,因此可以再增加如下兩條模糊控制規則:
If (水位誤差小且變化率為負) then (閥門緩慢關閉)(權重 1 );If (水位誤差小且變化率為正) then (閥門緩慢打開)(權重 1 ) ;
系統的輸出變化曲線如下圖2所示
從上圖可以看出,在增加了模糊控制規則后,系統的動態特性得到較大改善,不但具有較短的響應時間,而且超調量也很小。根據上述模糊控制算法,在simlink中確定最終模塊實現的細節結構,如圖3所示。
最后在Matlab中,用一個S函數”animtank.m”實現水箱模型的仿真動畫窗口,程序代碼見附錄三。該動畫從動畫中,可以觀察到實際系統的水位跟要求水位信號變化,以及實時改變輸入信號已達到控制水位的效果。
參考文獻:
[1]王立新.模糊系統與模糊控制教程[M].北京:清華大學出版,2003 年 6 月
[2]薛定宇,陳陽泉 Matlab/Simulink 的系統仿真技術與應用[M]. 北京:清華大學出版,2003 年 6 月
[3]屈毅 寧鐸 劉飛航 郭飛飛 模糊PID控制器的設計與仿真 陜西科技大學電信學院 2009年12月
[4]王安 楊青青 閆文宇 模糊自整定PID控制器的設計與仿真 西北工業大學自動化學院 2012年12月