劉 剛 蔣偉進董 胡 童 欣
(1.長沙師范學院 長沙 410100)(2.湖南商學院 長沙 410205)
溫濕度是生活中最基本的兩個環(huán)境參數(shù),溫度的檢測和控制研究比較早,技術比較成熟,而近幾年來,隨著社會發(fā)展帶來的生活品質(zhì)提高,濕度的檢測和控制系統(tǒng),特別是高精度,高效率的濕度檢控系統(tǒng)應用需求大幅度增加。不管是溫度控制,還是濕度控制,大多數(shù)是基于單片機的軟件控制。這種控制方法控制效果不是很理想,控制精度不高,費時長[1~3]。隨著 EDA技術的快速發(fā)展,以 FPGA為開發(fā)設計平臺,采用先進的PID控制算法不僅能實時達到較高精度,而且能解決單片機軟件控制所帶來的抗干擾性不強而導致程序易跑飛的問題[4~5]。傳統(tǒng)PID控制由于魯棒性好,可靠性高在自動控制領域得到越來越多的應用,但針對非線性、時變的復雜控制系統(tǒng)會出現(xiàn)難于獲得較為準確的數(shù)學模型而失去控制對象的現(xiàn)象[6]。為了能較為精確實現(xiàn)濕度控制,本文利用模糊控制理論而因此不需要建立精確的數(shù)學系統(tǒng)模型,依據(jù)專家和實際工程人員的經(jīng)驗知識,通過自動整定的方式實現(xiàn)參數(shù)的調(diào)整,從而實現(xiàn)對濕度控制要求比較高的應用場合的精確控制[7~8],并綜合PID控制的優(yōu)點,進行基于FPGA的模糊自適應PID濕度控制設計和實現(xiàn)。
模糊PID控制的結構框圖如圖1所示。模糊自整定PID是在傳統(tǒng)PID算法的基礎上,通過計算當前系統(tǒng)誤差e和誤差變化率ec,首先利用模糊規(guī)則進行模糊推理,然后查詢模糊矩陣表進行參數(shù)調(diào)整[9]。以此來進行自適應調(diào)節(jié)PID算法中的比例系數(shù)Kp、積分系數(shù)KI、微分系數(shù)KD三個系數(shù)[10]。
圖1 自適應模糊控制器的結構
通過如圖2所示的對常規(guī)和模糊PID階躍響應比較分析可知,模糊PID相比于常規(guī)PID具有超調(diào)量小,調(diào)節(jié)時間短等優(yōu)點[11]。并且在控制過程中根據(jù)偏差和偏差變化率的改變能夠?qū)崟r地整定參數(shù),具有較強的自適應能力[12]
圖2 常規(guī)和模糊PID階躍響應比較圖
根據(jù)前面增量式PID控制算法結合模糊控制理論得出本設計整體電路架構如圖3所示。
圖3 模糊自整定PID電路架構
按照模糊自整定PID電路架構和控制算法流程,根據(jù)FPGA設計自頂向下設計特點,充分利用該芯片內(nèi)部的豐富的宏功能模塊,運用Verilog HDL語言和原理圖混合設計。整體電路如圖4所示,該設計分為誤差生成模塊、模糊量化模塊、模糊查找表生成模塊、PID運算模塊。各子模塊設計思路和結構如下:
圖4 模糊PID控制器系統(tǒng)結構圖
1)誤差生成模塊
該模塊主要是完成產(chǎn)生輸入偏差e(k)、及其偏差 e(k)變化率 ec(k)、e(k-1)、e(k-2)。由于該模塊主要要用到寄存器和加法器,所以該模塊利用宏功能模塊進行原理圖設計。整個模塊的電路設計原理圖如圖5所示。并通過仿真測試。
圖5 誤差生成模塊電路設計
仿真測試結果如圖6所示,經(jīng)檢驗此模塊設計正確有效。
圖6 誤差生產(chǎn)模塊仿真圖
2)模糊量化模塊
模糊量化設計就是把實時采集到的模擬信號值首先經(jīng)A/D模數(shù)轉(zhuǎn)化成精確數(shù)字量,然后再經(jīng)過模糊化處理來得到相應的模糊量。本設計需將偏差e、偏差變化率ec兩個輸入量進行模糊量化設計。其設計主要分為兩個步驟:(1)模糊量化分割:此步驟是按照一定的模糊規(guī)則對精確數(shù)字量進行模糊分割,在分割時一定要兼顧控制精度和算法實現(xiàn)的復雜度[12]。這是因為如果按照過多的模糊規(guī)則來進行模糊分割過細,就會導致論域集合過大而造成計算量過大,反之如果分割過粗,就會最終導致其控制精度不精確。經(jīng)過綜合權衡考慮,在本系統(tǒng)中對誤差e和誤差變化率ec等語言變量采用七級編碼機制,模糊語言變量分為七個論域集合如下:{PB,PM,PS,ZO,NS,NM,NB},即{正大,正中,正小,零,負小,負中,負大}[12~13]。(2)隸屬函數(shù)的選擇:隸屬函數(shù)時模糊集合的特征函數(shù),是反映和表征模糊集合的變換規(guī)律的。根據(jù)系統(tǒng)控制需求和設計簡化需要,本設計選擇模糊子集NB的形狀是Z形隸屬函數(shù),PB是S狀隸屬度函數(shù),其余的模糊子集都是三角形隸屬度函數(shù)。其隸屬函數(shù)如圖7所示。
圖7 偏差和偏差變化率的隸屬函數(shù)
將模塊中誤差e和誤差變化率ec模糊化設計之后,得出e和ec的模糊量化后的編碼值elunyu和eclunyu,其中0011代表PB,0010代表PM,0001代表PS,0000代表ZO,1001代表NS,1010代表NM,1011代表NB,如圖8所示模糊量化設計的測試仿真圖。經(jīng)驗證該模塊設計正確有效。
圖8 模糊量化設計的測試仿真圖
3)模糊查找表生成模塊
此模塊是本設計的核心和關鍵點,它包含了模糊推理和解模糊化兩個方面的工作。模糊PID控制的模糊推理實現(xiàn)一般有兩種方法:一種是利用微處理器的計算能力在線實時計算,這種方法計算量大,編程困難。而另一種是對誤差e和誤差變化率ec在模糊論域中的所有組合,按照一定的規(guī)則離線計算得出修正參數(shù)并存儲到ROM中,以便通過查表方式進行解模清晰化輸出修正參數(shù)[9]。而本設計就是借助于MATLAB強大的計算能力,采用Mamdani模糊模型和重心法反模糊化,分別計算Kp、Ki、Kd三個參數(shù)修正量,再加上初始值就得到KP、KI、Kd。為了簡化設計,提高穩(wěn)定性和速率,根據(jù)A=KP+KI+Kd;B=-(KP+2Kd);C=Kd再離線計算出A,B,C并分別儲存在FPGA內(nèi)部三個不同的ROM中。由于FPGA是基于查找表結構,其內(nèi)部有豐富的儲存模塊,實現(xiàn)起來非??旖莘奖?。許多聯(lián)合MATLAB的離線查表設計是通過查表方式僅得到Kp、Ki、Kd參數(shù)修正量后設計相關的硬件加法器電路來實現(xiàn) A,B,C[14~15]。而本設計是直接離線計算得出A,B,C來供查表輸出,這樣能極大地減少電路來節(jié)省FPGA內(nèi)部資源,提高運算效率,使其能夠在一塊FPGA芯片內(nèi)實現(xiàn)較為復雜的功能。
4)PID運算模塊
此模塊主要是完成最后的控制增量Δu(k)的輸出,根據(jù)公式(10),采用FPGA內(nèi)部的乘法器和并行加法器宏模塊來完成。其電路結構如圖9所示。
圖9 PID運算模塊電路模塊
各個子模塊設計并仿真測試正確后,在頂層設計中整體進行仿真測試,仿真效果如圖10所示,經(jīng)檢驗設計正確。
圖10 模糊PID控制系統(tǒng)整體仿真測試圖
本設計是在Altera的Cyclone II EP2C5Q208C8 FPGA芯片內(nèi)完成的。經(jīng)仿真測試,完全符合模糊PID控制器設計要求。并且經(jīng)簡單修改可快速形成IP核,利用該芯片內(nèi)部嵌入的32位NIOS II微處理器完成基于模糊PID的濕度控制系統(tǒng)。該系統(tǒng)控制高效,穩(wěn)定性、抗干擾性高,性能優(yōu)越。