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