基于FPGA的模糊PID控制器設(shè)計
摘要:針對實現(xiàn)傳統(tǒng)模糊PID控制器時,需要建立比例、積分和微分三個模糊控制器,存在模糊規(guī)則較繁雜、運算量大、速度慢等問題,提出了以PD模糊控制器代替P1模糊控制器,采用兩個PD模糊控制器,并引入FPGA技術(shù),實現(xiàn)模糊PID控制器。通過QuartusⅡ和Matlab聯(lián)合仿真,比較了基于FBC和SBC實現(xiàn)的模糊PID控制器的控制效果,驗證了設(shè)計方案的正確性和可行性。
關(guān)鍵詞:模糊PID;控制器;FPGA:QuartusⅡ;Matlab
0 引言
采用常規(guī)方法實現(xiàn)模糊PID控制器,通常需要設(shè)計比例、積分和微分三個模糊推理系統(tǒng),由于每一項都需要相應(yīng)的模糊控制器和模糊規(guī)則,存在運算量大,求解時間長,響應(yīng)過程慢等問題,而且大量的模糊規(guī)則在實現(xiàn)時也需要消耗較多的邏輯資源。如果采用并行結(jié)構(gòu),以并行方式將PD模糊邏輯控制器PDFLC(PDFuzzy Logic Controller,PDFLC)和PIFLC,兩個模糊邏輯控制器模塊的輸出進行疊加,實現(xiàn)PIDFLC,同時引入FPGA技術(shù),便可以解決上述問題。通過QuartusⅡ和Matlab聯(lián)合仿真,對設(shè)計方案進行了驗證。
1 基于FPGA的模糊PID控制器實現(xiàn)原理
基于FPGA的模糊PID控制器的芯片結(jié)構(gòu)如圖1所示??刂破鞯妮斎肓渴强刂茖ο蟮膶嶋H輸出量yp(t)與期望輸出量yD(t)的差值。控制器還需要接收4個8 b的數(shù)字信號,即表示比例增益KP、積分增益KI、微分增益KD和輸出增益KO的信號;此外還要有2 b的模式選擇信號,通過邏輯組合,選擇控制器的類型(PIFLC,PDFLC或PIDFLC的一種)。
在設(shè)計模糊PID控制器時,為節(jié)省FPGA的邏輯資源,一般不選擇含有三個模糊控制器的方案,而采用并行結(jié)構(gòu),將PDFLC和PIFLC兩個模糊控制器模塊的輸出相加,來實現(xiàn)PIDFLC?;谶@種設(shè)想,先將PD控制器轉(zhuǎn)變成PI控制器,再將二者疊加。式(1)為PD控制器的位置表達式,式(2)為PI控制器的增量表達式。
u(n)=KPe(n)+KDr(n) (1)
△u(n)=KPr(n)+KIe(n) (2)
式中:e(n)為采樣誤差信號;r(n)為采樣誤差的變化率;△u(n)為控制量的增量。比較式(1)和式(2)可知,位置式的PD控制器可以轉(zhuǎn)換成增量式PI控制器,條件如下:
①r(n)和e(n)交換位置;
②KI取代KD;
③△u(n)取代u(n)。
圖2為基于上述原理的控制器的結(jié)構(gòu)圖,圖中對PDFLC的輸出端求和(虛框部分),以代替PIFLC。
每一個PDFLC模塊均采用兩輸入單輸出的Mandani型模糊推理系統(tǒng),輸入的兩個信號分別為誤差信號和誤差信號的變化率。在進入模糊化之前,每一個輸入變量均乘以一個來自于PDFLC內(nèi)部的增益系數(shù)(KP和KI或KP和KD)。同樣,模糊化后輸出值也需乘一個來自于PDFLC內(nèi)部的增益系數(shù)(KO),PDFLC和PIFLC的輸出(uPDFLC和uPIFLC)之和作為PIDFLC的輸出(uPIDFLC)。模式選擇控制端的輸入變量決定輸出模式。由圖2可見PDFLC模塊是控制器設(shè)計中的核心,主要包括增益、模糊化、模糊推理和解模糊化模塊。
1.1 增益模塊
在PDFLC模塊的輸入和輸出部分各包含一個增益模塊。增益模塊中為兩輸入一輸出模塊。兩個輸入變量分別為來自外部的輸入變量和不同模式下對應(yīng)的增益系數(shù),它們的乘積作為該模塊的輸出。每個增益模塊各包含一個8 b的鎖存器,用于存儲增益系數(shù)的值,該值的具體數(shù)值取決于控制器工作在哪個工作方式。增益模塊的結(jié)構(gòu)如圖3所示。
1.2 模糊化挨塊
模糊化過程是使用兩個模糊器模塊完成的,每一個變量對應(yīng)一個模糊器模塊。每一個模糊器模塊輸入一個變量,產(chǎn)生四個輸出,即表示兩個主動模糊集序列的i和i+1,及變量所對應(yīng)的隸屬度μi和μi+1。模糊器模塊由三部分構(gòu)成:存儲器、轉(zhuǎn)換器和增量器。存儲器模塊用作查找表,存放的是每個輸入變量的隸屬度值和主動模糊集數(shù)。
存儲器模塊中每個字節(jié)被分為兩個部分。第一部分表示第一個主動模糊集的序列號,第二個主動模糊集的序列號是通過增量器在第一個主動模糊集序列號上加1獲得的。字節(jié)的第二部分,表示第一個主動模糊集中輸入變量的隸屬度數(shù)值。在第二個主動模糊集中,輸入變量的隸屬度值是1減去第一個輸入變量的隸屬度值。即兩個連續(xù)模糊集的隸屬度值之和為1,用式(3)表示:
μi+μi+1=1 (3)
1.3 推理機模塊
設(shè)計中使用的推理機模塊是建立在主動規(guī)則選擇機制上的。主動規(guī)則選擇器模塊使用的信息來源于模糊器中的主動模糊集,且僅發(fā)主動規(guī)則。通過這種方式使用模糊選擇器,可使被處理的規(guī)則的數(shù)目減少很多,主動規(guī)則數(shù)目用式(4)表示:
N=Vm (4)
式中:N為主動規(guī)則數(shù)目;m為輸入數(shù);V為重疊模糊集的最大數(shù)目。在設(shè)計中,假設(shè)m=2,V=2,則每次主動規(guī)則的數(shù)目為Vm=22=4個。
除了主動規(guī)則選擇器模塊,推理機還有另外兩個模塊。規(guī)則存儲模塊和最小電路模塊。3個模塊的連接圖如圖4所示。
1.4 解模糊化模塊
解模糊化是在解模糊器中完成的,采用的是重心法,用式(5)表示:
式中:N為規(guī)則數(shù);μk為第k條規(guī)則的適應(yīng)度;βk為第k條規(guī)則輸出隸屬度函數(shù)的解模糊化數(shù)值。
解模糊器由兩個累加器、一個乘法器和一個除法器構(gòu)成的。解模糊化模塊接受來自于推理機的四條規(guī)則序列和它們的隸屬度(在4個時鐘周期內(nèi)順序接收),并產(chǎn)生一個明確的輸出送到增益模塊,如圖5所示。
在四個連續(xù)的時鐘周期內(nèi),來自推理機的隸屬度和規(guī)則序列按順序傳送,而不是在一個周期內(nèi)并行傳輸,這樣可減少FPGA中的資源消耗。
2 聯(lián)合仿真及結(jié)果
將設(shè)計的文件加載到FPGA器件之前,為了驗證設(shè)計的正確性,必須進行全面充分的功能和時序仿真。功能仿真一般對大型設(shè)計的前期代碼進行驗證,通常使用Mentor公司的Modelsim來進行;時序仿真使用QuartusⅡ或Modelsim軟件均可。模糊PID控制器的設(shè)計較小,省略了功能仿真步驟,直接進行時序仿真。
在設(shè)計中采用Matlab與QuartusⅡ聯(lián)合仿真,不僅能夠提高設(shè)計效率,而且大大增強了QuartusⅡ的仿真功能。下面介紹仿真的過程和方法。
*.vec文件是QuartusⅡ與Matlab聯(lián)合仿真時需要Matlab提供的文件。*.vwf和*.vec格式的文件是QuartusⅡ仿真軟件中時序仿真中常用的兩種文件格式。前者是在QuartusⅡ中通過波形編輯器生成的,主要用于輸入簡單數(shù)據(jù),當(dāng)輸入較為復(fù)雜數(shù)據(jù)時,用波形輸入的方法難以實現(xiàn),仿真效果較差。后者是按一定仿真格式要求的文本文件輸入方式,只要滿足QuartusⅡ?qū)Ψ抡嫖募母袷揭?,可以利用任何文本編輯器產(chǎn)生。為了加強數(shù)據(jù)生成處理能力,這里選用Matlab軟件生成*.vec文件。*.vec文件格式及其格式說明如下:
按以上格式要求,在Matlab中將輸入數(shù)據(jù)以文件的形式輸出并將其保存為*.vec格式。
在QuartusⅡ中對仿真參數(shù)進行設(shè)置,將仿真向量文件指向由Matlab生成的*.vec文件,即可將Matlab中生成的仿真信號導(dǎo)入QuartusⅡ進行仿真。將仿真結(jié)束后生成的波形文件(*.vwf格式),另存為*tbl格式文件,以便將仿真結(jié)果導(dǎo)入Matlab中進行驗證。*tbl文件如下:
以數(shù)據(jù)文件輸入的方式將此*.tbl文件中的QuartusⅡ仿真輸出信號的數(shù)值導(dǎo)入Matlab中,既可以分析模糊PID設(shè)計的正確與否,也可以分析其性能優(yōu)劣。
下面以基于軟件的模糊PID控制器(Software Bulid Controller,SBC)與基于FPGA的模糊PID控制器(FPGA Bulid Controller,F(xiàn)BC)做比較。在仿真中對稱三角模糊集和單值模糊集分別用于輸入和輸出變量,此外還應(yīng)用圖6中所示的64個模糊規(guī)則的規(guī)則表。
將兩種模糊PID控制器用在圖1所示的控制系統(tǒng)中,并輸入0.5 V的階躍信號。選擇的受控對象是工業(yè)控制對象中的典型模型,如直流電機位置控制等。模型的離散使用的是ZOH法。離散傳遞函數(shù)如下:
式(6)的采樣周期T=0.25 s。采用FBC和SBC進行仿真比較。因為每一個控制器均能作為PDFLC,PIFLC或PIDFLC使用,所以給出了3種控制器的仿真結(jié)果。圖7為受控對象受PDFLC,PIFLC和PIDFLC控制時的階躍響應(yīng)的仿真曲線。
3 結(jié)語
針對以傳統(tǒng)方式實現(xiàn)模糊PID控制器時,各輸入變量均需要建立模糊控制器模塊,且需要大量的規(guī)則庫,提出了改進的模糊PID控制器,以PDFLC代替PIFLC,用兩個PD模糊控制器實現(xiàn)模糊PID控制器,并利用FPGA實現(xiàn)。采用Matlab與QuartusⅡ聯(lián)合仿真,比較了基于FBC和SBC的仿真結(jié)果,表明基于FPGA的模糊PID控制器,響應(yīng)時間和控制效果較為理想,驗證了設(shè)計方案的正確性和可行性。