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