劉淑榮,龐偉
(長春工程學院 電氣與信息工程學院,長春 130012)
模糊控制是一種基于規則的近似推理的智能控制,是以模糊集合理論、模糊語言變量及模糊推理為基礎的一類計算機數字控制方法。與傳統的控制方式一般需要被控對象精確的數學模型相比,模糊控制方式則以人類智能活動為基礎,模擬人類的思維方式,可以克服許多不確定因素,解決許多傳統線性系統理論難以解決的控制問題。因此,在實際應用中,針對很難建立精確數學模型存在大滯后、非線性、時變性和隨機干擾等的復雜控制系統,模糊控制已經成為一種具有較好控制效果的控制方法。
在模糊控制技術應用領域,模糊控制器基本上是由單片機或專用模糊控制芯片實現的。隨著PLC控制技術的發展,其已被廣泛應用于各個領域的控制系統中,PLC可編程控制器以其集成度高、功能多樣性、抗干擾性強、工作狀態穩定等特點,備受工控行業的青睞。目前已有一些PLC生產廠商開發了具有模糊控制功能的模塊供用戶選用,但由于其輸入量、每個變量模糊子集的個數及規則的條數有一定的范圍,再加上其價格非常昂貴,反倒限制了模糊控制在PLC上的應用。因此,把模糊控制技術與PLC技術有效地結合起來,綜合利用PLC編程靈活、方便可靠的特點和模糊控制器的智能性,將會使模糊控制技術在工業控制中發揮更大的作用。本文以二維模糊控制器為例來說明模糊控制在PLC控制系統中的實現。
系統模糊控制采用二維模糊控制器。二維模糊控制器的輸入為偏差e、偏差變化率ec,輸出為被控對象輸入u。模糊控制器模型如圖1所示。
圖1 二維模糊控制器
設偏差e的實際論域為[-10,+10],模糊論域E為[-3,+3],模糊量化因子ke=3/10=0.3,語言變量賦值為{NB,NM,NS,Z,PS,PM,PB},隸屬度函數選三角形隸屬函數。
設偏差變化率ec的實際論域為[-30,+30],模糊論域EC為[-3,+3],模糊量化因子kec=3/30= 0.1,語言變量賦值為{NB,NM,NS,Z,PS,PM,PB},隸屬度函數選三角形隸屬函數。
模糊控制器輸出u的實際論域為[0,200],模糊論域FU為[-2,+2],語言變量賦值為{NM,NS,Z,PS,PM},隸屬度函數選三角形隸屬函數,清晰化采用最大隸屬度法,清晰化因子ku=200/4=50。
其中,語言變量E、EC和FU的三角形隸屬函數賦值如圖2~3所示。
圖2 語言變量E、EC的賦值
圖3 語言變量FU的賦值
應用Mamdani模糊推理算法進行模糊推理設計。
Mamdani推理算法屬于關系合成推理法中的一種,簡稱CRI方法,是實際控制中應用較為廣泛的一種模糊推理算法。這種算法的基本原理:用一個模糊集合表述大前提中全部模糊條件語句前件的基礎變量和后件的基礎變量之間的關系,用一個模糊集合表述小前提,進而用基于模糊關系的模糊變換運算給出推理結果。
在Mamdani推理中,把模糊蘊涵關系A→B用A和B的笛卡爾積表示,即
R=A→B=A×B,
(1)
R(x,y)=A(X)∧B(y)。
(2)
對于模糊取式(Fuzzy Modus Ponens,FMP)推理,則有B*
B*=A*°R,
(3)
(4)
其中:
(5)
Mamdani推理算法可用圖形加以描述,如圖4所示。
圖4 Mamdani的推理描述
由圖4可知,
α=H(A*∩A)。
(6)
α可以看成是A*對A的適配程度,即隸屬度。
應用Mamdani模糊推理,得到模糊控制規則表(表1)。
表1 模糊控制規則
本文采用西門子PLC CPU1215C AC/DC/RLY作為核心控制器,其硬件組態比較簡單,系統設置2個按鈕,分別控制系統的啟動和停止。同時,利用 CPU1215C 控制器自帶的模擬量輸入IW64完成對被控對象的數據采集,利用模擬量輸出QW64實施對被控對象的控制。
軟件設計采用模塊化結構,利用梯形圖語言進行設計,系統軟件設計流程圖[4-5]如圖5所示。
圖5 系統軟件設計流程圖
系統軟件設計由主程序Main、循環中斷組織塊OB30、模糊控制算法模塊FB1及被控對象模塊FB2 4個部分組成:
1)主程序Main模塊:在主程序Main中主要完成數據的采集、偏差e和偏差變化率ec的計算及離散化處理。系統啟動后,由上位機輸入設定值,每隔100 ms對被控對象進行1次采樣,分別存入MD200和MD204單元,通過設定值和采樣值數據分別計算偏差e及偏差變化率ec,存入MD208和MD216單元,同時進行越限處理,最后分別乘以各自的模糊量化因子進行離散化處理,存入MD304和MD312單元等。
2)模糊控制算法模塊:利用FB1模塊來實現模糊控制算法查表程序。
3)虛擬被控對象模塊:利用FB2模塊來實現虛擬被控對象,一階或二階系統。
4)循環中斷組織塊OB30:在循環中斷組織塊OB30中首先調用模糊控制算法程序模塊FB1完成模糊控制在線查表及必要的運算來實現模糊控制,再將查得的模糊控制結果作用于被控對象,觀察被控對象的運行結果能否跟隨給定值的變化而變化。
在軟件設計的4部分組成中,FB1模糊控制算法程序的設計及調用是關鍵,這一部分的詳細設計過程:
1)在離線狀態下編制模糊控制規則表,前文中已經實現。
2)PLC的在線查表指令-讀取域指令FeildRead的介紹。讀取域指令FeildRead位于西門子S7-1200 PLC基本指令的移動操作指令中,如圖6所示,該指令的含義:根據指定數組的元素下標值,讀取對應的元素值,其中,指令中的輸入參數INDEX是即將要讀取的元素的下標值,數據類型DINT;輸入參數MEMBER是指定數組中第一個元素的地址;輸出端參數VALUE用于存放讀取出來的數據。
圖6 讀取域指令FeildRead
3)由于讀取域指令FeildRead的輸入參數INDEX值沒有負值,因此,為了便于S7-1200 PLC的在線查表進程順利進行,首先需要將E和EC的離散負數論域轉換為離散正數論域,即查表前進行查表行距索引處理:E離散論域[-3,3]加3處理變成[0,6],EC離散論域[-3,3]加3處理變成[0,6]。這樣,就將模糊控制規則表1中的第1~7行元素由原來的離散論域[-3,3]轉變為離散論域[0,6],轉換后的在線查詢模糊控制規則見表2。
表2 在線查詢模糊控制規則
4)在FB1模塊的臨時接口區建立2個輸入變量E和EC,1個輸出變量FU,數據類型均為實數Real。同時,建立數據類型為Array[0..48]of Real的靜態變量Static_1,用于存儲在線查詢模糊控制規則表中的49個元素,將表2中的元素按照從左到右、從上到下的規則依次存入Static_1中,即靜態變量Static_1中索引0~6的元素為表2中的第1行元素,7~13為表2中的第2行元素,以此類推,共49個元素,如圖7所示。
圖7 PLC中模糊控制規則表的表現形式
由圖7可以看出,偏差E和偏差變化率EC的離散論域與數組型靜態變量Static_1的索引之間存在的關系:
靜態變量Static_1的索引=E(k)*7+EC(k)k∈(0-48)。
(7)
由式(7)可以看出,只要知道E和EC,就可計算出靜態變量Static_1的索引,然后執行讀取域指令FeildRead就可以讀取出該索引所對應的靜態變量Static_1即在線查詢模糊控制規則表中所存儲的數據FU,實現模糊查詢功能。
FB1中模糊控制算法查詢具體程序如圖8所示。
圖8 模糊查詢模塊FB1具體程序
5)建立循環中斷組織塊OB30,每隔100 ms調用1次。在循環中斷組織塊OB30中調用FB1完成模糊查詢,得到模糊查詢結果FU,將該數據乘以清晰化因子即可得到實際輸出量,再將此作用于虛擬被控對象,實現模糊控制。在循環中斷組織塊OB30中調用FB1程序的情況如圖9所示。
圖9 FB1程序在循環中斷組織塊OB30中的調用情況
針對一階控制系統模型,其傳遞函數為
(8)
式中采樣時間1 s。仿真結果:系統啟動后,設定值分別為25和45時,其仿真實際值的變化如圖10所示。
圖10 一階控制系統的模糊控制仿真輸出波形圖
針對二階控制系統模型,其傳遞函數為
(9)
式中采樣時間1 s。仿真結果:設定值分別為20、35和55時,仿真實際值的變化如圖11所示。
圖11 二階控制系統的模糊控制仿真輸出波形圖
由圖9~10的波形仿真效果來看,無論是一階系統還是二階系統,短時間內系統輸出均能夠實時跟隨設定值的變化而變化,可實現模糊控制的效果。美中不足的是,針對設定值,系統仿真與實際輸出有±1的偏差,在設定值附近波動。這一點微小的偏差在實際應用中可以通過結合其他的控制算法共同解決。這里只是給出幾個設定值的變化,對于其他任意的設定值,效果一致。
利用模糊控制算法,被控對象的輸出在偏差和偏差變化率允許范圍內,能夠在短時間內達到快速跟隨設定值的變化而變化,但會有微小的偏差。因此,在實際應用中,我們常常以模糊控制為核心,輔以其他控制方法構成大系統智能控制體系。例如,可以考慮在本系統中結合PID算法,在實際值和設定值的偏差較大時,利用模糊控制算法進行粗調,達到快速跟隨的效果,當實際值和設定值的偏差在±1~±2的范圍內,可以利用PID算法進行微調,直至最終消除偏差,達到精確控制的目的。