許國(guó)宏 宋征 王耀磊
摘要:根據(jù)增量式PID控制器的工作原理,設(shè)計(jì)了一種基于FPGA的數(shù)字PID控制器,采用FPGA并行結(jié)構(gòu),使用自頂向下的設(shè)計(jì)方法完成了控制器的VHDL分層設(shè)計(jì),最終實(shí)現(xiàn)了對(duì)控制量的精確控制。經(jīng)過(guò)仿真測(cè)試表明,該設(shè)計(jì)方案有效可行,并且具有結(jié)構(gòu)簡(jiǎn)單、性能可靠、控制效果良好及實(shí)用性強(qiáng)等優(yōu)點(diǎn)。
關(guān)鍵詞:PID控制器;FPGA;數(shù)字鎖相環(huán);
中圖分類號(hào):TN911.23 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)11-0229-02
FPGA Implementation and Simulation of Digital PID Controller
XU Guo-Hong, SONG Zheng, WANG Yao-Lei
(China Research Institude of Radio Wave Propagation, QingDao 266107, China)
Abstract: According to the working principle of incremental PID controller,a kind of Digital PID Controller based on FPGA is designed,and using the FPGA parallel structure,The top-down design methodology is used to complete the controller VHDL layered design,F(xiàn)inally realized the precise control of control quantity。Through simulation tests show that the design scheme is effective and feasible,and has the advantages of simple structure、reliable performance、good control effect and strong practicability etc.
Key words: PID controller; FPGA; DPLL
PID控制算法是一種簡(jiǎn)單有效的控制算法,因其有原理簡(jiǎn)單、參數(shù)可調(diào)、魯棒性好、可靠性高、適應(yīng)性強(qiáng)等優(yōu)點(diǎn),而在工業(yè)控制領(lǐng)域得到了廣泛的應(yīng)用,是目前自動(dòng)化控制技術(shù)中最穩(wěn)定的控制方法之一[[1]]。實(shí)現(xiàn)PID控制算法有很多種方法,本文采用FPGA并行結(jié)構(gòu)來(lái)實(shí)現(xiàn)PID控制算法,F(xiàn)PGA最明顯的優(yōu)勢(shì)在于集成度高,體積小,功耗低,可靠性高和電路設(shè)計(jì)比較靈活。
1 PID算法
1.1 PID算法表達(dá)式
PID控制器的核心思想是針對(duì)控制對(duì)象的控制需求,建立描述對(duì)象動(dòng)態(tài)特性的數(shù)學(xué)模型,通過(guò)PID參數(shù)整定實(shí)現(xiàn)在比例、微分、積分三個(gè)方面參數(shù)調(diào)整的控制策略來(lái)達(dá)到最佳系統(tǒng)響應(yīng)和控制效果。完整的PID控制表達(dá)式如下:
[u(t)=kp[e(t)+1Ti0teTdde(t)dt]]
其中,[kp]為比例增益,[Ti]為積分時(shí)間常數(shù),[Td]為微分時(shí)間常數(shù),[u(t)]為控制量,[e(t)]為偏差??偟膩?lái)說(shuō),比例控制能引起系統(tǒng)迅速反應(yīng),從而減小穩(wěn)態(tài)誤差,但是比例放大系數(shù)的加大,會(huì)引起系統(tǒng)的不穩(wěn)定;積分控制的作用是,只要系統(tǒng)有誤差存在,積分控制器就不斷地積累,輸出控制量,以消除誤差,但積分作用太強(qiáng)會(huì)使系統(tǒng)超調(diào)加大,甚至使系統(tǒng)出現(xiàn)振蕩,這主要取決與積分系數(shù)的大?。晃⒎挚刂瓶梢詼p小超調(diào)量,克服振蕩,使系統(tǒng)的穩(wěn)定性提高,同時(shí)加快系統(tǒng)的動(dòng)態(tài)響應(yīng)速度,減小調(diào)整時(shí)間,改善系統(tǒng)的動(dòng)態(tài)性能[[2]]。
在數(shù)字控制系統(tǒng)中必須對(duì)PID濾波算法進(jìn)行離散化。當(dāng)采樣周期足夠短時(shí),可以用求和代替積分、用后向差分代替微分,從而得到數(shù)字PID算法的實(shí)現(xiàn)模型[[3]]。數(shù)字增量式PID表達(dá)式如下:
[u(k)=u(k-1)+(kp+ki+kd)e(k)-(kd+2kd)e(k-1)+kde(k-2)];
控制量增量為:
[Δu=u(k)-u(k-1)=Kae(k)+Kbe(k-1)+Kce(k-2)]
從上式可以看出增量式PID算法只與前三次采樣值有關(guān),不需要大量的數(shù)據(jù)存儲(chǔ)和累加,因而不易引起誤差累積,具有計(jì)算量小、實(shí)時(shí)性高的優(yōu)點(diǎn)。
1.2 PID算法應(yīng)用
數(shù)字鎖相環(huán)系統(tǒng)(DPLL)由數(shù)字鑒相器、數(shù)字環(huán)路濾波器和DAC等部分組成,其中數(shù)字環(huán)路濾波器是DPLL最核心的部分,主要實(shí)現(xiàn)從相位誤差到控制電壓增量比特字的轉(zhuǎn)換[[4]]。為了使數(shù)字環(huán)路濾波器具有極佳的系統(tǒng)響應(yīng)和控制效果,PID控制算法是較好的選擇,基于PID控制系統(tǒng)的鎖相環(huán)結(jié)構(gòu)如圖1所示。
圖1 基于PID算法的鎖相環(huán)結(jié)構(gòu)
鎖相環(huán)系統(tǒng)中,數(shù)字鑒相器比較輸入頻率與輸出頻率的相位差[e(k)],作為PID控制器的輸入偏差信號(hào),在選定比例-微分-積分系數(shù)[kp]、[ki]、[kd]后經(jīng)PID運(yùn)算,產(chǎn)生偏差控制信號(hào)[u(k)],最后經(jīng)過(guò)D/A轉(zhuǎn)換器把數(shù)字相差轉(zhuǎn)換成模擬電壓信號(hào),輸出給被控對(duì)象壓控恒溫振蕩器。
2 PID的FPGA實(shí)現(xiàn)
2.1 PID的FPGA實(shí)現(xiàn)結(jié)構(gòu)
PID算法在FPGA中可以通過(guò)串行結(jié)構(gòu)、并行結(jié)構(gòu)等方法實(shí)現(xiàn)。串行實(shí)現(xiàn)法結(jié)構(gòu)簡(jiǎn)單,只用到一個(gè)乘法器和加法器,所需要的資源最少但速度也最慢;而并行實(shí)現(xiàn)方法的基本思想是以面積換取速度,其特點(diǎn)是擁有較快的運(yùn)算速度,但所需要的資源比較多。
本次PID控制器要應(yīng)用到數(shù)字鎖相環(huán)系統(tǒng)中,所以筆者設(shè)計(jì)采用運(yùn)算速度快的并行結(jié)構(gòu),用了三個(gè)加法器和三個(gè)乘法器來(lái)實(shí)現(xiàn)[[5]]。并行結(jié)構(gòu)如圖2所示,其中寄存器用于鎖存偏差信號(hào)或輸出信號(hào)的初始值和中間值。
圖2 PID算法并行實(shí)現(xiàn)結(jié)構(gòu)
2.2 PID參數(shù)選擇
對(duì)于PID控制器來(lái)說(shuō),如何選擇比例-微分-積分系數(shù)[kp]、[ki]、[kd]是設(shè)計(jì)的關(guān)鍵,這三個(gè)參數(shù)的選擇對(duì)環(huán)路系統(tǒng)的動(dòng)態(tài)性能、穩(wěn)態(tài)性能以及穩(wěn)定性都起至關(guān)重要的作用。根據(jù)控制系統(tǒng)對(duì)環(huán)路帶寬、阻尼系數(shù)等指標(biāo)的要求,以及考慮環(huán)路系統(tǒng)器件本身特性,可以計(jì)算選擇適當(dāng)?shù)腜ID濾波器作為粗調(diào)參數(shù),再通過(guò)仿真和實(shí)際調(diào)試得到進(jìn)一步參數(shù),以獲得比較完善的控制曲線[[6]]。
數(shù)字鎖相環(huán)系統(tǒng)的輸入頻率ui和輸出頻率upf在鑒相功能模塊jianxiang中產(chǎn)生超前–滯后信號(hào)up和down,如圖3所示,當(dāng)ui超前upf時(shí),up輸出寬度正比于相位誤差的脈寬高電壓;而當(dāng)ui滯后upf時(shí),down輸出寬度正比于相位誤差的脈寬高電壓。在量化功能模塊lianghua中,計(jì)數(shù)時(shí)鐘對(duì)相位誤差進(jìn)行數(shù)字量化并產(chǎn)生偏差信號(hào)[e(k)],偏差及參數(shù)產(chǎn)生如圖4所示。根據(jù)鎖相環(huán)系統(tǒng)對(duì)環(huán)路帶寬、阻尼系數(shù)的要求,筆者選擇比例-積分-微分粗調(diào)參數(shù)如下:[kp=29]、[ki=0.97]、[kd=1.07],經(jīng)計(jì)算得[Ka=31.04]、[Kb=-31.14]、[Kc=1.04]。
圖3 超前-滯后信號(hào)產(chǎn)生圖
圖4 偏差及參數(shù)產(chǎn)生圖
由于FPGA只能進(jìn)行整數(shù)運(yùn)算,所以運(yùn)算時(shí)需要將實(shí)數(shù)轉(zhuǎn)換成整數(shù),即將系數(shù)擴(kuò)大N倍,最后輸出時(shí)再把結(jié)果縮小N倍。本次設(shè)計(jì)選擇將系數(shù)擴(kuò)大[27]倍,最后對(duì)于FPGA來(lái)說(shuō),舍器棄最低7位的數(shù)據(jù)即可作為輸出信號(hào)。同時(shí),要對(duì)系數(shù)進(jìn)行擴(kuò)展,在系數(shù)最高位增加一個(gè)符號(hào)位,1代表負(fù)數(shù),0代表正數(shù)。本次設(shè)計(jì)中輸入的數(shù)字量[Ka]、[Kb]、[Kc]和[e(k)]都設(shè)置為28bit,0..26位是數(shù)據(jù)位,第27位是符號(hào)位,最后得[Ka=F85H]、[Kb=8000F92H]、[Kc=89H],偏差及參數(shù)產(chǎn)生仿真如圖5。
圖5 偏差及參數(shù)產(chǎn)生仿真圖
2.3 PID控制器實(shí)現(xiàn)及功能仿真
按照并行結(jié)構(gòu)設(shè)計(jì)的PID控制器原理圖如圖6所示。利用28位的D觸發(fā)器dff27作為寄存器,而乘法器可以使用Aitera公司提供的經(jīng)過(guò)嚴(yán)密測(cè)試和優(yōu)化處理的宏功能模塊LPM—MULT來(lái)實(shí)現(xiàn),加法器通過(guò)VHDL語(yǔ)言編譯add55實(shí)現(xiàn)。add55為帶符號(hào)位的加法器,當(dāng)兩個(gè)相同符號(hào)的數(shù)相加時(shí),可能出現(xiàn)運(yùn)算結(jié)果溢出,導(dǎo)致運(yùn)算出錯(cuò),所以要擴(kuò)展加法運(yùn)算位數(shù),將54位數(shù)據(jù)擴(kuò)展出一位;當(dāng)兩個(gè)不同符號(hào)的數(shù)相加時(shí),用被減數(shù)二進(jìn)制補(bǔ)碼的加法代替減法,即[A-B=A+B]。設(shè)置偏差[e(k)=10H]后,對(duì)設(shè)計(jì)的PID原理圖進(jìn)行仿真,仿真結(jié)果如圖7所示。
圖6 PID設(shè)計(jì)的原理圖
( 下轉(zhuǎn)第241頁(yè))
(上接第230頁(yè))
圖7 PID設(shè)計(jì)的原理仿真圖
把PID控制器輸出的55位數(shù)據(jù)進(jìn)行相位截?cái)?,然后再把產(chǎn)生的16位數(shù)據(jù)輸送給DAC,最終把數(shù)字相差轉(zhuǎn)換成模擬電壓信號(hào),從而完成對(duì)PID控制系統(tǒng)的調(diào)整。
3 結(jié)束語(yǔ)
本文使用FPGA設(shè)計(jì)實(shí)現(xiàn)了一個(gè)數(shù)字PID控制器,并將其應(yīng)用于數(shù)字鎖相環(huán)系統(tǒng)中,最后利用Quartus II對(duì)PID控制器進(jìn)行功能仿真,仿真結(jié)果表明數(shù)字PID控制器有效地濾除了系統(tǒng)的誤差,提高了穩(wěn)定性,改善系統(tǒng)的動(dòng)態(tài)性能。
參考文獻(xiàn):
[1] 陳晉煒,周玉潔.數(shù)字PID 控制器的FPGA 實(shí)現(xiàn)及軟硬件協(xié)同仿真 [J].信息技術(shù),2005(9):38-40.
[2] 謝強(qiáng).基于DPLL和DDS的高穩(wěn)頻綜研究與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2007.
[3] 陶永華.新型PID控制及其應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2002.
[4] 楊莉榮,王煒.基于FPGA的數(shù)字鎖相環(huán)設(shè)計(jì)[J].微計(jì)算機(jī)應(yīng)用,2009,1(30-1):68-71.
[5] 張科,靖固.利用FPGA的增量式PID控制的研究 [J].現(xiàn)代制造工程,2005(3):112-114.
[6] 高鐵紅,王誠(chéng)意.基于FPGA的增量式PID控制器的研究與實(shí)現(xiàn)[J].河北工業(yè)大學(xué)學(xué)報(bào),2011,40(5):36-38.