基于FPGA 的模糊PID控制器的研究
摘要:提出了一種基于VHDL描述、FPGA 實(shí)現(xiàn)的模糊自整定PID控制器設(shè)計(jì)方法。首先,借助Matlab系統(tǒng)仿真工具,優(yōu)化得出模糊PID參數(shù)的模糊推理規(guī)則和控制器算法結(jié)構(gòu)。然后,進(jìn)行控制器的VHDL分層設(shè)計(jì)。最后,在一個(gè)具體的FPGA 芯片上實(shí)現(xiàn)了該控制器。由于采用了離線計(jì)算、在線查表的模糊自整定參數(shù)技術(shù)和增量式 PID算法,本設(shè)計(jì)既降低了FPGA的資源耗費(fèi),又改善了傳統(tǒng) PID控制器的控制性能。是實(shí)現(xiàn)單片或小系統(tǒng)智能控制策略的一種新的有效途徑。
1 引言
智能控制策略較為理想的實(shí)現(xiàn)方式是基于硬件。FPGA 技術(shù)的快速發(fā)展與VHDL(Very high speed integrated circuit Hardware Description Language)硬件描述語言的支持, 使得智能控制策略(模糊邏輯、神經(jīng)網(wǎng)絡(luò)、遺傳算法等)的VHDL描述和FPGA固核實(shí)現(xiàn)研究也隨 之活躍。在模糊邏輯控制方面,Torralba等人完成了4輸入、12個(gè)隸屬度、64條規(guī)則的 模糊邏輯控制器的FPGA實(shí)現(xiàn),Cirstea等人基于FPGA設(shè)計(jì)模糊控制器。成功的用于變 速器的控制。
文中闡述的重點(diǎn):一是通過Matlab的Fuzzy工具箱完成模糊邏輯策略的建立,計(jì)算出在 不同的輸入條件下的模糊控制參數(shù),制成模糊查找表;二是基于VHDL描述并在FPGA上實(shí)現(xiàn)模 糊自整定PID控制算法。
2 控制器原理
模糊自整定PID控制器結(jié)構(gòu):是模糊控制器與傳統(tǒng)PID控制器的結(jié)合,利用模糊推理判斷 的思想,根據(jù)不同的偏差、偏差變化率對(duì)PID的參數(shù)KP、KI 、KD 進(jìn)行在線自整定,傳統(tǒng)PID 控制器在獲得新的KP、KI、KD后,對(duì)控制對(duì)象輸出控制量。由此模糊PID控制器的結(jié)構(gòu) 框圖如圖1所示。
3 控制器的VHDL分層設(shè)計(jì)
模糊PID 控制器主要由A/D 控制器、模糊化模塊、模糊推理模塊、反模糊化模塊、規(guī) 則存儲(chǔ)器、數(shù)字PID 運(yùn)算等部分組成,其結(jié)構(gòu)如圖3 所示?,F(xiàn)就模糊化模塊、模糊推理模 塊、反模糊化模塊等主要模塊的建立來描述VHDL 的設(shè)計(jì)過程。
3.1模糊化模塊
模糊化模塊的功能主要包括兩部分:把輸入的精確量進(jìn)行尺度變換,變換到相應(yīng)的 論域范圍;將己變換到論域范圍的輸入量進(jìn)行模糊化處理,主要是計(jì)算各個(gè)輸入量的隸屬 度。由于變量的隸屬度函數(shù)均取用等腰三角形,則底邊寬度和底邊中點(diǎn)就可以確定隸屬函 數(shù)的所有信息。分別用一個(gè)字節(jié)表示每個(gè)語言變量的底邊寬度(實(shí)際寬度的一半),用三個(gè) 位(bit)表示底邊中點(diǎn)位置,將這部分信息存在兩個(gè)表中。根據(jù)兩個(gè)表中的信息,可以計(jì)算 出輸入變量的隸屬度。為實(shí)現(xiàn)隸屬度的計(jì)算,需要用到一個(gè)加法器,一個(gè)減法器和一個(gè)除法器。計(jì)算的結(jié)果肯定是小數(shù)(由隸屬度的性質(zhì)可知)。為了實(shí)現(xiàn)方便,將分子的計(jì)算結(jié)果 左移8 位。這樣,分子的計(jì)算結(jié)果是16 位,分母是8 位,計(jì)算結(jié)果是8 位。對(duì)其部分輸入 進(jìn)行模糊化的VHDL 描述如下:
3.2模糊推理模塊
模糊推理模塊是模糊控制器的核心,它將輸入的模糊量經(jīng)過推理,變?yōu)檩敵龅哪:俊?模糊推理采用Mamdani推理,也稱為Max一Min推理,即最大一最小推理,因?yàn)槠渲兄饕?最大化模塊和最小化模塊。對(duì)于兩輸入系統(tǒng),最多輸出四個(gè)語言值和四個(gè)隸屬度。這樣,對(duì) 于一個(gè)兩輸入系統(tǒng),最多激活四條模糊規(guī)則。上述過程就是規(guī)則匹配的過程。規(guī)則匹配需要 最小化運(yùn)算,即Min運(yùn)算。規(guī)則合并就是將后件相同的模糊規(guī)則進(jìn)行合并,規(guī)則合并需要最 大化運(yùn)算,即Max運(yùn)算。由模糊化模塊計(jì)算所得的四個(gè)隸屬函數(shù)值在控制信號(hào)作用下經(jīng)過多 路選擇器輸入到比較器;另外兩個(gè)控制信號(hào)經(jīng)過譯碼后選中隸屬函數(shù)寄存器中的一個(gè),同時(shí) 選擇輸出最小值到比較器;比較器的輸出結(jié)果再輸入到隸屬函數(shù)寄存器中。這樣,經(jīng)過4個(gè) 循環(huán),就完成了一個(gè)最小化運(yùn)算。由于VHDL描述簡單,在這里省略。
3.3反模糊化模塊
反模糊化通常采用重心法,由于隸屬度函數(shù)采用8為二進(jìn)制表示,而所涉及的規(guī)則數(shù)最 多為4條,所以分子運(yùn)算需要四個(gè)8位x2位的乘法器,3個(gè)10位加法器,分母需要3個(gè)8位加法 器。此外,還需要一個(gè)12位/10位的除法器。除法器的設(shè)計(jì)方法與模糊化模塊中的設(shè)計(jì)方法 相同。而乘法器的設(shè)計(jì)也與除法器的設(shè)計(jì)方法相似。相應(yīng)的VHDL描述如下:
END IF; END IF; END PROCESS;
3.4 數(shù)字PID運(yùn)算模塊
數(shù)字PID運(yùn)算主要是加、減、乘的運(yùn)算,運(yùn)用原碼算法設(shè)計(jì)數(shù)字電路無疑增加電路的復(fù) 雜度。而采用補(bǔ)碼運(yùn)算進(jìn)行設(shè)計(jì)就簡單多了。加減法運(yùn)算都可以用相同的加法電路來實(shí)現(xiàn)。 設(shè)計(jì)乘法電路的方法很多,考慮到節(jié)省FPGA器件資源問題,采用BOOTH算法。主要涉及累加 器溢出處理和小數(shù)運(yùn)算處理等問題。
4 試驗(yàn)結(jié)果
借助MATLAB的模糊控制工具箱提供的FIS編輯器建立mamdani型的模糊控制器,并結(jié)合 Simulink工具箱建立Fuzzy PID控制系統(tǒng)仿真模型。仿真得到的系統(tǒng)階躍響應(yīng)如圖2。通過圖 可以看出Fuzzy-PID控制調(diào)節(jié)時(shí)間短,超調(diào)量小,曲線平滑,具有較強(qiáng)的抗干擾和魯棒性。
各模塊程序經(jīng)過編譯優(yōu)化之后,由QuartusⅡ軟件綜合并生成網(wǎng)表文件,最后下載到 Altera公司的Cyclone系列的EP1C6Q240C8芯片上。經(jīng)實(shí)際測試顯示,該模糊PID控制器控制 效果明顯優(yōu)于普通的PID控制器。
5 結(jié)論
本文使用Altera的FPGA設(shè)計(jì)實(shí)現(xiàn)了一個(gè)數(shù)字模糊PID控制器。其中PID部分采用增量式算 法,模糊控制部分采用離線計(jì)算、在線查表的方式實(shí)現(xiàn),在不增加硬件資源耗費(fèi)的前提下大 大改善了普通PID控制器的控制效果。同時(shí),F(xiàn)PGA作為單一控制器實(shí)現(xiàn)模糊自整定PID控制, 編程規(guī)范、時(shí)序驗(yàn)證方便 、系統(tǒng)修改靈活,且基本無須改動(dòng)硬件,是實(shí)現(xiàn)單片或小系統(tǒng)智 能控制策略的一種新的有效途徑。
本文作者的創(chuàng)新點(diǎn):用硬件的方法實(shí)現(xiàn)了一個(gè)模糊PID控制器,并證明了系統(tǒng)有很好的 控制效果。
參考文獻(xiàn):
[1].EP1C6Q240C8datasheethttp://www.dzsc.com/datasheet/EP1C6Q240C8_1135222.html.
來源:xinxin0次